anchor.diff:                                    #|"initializationOptions"|#
                                     "capabilities" (client-capabilities)
                                     #|"trace" "off"|#
  -                                  #|"workspaceFolders" nil|#))))
  +                                  #|"workspaceFolders" nil|#)))
  +         (server-capabilities (gethash "capabilities" response)))
       (setf (workspace-server-capabilities workspace)
  -          (gethash "capabilities" response))))
  +          server-capabilities)
  +    (alexandria:when-let (sync (gethash "textDocumentSync" server-capabilities))
  +      (setf (workspace-text-document-sync workspace)
  +            (convert-text-document-sync sync)))))
   
   (defun initialized (workspace)
     (jsonrpc:notify (workspace-connection workspace) "initialized" ({})))
  
positive.code:         (jsonrpc:jsonrpc-error-message e)))))
  
  (defun on-change (point arg)
    (let ((buffer (lem:point-buffer point)))
      (incf (buffer-file-version buffer))
      (text-document-did-change buffer
                                (list (text-document-content-change-event
                                       point
                                       (if (characterp arg)
                                           (string arg)
                                           arg))))))
  
  (defun initialize-hooks (buffer)
    (lem:add-hook (lem:variable-value 'lem:before-change-functions :buffer buffer) 'on-change)
  
negative.code:       "textDocument" (text-document-client-capabilities)
        #|"experimental"|#))
  
  (defun convert-text-document-sync (sync)
    (etypecase sync
      (number
       (make-text-document-sync :change sync))
      (hash-table
       (make-text-document-sync :open-close (gethash "openClose" sync)
                                :change (gethash "change" sync)
                                :will-save (gethash "willSave" sync)
                                :will-save-wait-until (gethash "willSaveWaitUntil" sync)
                                :save (gethash "save" sync)))))
  
  (defun initialize (workspace)
    (let* ((root (workspace-root workspace))
           (response (jsonrpc:call (workspace-connection workspace)
  