anchor.diff:                                           arg))))))
   
   (defun initialize-hooks (buffer)
  -  (lem:add-hook (lem:variable-value 'lem:before-change-functions :buffer buffer) 'on-change))
  +  (lem:add-hook (lem:variable-value 'lem:before-change-functions :buffer buffer) 'on-change)
  +  (lem:add-hook (lem:variable-value 'lem:before-save-hook :buffer buffer) 'text-document-will-save))
   
   (defun start (buffer)
     (let* ((root-path *root-path*)
  
positive.code:                   ({} "textDocument" (versioned-text-document-identifier buffer)
                        "contentChanges" changes)))
  
  (defun text-document-content-change-event (point string-or-number)
    (let ((start-position (lsp-position point)))
      (etypecase string-or-number
  
negative.code: (defparameter *language-id* "go")
  
  (defparameter *log-stream* *error-output*)
  
  (defparameter |TextDocumentSaveReason.Manual| 1)
  (defparameter |TextDocumentSaveReason.AfterDelay| 2)
  (defparameter |TextDocumentSaveReason.FocusOut| 3)
  
  (defvar *workspaces* '())
  (defvar *response-methods* '())
  