Much has been said about TRAMP, I’ve personally have tried it out a few times, then disabled it for good as I hated it regularly locking up Emacs. While going through bytecomp.el again, I’ve found the following gem:
;; If things not being bound at all is ok, so must them being ;; obsolete. Note that we add to the existing lists since Tramp ;; (ab)uses this feature. (let ((byte-compile-not-obsolete-vars (append byte-compile-not-obsolete-vars bound-list)) (byte-compile-not-obsolete-funcs (append byte-compile-not-obsolete-funcs fbound-list))) ,@body)
The referenced part in tramp-compat.el:
;; `directory-sep-char' is an obsolete variable in Emacs. But it is ;; used in XEmacs, so we set it here and there. The following is ;; needed to pacify Emacs byte-compiler. ;; Note that it was removed altogether in Emacs 24.1. (when (boundp 'directory-sep-char) (defvar byte-compile-not-obsolete-var nil) (setq byte-compile-not-obsolete-var 'directory-sep-char) ;; Emacs 23.2. (defvar byte-compile-not-obsolete-vars nil) (setq byte-compile-not-obsolete-vars '(directory-sep-char)))
Altering the way the byte compiler works due to incorrect usage of variable obsoletion for a mostly dead Emacs fork makes me a sad panda.