diff --git a/early-init.el b/early-init.el index 69cf816..f99fbbe 100644 --- a/early-init.el +++ b/early-init.el @@ -8,15 +8,6 @@ (require 'init-elpaca) (require 'init-gc) -(pcase system-type - ('gnu/linux - (dolist (path '("/home/zelongk/.opam/default/bin" - "/home/zelongk/miniforge3/bin" - "/home/zelongk/miniforge3/condabin" - "/home/zelongk/.cargo/bin" - "/home/zelongk/.local/bin")) - (add-to-list 'exec-path path)))) - (setq use-package-enable-imenu-support t) (setq load-prefer-newer noninteractive) diff --git a/lisp/init-better-default.el b/lisp/init-better-default.el index 1166abf..e27777c 100644 --- a/lisp/init-better-default.el +++ b/lisp/init-better-default.el @@ -7,6 +7,50 @@ ;; To disable collection of benchmark data after init is done. (add-hook 'elpaca-after-init-hook 'benchmark-init/deactivate)) +(defconst my-local-dir (concat user-emacs-directory ".local/")) + +(defconst my-env-file (concat my-local-dir "env")) + +(defun my-load-envvars-file (file &optional noerror) + "Read and set envvars from FILE. +If NOERROR is non-nil, don't throw an error if the file doesn't exist or is +unreadable. Returns the names of envvars that were changed." + (if (not (file-readable-p file)) + (unless noerror + (signal 'file-error (list "Couldn't read envvar file" file))) + (let (envvars environment) + (with-temp-buffer + (save-excursion + (insert "\n") + (insert-file-contents file)) + (while (re-search-forward "\n *\\([^#= \n]*\\)=" nil t) + (push (match-string 1) envvars) + (push (buffer-substring + (match-beginning 1) + (1- (or (save-excursion + (when (re-search-forward "^\\([^= ]+\\)=" nil t) + (line-beginning-position))) + (point-max)))) + environment))) + (when environment + (setq process-environment + (append (nreverse environment) process-environment) + exec-path + (if (member "PATH" envvars) + (append (split-string (getenv "PATH") path-separator t) + (list exec-directory)) + exec-path) + shell-file-name + (if (member "SHELL" envvars) + (or (getenv "SHELL") shell-file-name) + shell-file-name)) + envvars)))) + +(when (and (or (display-graphic-p) + (daemonp)) + (file-exists-p my-env-file)) + (my-load-envvars-file my-env-file)) + (setq custom-file (expand-file-name "~/.emacs.d/custom.el")) (add-hook 'elpaca-after-init-hook (lambda () (load custom-file 'no-error 'no-message)))