From ed51863fc054faade5335ae73b9762e0386dbe86 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 5 Jan 2026 06:26:05 +0000 Subject: [PATCH] Fix Emacs socket path to match server-socket-dir defaults The EMACS_SOCKET_NAME must match Emacs's server-socket-dir logic: 1. Use XDG_RUNTIME_DIR/emacs if XDG_RUNTIME_DIR is set (any platform) 2. Fall back to $TMPDIR/emacs on Darwin 3. Fall back to /tmp/emacs on Linux Since tools.zsh sets XDG_RUNTIME_DIR on Darwin (to $TMPDIR/user/$UID), that path takes precedence over the Darwin-specific TMPDIR fallback. --- .config/zsh/tools.zsh | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/.config/zsh/tools.zsh b/.config/zsh/tools.zsh index 9cc758b..a35a2b2 100644 --- a/.config/zsh/tools.zsh +++ b/.config/zsh/tools.zsh @@ -71,19 +71,17 @@ fi # Configure Emacs socket name based on platform # These paths must match Emacs's default server-socket-dir behavior -if [[ "$CURRENT_OS" = "Darwin" ]]; then - # Emacs on Darwin uses $TMPDIR/emacs (no UID in path) +# Emacs checks XDG_RUNTIME_DIR first (on any platform), then falls back +if [[ -n "$XDG_RUNTIME_DIR" ]]; then + EMACS_SOCKET_NAME="${XDG_RUNTIME_DIR}/emacs/server" +elif [[ "$CURRENT_OS" = "Darwin" ]]; then + # Darwin fallback: $TMPDIR/emacs (no UID) EMACS_SOCKET_NAME="${TMPDIR%/}/emacs/server" - export EMACS_SOCKET_NAME -elif [[ "$CURRENT_OS" = "Linux" ]]; then - # Emacs on Linux uses XDG_RUNTIME_DIR if available, otherwise /tmp/emacs - if [[ -n "$XDG_RUNTIME_DIR" ]]; then - EMACS_SOCKET_NAME="${XDG_RUNTIME_DIR}/emacs/server" - else - EMACS_SOCKET_NAME="/tmp/emacs$(id -u)/server" - fi - export EMACS_SOCKET_NAME +else + # Linux fallback without XDG_RUNTIME_DIR: /tmp/emacs + EMACS_SOCKET_NAME="/tmp/emacs$(id -u)/server" fi +export EMACS_SOCKET_NAME # Set up Java environment export JAVA_OPTIONS="-Djava.awt.headless=true"