branch: externals/gtags-mode commit 8c6dafd318db33d844f4f806361cac149d8093c0 Author: Jimmy Aguilar Mena <kratsbinov...@gmail.com> Commit: Jimmy Aguilar Mena <kratsbinov...@gmail.com>
Enforce file-truename for buffer-file-name. This fixes the case when using links. The value is cached when possible because file-truename is pretty expensive when using tramp --- gtags-mode.el | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gtags-mode.el b/gtags-mode.el index a24ee22bc2..5493a1c821 100644 --- a/gtags-mode.el +++ b/gtags-mode.el @@ -251,7 +251,11 @@ Includes the remote prefix concatenation when needed." (gtags-mode--set-connection-locals) (setq-local gtags-mode--plist (or (gtags-mode--get-plist default-directory) - (gtags-mode--create-plist default-directory))))) + (gtags-mode--create-plist default-directory))) + (when buffer-file-name + (setq-local gtags-mode--plist + (plist-put gtags-mode--plist + :true-file-name (file-truename buffer-file-name)))))) (defun gtags-mode--local-plist (&optional dir) "Set and return the buffer local value of `gtags-mode--plist'." @@ -341,10 +345,10 @@ won't have `buffer-file-name' but will just acquire one." (when (and buffer-file-name (or gtags-mode--plist (gtags-mode--set-local-plist default-directory))) - (let* ((default-directory (plist-get gtags-mode--plist :gtagsroot)) - (filename (file-relative-name buffer-file-name))) + (when-let* ((default-directory (plist-get gtags-mode--plist :gtagsroot)) + (true-file-name (plist-get gtags-mode--plist :true-file-name))) (gtags-mode--exec-async - 'gtags-mode--global "--single-update" filename)))) + 'gtags-mode--global "--single-update" (file-relative-name true-file-name))))) ;; xref integration ================================================== (defun gtags-mode--xref-find-symbol (args symbol)