summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-01-28 17:40:17 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2023-01-28 18:53:55 -0700
commitddecf80964d54478926aad8096e5f18aa6e57555 (patch)
treecc43114dc6d2ce1b8c25970a4e533d18b1b9a122
parent17959e71079c2a53cc49c25a554fbcb50ae5c929 (diff)
emacs: Tidy up/organize config
-rw-r--r--.config/emacs/.gitignore11
m---------.config/emacs/go-template-mode0
-rw-r--r--.config/emacs/init.el362
-rw-r--r--.config/symlinks1
4 files changed, 192 insertions, 182 deletions
diff --git a/.config/emacs/.gitignore b/.config/emacs/.gitignore
index ef4ec20..4e1b9c1 100644
--- a/.config/emacs/.gitignore
+++ b/.config/emacs/.gitignore
@@ -1,9 +1,2 @@
-auto-save-list/*
-el-get/*
-elmo/*
-elpa/*
-image-dired/*
-server/*
-session.*
-tramp
-url/*
+/tramp
+/games/
diff --git a/.config/emacs/go-template-mode b/.config/emacs/go-template-mode
new file mode 160000
+Subproject dcd12037308446179f26f7d2ab2c034a1e995d2
diff --git a/.config/emacs/init.el b/.config/emacs/init.el
index ef6d542..2834faf 100644
--- a/.config/emacs/init.el
+++ b/.config/emacs/init.el
@@ -4,7 +4,7 @@
;; With some differences in package.el initialization it should work with Emacs 24.4(+?).
;; Without (advice-add) it should work in older versions of Emacs 24.
-;;;; Use XDG-ish locations ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Use XDG-ish locations ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(let ((xdg-cache-home (file-name-as-directory (or (getenv "XDG_CACHE_HOME") "~/.cache")))
(xdg-data-home (file-name-as-directory (or (getenv "XDG_DATA_HOME") "~/.local/share"))))
(setq
@@ -24,13 +24,13 @@
(setq custom-file (concat user-emacs-directory "custom.el"))
(load custom-file 'noerror)
-;;;; The basics that I can't use Emacs without ;;;;;;;;;;;;;;;;;;;;;;;
+;;;; The basics that I can't use Emacs without ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(show-paren-mode 1)
(column-number-mode 1)
(line-number-mode 1)
(ido-mode 1)
(unless (daemonp) (server-mode 1))
-(when (require 'whitespace nil t)
+(when (require 'whitespace)
(setq whitespace-style '(
tab-mark
space-mark
@@ -45,7 +45,8 @@
))
-;;;; Early settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Early settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
;; This isn't particularly important, but set it before doing a whole
;; lot (loading packages), so there isn't a weird change in text size.
(set-face-attribute 'default nil
@@ -53,9 +54,12 @@
:height 80
;:weight 'semi-bold
)
+(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
+(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
+(setq inhibit-startup-screen t)
-;;;; Package management ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Package management ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; package.el
(when (require 'package)
@@ -87,7 +91,7 @@
(setq use-package-always-ensure t))
(require 'bind-key)
-;; Themes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Themes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package modus-themes
:config (progn
;; Modus makes MMM regions almost impossible to see
@@ -109,7 +113,7 @@
(modus-themes-load-vivendi)
))
-;; Minor modes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Minor modes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package editorconfig
:config (progn
(editorconfig-mode 1)
@@ -145,7 +149,7 @@
(apply 'smart-tabs-insinuate
(mapcar 'car smart-tabs-insinuate-alist))))
-;; Major modes (non-HTML-related) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Major modes (non-HTML-related) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(use-package bats-mode :mode "\\.bats\\'")
(use-package bazel
:mode (((rx "/" (or "BUILD" "BUILD.bazel") eos) . bazel-build-mode)
@@ -162,6 +166,11 @@
:mode "Dockerfile\\(?:\\..*\\)?\\'"
:commands (dockerfile-build-buffer
dockerfile-build-no-cache-buffer))
+(use-package erc
+ :config (add-hook 'erc-mode-hook
+ (lambda ()
+ (define-key erc-mode-map (kbd "C-c C-u") 'erc-cmd-QUERY)
+ )))
(use-package glsl-mode :mode ("\\.vert\\'" "\\.frag\\'" "\\.geom\\'" "\\.glsl\\'"))
(use-package go-mode :mode ("\\.go\\'" "go\\.mod"))
(use-package graphql-mode :mode ("\\.graphql\\'" "\\.gql\\'"))
@@ -174,6 +183,16 @@
(use-package jq-mode
:mode "\\.jq\\'"
:interpreter "jq")
+(use-package js
+ :interpreter (("node" . js-mode)
+ ("nodejs" . js-mode)
+ ("gjs" . js-mode)
+ ("rhino" . js-mode))
+ :config (add-hook 'js-mode-hook
+ (lambda ()
+ (hs-minor-mode t)
+ (local-set-key [C-tab] 'hs-toggle-hiding)
+ )))
(use-package lua-mode
:mode "\\.lua\\'"
:interpreter "lua")
@@ -181,6 +200,23 @@
(use-package meson-mode :mode "/meson\\(\\.build\\|_options\\.txt\\)\\'")
(use-package nginx-mode :mode ("nginx\\.conf\\'" "/nginx/.+\\.conf\\'"))
(use-package protobuf-mode :mode "\\.proto\\'")
+(use-package python
+ :mode ("\\.py[iw]?\\'" . python-mode)
+ :interpreter ("python[0-9.]*" . python-mode)
+ :config (add-hook 'python-mode-hook
+ (lambda ()
+ (hs-minor-mode t)
+ (local-set-key [C-tab] 'hs-toggle-hiding)
+ )))
+(use-package ruby-mode
+ :mode "\\(?:\\.\\(?:rbw?\\|ru\\|rake\\|thor\\|jbuilder\\|rabl\\|gemspec\\|podspec\\)\\|/\\(?:Gem\\|Rake\\|Cap\\|Thor\\|Puppet\\|Berks\\|Brew\\|Vagrant\\|Guard\\|Pod\\)file\\)\\'"
+ :interpreter ("ruby" "rbx" "jruby" "ruby1.9" "ruby1.8")
+ :config (add-hook 'ruby-mode-hook
+ (lambda ()
+ (set (make-local-variable 'indent-tabs-mode) t)
+ (set (make-local-variable 'ruby-indent-level) 4)
+ (set (make-local-variable 'tab-width) 4)
+ )))
(use-package terraform-mode :mode "\\.tf\\(vars\\)?\\'")
(use-package yaml-mode
:mode "\\.\\(e?ya?\\|ra\\)ml\\'"
@@ -211,7 +247,16 @@
(use-package typescript-mode :mode "\\.tsx?\\'")
(use-package web-mode
:mode ("\\.html\\'"
- "\\.vue\\'"))
+ "\\.vue\\'")
+ :config (add-hook 'web-mode-hook
+ (lambda ()
+ (setq web-mode-enable-auto-closing nil)
+ (setq web-mode-enable-auto-pairing nil)
+ (setq web-mode-enable-auto-opening nil)
+ (setq web-mode-enable-auto-quoting nil)
+ (setq web-mode-enable-auto-expanding nil)
+ (setq web-mode-enable-auto-indentation nil)
+ )))
(use-package mmm-mode
:load mmm-auto
:config (progn
@@ -244,14 +289,144 @@
'wl-draft-send
'wl-draft-kill
'mail-send-hook)
- (setq mail-user-agent 'wl-user-agent))))
+ (setq mail-user-agent 'wl-user-agent)
+ ;; Use mailcrypt to encrypt/decrypt email
+ (when (require 'mailcrypt nil t)
+ (mc-setversion "gpg")
+ (add-hook 'wl-summary-mode-hook 'mc-install-read-mode)
+ (add-hook 'wl-mail-setup-hook 'mc-install-write-mode)
+ (defun mc-wl-verify-signature ()
+ (interactive)
+ (save-window-excursion
+ (wl-summary-jump-to-current-message)
+ (mc-verify)))
+ (defun mc-wl-decrypt-message ()
+ (interactive)
+ (save-window-excursion
+ (wl-summary-jump-to-current-message)
+ (let ((inhibit-read-only t))
+ (mc-decrypt))))
+ (eval-after-load "mailcrypt"
+ '(setq mc-modes-alist
+ (append
+ (quote
+ ((wl-draft-mode (encrypt . mc-encrypt-message)
+ (sign . mc-sign-message))
+ (wl-summary-mode (decrypt . mc-wl-decrypt-message)
+ (verify . mc-wl-verify-signature))))
+ mc-modes-alist))))
+ )))
-;; Misc. crap
+;; Non-built-in modes that aren't available with (use-package) ;;;;;;;;;;;;;;;;;
+
+(eval-when-compile
+ (add-to-list 'load-path (concat user-emacs-directory "go-template-mode"))
+ (require 'go-template-mode))
+
+;; http://www.emacswiki.org/emacs/XModMapMode
+(when (not (fboundp 'xmodmap-mode))
+ (define-generic-mode 'xmodmap-mode
+ '(?!)
+ '("add" "clear" "keycode" "keysym" "pointer" "remove")
+ nil
+ '("[xX]modmap\\(rc\\)?\\'")
+ nil
+ "Simple mode for xmodmap files."))
+
+
+;; Config for built-in modes that are not exposed as ELPA :core packages ;;;;;;;
+
+(add-hook 'text-mode-hook 'turn-on-auto-fill)
+
+(add-hook 'lisp-mode-hook
+ (lambda ()
+ (set (make-local-variable 'indent-tabs-mode) nil)
+ ))
+
+(add-hook 'emacs-lisp-mode-hook
+ (lambda ()
+ (set (make-local-variable 'indent-tabs-mode) nil)
+ ))
+
+(eval-after-load "term"
+ '(progn
+ ;; Better buffer names ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;
+ ;; Ideally, figuring this out should be done by uniquify, but I
+ ;; haven't determined how to get uniquify to think that it manages the
+ ;; term buffer.
+ (defun term-get-short-cwd ()
+ ;; local base=$PWD
+ ;; local suffix=''
+ ;; # The regex here is a list of directory names
+ ;; # that aren't really helpful, and that the
+ ;; # parent directory should be included also.
+ ;; if [[ $base =~ (/(src|pkg|doc|pkg-libre|src-libre|trunk|tags|branches))*$ ]]; then
+ ;; suffix=$BASH_REMATCH
+ ;; base=${base%$suffix}
+ ;; fi
+ ;; base=${base##*/}
+ ;; echo ${base}${suffix}
+ (directory-file-name default-directory))
+ (defun term-handle-ansi-terminal-messages--uniquify (args)
+ (rename-buffer (concat
+ (replace-regexp-in-string "<.*>$" "" (buffer-name))
+ "<"
+ (term-get-short-cwd)
+ ">")
+ t))
+ (advice-add 'term-handle-ansi-terminal-messages :after
+ #'term-handle-ansi-terminal-messages--uniquify)
+ ;; Mode settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ (add-hook 'term-mode-hook
+ (lambda ()
+ (auto-fill-mode -1)
+ (setq term-prompt-regexp "^[^#$%>\n]*[#$%>] *")
+ (set (make-local-variable 'mouse-yank-at-point) t)
+ (setq tab-width 8 )
+ (setq truncate-lines nil)
+ (set (make-local-variable 'autopair-dont-activate) t) ;; Don't let autopair break ansi-term
+ ))))
+
+
+(add-hook 'tex-mode-hook
+ (lambda ()
+ (set (make-local-variable 'tab-always-indent) nil)
+ (set (make-local-variable 'indent-tabs-mode) t)
+
+ ))
+
+(eval-after-load "sh-script"
+ '(progn
+ ;; Fix indentation ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ (defun sh-smie-sh-rules--fix (args)
+ "Replace :after \"then\" with :after \"if\" because Emacs 24
+sh-script.el is broken."
+ (if (equal args (list :after "then"))
+ (list :after "if")
+ args))
+ (advice-add 'sh-smie-sh-rules :filter-args
+ #'sh-smie-sh-rules--fix)
+ ;; Mode settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ (add-hook 'sh-mode-hook
+ (lambda ()
+ (sh-electric-here-document-mode 0)
+ ))))
+
+(add-hook 'outline-minor-mode-hook
+ (lambda ()
+ (define-key outline-minor-mode-map [C-tab] 'outline-cycle)))
+
+(add-to-list 'auto-mode-alist '("PKGBUILD" . sh-mode))
+(add-to-list 'auto-mode-alist '("SRCBUILD" . sh-mode))
+(add-to-list 'auto-mode-alist '("\\.mak\\'" . makefile-gmake-mode))
+(add-to-list 'auto-mode-alist '("\\.jad\\'" . java-mode))
+(add-to-list 'auto-mode-alist '("\\.schema\\'" . js-mode))
+
+
+;; Misc. crap ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
-(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
-(setq inhibit-startup-screen t)
(setq-default truncate-lines t)
(defun align-regexp--use-spaces (orig-fun &rest args)
@@ -261,43 +436,6 @@
(advice-add 'align-regexp :around
#'align-regexp--use-spaces)
-(defun sh-smie-sh-rules--fix (args)
- "Replace :after \"then\" with :after \"if\" because Emacs 24
-sh-script.el is broken."
- (if (equal args (list :after "then"))
- (list :after "if")
- args))
-(advice-add 'sh-smie-sh-rules :filter-args
- #'sh-smie-sh-rules--fix)
-
-;; Ideally, figuring this out should be done by uniquify, but I
-;; haven't determined how to get uniquify to think that it manages the
-;; term buffer.
-(defun term-get-short-cwd ()
- ;; local base=$PWD
- ;; local suffix=''
- ;; # The regex here is a list of directory names
- ;; # that aren't really helpful, and that the
- ;; # parent directory should be included also.
- ;; if [[ $base =~ (/(src|pkg|doc|pkg-libre|src-libre|trunk|tags|branches))*$ ]]; then
- ;; suffix=$BASH_REMATCH
- ;; base=${base%$suffix}
- ;; fi
- ;; base=${base##*/}
- ;; echo ${base}${suffix}
- (directory-file-name default-directory))
-(defun term-handle-ansi-terminal-messages--uniquify (args)
- (rename-buffer (concat
- (replace-regexp-in-string "<.*>$" "" (buffer-name))
- "<"
- (term-get-short-cwd)
- ">")
- t))
-(advice-add 'term-handle-ansi-terminal-messages :after
- #'term-handle-ansi-terminal-messages--uniquify)
-
-
-
;; Make the mouse work in an xterm
(when (fboundp 'xterm-mouse-mode)
(xterm-mouse-mode 1)
@@ -310,33 +448,6 @@ sh-script.el is broken."
;; customize doesn't correctly set this.
(setq tramp-use-ssh-controlmaster-options nil)
-;; Use mailcrypt to encrypt/decrypt email
-(when (require 'mailcrypt nil t)
- (mc-setversion "gpg")
- (add-hook 'wl-summary-mode-hook 'mc-install-read-mode)
- (add-hook 'wl-mail-setup-hook 'mc-install-write-mode)
- (defun mc-wl-verify-signature ()
- (interactive)
- (save-window-excursion
- (wl-summary-jump-to-current-message)
- (mc-verify)))
- (defun mc-wl-decrypt-message ()
- (interactive)
- (save-window-excursion
- (wl-summary-jump-to-current-message)
- (let ((inhibit-read-only t))
- (mc-decrypt))))
- (eval-after-load "mailcrypt"
- '(setq mc-modes-alist
- (append
- (quote
- ((wl-draft-mode (encrypt . mc-encrypt-message)
- (sign . mc-sign-message))
- (wl-summary-mode (decrypt . mc-wl-decrypt-message)
- (verify . mc-wl-verify-signature))))
- mc-modes-alist)))
- )
-
;; Indent settings
(setq-default
indent-tabs-mode t
@@ -378,100 +489,7 @@ sh-script.el is broken."
(smerge-mode 1))))
(add-hook 'find-file-hook 'try-smerge-mode t)
-;; http://www.emacswiki.org/emacs/XModMapMode
-(when (not (fboundp 'xmodmap-mode))
- (define-generic-mode 'xmodmap-mode
- '(?!)
- '("add" "clear" "keycode" "keysym" "pointer" "remove")
- nil
- '("[xX]modmap\\(rc\\)?\\'")
- nil
- "Simple mode for xmodmap files."))
-
-
-;; All my weird mode-specific settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(add-hook 'text-mode-hook 'turn-on-auto-fill)
-
-(add-hook 'lisp-mode-hook
- (lambda ()
- (set (make-local-variable 'indent-tabs-mode) nil)
- ))
-
-(add-hook 'emacs-lisp-mode-hook
- (lambda ()
- (set (make-local-variable 'indent-tabs-mode) nil)
- ))
-
-(add-hook 'term-mode-hook
- (lambda ()
- (auto-fill-mode -1)
- (setq term-prompt-regexp "^[^#$%>\n]*[#$%>] *")
- (set (make-local-variable 'mouse-yank-at-point) t)
- (setq tab-width 8 )
- (setq truncate-lines nil)
- (set (make-local-variable 'autopair-dont-activate) t) ;; Don't let autopair break ansi-term
- ))
-
-(add-hook 'ruby-mode-hook
- (lambda ()
- (set (make-local-variable 'indent-tabs-mode) t)
- (set (make-local-variable 'ruby-indent-level) 4)
- (set (make-local-variable 'tab-width) 4)
- ))
-
-(add-hook 'tex-mode-hook
- (lambda ()
- (set (make-local-variable 'tab-always-indent) nil)
- (set (make-local-variable 'indent-tabs-mode) t)
- ))
-
-(add-hook 'sh-mode-hook
- (lambda ()
- (sh-electric-here-document-mode 0)
- ))
-
-(add-hook 'erc-mode-hook
- (lambda ()
- (define-key erc-mode-map (kbd "C-c C-u") 'erc-cmd-QUERY)
- ))
-
-(add-hook 'js-mode-hook
- (lambda ()
- (hs-minor-mode t)
- (local-set-key [C-tab] 'hs-toggle-hiding)
- ))
-
-(add-hook 'python-mode-hook
- (lambda ()
- (hs-minor-mode t)
- (local-set-key [C-tab] 'hs-toggle-hiding)
- ))
-
-(add-hook 'outline-minor-mode-hook
- (lambda ()
- (define-key outline-minor-mode-map [C-tab] 'outline-cycle)))
-
-(add-hook 'web-mode-hook
- (lambda ()
- (setq web-mode-enable-auto-closing nil)
- (setq web-mode-enable-auto-pairing nil)
- (setq web-mode-enable-auto-opening nil)
- (setq web-mode-enable-auto-quoting nil)
- (setq web-mode-enable-auto-expanding nil)
- (setq web-mode-enable-auto-indentation nil)
- ))
-
-(add-to-list 'auto-mode-alist '("PKGBUILD" . sh-mode))
-(add-to-list 'auto-mode-alist '("SRCBUILD" . sh-mode))
-(add-to-list 'auto-mode-alist '("\\.mak\\'" . makefile-gmake-mode))
-(add-to-list 'auto-mode-alist '("\\.jad\\'" . java-mode))
-(add-to-list 'auto-mode-alist '("\\.schema\\'" . js-mode))
-
-(eval-when-compile
- (add-to-list 'load-path (concat user-emacs-directory "go-template-mode"))
- (require 'go-template-mode))
-
+;; Interactive commands
(defun hex2dec-region (beg end)
"Convert the region from hexadecimal to decimal."
(interactive "r")
diff --git a/.config/symlinks b/.config/symlinks
index 550f444..1c3738b 100644
--- a/.config/symlinks
+++ b/.config/symlinks
@@ -29,7 +29,6 @@
# Directories
.config/arduino/ .arduino
.config/bazaar/ .bazaar
-.config/emacs/ .emacs.d
.config/icons/ .icons
.config/mozilla/ .mozilla #
.config/mplayer/ .mplayer #