anchor.diff:  (defun initialize-hooks (buffer)
     (lem:add-hook (lem:variable-value 'lem:before-change-functions :buffer buffer) #'on-change))
   
  -(defun start ()
  -  (let* ((connection (jsonrpc:make-client))
  -         (workspace (make-workspace :connection connection
  -                                    :root *root-path*
  -                                    :language-id *language-id*)))
  -    (setf (gethash *language-id* *workspaces*) workspace)
  -    (dolist (response-method *response-methods*)
  -      (jsonrpc:expose connection (string response-method) response-method))
  -    (jsonrpc:client-connect (workspace-connection workspace)
  -                            :mode :tcp
  -                            :port 4389)
  -    (initialize workspace)
  -    (initialized workspace)
  -    workspace))
  +(defun start (buffer)
  +  (let* ((root-path *root-path*)
  +         (workspace (find-workspace root-path)))
  +    (cond
  +      (workspace
  +       (setf (buffer-workspace buffer) workspace))
  +      (t
  +       (let* ((connection (jsonrpc:make-client))
  +              (workspace (make-workspace :connection connection
  +                                         :root root-path
  +                                         :language-id *language-id*)))
  +         (push workspace *workspaces*)
  +         (setf (buffer-workspace buffer) workspace)
  +         (dolist (response-method *response-methods*)
  +           (jsonrpc:expose connection (string response-method) response-method))
  +         (jsonrpc:client-connect (workspace-connection workspace)
  +                                 :mode :tcp
  +                                 :port 4389)
  +         (initialize workspace)
  +         (initialized workspace)
  +         workspace))))
  +  (text-document-did-open buffer))
  
positive.code:                "rangeLength" (lem:count-characters end point)
                 "text" "")))))))
  
  (defun on-change (point arg)
    (let ((buffer (lem:point-buffer point)))
      (incf (buffer-file-version buffer))
  
negative.code:       *response-methods*)))
  
  (defun pathname-to-uri (pathname)
    (format nil "file://~A" (truename pathname)))
  
  (defun {} (&rest plist)
    (alexandria:plist-hash-table plist :test 'equal))
  