anchor.diff:      (push ov *goflymake-overlays*)
       (overlay-put ov 'message error-message)))
   
  -(defun fly-send-result (text buffer-name)
  +(defun fly-send-result (text buffer-name flymake-file)
     (send-event
      (lambda ()
  +     (delete-file flymake-file)
        (alexandria:when-let ((buffer (get-buffer buffer-name)))
          (with-input-from-string (in text)
            (with-point ((p (buffer-point buffer)))
  
positive.code:   (setf *fly-thread*
          (bt:make-thread fn :name "go-flymake")))
  
  (define-command goflymake () ()
    (mapc #'delete-overlay *goflymake-overlays*)
    (setf *goflymake-overlays* '())
    (let* ((buffer (current-buffer))
           (buffer-name (buffer-name buffer)))
      (let ((flymake-file
              (make-pathname :name "flymake_go"
                             :type "go"
                             :directory "tmp")))
        (uiop:copy-file (buffer-filename buffer) flymake-file)
        (run-flymake
         (lambda ()
           (let ((text
                   (with-output-to-string (out)
                     (uiop:run-program
                      (format nil "cd /tmp/; goflymake -debug=false -prefix='flymake_' '~A'"
                              flymake-file)
                      :output out))))
             (fly-send-result text buffer-name)))))))
  
  (define-command goflymake-message () ()
    (dolist (ov *goflymake-overlays*)
  
negative.code: (defun go-idle-function ()
    (goflymake-message))
  
  (add-hook *after-save-hook* 'goflymake)
  
  (pushnew (cons "\\.go$" 'go-mode) *auto-mode-alist* :test #'equal)
  