diff options
-rw-r--r-- | .config/bash/rc.d/90_emacs.sh | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/.config/bash/rc.d/90_emacs.sh b/.config/bash/rc.d/90_emacs.sh index 79d5e61..90e771c 100644 --- a/.config/bash/rc.d/90_emacs.sh +++ b/.config/bash/rc.d/90_emacs.sh @@ -35,17 +35,23 @@ if [[ $TERM == eterm* ]]; then # before the hostname is set, otherwise it will set # (default-directory) to an invalid TRAMP string. # - # Because the hostname is compared to (system-name) to - # check if it is localhost, "$(hostname -f)" may need - # to be used instead of $HOSTNAME, if - # $HOSTNAME/$(hostname) doesn't return a qualified - # domain. - local hostname=$HOSTNAME - [[ $hostname = *.* ]] || hostname="$(hostname -f)" + # The hostname is compared to (system-name) to check + # if it is localhost. In Emacs 25, (system-name) is + # just gethostname(2), and in Bash 4.2, $HOSTNAME is + # also just gethostname(2). + # + # As an aside, Emacs and Bash deal with hostnames > + # 255 bytes differently. They both use 255 bytes for + # the initial call, but Bash won't retry with a bigger + # limit, but Emacs will. I don't care, because + # besides such long hostnames being uncommon, Linux's + # HOST_NAME_MAX on i686 and x86_64 is only 64, so it's + # actually impossible. IDK about other kernels or + # architectures. printf '\eAnSiT%s %s\n' \ u "$USER" \ c "$PWD" \ - h "$hostname" + h "$HOSTNAME" } # Set the shell's X11 display (emacs -> shell) _emacs_set_shell_DISPLAY() { |