Skip to content

Commit

Permalink
Treat tab characters as 1 column wide in position conversion functions
Browse files Browse the repository at this point in the history
Fixes #158.

* eglot.el (eglot--pos-to-lsp-position): Call
  eglot-current-column-function with tab-width bound to 1.
(eglot--lsp-position-to-point): Call eglot-move-to-column-function
with tab-width bound to 1.
  • Loading branch information
mkcms committed Nov 19, 2018
1 parent 604c1b0 commit d66f2eb
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions eglot.el
Original file line number Diff line number Diff line change
Expand Up @@ -743,7 +743,8 @@ for all others.")
(eglot--widening
(list :line (1- (line-number-at-pos pos t)) ; F!@&#$CKING OFF-BY-ONE
:character (progn (when pos (goto-char pos))
(funcall eglot-current-column-function)))))
(let ((tab-width 1))
(funcall eglot-current-column-function))))))

(defvar eglot-move-to-column-function #'move-to-column
"Function to move to a column reported by the LSP server.
Expand Down Expand Up @@ -778,7 +779,8 @@ If optional MARKER, return a marker instead"
(forward-line (min most-positive-fixnum
(plist-get pos-plist :line)))
(unless (eobp) ;; if line was excessive leave point at eob
(funcall eglot-move-to-column-function (plist-get pos-plist :character)))
(let ((tab-width 1))
(funcall eglot-move-to-column-function (plist-get pos-plist :character))))
(if marker (copy-marker (point-marker)) (point))))

(defun eglot--path-to-uri (path)
Expand Down

0 comments on commit d66f2eb

Please sign in to comment.