diff --git a/emacs-server-import-environment.el b/emacs-server-import-environment.el new file mode 100755 index 0000000..5f0cacc --- /dev/null +++ b/emacs-server-import-environment.el @@ -0,0 +1,43 @@ +#!/usr/bin/env -S emacs -Q --script +;;; -*- lexical-binding: t -*- + +(require 'cl-lib) +(require 'server) + +(defun append-to-path (value) + "Split VALUE and append to PATH." + (let ((to-add (split-string value ":" t nil))) + (server-eval-at "server" + `(dolist (file ',to-add) + (add-to-list 'exec-path file))))) + +(dolist (var argv) + (let ((sep (cl-position ?= var :test #'eql))) + (cond + ((string-prefix-p "-" var) + ;; unset + (when (equal var "-PATH") + (message "Refusing to unset PATH") + (kill-emacs 1)) + (server-eval-at "server" + `(setenv ,(substring var 1) nil))) + (sep + (let ((name (substring var 0 sep)) + (value (substring var (1+ sep)))) + (if (equal name "PATH") + (append-to-path value) + ;; append to PATH, not set + ;; set to passed value + (server-eval-at "server" + `(setenv ,name ,value))))) + (t + (if (equal var "PATH") + ;; copy form and append to path + (append-to-path (getenv var)) + ;; copy from our evnironment + (server-eval-at "server" + `(setenv ,var ,(getenv var)))))))) + +;; Local Variables: +;; flycheck-disabled-checkers: (emacs-lisp-checkdoc) +;; End: diff --git a/emacs-server-set-wayland-display.zsh b/emacs-server-set-wayland-display.zsh deleted file mode 100755 index 4bbb749..0000000 --- a/emacs-server-set-wayland-display.zsh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env zsh - -setopt rcquotes - -printf '%s' "${WAYLAND_DISPLAY}" | - /usr/bin/emacs --batch --insert=/dev/fd/0 \ - --eval \ - '(let ((wayland-display (buffer-string))) - (require ''server) - (server-eval-at - "server" - `(setenv "WAYLAND_DISPLAY" ,wayland-display)))'