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?
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)))))))