anchor.diff:                 "rangeLength" (lem:count-characters end point)
                  "text" "")))))))
   
  +(defun hover (point)
  +  (let ((workspace (buffer-workspace (lem:point-buffer point))))
  +    (jsonrpc:call (workspace-connection workspace)
  +                  "textDocument/hover"
  +                  (text-document-position-params point))))
  +
   (defun on-change (point arg)
     (let ((buffer (lem:point-buffer point)))
       (incf (buffer-file-version buffer))
  
positive.code: 
  (defparameter *log-stream* *error-output*)
  
  (defvar *workspaces* (make-hash-table :test 'equal))
  (defvar *response-methods* '())
  
  (defstruct workspace
  
negative.code:   (lem:message "~A" |message|))
  
  (define-response-method |window/showMessageRequest| (|type| |message|)
    (declare (ignore |type|))
    (lem:message "~A" |message|))
  
  (define-response-method |window/logMessage| (|type| |message|)
    (format *log-stream* "~A: ~A" |type| |message|))
  