about summary refs log tree commit diff
path: root/modules/workstation/emacs/init.el
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-10-29 08:24:23 +0000
committerAlyssa Ross <hi@alyssa.is>2020-12-04 17:15:56 +0000
commit165b2e77ad00cad1cd878e410063dc306cb4b002 (patch)
tree69ffdc8f7ef9e8d93e9734ec2e1a48a29d576999 /modules/workstation/emacs/init.el
parent464936eda94fc1bec77d70b5a9593f56fc42ecc4 (diff)
downloadnixlib-165b2e77ad00cad1cd878e410063dc306cb4b002.tar
nixlib-165b2e77ad00cad1cd878e410063dc306cb4b002.tar.gz
nixlib-165b2e77ad00cad1cd878e410063dc306cb4b002.tar.bz2
nixlib-165b2e77ad00cad1cd878e410063dc306cb4b002.tar.lz
nixlib-165b2e77ad00cad1cd878e410063dc306cb4b002.tar.xz
nixlib-165b2e77ad00cad1cd878e410063dc306cb4b002.tar.zst
nixlib-165b2e77ad00cad1cd878e410063dc306cb4b002.zip
modules/emacs: set TERM in comint mode
This will mean some programs like git and cargo produce coloured
output in async-shell-command.
Diffstat (limited to 'modules/workstation/emacs/init.el')
-rw-r--r--modules/workstation/emacs/init.el23
1 files changed, 20 insertions, 3 deletions
diff --git a/modules/workstation/emacs/init.el b/modules/workstation/emacs/init.el
index e09d92863e24..a61ebccd50fb 100644
--- a/modules/workstation/emacs/init.el
+++ b/modules/workstation/emacs/init.el
@@ -23,6 +23,19 @@
 (setq bidi-paragraph-direction 'left-to-right)
 (setq bidi-inhibit-bpa t)
 
+;;; Utility functions ;;;
+
+;; Set an environment variable value for a single buffer.
+(defun setenv-local (variable &optional value substitute-env-vars)
+  ;; If process-environment is the global one, make a copy of it.
+  (when (eq process-environment (default-value 'process-environment))
+    (make-local-variable 'process-environment)
+    (setq process-environment (mapcar 'concat process-environment)))
+  (setenv variable value substitute-env-vars))
+
+(defun enable-ansi-color ()
+  (setenv-local "TERM" "dumb-emacs-ansi"))
+
 ;;; Major modes ;;;
 (add-to-list 'auto-mode-alist '("\\.adoc\\'" . adoc-mode))
 (add-to-list 'auto-mode-alist '("\\.quirks\\'" . conf-unix-mode))
@@ -33,6 +46,12 @@
   ;; Default to kernel style.
   (add-to-list 'c-default-style '(other . "linux")))
 
+;;; Comint ;;;
+(defun enable-comint-ansi-color ()
+  (when ansi-color-for-comint-mode
+    (enable-ansi-color)))
+(add-hook 'comint-mode-hook #'enable-comint-ansi-color)
+
 ;;; Dired ;;;
 (with-eval-after-load 'dired
   (setq dired-listing-switches
@@ -60,9 +79,7 @@
 (setenv "PAGER" "")
 
 ;;; Eshell ;;;
-;; Tell programs we support ANSI color.
-(add-hook 'eshell-mode-hook
-	  (lambda () (setenv "TERM" "dumb-emacs-ansi")))
+(add-hook 'eshell-mode-hook #'enable-ansi-color)
 
 ;;; Ibuffer ;;;
 ;; Open ibuffer in other window, to match behaviour of the default