summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.config/bash/rc.d/90_emacs.sh22
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() {