anchor.diff:        "textDocument" (text-document-client-capabilities)
         #|"experimental"|#))
   
  -(defun method-initialize (workspace)
  +(defun initialize (workspace)
     (let* ((root (workspace-root workspace))
            (response (jsonrpc:call (workspace-connection workspace)
                                    "initialize"
  
positive.code: (define-response-method |window/logMessage| (|type| |message|)
    (format *log-stream* "~A: ~A" |type| |message|))
  
  (defun text-document-item (workspace buffer)
    ({} "uri" (pathname-to-uri (lem:buffer-filename buffer))
        "languageId" (workspace-language-id workspace)
        "version" (gethash buffer (workspace-file-version-table workspace) 0)
        "text" (lem:points-to-string (lem:buffer-start-point buffer) (lem:buffer-end-point buffer))))
  
  (defun text-document-did-open (workspace buffer)
    (jsonrpc:notify (workspace-connection workspace)
                    "textDocument/didOpen"
                    ({} "textDocument" (text-document-item buffer))))
  
  (defun text-document-did-change (workspace buffer changes)
    )
  
  (defun start ()
    (let* ((connection (jsonrpc:make-client))
           (workspace (make-workspace :connection connection
                                      :root *root-path*
                                      :language-id *language-id*)))
      (dolist (response-method *response-methods*)
        (jsonrpc:expose connection (string response-method) response-method))
      (jsonrpc:client-connect (workspace-connection workspace)
                              :mode :tcp
                              :port 4389)
      (method-initialize workspace)
      (method-initialized workspace)
      workspace))
  
negative.code:     (setf (workspace-server-capabilities workspace)
            (gethash "capabilities" response))))
  
  (defun initialized (workspace)
    (jsonrpc:notify (workspace-connection workspace) "initialized" ({})))
  
  (defun shutdown (workspace)
    (jsonrpc:call (workspace-connection workspace) "shutdown" ({})))
  
  (defun exit (workspace)
    (jsonrpc:notify (workspace-connection workspace) "exit" ({})))
  
  (define-response-method |window/showMessage| (|type| |message|)
  