6

A lot of things including M-x compile work fine over tramp, but find-tag seems to be the exception: it attempts to jump to a location in a local file.

Would someone investigate why it's doing this, and explore a possible fix?

1 Answer 1

5

I don't have that problem, using find-tag over TRAMP resolves the filenames over TRAMP as well. That said, that works only if the TAGS file contains relative paths (relative to the location of the TAGS file itself, therefore over TRAMP), and not absolute ones.

I guess it'd be better if in case of absolute filenames over TRAMP, the resolution was smart enough to consider them as absolute filenames... on the remote location.

Here's an attempt at doing just that (this redefines the function that's responsible for the path resolution):

(defun etags-file-of-tag (&optional relative) ; Doc string?
  (save-excursion
    (re-search-backward "\f\n\\([^\n]+\\),[0-9]*\n")
    (let ((str (convert-standard-filename
                (buffer-substring (match-beginning 1) (match-end 1)))))
      (if relative
      str
        (let ((basedir (file-truename default-directory)))
          (if (file-remote-p basedir)
              (with-parsed-tramp-file-name basedir nil
                (expand-file-name (apply 'tramp-make-tramp-file-name
                                         (list method user host str hop))))
            (expand-file-name str basedir)))))))

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.