Skip to content

Commit 46fda3c

Browse files
committed
tweak(core): more generic +env-save
1 parent 478d4f6 commit 46fda3c

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

elisp/+minemacs.el

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -442,11 +442,13 @@ Works like `shell-command-to-string' with two differences:
442442
(insert ";; Adding the rest of the environment variables\n")
443443
(dolist (env-var env-vars)
444444
(unless (cl-some (+apply-partially-right #'string-match-p (car env-var)) +env-deny-vars)
445-
;; Correctly handle edge cases '\n' and '\"'
446-
(let ((value (string-replace "\n" "\\n" (string-replace "\"" "\\\"" (cdr env-var)))))
447-
(insert (format "(setenv \"%s\" \"%s\")\n"
448-
(car env-var)
449-
(string-replace "\n" "\\n" value)))))))
445+
(let ((value (cdr env-var)))
446+
;; Correctly handle special characters
447+
(dolist (pair '(("\a" . "\\a") ("\b" . "\\b") ("\f" . "\\f")
448+
("\n" . "\\n") ("\r" . "\\r") ("\t" . "\\t")
449+
("\v" . "\\v") ("\"" . "\\\"")))
450+
(setq value (string-replace (car pair) (cdr pair) value)))
451+
(insert (format "(setenv \"%s\" \"%s\")\n" (car env-var) value))))))
450452
(write-file +env-file))))
451453

452454
;;;###autoload

0 commit comments

Comments
 (0)