From: Michal Krzywkowski Date: Mon, 19 Nov 2018 20:22:14 +0000 (+0100) Subject: Treat tab characters as 1 column wide in position conversion functions X-Git-Tag: emacs-29.0.90~1616^2~524^2~4^2~397 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2cf7905887f2137869f44c3383a55636e38b4b81;p=emacs.git Treat tab characters as 1 column wide in position conversion functions Fixes https://github.com/joaotavora/eglot/issues/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. --- diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 3ba1b87d807..d9c1c3ab97e 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -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. @@ -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)