From f4f1608a267783eb6cf40da9b5c3091cde6550ee Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 28 Nov 2018 13:47:27 +1300 Subject: [PATCH 001/418] Remove obsolete code in init-ibuffer.el --- lisp/init-ibuffer.el | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index adc7c6dcc8..2992ff35cb 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -27,11 +27,6 @@ (t (format "%8d" (buffer-size)))))) -;; Explicitly require ibuffer-vc to get its column definitions, which -;; can't be autoloaded -(after-load 'ibuffer - (require 'ibuffer-vc)) - ;; Modify the default ibuffer-formats (toggle with `) (setq ibuffer-formats '((mark modified read-only vc-status-mini " " From d5be1e7aa480a7b4c19cc4fee52118aba50898fe Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 28 Nov 2018 13:47:41 +1300 Subject: [PATCH 002/418] Make buffer name columns in ibuffer slightly wider --- lisp/init-ibuffer.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index 2992ff35cb..abd678e2d5 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -30,7 +30,7 @@ ;; Modify the default ibuffer-formats (toggle with `) (setq ibuffer-formats '((mark modified read-only vc-status-mini " " - (name 18 18 :left :elide) + (name 22 22 :left :elide) " " (size-h 9 -1 :right) " " @@ -38,7 +38,7 @@ " " filename-and-process) (mark modified read-only vc-status-mini " " - (name 18 18 :left :elide) + (name 22 22 :left :elide) " " (size-h 9 -1 :right) " " From 58f2ec16e49fe9f7cc1b841872089ae53a4653bd Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 28 Nov 2018 14:17:14 +1300 Subject: [PATCH 003/418] Define human-readable ibuffer size column using built-in function --- lisp/init-ibuffer.el | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index abd678e2d5..6fd22bb83b 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -21,10 +21,7 @@ ;; Use human readable Size column instead of original one (define-ibuffer-column size-h (:name "Size" :inline t) - (cond - ((> (buffer-size) 1000000) (format "%7.1fM" (/ (buffer-size) 1000000.0))) - ((> (buffer-size) 1000) (format "%7.1fk" (/ (buffer-size) 1000.0))) - (t (format "%8d" (buffer-size)))))) + (file-size-human-readable (buffer-size)))) ;; Modify the default ibuffer-formats (toggle with `) From b22c05747d0c830448c67560fc43308f04917a5f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 28 Nov 2018 14:17:55 +1300 Subject: [PATCH 004/418] Adjust ibuffer column widths --- lisp/init-ibuffer.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index 6fd22bb83b..7354eeed14 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -31,7 +31,7 @@ " " (size-h 9 -1 :right) " " - (mode 16 16 :left :elide) + (mode 12 12 :left :elide) " " filename-and-process) (mark modified read-only vc-status-mini " " @@ -39,9 +39,9 @@ " " (size-h 9 -1 :right) " " - (mode 16 16 :left :elide) + (mode 14 14 :left :elide) " " - (vc-status 16 16 :left) + (vc-status 12 12 :left) " " filename-and-process))) From 5c6b9b90b551e1cd2daba07637a4c6a4f0cf1ed4 Mon Sep 17 00:00:00 2001 From: re-mx Date: Wed, 28 Nov 2018 18:39:41 +0800 Subject: [PATCH 005/418] Remove unnecessary let bindings --- lisp/init-ruby.el | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index efcf591331..016407aa6a 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -35,9 +35,8 @@ (require-package 'ruby-compilation) (after-load 'ruby-mode - (let ((m ruby-mode-map)) - (define-key m [S-f7] 'ruby-compilation-this-buffer) - (define-key m [f7] 'ruby-compilation-this-test))) + (define-key ruby-mode-map [S-f7] 'ruby-compilation-this-buffer) + (define-key ruby-mode-map [f7] 'ruby-compilation-this-test)) (after-load 'ruby-compilation (defalias 'rake 'ruby-compilation-rake)) @@ -81,11 +80,10 @@ (add-hook (derived-mode-hook-name mode) (lambda () (require 'mmm-erb))) (mmm-add-mode-ext-class mode "\\.erb\\'" 'erb)) -(let ((html-erb-modes '(html-mode html-erb-mode nxml-mode))) - (dolist (mode html-erb-modes) - (sanityinc/set-up-mode-for-erb mode) - (mmm-add-mode-ext-class mode "\\.r?html\\(\\.erb\\)?\\'" 'html-js) - (mmm-add-mode-ext-class mode "\\.r?html\\(\\.erb\\)?\\'" 'html-css))) +(dolist (mode '(html-mode html-erb-mode nxml-mode)) + (sanityinc/set-up-mode-for-erb mode) + (mmm-add-mode-ext-class mode "\\.r?html\\(\\.erb\\)?\\'" 'html-js) + (mmm-add-mode-ext-class mode "\\.r?html\\(\\.erb\\)?\\'" 'html-css)) (mapc 'sanityinc/set-up-mode-for-erb '(coffee-mode js-mode js2-mode js3-mode markdown-mode textile-mode)) From 258e552413184f27ac87c425f7299c01b9ea9b02 Mon Sep 17 00:00:00 2001 From: re-mx Date: Wed, 28 Nov 2018 18:40:44 +0800 Subject: [PATCH 006/418] Improve comments in init-ruby.el --- lisp/init-ruby.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index 016407aa6a..d67f37a280 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -119,7 +119,7 @@ ;; :delimiter-mode nil))) ;; (mmm-add-mode-ext-class 'ruby-mode "\\.rb\\'" 'ruby-heredoc-sql))) -;(add-to-list 'mmm-set-file-name-for-modes 'ruby-mode) +;; (add-to-list 'mmm-set-file-name-for-modes 'ruby-mode) From f283313bddb948056a2a4e6300ab8f41cda63b98 Mon Sep 17 00:00:00 2001 From: re-mx Date: Wed, 28 Nov 2018 19:20:18 +0800 Subject: [PATCH 007/418] Remove unnecessary "require-package" for ruby-mode There is only a built-in ruby-mode --- lisp/init-ruby.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index d67f37a280..89980f6c6c 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -1,5 +1,4 @@ ;;; Basic ruby setup -(require-package 'ruby-mode) (require-package 'ruby-hash-syntax) (add-auto-mode 'ruby-mode From 84c5f112dd929a42ac7f537ec9d45cac679fe40d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 29 Nov 2018 16:54:04 +1300 Subject: [PATCH 008/418] Use new vc-relative-file column from ibuffer-vc --- lisp/init-ibuffer.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index 7354eeed14..44d8cad2e0 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -33,7 +33,7 @@ " " (mode 12 12 :left :elide) " " - filename-and-process) + vc-relative-file) (mark modified read-only vc-status-mini " " (name 22 22 :left :elide) " " @@ -43,7 +43,7 @@ " " (vc-status 12 12 :left) " " - filename-and-process))) + vc-relative-file))) (setq ibuffer-filter-group-name-face 'font-lock-doc-face) From 0d9836a79d247202a0fc1da9f1406b330e95095e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 29 Nov 2018 16:55:39 +1300 Subject: [PATCH 009/418] Refresh "dimmer" state when the frame background mode changes --- lisp/init-themes.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-themes.el b/lisp/init-themes.el index dcd88fc2fe..6168f0202a 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -33,7 +33,9 @@ (when (maybe-require-package 'dimmer) (setq-default dimmer-fraction 0.15) - (add-hook 'after-init-hook 'dimmer-mode)) + (add-hook 'after-init-hook 'dimmer-mode) + ;; TODO: file upstream as a PR + (advice-add 'frame-set-background-mode :after (lambda (&rest args) (dimmer-process-all)))) (provide 'init-themes) From d0cb6cf44b5ba1aac2ed2a05fdea7afeb2023a62 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 30 Nov 2018 15:22:50 +1300 Subject: [PATCH 010/418] Don't add dimmer-related advice until dimmer is loaded (fixes #661) --- lisp/init-themes.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-themes.el b/lisp/init-themes.el index 6168f0202a..88e8a367f5 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -35,7 +35,8 @@ (setq-default dimmer-fraction 0.15) (add-hook 'after-init-hook 'dimmer-mode) ;; TODO: file upstream as a PR - (advice-add 'frame-set-background-mode :after (lambda (&rest args) (dimmer-process-all)))) + (after-load 'dimmer + (advice-add 'frame-set-background-mode :after (lambda (&rest args) (dimmer-process-all))))) (provide 'init-themes) From 01cd0822c9b5456862e49a959072c06b62083ebe Mon Sep 17 00:00:00 2001 From: re-mx Date: Fri, 30 Nov 2018 19:01:00 +0800 Subject: [PATCH 011/418] Move flyspell config to init-spelling.el --- lisp/init-flyspell.el | 11 ----------- lisp/init-spelling.el | 7 ++++++- 2 files changed, 6 insertions(+), 12 deletions(-) delete mode 100644 lisp/init-flyspell.el diff --git a/lisp/init-flyspell.el b/lisp/init-flyspell.el deleted file mode 100644 index 4c64393e1c..0000000000 --- a/lisp/init-flyspell.el +++ /dev/null @@ -1,11 +0,0 @@ -;;---------------------------------------------------------------------------- -;; Add spell-checking in comments for all programming language modes -;;---------------------------------------------------------------------------- -(add-hook 'prog-mode-hook 'flyspell-prog-mode) - -(after-load 'flyspell - (define-key flyspell-mode-map (kbd "C-;") nil) - (add-to-list 'flyspell-prog-text-faces 'nxml-text-face)) - - -(provide 'init-flyspell) diff --git a/lisp/init-spelling.el b/lisp/init-spelling.el index 0c79bd304d..5e9e722837 100644 --- a/lisp/init-spelling.el +++ b/lisp/init-spelling.el @@ -1,6 +1,11 @@ (require 'ispell) (when (executable-find ispell-program-name) - (require 'init-flyspell)) + ;; Add spell-checking in comments for all programming language modes + (add-hook 'prog-mode-hook 'flyspell-prog-mode) + + (after-load 'flyspell + (define-key flyspell-mode-map (kbd "C-;") nil) + (add-to-list 'flyspell-prog-text-faces 'nxml-text-face))) (provide 'init-spelling) From f8782da7d91a0726aad8649ee77b6bfbaf31833a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 1 Dec 2018 15:05:06 +1300 Subject: [PATCH 012/418] Rely on eldoc-global-mode to enable eldoc everywhere (Emacs 25.1) --- lisp/init-clojure-cider.el | 1 - lisp/init-lisp.el | 1 - lisp/init-rust.el | 3 +-- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/lisp/init-clojure-cider.el b/lisp/init-clojure-cider.el index e152d8a71b..6248192cec 100644 --- a/lisp/init-clojure-cider.el +++ b/lisp/init-clojure-cider.el @@ -4,7 +4,6 @@ (setq nrepl-popup-stacktraces nil) (after-load 'cider - (add-hook 'cider-mode-hook 'eldoc-mode) (add-hook 'cider-repl-mode-hook 'subword-mode) (add-hook 'cider-repl-mode-hook 'paredit-mode) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index f833dac880..5c7ddef670 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -127,7 +127,6 @@ (defvar sanityinc/lispy-modes-hook '(enable-paredit-mode - turn-on-eldoc-mode sanityinc/enable-check-parens-on-save) "Hook run in all Lisp modes.") diff --git a/lisp/init-rust.el b/lisp/init-rust.el index 1cc4f9eb08..68d7ed5db1 100644 --- a/lisp/init-rust.el +++ b/lisp/init-rust.el @@ -1,7 +1,6 @@ (when (maybe-require-package 'rust-mode) (when (maybe-require-package 'racer) - (add-hook 'rust-mode-hook #'racer-mode) - (add-hook 'racer-mode-hook #'eldoc-mode)) + (add-hook 'rust-mode-hook #'racer-mode)) (when (maybe-require-package 'company) (add-hook 'racer-mode-hook #'company-mode))) From 86be737a4dee521d7ba166434277c825879f786f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 6 Dec 2018 09:34:51 +1300 Subject: [PATCH 013/418] Disable magit-todos for now because of https://github.com/alphapapa/magit-todos/pull/58 --- lisp/init-git.el | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index 1e22393663..c8c83404ec 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -19,9 +19,7 @@ (define-key magit-status-mode-map (kbd "C-M-") 'magit-section-up) (add-hook 'magit-popup-mode-hook 'sanityinc/no-trailing-whitespace)) -(when (maybe-require-package 'magit-todos) - (after-load 'magit - (magit-todos-mode))) +(maybe-require-package 'magit-todos) (require-package 'fullframe) (after-load 'magit From 46a9f51676d5637b9346e7a241c96f7bdaab4df5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 10 Dec 2018 15:27:29 +1300 Subject: [PATCH 014/418] Remove git-messenger: I don't really use it --- lisp/init-git.el | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index c8c83404ec..f612c2f0e3 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -75,12 +75,5 @@ (compilation-buffer-name-function (lambda (major-mode-name) "*git-svn*"))) (compile (concat "git svn " command)))) - -(maybe-require-package 'git-messenger) -;; Though see also vc-annotate's "n" & "p" bindings -(after-load 'vc - (setq git-messenger:show-detail t) - (define-key vc-prefix-map (kbd "p") #'git-messenger:popup-message)) - (provide 'init-git) From b75559e6cd4160eb85e4ace4978d22f1d2c0d52b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 12 Dec 2018 13:42:23 +1300 Subject: [PATCH 015/418] Drop use of eldoc-eval in older Emacsen: support only newer equivalent --- lisp/init-lisp.el | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 5c7ddef670..e6bf17d4cc 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -159,11 +159,8 @@ (dolist (hook (mapcar #'derived-mode-hook-name sanityinc/elispy-modes)) (add-hook hook 'sanityinc/emacs-lisp-setup)) -(if (boundp 'eval-expression-minibuffer-setup-hook) - (add-hook 'eval-expression-minibuffer-setup-hook #'eldoc-mode) - (require-package 'eldoc-eval) - (require 'eldoc-eval) - (add-hook 'after-init-hook 'eldoc-in-minibuffer-mode)) +(when (boundp 'eval-expression-minibuffer-setup-hook) + (add-hook 'eval-expression-minibuffer-setup-hook #'eldoc-mode)) (add-to-list 'auto-mode-alist '("\\.emacs-project\\'" . emacs-lisp-mode)) (add-to-list 'auto-mode-alist '("archive-contents\\'" . emacs-lisp-mode)) From 0d6add66c2885eaadd1da33befd6cd8ecb38c01a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 12 Dec 2018 13:42:53 +1300 Subject: [PATCH 016/418] Use my extracted "cl-libify" package in place of a local helper fn --- lisp/init-lisp.el | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index e6bf17d4cc..12fb6a5c41 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -246,31 +246,7 @@ (define-key ert-results-mode-map (kbd "g") 'ert-results-rerun-all-tests)) -(defun sanityinc/cl-libify-next () - "Find next symbol from 'cl and replace it with the 'cl-lib equivalent." - (interactive) - (let ((case-fold-search nil)) - (re-search-forward - (concat - "(" - (regexp-opt - ;; Not an exhaustive list - '("loop" "incf" "plusp" "first" "decf" "minusp" "assert" - "case" "destructuring-bind" "second" "third" "defun*" - "defmacro*" "return-from" "labels" "cadar" "fourth" - "cadadr") t) - "\\_>"))) - (let ((form (match-string 1))) - (backward-sexp) - (cond - ((string-match "^\\(defun\\|defmacro\\)\\*$") - (kill-sexp) - (insert (concat "cl-" (match-string 1)))) - (t - (insert "cl-"))) - (when (fboundp 'aggressive-indent-indent-defun) - (aggressive-indent-indent-defun)))) - +(maybe-require-package 'cl-libify) (maybe-require-package 'cask-mode) From 0bde443f98d131babd7d0ae9095653606b2529a9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 12 Dec 2018 13:44:30 +1300 Subject: [PATCH 017/418] Use sanityinc/ prefix for more commands --- lisp/init-editing-utils.el | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index cbfe186006..c9e7d19170 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -220,16 +220,16 @@ ;;---------------------------------------------------------------------------- ;; Fix backward-up-list to understand quotes, see http://bit.ly/h7mdIL ;;---------------------------------------------------------------------------- -(defun backward-up-sexp (arg) +(defun sanityinc/backward-up-sexp (arg) "Jump up to the start of the ARG'th enclosing sexp." (interactive "p") (let ((ppss (syntax-ppss))) (cond ((elt ppss 3) (goto-char (elt ppss 8)) - (backward-up-sexp (1- arg))) + (sanityinc/backward-up-sexp (1- arg))) ((backward-up-list arg))))) -(global-set-key [remap backward-up-list] 'backward-up-sexp) ; C-M-u, C-M-up +(global-set-key [remap backward-up-list] 'sanityinc/backward-up-sexp) ; C-M-u, C-M-up ;;---------------------------------------------------------------------------- @@ -300,8 +300,8 @@ With arg N, insert N newlines." ;;---------------------------------------------------------------------------- ;; Random line sorting ;;---------------------------------------------------------------------------- -(defun sort-lines-random (beg end) - "Sort lines in region randomly." +(defun sanityinc/sort-lines-random (beg end) + "Sort lines in region from BEG to END randomly." (interactive "r") (save-excursion (save-restriction From 0e4e498e68c8cc075608630f075893e02dd5a188 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 12 Dec 2018 13:45:56 +1300 Subject: [PATCH 018/418] In git projects, use magit for VC logs ("C-x v l") --- lisp/init-git.el | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index f612c2f0e3..e835db87f6 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -13,7 +13,20 @@ ;; quickly open magit on any one of your projects. (global-set-key [(meta f12)] 'magit-status) (global-set-key (kbd "C-x g") 'magit-status) - (global-set-key (kbd "C-x M-g") 'magit-dispatch-popup)) + (global-set-key (kbd "C-x M-g") 'magit-dispatch-popup) + + (defun sanityinc/magit-or-vc-log-file (&optional prompt) + (interactive "P") + (if (and (buffer-file-name) + (eq 'Git (vc-backend (buffer-file-name)))) + (if prompt + (magit-log-buffer-file-popup) + (magit-log-buffer-file t)) + (vc-print-log))) + + (after-load 'vc + (define-key vc-prefix-map (kbd "l") 'sanityinc/magit-or-vc-log-file))) + (after-load 'magit (define-key magit-status-mode-map (kbd "C-M-") 'magit-section-up) From 69d694fc0538cf71c9ca2e0d317807c2420b0bef Mon Sep 17 00:00:00 2001 From: re-mx Date: Mon, 17 Dec 2018 19:34:07 +0800 Subject: [PATCH 019/418] Use company-after-completion-hook instead of company-completion-{finished|cancelled}-hook --- lisp/init-company.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index 1b1949db31..e4d1f70f7e 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -35,8 +35,7 @@ (page-break-lines-mode 1))) (add-hook 'company-completion-started-hook 'sanityinc/page-break-lines-disable) - (add-hook 'company-completion-finished-hook 'sanityinc/page-break-lines-maybe-reenable) - (add-hook 'company-completion-cancelled-hook 'sanityinc/page-break-lines-maybe-reenable))) + (add-hook 'company-after-completion-hook 'sanityinc/page-break-lines-maybe-reenable))) From 4ddcac3a1d2a4e9afc63bde6289f8684a6f9024b Mon Sep 17 00:00:00 2001 From: re-mx Date: Fri, 21 Dec 2018 09:04:11 +0800 Subject: [PATCH 020/418] Do not save ido variables in the desktop-file --- lisp/init-sessions.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index 4a6142d37d..0334203b1c 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -49,10 +49,6 @@ (file-name-history . 100) (grep-find-history . 30) (grep-history . 30) - (ido-buffer-history . 100) - (ido-last-directory-list . 100) - (ido-work-directory-list . 100) - (ido-work-file-list . 100) (ivy-history . 100) (magit-read-rev-history . 50) (minibuffer-history . 50) From c4d7a021a465bc2a623d12b2c21dba6c53a592c5 Mon Sep 17 00:00:00 2001 From: re-mx Date: Fri, 21 Dec 2018 09:04:51 +0800 Subject: [PATCH 021/418] Save magit-revision-history in desktop-file instead of magit-read-rev-history --- lisp/init-sessions.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index 0334203b1c..a894f9b0e0 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -50,7 +50,7 @@ (grep-find-history . 30) (grep-history . 30) (ivy-history . 100) - (magit-read-rev-history . 50) + (magit-revision-history . 50) (minibuffer-history . 50) (org-clock-history . 50) (org-refile-history . 50) From e4bb340fcf5233c995b2e30265592a9369b3de94 Mon Sep 17 00:00:00 2001 From: lanzhiheng Date: Sun, 30 Dec 2018 09:59:13 +0800 Subject: [PATCH 022/418] Add `.cache/` to .gitignore file. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index cae05a7f97..6ea54eeeaf 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,4 @@ site-lisp/package/ /rake.cache /plantuml.jar /magithub +.cache/ \ No newline at end of file From 4561d3c5f1b29919aba9fd2e1a56f2d35019311d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 31 Dec 2018 09:02:59 +1300 Subject: [PATCH 023/418] Provide keybinding for git-timemachine --- lisp/init-git.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index e835db87f6..610de82b34 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -3,7 +3,9 @@ (require-package 'git-blamed) (require-package 'gitignore-mode) (require-package 'gitconfig-mode) -(maybe-require-package 'git-timemachine) +(when (maybe-require-package 'git-timemachine) + (global-set-key (kbd "C-x v t") 'git-timemachine-toggle)) + (when (maybe-require-package 'magit) From 774c42f5e188032de89d4df6b10a74fdd41f245a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 31 Dec 2018 09:05:20 +1300 Subject: [PATCH 024/418] Ignore forge-database.sqlite --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6ea54eeeaf..b6b3629eab 100644 --- a/.gitignore +++ b/.gitignore @@ -48,4 +48,5 @@ site-lisp/package/ /rake.cache /plantuml.jar /magithub -.cache/ \ No newline at end of file +.cache/ +/forge-database.sqlite From a97dc5a44242f7f78c70335a9532bc657ea0a8d8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 31 Dec 2018 11:49:20 +1300 Subject: [PATCH 025/418] Add basic file headers to appease Flycheck --- init.el | 14 ++++++++++---- lisp/init-benchmarking.el | 5 +++++ lisp/init-clojure-cider.el | 5 +++++ lisp/init-clojure.el | 5 +++++ lisp/init-common-lisp.el | 5 +++++ lisp/init-company.el | 5 +++++ lisp/init-compile.el | 5 +++++ lisp/init-crontab.el | 5 +++++ lisp/init-css.el | 5 +++++ lisp/init-csv.el | 5 +++++ lisp/init-darcs.el | 5 +++++ lisp/init-dash.el | 5 +++++ lisp/init-dired.el | 5 +++++ lisp/init-docker.el | 5 +++++ lisp/init-editing-utils.el | 5 +++++ lisp/init-elm.el | 5 +++++ lisp/init-elpa.el | 5 +++++ lisp/init-erlang.el | 5 +++++ lisp/init-exec-path.el | 5 +++++ lisp/init-flycheck.el | 5 +++++ lisp/init-folding.el | 5 +++++ lisp/init-frame-hooks.el | 5 +++++ lisp/init-git.el | 8 ++++++++ lisp/init-github.el | 6 +++++- lisp/init-grep.el | 5 +++++ lisp/init-gui-frames.el | 5 +++++ lisp/init-haml.el | 5 +++++ lisp/init-haskell.el | 5 +++++ lisp/init-hippie-expand.el | 7 ++++++- lisp/init-html.el | 9 ++++++++- lisp/init-http.el | 5 +++++ lisp/init-isearch.el | 5 +++++ lisp/init-ivy.el | 5 +++++ lisp/init-javascript.el | 5 +++++ lisp/init-ledger.el | 5 +++++ lisp/init-lisp.el | 5 +++++ lisp/init-locales.el | 5 +++++ lisp/init-markdown.el | 5 +++++ lisp/init-misc.el | 5 +++++ lisp/init-mmm.el | 5 +++++ lisp/init-nix.el | 5 +++++ lisp/init-nxml.el | 5 +++++ lisp/init-org.el | 5 +++++ lisp/init-osx-keys.el | 5 +++++ lisp/init-paredit.el | 5 +++++ lisp/init-php.el | 5 +++++ lisp/init-projectile.el | 5 +++++ lisp/init-purescript.el | 5 +++++ lisp/init-python.el | 5 +++++ lisp/init-rails.el | 5 +++++ lisp/init-recentf.el | 5 +++++ lisp/init-ruby.el | 5 +++++ lisp/init-rust.el | 5 +++++ lisp/init-sessions.el | 5 +++++ lisp/init-site-lisp.el | 5 +++++ lisp/init-slime.el | 5 +++++ lisp/init-smex.el | 5 +++++ lisp/init-spelling.el | 5 +++++ lisp/init-sql.el | 5 +++++ lisp/init-terraform.el | 5 +++++ lisp/init-textile.el | 5 +++++ lisp/init-themes.el | 5 +++++ lisp/init-toml.el | 5 +++++ lisp/init-uniquify.el | 6 +++++- lisp/init-utils.el | 5 +++++ lisp/init-vc.el | 9 +++++++++ lisp/init-whitespace.el | 5 +++++ lisp/init-windows.el | 14 ++++++++++---- lisp/init-xterm.el | 5 +++++ lisp/init-yaml.el | 5 +++++ 70 files changed, 371 insertions(+), 12 deletions(-) diff --git a/init.el b/init.el index e58252e85a..f4be8aa149 100644 --- a/init.el +++ b/init.el @@ -1,8 +1,13 @@ -;; -*- lexical-binding: t -*- -(setq debug-on-error t) +;;; init.el --- Load the full configuration -*- lexical-binding: t -*- +;;; Commentary: + +;; This file bootstraps the configuration, which is divided into +;; a number of other files. -;;; This file bootstraps the configuration, which is divided into -;;; a number of other files. +;;; Code: + +;; Produce backtraces when errors occur +(setq debug-on-error t) (let ((minver "24.4")) (when (version< emacs-version minver) @@ -180,3 +185,4 @@ ;; coding: utf-8 ;; no-byte-compile: t ;; End: +;;; init.el ends here diff --git a/lisp/init-benchmarking.el b/lisp/init-benchmarking.el index 117df51e1f..eb7c1cf99b 100644 --- a/lisp/init-benchmarking.el +++ b/lisp/init-benchmarking.el @@ -1,3 +1,7 @@ +;;; init-benchmarking.el --- Measure startup and require times -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (defun sanityinc/time-subtract-millis (b a) (* 1000.0 (float-time (time-subtract b a)))) @@ -71,3 +75,4 @@ LOAD-DURATION is the time taken in milliseconds to load FEATURE.") (provide 'init-benchmarking) +;;; init-benchmarking.el ends here diff --git a/lisp/init-clojure-cider.el b/lisp/init-clojure-cider.el index 6248192cec..f0401333cf 100644 --- a/lisp/init-clojure-cider.el +++ b/lisp/init-clojure-cider.el @@ -1,3 +1,7 @@ +;;; init-clojure-cider.el --- Cider support for clojure -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require 'init-clojure) (when (maybe-require-package 'cider) @@ -18,3 +22,4 @@ (provide 'init-clojure-cider) +;;; init-clojure-cider.el ends here diff --git a/lisp/init-clojure.el b/lisp/init-clojure.el index 51fbe74833..fdefe6d11f 100644 --- a/lisp/init-clojure.el +++ b/lisp/init-clojure.el @@ -1,3 +1,7 @@ +;;; init-clojure.el --- Clojure support -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;; See also init-clojure-cider.el (when (maybe-require-package 'clojure-mode) @@ -10,3 +14,4 @@ (provide 'init-clojure) +;;; init-clojure.el ends here diff --git a/lisp/init-common-lisp.el b/lisp/init-common-lisp.el index b51d06128d..be9f3cf58e 100644 --- a/lisp/init-common-lisp.el +++ b/lisp/init-common-lisp.el @@ -1,3 +1,7 @@ +;;; init-common-lisp.el --- Common Lisp support -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;; See http://bc.tech.coop/blog/070927.html (add-auto-mode 'lisp-mode "\\.cl\\'") (add-hook 'lisp-mode-hook (lambda () @@ -45,3 +49,4 @@ (provide 'init-common-lisp) +;;; init-common-lisp.el ends here diff --git a/lisp/init-company.el b/lisp/init-company.el index e4d1f70f7e..8530163821 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -1,3 +1,7 @@ +;;; init-company.el --- Completion with company -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;; WAITING: haskell-mode sets tags-table-list globally, breaks tags-completion-at-point-function ;; TODO Default sort order should place [a-z] before punctuation @@ -40,3 +44,4 @@ (provide 'init-company) +;;; init-company.el ends here diff --git a/lisp/init-compile.el b/lisp/init-compile.el index 85a76f0b4a..d8457b6d9a 100644 --- a/lisp/init-compile.el +++ b/lisp/init-compile.el @@ -1,3 +1,7 @@ +;;; init-compile.el --- Helpers for M-x compile -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (setq-default compilation-scroll-output t) (require-package 'alert) @@ -63,3 +67,4 @@ (provide 'init-compile) +;;; init-compile.el ends here diff --git a/lisp/init-crontab.el b/lisp/init-crontab.el index f3cb9c1acd..91af3d2848 100644 --- a/lisp/init-crontab.el +++ b/lisp/init-crontab.el @@ -1,4 +1,9 @@ +;;; init-crontab.el --- Working with crontabs -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require-package 'crontab-mode) (add-auto-mode 'crontab-mode "\\.?cron\\(tab\\)?\\'") (provide 'init-crontab) +;;; init-crontab.el ends here diff --git a/lisp/init-css.el b/lisp/init-css.el index eaeab7317c..099886f9e6 100644 --- a/lisp/init-css.el +++ b/lisp/init-css.el @@ -1,3 +1,7 @@ +;;; init-css.el --- CSS/Less/SASS/SCSS support -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;;; Colourise CSS colour literals (when (maybe-require-package 'rainbow-mode) (dolist (hook '(css-mode-hook html-mode-hook sass-mode-hook)) @@ -64,3 +68,4 @@ (provide 'init-css) +;;; init-css.el ends here diff --git a/lisp/init-csv.el b/lisp/init-csv.el index f4ab0bb7ee..3dfd8e02b8 100644 --- a/lisp/init-csv.el +++ b/lisp/init-csv.el @@ -1,3 +1,7 @@ +;;; init-csv.el --- CSV files -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require-package 'csv-mode) (add-auto-mode 'csv-mode "\\.[Cc][Ss][Vv]\\'") @@ -5,3 +9,4 @@ (setq csv-separators '("," ";" "|" " ")) (provide 'init-csv) +;;; init-csv.el ends here diff --git a/lisp/init-darcs.el b/lisp/init-darcs.el index 3be3c2def5..551e602cc1 100644 --- a/lisp/init-darcs.el +++ b/lisp/init-darcs.el @@ -1,3 +1,7 @@ +;;; init-darcs.el --- Support for the Darcs DVCS -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require-package 'darcsum) (require-package 'vc-darcs) @@ -10,3 +14,4 @@ (setq darcsum-whatsnew-switches "-l") (provide 'init-darcs) +;;; init-darcs.el ends here diff --git a/lisp/init-dash.el b/lisp/init-dash.el index a6bb06a9e4..1901cb4add 100644 --- a/lisp/init-dash.el +++ b/lisp/init-dash.el @@ -1,3 +1,7 @@ +;;; init-dash.el --- Integrate with the Mac app "Dash" -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;; Support for the http://kapeli.com/dash documentation browser (defun sanityinc/dash-installed-p () @@ -18,3 +22,4 @@ (global-set-key (kbd "C-c D") 'dash-at-point)) (provide 'init-dash) +;;; init-dash.el ends here diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 6a0232d8f5..10de831441 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -1,3 +1,7 @@ +;;; init-dired.el --- Dired customisations -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (setq-default dired-dwim-target t) ;; Prefer g-prefixed coreutils version of standard utilities when available @@ -18,3 +22,4 @@ (add-hook 'dired-mode-hook 'diff-hl-dired-mode))) (provide 'init-dired) +;;; init-dired.el ends here diff --git a/lisp/init-docker.el b/lisp/init-docker.el index 046887e297..8a116c5093 100644 --- a/lisp/init-docker.el +++ b/lisp/init-docker.el @@ -1,3 +1,7 @@ +;;; init-docker.el --- Work with Docker and its tools -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'docker) (fullframe docker-images tablist-quit) (fullframe docker-machines tablist-quit) @@ -9,3 +13,4 @@ (provide 'init-docker) +;;; init-docker.el ends here diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index c9e7d19170..a3d4dd3181 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -1,3 +1,7 @@ +;;; init-editing-utils.el --- Day-to-day editing helpers -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;; -*- lexical-binding: t -*- (require-package 'unfill) @@ -327,3 +331,4 @@ With arg N, insert N newlines." (provide 'init-editing-utils) +;;; init-editing-utils.el ends here diff --git a/lisp/init-elm.el b/lisp/init-elm.el index 79659e1820..8cad9dddad 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -1,3 +1,7 @@ +;;; init-elm.el --- Support for the Elm language -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'elm-mode) (after-load 'elm-mode (diminish 'elm-indent-mode) @@ -11,3 +15,4 @@ (flycheck-elm-setup)))) (provide 'init-elm) +;;; init-elm.el ends here diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index c004084ebc..a6ee481faf 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -1,3 +1,7 @@ +;;; init-elpa.el --- Settings and helpers for package.el -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require 'package) @@ -106,3 +110,4 @@ locate PACKAGE." (provide 'init-elpa) +;;; init-elpa.el ends here diff --git a/lisp/init-erlang.el b/lisp/init-erlang.el index ed149e493d..7b5755a1eb 100644 --- a/lisp/init-erlang.el +++ b/lisp/init-erlang.el @@ -1,5 +1,10 @@ +;;; init-erlang.el --- Support for the Erlang language -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'erlang) (require 'erlang-start)) (provide 'init-erlang) +;;; init-erlang.el ends here diff --git a/lisp/init-exec-path.el b/lisp/init-exec-path.el index a02d0c3a8b..1e4ab5e205 100644 --- a/lisp/init-exec-path.el +++ b/lisp/init-exec-path.el @@ -1,3 +1,7 @@ +;;; init-exec-path.el --- Set up exec-path to help Emacs find programs -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require-package 'exec-path-from-shell) (after-load 'exec-path-from-shell @@ -10,3 +14,4 @@ (exec-path-from-shell-initialize)) (provide 'init-exec-path) +;;; init-exec-path.el ends here diff --git a/lisp/init-flycheck.el b/lisp/init-flycheck.el index 74733557b8..fe4190952d 100644 --- a/lisp/init-flycheck.el +++ b/lisp/init-flycheck.el @@ -1,3 +1,7 @@ +;;; init-flycheck.el --- Configure Flycheck global behaviour -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'flycheck) (add-hook 'after-init-hook 'global-flycheck-mode) (setq flycheck-display-errors-function #'flycheck-display-error-messages-unless-error-list) @@ -7,3 +11,4 @@ (provide 'init-flycheck) +;;; init-flycheck.el ends here diff --git a/lisp/init-folding.el b/lisp/init-folding.el index 51d198af9f..83c7bf7e21 100644 --- a/lisp/init-folding.el +++ b/lisp/init-folding.el @@ -1,3 +1,7 @@ +;;; init-folding.el --- Support code and region folding -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'origami) (add-hook 'prog-mode-hook 'origami-mode) (after-load 'origami @@ -6,3 +10,4 @@ (provide 'init-folding) +;;; init-folding.el ends here diff --git a/lisp/init-frame-hooks.el b/lisp/init-frame-hooks.el index 556976de25..ea7208b745 100644 --- a/lisp/init-frame-hooks.el +++ b/lisp/init-frame-hooks.el @@ -1,3 +1,7 @@ +;;; init-frame-hooks.el --- Provide specific hooks for GUI/TTY frame creation -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (defvar after-make-console-frame-hooks '() "Hooks to run after creating a new TTY frame") (defvar after-make-window-system-frame-hooks '() @@ -23,3 +27,4 @@ Selectively runs either `after-make-console-frame-hooks' or (provide 'init-frame-hooks) +;;; init-frame-hooks.el ends here diff --git a/lisp/init-git.el b/lisp/init-git.el index 610de82b34..9ce83a3b7e 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -1,3 +1,10 @@ +;;; init-git.el --- Git SCM support -*- lexical-binding: t -*- +;;; Commentary: + +;; See also init-github.el. + +;;; Code: + ;; TODO: link commits from vc-log to magit-show-commit ;; TODO: smerge-mode (require-package 'git-blamed) @@ -92,3 +99,4 @@ (provide 'init-git) +;;; init-git.el ends here diff --git a/lisp/init-github.el b/lisp/init-github.el index e9a221ba4f..ab161e2ecc 100644 --- a/lisp/init-github.el +++ b/lisp/init-github.el @@ -1,3 +1,7 @@ +;;; init-github.el --- Github integration -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require 'init-git) (maybe-require-package 'yagist) @@ -7,5 +11,5 @@ (maybe-require-package 'github-clone) (maybe-require-package 'magithub) - (provide 'init-github) +;;; init-github.el ends here diff --git a/lisp/init-grep.el b/lisp/init-grep.el index d7eada73ed..f046cf4038 100644 --- a/lisp/init-grep.el +++ b/lisp/init-grep.el @@ -1,3 +1,7 @@ +;;; init-grep.el --- Settings for grep and grep-like tools -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (setq-default grep-highlight-matches t grep-scroll-output t) @@ -17,3 +21,4 @@ (provide 'init-grep) +;;; init-grep.el ends here diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 4640f3da84..130b755065 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -1,3 +1,7 @@ +;;; init-gui-frames.el --- Behaviour specific to non-TTY frames -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;;---------------------------------------------------------------------------- ;; Stop C-z from minimizing windows under OS X ;;---------------------------------------------------------------------------- @@ -92,3 +96,4 @@ (provide 'init-gui-frames) +;;; init-gui-frames.el ends here diff --git a/lisp/init-haml.el b/lisp/init-haml.el index de09b71548..4f404e8c80 100644 --- a/lisp/init-haml.el +++ b/lisp/init-haml.el @@ -1,6 +1,11 @@ +;;; init-haml.el --- Haml template support -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require-package 'haml-mode) (after-load 'haml-mode (define-key haml-mode-map (kbd "C-o") 'open-line)) (provide 'init-haml) +;;; init-haml.el ends here diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 430ba43852..af96382ea0 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -1,3 +1,7 @@ +;;; init-haskell.el --- Support the Haskell language -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require-package 'haskell-mode) @@ -83,3 +87,4 @@ (provide 'init-haskell) +;;; init-haskell.el ends here diff --git a/lisp/init-hippie-expand.el b/lisp/init-hippie-expand.el index db5a2a6a78..156819a1c5 100644 --- a/lisp/init-hippie-expand.el +++ b/lisp/init-hippie-expand.el @@ -1,3 +1,7 @@ +;;; init-hippie-expand.el --- Settings for hippie-expand -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (global-set-key (kbd "M-/") 'hippie-expand) (setq hippie-expand-try-functions-list @@ -7,4 +11,5 @@ try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill)) -(provide 'init-hippie-expand) \ No newline at end of file +(provide 'init-hippie-expand) +;;; init-hippie-expand.el ends here diff --git a/lisp/init-html.el b/lisp/init-html.el index 4c1db82b80..dca8107ded 100644 --- a/lisp/init-html.el +++ b/lisp/init-html.el @@ -1,3 +1,10 @@ +;;; init-html.el --- Editing HTML -*- lexical-binding: t -*- +;;; Commentary: + +;; ERB is configured separately in init-ruby + +;;; Code: + (require-package 'tagedit) (after-load 'sgml-mode (tagedit-add-paredit-like-keybindings) @@ -7,6 +14,6 @@ (add-auto-mode 'html-mode "\\.\\(jsp\\|tmpl\\)\\'") -;; Note: ERB is configured in init-ruby (provide 'init-html) +;;; init-html.el ends here diff --git a/lisp/init-http.el b/lisp/init-http.el index 738dd96e30..c2a854f6c1 100644 --- a/lisp/init-http.el +++ b/lisp/init-http.el @@ -1,3 +1,7 @@ +;;; init-http.el --- Work with HTTP APIs -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (maybe-require-package 'httprepl) (when (maybe-require-package 'restclient) (add-auto-mode 'restclient-mode "\\.rest\\'") @@ -10,3 +14,4 @@ (provide 'init-http) +;;; init-http.el ends here diff --git a/lisp/init-isearch.el b/lisp/init-isearch.el index 291219aedf..e96771f7cc 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -1,3 +1,7 @@ +;;; init-isearch.el --- isearch settings -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;; Show number of matches while searching (when (maybe-require-package 'anzu) (add-hook 'after-init-hook 'global-anzu-mode) @@ -43,3 +47,4 @@ This is useful when followed by an immediate kill." (provide 'init-isearch) +;;; init-isearch.el ends here diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index c8e9416845..2ae5b3a641 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -1,3 +1,7 @@ +;;; init-ivy.el --- Use ivy for minibuffer completion and more -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;;; -*- lexical-binding: t -*- (when (maybe-require-package 'ivy) (add-hook 'after-init-hook 'ivy-mode) @@ -81,3 +85,4 @@ instead." (provide 'init-ivy) +;;; init-ivy.el ends here diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 3cc1629963..c6fb2e1255 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -1,3 +1,7 @@ +;;; init-javascript.el --- Support for Javascript and derivatives -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (maybe-require-package 'json-mode) (maybe-require-package 'js2-mode) (maybe-require-package 'coffee-mode) @@ -105,3 +109,4 @@ (provide 'init-javascript) +;;; init-javascript.el ends here diff --git a/lisp/init-ledger.el b/lisp/init-ledger.el index 1b32c5c90f..7d6c5b211b 100644 --- a/lisp/init-ledger.el +++ b/lisp/init-ledger.el @@ -1,3 +1,7 @@ +;;; init-ledger.el --- Support for the ledger CLI accounting tool -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'ledger-mode) (when (maybe-require-package 'flycheck-ledger) (after-load 'flycheck @@ -18,3 +22,4 @@ (add-hook 'ledger-mode-hook 'goto-address-prog-mode)) (provide 'init-ledger) +;;; init-ledger.el ends here diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 12fb6a5c41..aa3d3e1131 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -1,3 +1,7 @@ +;;; init-lisp.el --- Emacs lisp settings, and common config for other lisps -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require-package 'elisp-slime-nav) (dolist (hook '(emacs-lisp-mode-hook ielm-mode-hook)) (add-hook hook 'turn-on-elisp-slime-nav-mode)) @@ -251,3 +255,4 @@ (maybe-require-package 'cask-mode) (provide 'init-lisp) +;;; init-lisp.el ends here diff --git a/lisp/init-locales.el b/lisp/init-locales.el index 3b4c9f2774..3e6082d7de 100644 --- a/lisp/init-locales.el +++ b/lisp/init-locales.el @@ -1,3 +1,7 @@ +;;; init-locales.el --- Configure default locale -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (defun sanityinc/utf8-locale-p (v) "Return whether locale string V relates to a UTF-8 locale." (and v (string-match "UTF-8" v))) @@ -18,3 +22,4 @@ (prefer-coding-system 'utf-8)) (provide 'init-locales) +;;; init-locales.el ends here diff --git a/lisp/init-markdown.el b/lisp/init-markdown.el index 001d49e95f..352a56c60c 100644 --- a/lisp/init-markdown.el +++ b/lisp/init-markdown.el @@ -1,3 +1,7 @@ +;;; init-markdown.el --- Markdown support -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'markdown-mode) (add-auto-mode 'markdown-mode "\\.md\\.html\\'") (after-load 'whitespace-cleanup-mode @@ -5,3 +9,4 @@ (provide 'init-markdown) +;;; init-markdown.el ends here diff --git a/lisp/init-misc.el b/lisp/init-misc.el index 21c094ed1e..5640c84ea1 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -1,3 +1,7 @@ +;;; init-misc.el --- Miscellaneous config -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;;---------------------------------------------------------------------------- ;; Misc config - yet to be placed in separate files ;;---------------------------------------------------------------------------- @@ -46,3 +50,4 @@ (provide 'init-misc) +;;; init-misc.el ends here diff --git a/lisp/init-mmm.el b/lisp/init-mmm.el index 01e71b0caf..7bd37bf59e 100644 --- a/lisp/init-mmm.el +++ b/lisp/init-mmm.el @@ -1,3 +1,7 @@ +;;; init-mmm.el --- Multiple Major Modes support -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;;---------------------------------------------------------------------------- ;; Multiple major modes ;;---------------------------------------------------------------------------- @@ -8,3 +12,4 @@ (provide 'init-mmm) +;;; init-mmm.el ends here diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 017c930920..03eefad822 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -1,3 +1,7 @@ +;;; init-nix.el --- Support for the Nix package manager -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (maybe-require-package 'nix-mode) (maybe-require-package 'nix-sandbox) (maybe-require-package 'nix-buffer) @@ -18,3 +22,4 @@ (provide 'init-nix) +;;; init-nix.el ends here diff --git a/lisp/init-nxml.el b/lisp/init-nxml.el index f2755511a9..7ebbfb5e99 100644 --- a/lisp/init-nxml.el +++ b/lisp/init-nxml.el @@ -1,3 +1,7 @@ +;;; init-nxml.el --- Support for editing XML with NXML -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (add-auto-mode 'nxml-mode (concat "\\." @@ -44,3 +48,4 @@ indentation rules." (provide 'init-nxml) +;;; init-nxml.el ends here diff --git a/lisp/init-org.el b/lisp/init-org.el index f29489a24b..8f0839fc49 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -1,3 +1,7 @@ +;;; init-org.el --- Org-mode config -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when *is-a-mac* (maybe-require-package 'grab-mac-link)) @@ -381,3 +385,4 @@ typical word processor." (provide 'init-org) +;;; init-org.el ends here diff --git a/lisp/init-osx-keys.el b/lisp/init-osx-keys.el index d598390196..f049155946 100644 --- a/lisp/init-osx-keys.el +++ b/lisp/init-osx-keys.el @@ -1,3 +1,7 @@ +;;; init-osx-keys.el --- Configure keys specific to MacOS -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when *is-a-mac* (setq mac-command-modifier 'meta) (setq mac-option-modifier 'none) @@ -18,3 +22,4 @@ (provide 'init-osx-keys) +;;; init-osx-keys.el ends here diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index b046061ee3..90a0736bf5 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -1,3 +1,7 @@ +;;; init-paredit.el --- Configure paredit structured editing -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require-package 'paredit) (autoload 'enable-paredit-mode "paredit") @@ -48,3 +52,4 @@ (add-hook 'prog-mode-hook 'paredit-everywhere-mode) (provide 'init-paredit) +;;; init-paredit.el ends here diff --git a/lisp/init-php.el b/lisp/init-php.el index cffb62f0d7..71f1a6f48d 100644 --- a/lisp/init-php.el +++ b/lisp/init-php.el @@ -1,3 +1,7 @@ +;;; init-php.el --- Support for working with PHP -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'php-mode) (maybe-require-package 'smarty-mode) @@ -6,3 +10,4 @@ (push 'company-ac-php-backend company-backends)))) (provide 'init-php) +;;; init-php.el ends here diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index b523e14025..7b43134b3c 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -1,3 +1,7 @@ +;;; init-projectile.el --- Use Projectile for navigation within projects -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'projectile) (add-hook 'after-init-hook 'projectile-mode) @@ -11,3 +15,4 @@ (provide 'init-projectile) +;;; init-projectile.el ends here diff --git a/lisp/init-purescript.el b/lisp/init-purescript.el index b984532583..cf8022a4a0 100644 --- a/lisp/init-purescript.el +++ b/lisp/init-purescript.el @@ -1,3 +1,7 @@ +;;; init-purescript.el --- Support the Purescript language -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'purescript-mode) (when (maybe-require-package 'psc-ide) (add-hook 'purescript-mode-hook @@ -20,3 +24,4 @@ (apply oldfun args))))))) (provide 'init-purescript) +;;; init-purescript.el ends here diff --git a/lisp/init-python.el b/lisp/init-python.el index 9d93bcf930..2e7a4f10fa 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -1,3 +1,7 @@ +;;; init-python.el --- Python editing -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (setq auto-mode-alist (append '(("SConstruct\\'" . python-mode) ("SConscript\\'" . python-mode)) @@ -16,3 +20,4 @@ (provide 'init-python) +;;; init-python.el ends here diff --git a/lisp/init-rails.el b/lisp/init-rails.el index 82018a9aa2..0ac624485f 100644 --- a/lisp/init-rails.el +++ b/lisp/init-rails.el @@ -1,6 +1,11 @@ +;;; init-rails.el --- Ruby on Rails support -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'projectile-rails) (add-hook 'projectile-mode-hook (lambda () (projectile-rails-global-mode projectile-mode)))) (provide 'init-rails) +;;; init-rails.el ends here diff --git a/lisp/init-recentf.el b/lisp/init-recentf.el index dfd78512dd..d69a22e7b7 100644 --- a/lisp/init-recentf.el +++ b/lisp/init-recentf.el @@ -1,3 +1,7 @@ +;;; init-recentf.el --- Settings for tracking recent files -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (add-hook 'after-init-hook 'recentf-mode) (setq-default recentf-max-saved-items 1000 @@ -5,3 +9,4 @@ (provide 'init-recentf) +;;; init-recentf.el ends here diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index 89980f6c6c..aa03c82a75 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -1,3 +1,7 @@ +;;; init-ruby.el --- Support for the Ruby language -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;;; Basic ruby setup (require-package 'ruby-hash-syntax) @@ -123,3 +127,4 @@ (provide 'init-ruby) +;;; init-ruby.el ends here diff --git a/lisp/init-rust.el b/lisp/init-rust.el index 68d7ed5db1..23dbf2128f 100644 --- a/lisp/init-rust.el +++ b/lisp/init-rust.el @@ -1,3 +1,7 @@ +;;; init-rust.el --- Support for the Rust language -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'rust-mode) (when (maybe-require-package 'racer) (add-hook 'rust-mode-hook #'racer-mode)) @@ -9,3 +13,4 @@ (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))) (provide 'init-rust) +;;; init-rust.el ends here diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index 4a6142d37d..fb5ff5d430 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -1,3 +1,7 @@ +;;; init-sessions.el --- Save and restore editor sessions between restarts -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;; save a list of open files in ~/.emacs.d/.emacs.desktop (setq desktop-path (list user-emacs-directory) desktop-auto-save-timeout 600) @@ -71,3 +75,4 @@ (provide 'init-sessions) +;;; init-sessions.el ends here diff --git a/lisp/init-site-lisp.el b/lisp/init-site-lisp.el index f96475b574..6dab3b4e32 100644 --- a/lisp/init-site-lisp.el +++ b/lisp/init-site-lisp.el @@ -1,3 +1,7 @@ +;;; init-site-lisp.el --- Support elisp manually installed in the site-lisp dir -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;;; Set load path (eval-when-compile (require 'cl)) @@ -45,3 +49,4 @@ source file under ~/.emacs.d/site-lisp/name/" (provide 'init-site-lisp) +;;; init-site-lisp.el ends here diff --git a/lisp/init-slime.el b/lisp/init-slime.el index fa24d18ba2..b7774b6e8f 100644 --- a/lisp/init-slime.el +++ b/lisp/init-slime.el @@ -1,3 +1,7 @@ +;;; init-slime.el --- Slime support for Common Lisp -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require-package 'slime) ;; package.el compiles the contrib subdir, but the compilation order ;; causes problems, so we remove the .elc files there. See @@ -46,3 +50,4 @@ (provide 'init-slime) +;;; init-slime.el ends here diff --git a/lisp/init-smex.el b/lisp/init-smex.el index de41b1c288..640f342dae 100644 --- a/lisp/init-smex.el +++ b/lisp/init-smex.el @@ -1,3 +1,7 @@ +;;; init-smex.el --- Use smex to improve M-x -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;; Use smex to handle M-x (when (maybe-require-package 'smex) ;; Change path for ~/.smex-items @@ -5,3 +9,4 @@ (global-set-key [remap execute-extended-command] 'smex)) (provide 'init-smex) +;;; init-smex.el ends here diff --git a/lisp/init-spelling.el b/lisp/init-spelling.el index 5e9e722837..3d40bf29da 100644 --- a/lisp/init-spelling.el +++ b/lisp/init-spelling.el @@ -1,3 +1,7 @@ +;;; init-spelling.el --- Spell check settings -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require 'ispell) (when (executable-find ispell-program-name) @@ -9,3 +13,4 @@ (add-to-list 'flyspell-prog-text-faces 'nxml-text-face))) (provide 'init-spelling) +;;; init-spelling.el ends here diff --git a/lisp/init-sql.el b/lisp/init-sql.el index fd64a46e74..8f996b2af0 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -1,3 +1,7 @@ +;;; init-sql.el --- Support for SQL -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (after-load 'sql ;; sql-mode pretty much requires your psql to be uncustomised from stock settings (push "--no-psqlrc" sql-postgres-options)) @@ -118,3 +122,4 @@ This command currently blocks the UI, sorry." (push 'sql-mode page-break-lines-modes)) (provide 'init-sql) +;;; init-sql.el ends here diff --git a/lisp/init-terraform.el b/lisp/init-terraform.el index d93f16314a..4f1b99558e 100644 --- a/lisp/init-terraform.el +++ b/lisp/init-terraform.el @@ -1,3 +1,7 @@ +;;; init-terraform.el --- Work with Terraform configurations -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;;; Terraform (when (maybe-require-package 'terraform-mode) @@ -7,3 +11,4 @@ (provide 'init-terraform) ;;; init-terraform.el ends here +;;; init-terraform.el ends here diff --git a/lisp/init-textile.el b/lisp/init-textile.el index 7146641cad..6e8d7e092c 100644 --- a/lisp/init-textile.el +++ b/lisp/init-textile.el @@ -1,3 +1,7 @@ +;;; init-textile.el --- Edit Textile markup -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require-package 'textile-mode) (setq auto-mode-alist @@ -5,3 +9,4 @@ (provide 'init-textile) +;;; init-textile.el ends here diff --git a/lisp/init-themes.el b/lisp/init-themes.el index 88e8a367f5..54addedc4d 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -1,3 +1,7 @@ +;;; init-themes.el --- Defaults for themes -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require-package 'color-theme-sanityinc-solarized) (require-package 'color-theme-sanityinc-tomorrow) @@ -40,3 +44,4 @@ (provide 'init-themes) +;;; init-themes.el ends here diff --git a/lisp/init-toml.el b/lisp/init-toml.el index d5989dcd5c..3106dcc246 100644 --- a/lisp/init-toml.el +++ b/lisp/init-toml.el @@ -1,5 +1,10 @@ +;;; init-toml.el --- Support TOML files -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'toml-mode) (add-hook 'toml-mode-hook 'goto-address-prog-mode)) (provide 'init-toml) +;;; init-toml.el ends here diff --git a/lisp/init-uniquify.el b/lisp/init-uniquify.el index ba3c6b5b0a..3daa06c50d 100644 --- a/lisp/init-uniquify.el +++ b/lisp/init-uniquify.el @@ -1,3 +1,7 @@ +;;; init-uniquify.el --- Configure uniquification of buffer names -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + ;;---------------------------------------------------------------------------- ;; Nicer naming of buffers for files with identical names ;;---------------------------------------------------------------------------- @@ -9,4 +13,4 @@ (setq uniquify-ignore-buffers-re "^\\*") -(provide 'init-uniquify) \ No newline at end of file +(provide 'init-uniquify);;; init-uniquify.el ends here diff --git a/lisp/init-utils.el b/lisp/init-utils.el index 0f517322b3..cc3f5d06b6 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -1,3 +1,7 @@ +;;; init-utils.el --- Elisp helper functions and commands -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (if (fboundp 'with-eval-after-load) (defalias 'after-load 'with-eval-after-load) (defmacro after-load (feature &rest body) @@ -74,3 +78,4 @@ (provide 'init-utils) +;;; init-utils.el ends here diff --git a/lisp/init-vc.el b/lisp/init-vc.el index 7601d947f7..1183924070 100644 --- a/lisp/init-vc.el +++ b/lisp/init-vc.el @@ -1,3 +1,11 @@ +;;; init-vc.el --- Version control support -*- lexical-binding: t -*- +;;; Commentary: + +;; Most version control packages are configured separately: see +;; init-git.el, for example. + +;;; Code: + (when (maybe-require-package 'diff-hl) (add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh) (add-hook 'after-init-hook 'global-diff-hl-mode) @@ -10,3 +18,4 @@ (maybe-require-package 'browse-at-remote) (provide 'init-vc) +;;; init-vc.el ends here diff --git a/lisp/init-whitespace.el b/lisp/init-whitespace.el index ae6ed2637c..19807d28b6 100644 --- a/lisp/init-whitespace.el +++ b/lisp/init-whitespace.el @@ -1,3 +1,7 @@ +;;; init-whitespace.el --- Special handling for whitespace -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (setq-default show-trailing-whitespace t) @@ -28,3 +32,4 @@ (provide 'init-whitespace) +;;; init-whitespace.el ends here diff --git a/lisp/init-windows.el b/lisp/init-windows.el index 9c42fa2854..6ba7ed50b8 100644 --- a/lisp/init-windows.el +++ b/lisp/init-windows.el @@ -1,8 +1,13 @@ -;;; -*- lexical-binding: t -*- +;;; init-windows.el --- Working with windows within frames -*- lexical-binding: t -*- +;;; Commentary: + +;; This is not about the "Windows" OS, but rather Emacs's "windows" +;; concept: these are the panels within an Emacs frame which contain +;; buffers. -;; NOTE: This is not about the "Windows" OS, but rather Emacs's -;; "windows" concept: these are the panels within an Emacs frame which -;; contain buffers. +;;; Code: + +;;; -*- lexical-binding: t -*- ;;---------------------------------------------------------------------------- ;; Navigate window layouts with "C-c " and "C-c " @@ -104,3 +109,4 @@ Call a second time to restore the original window configuration." (provide 'init-windows) +;;; init-windows.el ends here diff --git a/lisp/init-xterm.el b/lisp/init-xterm.el index f401e74025..1b2f7ce943 100644 --- a/lisp/init-xterm.el +++ b/lisp/init-xterm.el @@ -1,3 +1,7 @@ +;;; init-xterm.el --- Integrate with terminals such as xterm -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (require 'init-frame-hooks) (global-set-key [mouse-4] (lambda () (interactive) (scroll-down 1))) @@ -14,3 +18,4 @@ (add-hook 'after-make-console-frame-hooks 'sanityinc/console-frame-setup) (provide 'init-xterm) +;;; init-xterm.el ends here diff --git a/lisp/init-yaml.el b/lisp/init-yaml.el index 3578142b34..4a9d1697d3 100644 --- a/lisp/init-yaml.el +++ b/lisp/init-yaml.el @@ -1,6 +1,11 @@ +;;; init-yaml.el --- Support Yaml files -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + (when (maybe-require-package 'yaml-mode) (add-auto-mode 'yaml-mode "\\.yml\\.erb\\'") (add-hook 'yaml-mode-hook 'goto-address-prog-mode)) (provide 'init-yaml) +;;; init-yaml.el ends here From b79fe3b2434d377fb4901f5375267f8b723298e3 Mon Sep 17 00:00:00 2001 From: re-mx Date: Mon, 31 Dec 2018 10:15:54 +0800 Subject: [PATCH 026/418] No longer autoload "enable-paredit-mode" manually --- lisp/init-paredit.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index 90a0736bf5..b9377b0610 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -3,7 +3,6 @@ ;;; Code: (require-package 'paredit) -(autoload 'enable-paredit-mode "paredit") (defun maybe-map-paredit-newline () (unless (or (memq major-mode '(inferior-emacs-lisp-mode cider-repl-mode)) From a104b5da851ffae01489406333ce91c632d79f28 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 5 Jan 2019 13:39:56 +1300 Subject: [PATCH 027/418] Use recommended C-c p for projectile rather than C-c C-p Fixes #684 --- lisp/init-projectile.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index 7b43134b3c..47c402bf18 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -9,7 +9,7 @@ (setq-default projectile-mode-line-prefix " Proj") (after-load 'projectile - (define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map)) + (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)) (maybe-require-package 'ibuffer-projectile)) From 12d2ebcee95bc04b2facae1ba3dd028d18e21a44 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 5 Jan 2019 16:35:15 +1300 Subject: [PATCH 028/418] Use C-c C-q to enable wgrep/wdired in grep/occur/ivy-occur buffers --- init.el | 1 - lisp/init-dired.el | 2 +- lisp/init-grep.el | 5 +++++ lisp/init-ivy.el | 2 ++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/init.el b/init.el index f4be8aa149..c0d57ca70a 100644 --- a/init.el +++ b/init.el @@ -49,7 +49,6 @@ ;; Load configs for specific features and modes ;;---------------------------------------------------------------------------- -(require-package 'wgrep) (require-package 'diminish) (require-package 'scratch) (require-package 'command-log-mode) diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 10de831441..7d538c17b2 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -15,7 +15,7 @@ (after-load 'dired (setq dired-recursive-deletes 'top) (define-key dired-mode-map [mouse-2] 'dired-find-file) - (define-key dired-mode-map (kbd "C-c C-p") 'wdired-change-to-wdired-mode)) + (define-key dired-mode-map (kbd "C-c C-q") 'wdired-change-to-wdired-mode)) (when (maybe-require-package 'diff-hl) (after-load 'dired diff --git a/lisp/init-grep.el b/lisp/init-grep.el index f046cf4038..96573f1d31 100644 --- a/lisp/init-grep.el +++ b/lisp/init-grep.el @@ -8,6 +8,11 @@ (when *is-a-mac* (setq-default locate-command "mdfind")) +(require-package 'wgrep) +(after-load 'grep + (dolist (key (list (kbd "C-c C-q") (kbd "w"))) + (define-key grep-mode-map key 'wgrep-change-to-wgrep-mode))) + (when (and (executable-find "ag") (maybe-require-package 'ag)) (require-package 'wgrep-ag) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 2ae5b3a641..3e0f85a8d9 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -23,6 +23,8 @@ (define-key ivy-minibuffer-map (kbd "") #'ivy-previous-line-or-history) + (define-key ivy-occur-mode-map (kbd "C-c C-q") #'ivy-wgrep-change-to-wgrep-mode) + (when (maybe-require-package 'diminish) (diminish 'ivy-mode))) From b2aea30bff7ca4bbb62f579ca7e3ff0e895a7911 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 5 Jan 2019 16:49:14 +1300 Subject: [PATCH 029/418] Remove redundant lexical-binding declarations --- lisp/init-editing-utils.el | 1 - lisp/init-ivy.el | 1 - lisp/init-windows.el | 2 -- 3 files changed, 4 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index a3d4dd3181..fded761a7b 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -2,7 +2,6 @@ ;;; Commentary: ;;; Code: -;; -*- lexical-binding: t -*- (require-package 'unfill) (when (fboundp 'electric-pair-mode) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 3e0f85a8d9..a4196e17c6 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -2,7 +2,6 @@ ;;; Commentary: ;;; Code: -;;; -*- lexical-binding: t -*- (when (maybe-require-package 'ivy) (add-hook 'after-init-hook 'ivy-mode) (after-load 'ivy diff --git a/lisp/init-windows.el b/lisp/init-windows.el index 6ba7ed50b8..f73e210ca7 100644 --- a/lisp/init-windows.el +++ b/lisp/init-windows.el @@ -7,8 +7,6 @@ ;;; Code: -;;; -*- lexical-binding: t -*- - ;;---------------------------------------------------------------------------- ;; Navigate window layouts with "C-c " and "C-c " ;;---------------------------------------------------------------------------- From b0bcb82d9c51b4d2a86db61ccb46f6a12e5a410e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 5 Jan 2019 16:49:39 +1300 Subject: [PATCH 030/418] Add missing file header/footer --- lisp/init-ibuffer.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index 44d8cad2e0..9d3465cf10 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -1,6 +1,11 @@ +;;; init-ibuffer.el --- ibuffer settings -*- lexical-binding: t -*- +;;; Commentary: + ;; TODO: enhance ibuffer-fontification-alist ;; See http://www.reddit.com/r/emacs/comments/21fjpn/fontifying_buffer_list_for_emacs_243/ +;;; Code: + (require-package 'fullframe) (after-load 'ibuffer (fullframe ibuffer ibuffer-quit)) @@ -50,3 +55,4 @@ (global-set-key (kbd "C-x C-b") 'ibuffer) (provide 'init-ibuffer) +;;; init-ibuffer.el ends here From 418dce32d32389fba3f0c24114b1acc48aaf79b6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 8 Jan 2019 09:33:21 +1300 Subject: [PATCH 031/418] Show line numbers in prog-modes, but only if native line numbering is available --- lisp/init-editing-utils.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index fded761a7b..29d6e896fd 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -87,8 +87,8 @@ -(unless (fboundp 'display-line-numbers-mode) - (require-package 'nlinum)) +(when (fboundp 'display-line-numbers-mode) + (add-hook 'prog-mode-hook 'display-line-numbers-mode)) (when (require-package 'rainbow-delimiters) From d7eb22eb22454af82bae6181edc962d6abcfea46 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 8 Jan 2019 09:34:57 +1300 Subject: [PATCH 032/418] Add helper command for adding minimal elisp boilerplate to the current file --- lisp/init-lisp.el | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index aa3d3e1131..4d65ca8904 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -11,6 +11,20 @@ (concat ";; Happy hacking, " user-login-name " - Emacs ♥ you!\n\n")) +(defun sanityinc/headerise-elisp () + "Add minimal header and footer to an elisp buffer in order to placate flycheck." + (interactive) + (let ((fname (if (buffer-file-name) + (file-name-nondirectory (buffer-file-name)) + (error "This buffer is not visiting a file")))) + (save-excursion + (goto-char (point-min)) + (insert ";;; " fname " --- Insert description here -*- lexical-binding: t -*-\n" + ";;; Commentary:\n" + ";;; Code:\n\n") + (goto-char (point-max)) + (insert ";;; " fname " ends here\n")))) + ;; Make C-x C-e run 'eval-region if the region is active From 45640cf0329cc3ef2570045ef6fc7ece82bf153d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Jan 2019 08:09:59 +1300 Subject: [PATCH 033/418] Install dash-at-point unconditionally on MacOS Closes #691 --- lisp/init-dash.el | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/lisp/init-dash.el b/lisp/init-dash.el index 1901cb4add..1234e4e6df 100644 --- a/lisp/init-dash.el +++ b/lisp/init-dash.el @@ -4,21 +4,8 @@ ;; Support for the http://kapeli.com/dash documentation browser -(defun sanityinc/dash-installed-p () - "Return t if Dash is installed on this machine, or nil otherwise." - (let ((lsregister "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister")) - (and (file-executable-p lsregister) - (not (string-equal - "" - (shell-command-to-string - (concat lsregister " -dump|grep com.kapeli.dash"))))))) - -(when (and *is-a-mac* (not (package-installed-p 'dash-at-point))) - (message "Checking whether Dash is installed") - (when (sanityinc/dash-installed-p) - (require-package 'dash-at-point))) - -(when (package-installed-p 'dash-at-point) +(when *is-a-mac* + (require-package 'dash-at-point) (global-set-key (kbd "C-c D") 'dash-at-point)) (provide 'init-dash) From 0c43957408e190e372cac575c1596683ab04c7e1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Jan 2019 14:47:25 +1300 Subject: [PATCH 034/418] Discontinue use of ivy-historian (see #692) --- lisp/init-ivy.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index a4196e17c6..70b24c9893 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -34,9 +34,6 @@ (setq-default ivy-re-builders-alist '((t . ivy--regex-fuzzy))))) -(when (maybe-require-package 'ivy-historian) - (add-hook 'after-init-hook 'ivy-historian-mode)) - (when (maybe-require-package 'counsel) (setq-default counsel-mode-override-describe-bindings t) (when (maybe-require-package 'diminish) From 2d9088ded746250d5d457dc5fd23c18ff084c4fc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 14 Jan 2019 12:42:56 +1300 Subject: [PATCH 035/418] Don't enable sqlformat-mode, which is being removed upstream --- lisp/init-sql.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 8f996b2af0..584410d7c1 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -48,7 +48,8 @@ Fix for the above hasn't been released as of Emacs 25.2." (require-package 'sqlformat) -(add-hook 'sql-mode-hook 'sqlformat-mode) +(after-load 'sql + (define-key sql-mode-map (kbd "C-c C-f") 'sqlformat)) (maybe-require-package 'sqlup-mode) (add-hook 'sql-mode-hook 'sqlup-mode) From 5fba1e6574071877b3f57dcb58c49a2c9b374209 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 6 Feb 2019 14:04:27 +1300 Subject: [PATCH 036/418] Use exec-path-from-shell when running as a daemon (except on Windows) Closes #693 --- lisp/init-exec-path.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-exec-path.el b/lisp/init-exec-path.el index 1e4ab5e205..6b5675d3de 100644 --- a/lisp/init-exec-path.el +++ b/lisp/init-exec-path.el @@ -9,7 +9,9 @@ (add-to-list 'exec-path-from-shell-variables var))) -(when (memq window-system '(mac ns x)) +(when (or (memq window-system '(mac ns x)) + (unless (memq system-type '(ms-dos windows-nt)) + (daemonp))) (setq-default exec-path-from-shell-arguments nil) (exec-path-from-shell-initialize)) From 54b21758972a41b5971c26870e5e63eb929aaa69 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 12 Feb 2019 10:42:12 +1300 Subject: [PATCH 037/418] Just use js2-mode for javascript --- lisp/init-javascript.el | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index c6fb2e1255..eb3e349bf8 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -8,23 +8,10 @@ (maybe-require-package 'typescript-mode) (maybe-require-package 'prettier-js) -(defcustom preferred-javascript-mode - (first (remove-if-not #'fboundp '(js2-mode js-mode))) - "Javascript mode to use for .js files." - :type 'symbol - :group 'programming - :options '(js2-mode js-mode)) - -(defconst preferred-javascript-indent-level 2) - ;; Need to first remove from list if present, since elpa adds entries too, which ;; may be in an arbitrary order -(eval-when-compile (require 'cl)) -(setq auto-mode-alist (cons `("\\.\\(js\\|es6\\)\\(\\.erb\\)?\\'" . ,preferred-javascript-mode) - (loop for entry in auto-mode-alist - unless (eq preferred-javascript-mode (cdr entry)) - collect entry))) +(add-to-list 'auto-mode-alist '("\\.\\(js\\|es6\\)\\(\\.erb\\)?\\'" . js2-mode)) ;; js2-mode @@ -46,11 +33,10 @@ (js2-imenu-extras-setup)) -;; js-mode -(setq-default js-indent-level preferred-javascript-indent-level) +(setq-default js-indent-level 2) -(add-to-list 'interpreter-mode-alist (cons "node" preferred-javascript-mode)) +(add-to-list 'interpreter-mode-alist (cons "node" 'js2-mode)) @@ -66,8 +52,8 @@ ;;; Coffeescript (after-load 'coffee-mode - (setq coffee-js-mode preferred-javascript-mode - coffee-tab-width preferred-javascript-indent-level)) + (setq-default coffee-js-mode js2-mode + coffee-tab-width js-indent-level)) (when (fboundp 'coffee-mode) (add-to-list 'auto-mode-alist '("\\.coffee\\.erb\\'" . coffee-mode))) From d37f5578bd2f53826e010283df80b8e1be0ca679 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 12 Feb 2019 10:46:26 +1300 Subject: [PATCH 038/418] Use setq-local where applicable --- lisp/init-javascript.el | 4 ++-- lisp/init-org.el | 8 ++++---- lisp/init-sql.el | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index eb3e349bf8..4c0ea813e1 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -25,8 +25,8 @@ (autoload 'flycheck-get-checker-for-buffer "flycheck") (defun sanityinc/enable-js2-checks-if-flycheck-inactive () (unless (flycheck-get-checker-for-buffer) - (set (make-local-variable 'js2-mode-show-parse-errors) t) - (set (make-local-variable 'js2-mode-show-strict-warnings) t))) + (setq-local js2-mode-show-parse-errors t) + (setq-local js2-mode-show-strict-warnings t))) (add-hook 'js2-mode-hook 'sanityinc/enable-js2-checks-if-flycheck-inactive) (add-hook 'js2-mode-hook (lambda () (setq mode-name "JS2"))) diff --git a/lisp/init-org.el b/lisp/init-org.el index 8f0839fc49..7820d53047 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -84,10 +84,10 @@ typical word processor." (kill-local-variable 'buffer-face-mode-face)) (buffer-face-mode 1) ;;(delete-selection-mode 1) - (set (make-local-variable 'blink-cursor-interval) 0.6) - (set (make-local-variable 'show-trailing-whitespace) nil) - (set (make-local-variable 'line-spacing) 0.2) - (set (make-local-variable 'electric-pair-mode) nil) + (setq-local blink-cursor-interval 0.6) + (setq-local show-trailing-whitespace nil) + (setq-local line-spacing 0.2) + (setq-local electric-pair-mode nil) (ignore-errors (flyspell-mode 1)) (visual-line-mode 1)) (kill-local-variable 'truncate-lines) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 584410d7c1..2830be5465 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -31,7 +31,7 @@ Fix for the above hasn't been released as of Emacs 25.2." (when (package-installed-p 'dash-at-point) (defun sanityinc/maybe-set-dash-db-docset (&rest _) (when (eq sql-product 'postgres) - (set (make-local-variable 'dash-at-point-docset) "psql"))) + (setq-local dash-at-point-docset "psql"))) (add-hook 'sql-mode-hook 'sanityinc/maybe-set-dash-db-docset) (add-hook 'sql-interactive-mode-hook 'sanityinc/maybe-set-dash-db-docset) From 50013cb9aa41b3e532817b76740ed2f2929e3036 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 19 Feb 2019 13:20:47 +1300 Subject: [PATCH 039/418] Increase beacon size --- lisp/init-editing-utils.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 29d6e896fd..e7d91ec1ac 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -64,7 +64,7 @@ (when (maybe-require-package 'beacon) (setq-default beacon-lighter "") - (setq-default beacon-size 5) + (setq-default beacon-size 20) (add-hook 'after-init-hook 'beacon-mode)) From 38b1c1759aa31ecb456cdf4b0c467209bf18bdf4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 19 Feb 2019 13:21:06 +1300 Subject: [PATCH 040/418] Blink beacon after jumping to a flycheck error --- lisp/init-editing-utils.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index e7d91ec1ac..02ae31cce5 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -65,6 +65,7 @@ (when (maybe-require-package 'beacon) (setq-default beacon-lighter "") (setq-default beacon-size 20) + (advice-add 'flycheck-jump-to-error :after (lambda (&rest _) (beacon-blink-automated))) (add-hook 'after-init-hook 'beacon-mode)) From a293b7d66379c76ce9615c136799716af5dbb819 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 19 Feb 2019 13:22:32 +1300 Subject: [PATCH 041/418] Ignore transient's cache directory --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b6b3629eab..b7bb7c81e9 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ site-lisp/package/ /magithub .cache/ /forge-database.sqlite +/transient From 5da347fc2286d5402dde1add144175cb3da80f5c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 19 Feb 2019 13:26:12 +1300 Subject: [PATCH 042/418] Revert "Blink beacon after jumping to a flycheck error" This reverts commit 38b1c1759aa31ecb456cdf4b0c467209bf18bdf4. This leaves the beacon displayed while minibuffer displays the error, which is annoying. --- lisp/init-editing-utils.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 02ae31cce5..e7d91ec1ac 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -65,7 +65,6 @@ (when (maybe-require-package 'beacon) (setq-default beacon-lighter "") (setq-default beacon-size 20) - (advice-add 'flycheck-jump-to-error :after (lambda (&rest _) (beacon-blink-automated))) (add-hook 'after-init-hook 'beacon-mode)) From 641d9b66da90eccb4d5d3293b8477dc092948df5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 19 Feb 2019 16:12:26 +1300 Subject: [PATCH 043/418] Switch from magithub to forge --- lisp/init-github.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-github.el b/lisp/init-github.el index ab161e2ecc..2e35ee2579 100644 --- a/lisp/init-github.el +++ b/lisp/init-github.el @@ -9,7 +9,7 @@ (add-hook 'prog-mode-hook 'bug-reference-prog-mode) (maybe-require-package 'github-clone) -(maybe-require-package 'magithub) +(maybe-require-package 'forge) (provide 'init-github) ;;; init-github.el ends here From e6fd6807730e6161bbd705901de27f2fdd432c71 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 19 Feb 2019 20:33:14 +1300 Subject: [PATCH 044/418] Switch to whitelist for modes in which to show trailing whitespace See #697 --- lisp/init-clojure-cider.el | 5 +---- lisp/init-git.el | 3 +-- lisp/init-slime.el | 3 +-- lisp/init-whitespace.el | 22 +++++++--------------- 4 files changed, 10 insertions(+), 23 deletions(-) diff --git a/lisp/init-clojure-cider.el b/lisp/init-clojure-cider.el index f0401333cf..80ad9bf0fe 100644 --- a/lisp/init-clojure-cider.el +++ b/lisp/init-clojure-cider.el @@ -9,10 +9,7 @@ (after-load 'cider (add-hook 'cider-repl-mode-hook 'subword-mode) - (add-hook 'cider-repl-mode-hook 'paredit-mode) - - ;; nrepl isn't based on comint - (add-hook 'cider-repl-mode-hook 'sanityinc/no-trailing-whitespace)) + (add-hook 'cider-repl-mode-hook 'paredit-mode)) (require-package 'flycheck-clojure) (after-load 'clojure-mode diff --git a/lisp/init-git.el b/lisp/init-git.el index 9ce83a3b7e..a86c535c58 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -38,8 +38,7 @@ (after-load 'magit - (define-key magit-status-mode-map (kbd "C-M-") 'magit-section-up) - (add-hook 'magit-popup-mode-hook 'sanityinc/no-trailing-whitespace)) + (define-key magit-status-mode-map (kbd "C-M-") 'magit-section-up)) (maybe-require-package 'magit-todos) diff --git a/lisp/init-slime.el b/lisp/init-slime.el index b7774b6e8f..98d7c2c7cf 100644 --- a/lisp/init-slime.el +++ b/lisp/init-slime.el @@ -35,8 +35,7 @@ (defun sanityinc/slime-repl-setup () "Mode setup function for slime REPL." (sanityinc/lisp-setup) - (set-up-slime-hippie-expand) - (setq show-trailing-whitespace nil)) + (set-up-slime-hippie-expand)) (after-load 'slime-repl ;; Stop SLIME's REPL from grabbing DEL, which is annoying when backspacing over a '(' diff --git a/lisp/init-whitespace.el b/lisp/init-whitespace.el index 19807d28b6..3342a14dc7 100644 --- a/lisp/init-whitespace.el +++ b/lisp/init-whitespace.el @@ -2,25 +2,17 @@ ;;; Commentary: ;;; Code: -(setq-default show-trailing-whitespace t) +(setq-default show-trailing-whitespace nil) ;;; Whitespace -(defun sanityinc/no-trailing-whitespace () - "Turn off display of trailing whitespace in this buffer." - (setq show-trailing-whitespace nil)) - -;; But don't show trailing whitespace in SQLi, inf-ruby etc. -(dolist (hook '(special-mode-hook - Info-mode-hook - eww-mode-hook - term-mode-hook - comint-mode-hook - compilation-mode-hook - twittering-mode-hook - minibuffer-setup-hook)) - (add-hook hook #'sanityinc/no-trailing-whitespace)) +(defun sanityinc/show-trailing-whitespace () + "Enable display of trailing whitespace in this buffer." + (setq-local show-trailing-whitespace t)) + +(dolist (hook '(prog-mode-hook text-mode-hook conf-mode-hook)) + (add-hook hook 'sanityinc/show-trailing-whitespace)) (require-package 'whitespace-cleanup-mode) From 5a22f219e0b10af9c423bd178be025099acaff0b Mon Sep 17 00:00:00 2001 From: yurimx Date: Tue, 19 Feb 2019 20:29:56 +0800 Subject: [PATCH 045/418] Remove residual sanityinc/no-trailing-whitespace reference --- lisp/init-haskell.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index af96382ea0..8f1647d7f9 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -80,7 +80,6 @@ (when (maybe-require-package 'dhall-mode) - (add-hook 'dhall-mode-hook 'sanityinc/no-trailing-whitespace) (add-hook 'dhall-mode-hook 'stack-exec-path-mode)) From de18de9473b15a5f5b6b9dd5e238c0979e6c9bc3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 20 Feb 2019 13:58:13 +1300 Subject: [PATCH 046/418] Set minimum line number width to 3 See https://github.com/abo-abo/swiper/issues/1940 --- lisp/init-editing-utils.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index e7d91ec1ac..6faedea540 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -88,6 +88,7 @@ (when (fboundp 'display-line-numbers-mode) + (setq display-line-numbers-width 3) (add-hook 'prog-mode-hook 'display-line-numbers-mode)) From bca2edcaded1514b0596b17d1daefa825cb4fe41 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 20 Feb 2019 13:58:37 +1300 Subject: [PATCH 047/418] Don't enable origami-mode automatically: it has a cost in large buffers --- lisp/init-folding.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-folding.el b/lisp/init-folding.el index 83c7bf7e21..289b6bb864 100644 --- a/lisp/init-folding.el +++ b/lisp/init-folding.el @@ -3,7 +3,6 @@ ;;; Code: (when (maybe-require-package 'origami) - (add-hook 'prog-mode-hook 'origami-mode) (after-load 'origami (define-key origami-mode-map (kbd "C-c f") 'origami-recursively-toggle-node) (define-key origami-mode-map (kbd "C-c F") 'origami-toggle-all-nodes))) From c26f5d5674fa8157bbd690da9163330e1edcf25a Mon Sep 17 00:00:00 2001 From: yurimx Date: Wed, 20 Feb 2019 12:34:56 +0800 Subject: [PATCH 048/418] Bind magit-dispatch instead of magit-dispatch-popup to "C-x M-g" --- lisp/init-git.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index a86c535c58..1613467cca 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -22,7 +22,7 @@ ;; quickly open magit on any one of your projects. (global-set-key [(meta f12)] 'magit-status) (global-set-key (kbd "C-x g") 'magit-status) - (global-set-key (kbd "C-x M-g") 'magit-dispatch-popup) + (global-set-key (kbd "C-x M-g") 'magit-dispatch) (defun sanityinc/magit-or-vc-log-file (&optional prompt) (interactive "P") From a4291bdb5d0d8d650854e4f5f9f25cf039d63197 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 27 Feb 2019 20:45:37 +1300 Subject: [PATCH 049/418] Don't override the `exec-path-from-shell` arg defaults Too many users have non-compliant shell set-ups, and I don't want to spend time supporting them, so I will set this var to nil locally instead. See #703, https://github.com/purcell/exec-path-from-shell/issues/88 --- lisp/init-exec-path.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-exec-path.el b/lisp/init-exec-path.el index 6b5675d3de..87736bfdaf 100644 --- a/lisp/init-exec-path.el +++ b/lisp/init-exec-path.el @@ -12,7 +12,6 @@ (when (or (memq window-system '(mac ns x)) (unless (memq system-type '(ms-dos windows-nt)) (daemonp))) - (setq-default exec-path-from-shell-arguments nil) (exec-path-from-shell-initialize)) (provide 'init-exec-path) From bed5f8ef273670a4d70733f2f8a2962c735c8f20 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 1 Mar 2019 19:51:15 +1300 Subject: [PATCH 050/418] Add notes about the org configuration See #702 --- lisp/init-org.el | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lisp/init-org.el b/lisp/init-org.el index 7820d53047..35e647fbeb 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -1,5 +1,25 @@ ;;; init-org.el --- Org-mode config -*- lexical-binding: t -*- ;;; Commentary: + +;; Among settings for many aspects of `org-mode', this code includes +;; an opinionated setup for the Getting Things Done (GTD) system based +;; around the Org Agenda. I have an "inbox.org" file with a header +;; including + +;; #+CATEGORY: Inbox +;; #+FILETAGS: INBOX + +;; and then set this file as `org-default-notes-file'. Captured org +;; items will then go into this file with the file-level tag, and can +;; be refiled to other locations as necessary. + +;; Those other locations are generally other org files, which should +;; be added to `org-agenda-files-list' (along with "inbox.org" org). +;; With that done, there's then an agenda view, accessible via the +;; `org-agenda' command, which gives a convenient overview. +;; `org-todo-keywords' is customised here to provide corresponding +;; TODO states, which should make sense to GTD adherents. + ;;; Code: (when *is-a-mac* From 2f868286c5ce873bdf79c054b76ade9e67f35af8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 3 Mar 2019 17:16:29 +1300 Subject: [PATCH 051/418] Add goto-line-preview --- lisp/init-editing-utils.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 6faedea540..7f2574a551 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -91,6 +91,9 @@ (setq display-line-numbers-width 3) (add-hook 'prog-mode-hook 'display-line-numbers-mode)) +(when (maybe-require-package 'goto-line-preview) + (global-set-key [remap goto-line] 'goto-line-preview)) + (when (require-package 'rainbow-delimiters) (add-hook 'prog-mode-hook 'rainbow-delimiters-mode)) From dd29c72b58581a4a56d7432944514ca11de888bd Mon Sep 17 00:00:00 2001 From: yurimx Date: Sun, 3 Mar 2019 18:32:39 +0800 Subject: [PATCH 052/418] Remove redundant coding system configuration --- lisp/init-locales.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-locales.el b/lisp/init-locales.el index 3e6082d7de..8576e37858 100644 --- a/lisp/init-locales.el +++ b/lisp/init-locales.el @@ -16,8 +16,6 @@ (when (or window-system (sanityinc/locale-is-utf8-p)) (set-language-environment 'utf-8) (setq locale-coding-system 'utf-8) - (set-default-coding-systems 'utf-8) - (set-terminal-coding-system 'utf-8) (set-selection-coding-system (if (eq system-type 'windows-nt) 'utf-16-le 'utf-8)) (prefer-coding-system 'utf-8)) From 5b370528b73cf017459a4fdc6c24e700cd5cb21c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 4 Mar 2019 08:05:40 +1300 Subject: [PATCH 053/418] Also set js2-basic-offset, for users with Emacs < 25 Closes #705 --- lisp/init-javascript.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 4c0ea813e1..ae30bb1cf4 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -34,6 +34,8 @@ (js2-imenu-extras-setup)) (setq-default js-indent-level 2) +;; In Emacs >= 25, the following is an alias for js-indent-level anyway +(setq-default js2-basic-offset 2) (add-to-list 'interpreter-mode-alist (cons "node" 'js2-mode)) From 999644528e57038471b5c59b51b1b38840641584 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 6 Mar 2019 14:57:55 +1300 Subject: [PATCH 054/418] Temporarily enable line-numbers during goto-line-preview See https://github.com/jcs090218/goto-line-preview/pull/10 --- lisp/init-editing-utils.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 7f2574a551..dd0b866782 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -92,7 +92,13 @@ (add-hook 'prog-mode-hook 'display-line-numbers-mode)) (when (maybe-require-package 'goto-line-preview) - (global-set-key [remap goto-line] 'goto-line-preview)) + (global-set-key [remap goto-line] 'goto-line-preview) + + (when (fboundp 'display-line-numbers-mode) + (defun sanityinc/with-display-line-numbers (f &rest args) + (let ((display-line-numbers t)) + (apply f args))) + (advice-add 'goto-line-preview :around #'sanityinc/with-display-line-numbers))) (when (require-package 'rainbow-delimiters) From 770e13ba0b2c2b304193a16eb43a802530fa7082 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 6 Mar 2019 15:01:43 +1300 Subject: [PATCH 055/418] Update purescript configuration --- lisp/init-purescript.el | 49 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/lisp/init-purescript.el b/lisp/init-purescript.el index cf8022a4a0..7b01b75811 100644 --- a/lisp/init-purescript.el +++ b/lisp/init-purescript.el @@ -3,13 +3,52 @@ ;;; Code: (when (maybe-require-package 'purescript-mode) + (add-hook 'purescript-mode-hook 'turn-on-purescript-indentation) + + (add-hook 'purescript-mode-hook + (lambda () + (add-hook 'before-save-hook 'purescript-sort-imports nil t))) + + (after-load 'purescript-mode + (define-key purescript-mode-map (kbd "C-o") 'open-line)) + + (when (maybe-require-package 'reformatter) + (reformatter-define purty + :program "purty" :lighter " purty")) + (when (maybe-require-package 'psc-ide) - (add-hook 'purescript-mode-hook + (add-hook 'purescript-mode-hook 'psc-ide-mode) + (add-hook 'psc-ide-mode-hook (lambda () - (psc-ide-mode) - (company-mode) - (flycheck-mode) - (turn-on-purescript-indentation)))) + (setq-local flycheck-check-syntax-automatically '(save mode-enabled)))) + + (defun psc-ide-foreign-js-after-save-handler () + "Call `psc-ide-rebuild' in any neighbouring purescript file buffer, if `psc-ide-rebuild-on-save' is set. +This is a little magical because it only works if the +corresponding .purs file is open." + (let ((js-path (buffer-file-name))) + (when js-path + (let* ((purs-path (concat (file-name-sans-extension js-path) ".purs")) + (purs-buf (get-file-buffer purs-path))) + (when purs-buf + (with-current-buffer purs-buf + (when psc-ide-mode + (cond + (psc-ide-rebuild-on-save + (message "Triggering rebuild of %s" purs-path) + (psc-ide-rebuild)) + (flycheck-mode + (message "Flychecking %s" purs-path) + (flycheck-buffer)))))))))) + + (define-minor-mode psc-ide-foreign-js-mode + "Rebuild corresponding purescript file." + nil + :lighter " PursJS" + :global nil + (if psc-ide-foreign-js-mode + (add-hook 'after-save-hook 'psc-ide-foreign-js-after-save-handler nil t) + (remove-hook 'after-save-hook 'psc-ide-foreign-js-after-save-handler t)))) (when (maybe-require-package 'psci) (add-hook 'purescript-mode-hook 'inferior-psci-mode)) From 9bb862b3d5f95d66506693cf1ebc685bb79d1080 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 6 Mar 2019 16:45:18 +1300 Subject: [PATCH 056/418] Enable sql blocks in org babel config --- lisp/init-org.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index 35e647fbeb..26e51a4284 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -400,7 +400,7 @@ typical word processor." (ruby . t) (screen . nil) (,(if (locate-library "ob-sh") 'sh 'shell) . t) - (sql . nil) + (sql . t) (sqlite . t)))) From 7a274d16788106ba9d59be0259e871a5e17eaf20 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 4 Apr 2019 10:27:17 +1300 Subject: [PATCH 057/418] Disable potentially-slow features during macro calls --- lisp/init-editing-utils.el | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index dd0b866782..8c76ad4c56 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -338,6 +338,17 @@ With arg N, insert N newlines." (after-load 'guide-key (diminish 'guide-key-mode)) + +(defun sanityinc/disable-features-during-macro-call (orig &rest args) + "When running a macro, disable features that might be expensive. +ORIG is the advised function, which is called with its ARGS." + (let (post-command-hook + font-lock-mode + (tab-always-indent (or (eq 'complete tab-always-indent) tab-always-indent))) + (apply orig args))) + +(advice-add 'kmacro-call-macro :around 'sanityinc/disable-features-during-macro-call) + (provide 'init-editing-utils) ;;; init-editing-utils.el ends here From db334d22606d59cbf0f8bbf21a9e98931da2e578 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 4 Apr 2019 10:28:47 +1300 Subject: [PATCH 058/418] Add github-review --- lisp/init-github.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-github.el b/lisp/init-github.el index 2e35ee2579..f5b8b4707f 100644 --- a/lisp/init-github.el +++ b/lisp/init-github.el @@ -10,6 +10,7 @@ (maybe-require-package 'github-clone) (maybe-require-package 'forge) +(maybe-require-package 'github-review) (provide 'init-github) ;;; init-github.el ends here From 57f0ff9c6116b821815d547d0af83a4dea802a9b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 4 Apr 2019 10:29:13 +1300 Subject: [PATCH 059/418] Prefer my global binding of M-? in anaconda-mode --- lisp/init-python.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-python.el b/lisp/init-python.el index 2e7a4f10fa..76c22cf24f 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -13,6 +13,8 @@ (after-load 'python (add-hook 'python-mode-hook 'anaconda-mode) (add-hook 'python-mode-hook 'anaconda-eldoc-mode)) + (after-load 'anaconda-mode + (define-key anaconda-mode-map (kbd "M-?") nil)) (when (maybe-require-package 'company-anaconda) (after-load 'company (after-load 'python From 612efb08aa2b446b91c2a617a7f3d31e0eac7b1a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 4 Apr 2019 10:29:40 +1300 Subject: [PATCH 060/418] Remove sqlup-mode --- lisp/init-sql.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 2830be5465..bb9efb9a37 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -51,9 +51,6 @@ Fix for the above hasn't been released as of Emacs 25.2." (after-load 'sql (define-key sql-mode-map (kbd "C-c C-f") 'sqlformat)) -(maybe-require-package 'sqlup-mode) -(add-hook 'sql-mode-hook 'sqlup-mode) - ;; Package ideas: ;; - PEV (defun sanityinc/sql-explain-region-as-json (beg end &optional copy) From 019893695e91e32f45ffb0b9d4712e30e17c9e6c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 4 Apr 2019 10:31:04 +1300 Subject: [PATCH 061/418] Enable Ivy's "selectable prompt" --- lisp/init-ivy.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 70b24c9893..beaa0726b7 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -11,6 +11,7 @@ projectile-completion-system 'ivy ivy-magic-tilde nil ivy-dynamic-exhibit-delay-ms 150 + ivy-use-selectable-prompt t ivy-initial-inputs-alist '((Man-completion-table . "^") (woman . "^"))) From 1429d86f3aaf4215942cd741c05bf90485bc6e8e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 4 Apr 2019 10:58:17 +1300 Subject: [PATCH 062/418] "scratch" package now requires Emacs 25.1 --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index c0d57ca70a..7ac75cca9c 100644 --- a/init.el +++ b/init.el @@ -50,7 +50,7 @@ ;;---------------------------------------------------------------------------- (require-package 'diminish) -(require-package 'scratch) +(maybe-require-package 'scratch) (require-package 'command-log-mode) (require 'init-frame-hooks) From 73ece9c7bbd9346933b419c2d8ea533580b84d47 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 11 Apr 2019 15:11:16 +1200 Subject: [PATCH 063/418] Use non-deprecated names for move-dup functions (fixes #710) --- lisp/init-editing-utils.el | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 8c76ad4c56..23962e6dd3 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -222,13 +222,13 @@ ;; use M-S-up and M-S-down, which will work even in lisp modes. ;;---------------------------------------------------------------------------- (require-package 'move-dup) -(global-set-key [M-up] 'md/move-lines-up) -(global-set-key [M-down] 'md/move-lines-down) -(global-set-key [M-S-up] 'md/move-lines-up) -(global-set-key [M-S-down] 'md/move-lines-down) +(global-set-key [M-up] 'md-move-lines-up) +(global-set-key [M-down] 'md-move-lines-down) +(global-set-key [M-S-up] 'md-move-lines-up) +(global-set-key [M-S-down] 'md-move-lines-down) -(global-set-key (kbd "C-c d") 'md/duplicate-down) -(global-set-key (kbd "C-c u") 'md/duplicate-up) +(global-set-key (kbd "C-c d") 'md-duplicate-down) +(global-set-key (kbd "C-c u") 'md-duplicate-up) ;;---------------------------------------------------------------------------- ;; Fix backward-up-list to understand quotes, see http://bit.ly/h7mdIL From 5db6cbd95700f88ee619af73ab319429f842d604 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 11 Apr 2019 15:11:33 +1200 Subject: [PATCH 064/418] Use the non-aliased name for whole-line-or-region-global-mode --- lisp/init-editing-utils.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 23962e6dd3..32f62bd7e1 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -249,7 +249,7 @@ ;; Cut/copy the current line if no region is active ;;---------------------------------------------------------------------------- (require-package 'whole-line-or-region) -(add-hook 'after-init-hook 'whole-line-or-region-mode) +(add-hook 'after-init-hook 'whole-line-or-region-global-mode) (after-load 'whole-line-or-region (diminish 'whole-line-or-region-local-mode)) From 255aabb4e49539bda554481ce8b9f9f2b0c47de5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 12 Apr 2019 13:54:26 +1200 Subject: [PATCH 065/418] Use setq-default to set line number width, which is necessary in Emacs 27 --- lisp/init-editing-utils.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 32f62bd7e1..bb274b3eb9 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -88,7 +88,7 @@ (when (fboundp 'display-line-numbers-mode) - (setq display-line-numbers-width 3) + (setq-default display-line-numbers-width 3) (add-hook 'prog-mode-hook 'display-line-numbers-mode)) (when (maybe-require-package 'goto-line-preview) From 3516fe0d95729aee2aac458b3c8c8b7a219bd515 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 12 Apr 2019 13:58:46 +1200 Subject: [PATCH 066/418] Tidier buffer handling in PEV command --- lisp/init-sql.el | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index bb9efb9a37..aad5bd1199 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -98,15 +98,16 @@ This command currently blocks the UI, sorry." (if (zerop retcode) (progn (json-mode) + (read-only-mode 1) (if copy (progn (kill-ring-save (buffer-substring-no-properties (point-min) (point-max))) (message "EXPLAIN output copied to kill-ring.")) - (view-buffer (current-buffer)))) + (display-buffer (current-buffer)))) (with-current-buffer (get-buffer-create "*sql-explain-errors*") - (setq buffer-read-only nil) - (insert-file-contents err-file nil nil nil t) - (view-buffer (current-buffer)) + (let ((inhibit-read-only t)) + (insert-file-contents err-file nil nil nil t)) + (display-buffer (current-buffer)) (user-error "EXPLAIN failed"))))))))) From b91a4526f96ad7b33ed5611e4e407d637105f4f8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 18 Apr 2019 14:29:44 +1200 Subject: [PATCH 067/418] Remove some now-standard Ruby filename patterns --- lisp/init-ruby.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index aa03c82a75..45b4a87629 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -6,9 +6,9 @@ (require-package 'ruby-hash-syntax) (add-auto-mode 'ruby-mode - "Rakefile\\'" "\\.rake\\'" "\\.rxml\\'" + "\\.rxml\\'" "\\.rjs\\'" "\\.irbrc\\'" "\\.pryrc\\'" "\\.builder\\'" "\\.ru\\'" - "\\.gemspec\\'" "Gemfile\\'" "Kirkfile\\'") + "\\.gemspec\\'" "Kirkfile\\'") (add-auto-mode 'conf-mode "Gemfile\\.lock\\'") (setq-default From 59e87924834295e04079c50f9966129a179cb1fa Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 29 Apr 2019 10:28:07 +1200 Subject: [PATCH 068/418] Add Purescript to favoured languages list --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 50e8e2380b..b29f41eaac 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Emacs itself comes with support for many programming languages. This config adds improved defaults and extended support for the following, listed in the approximate order of how much I use them, from most to least: -* Haskell / Elm +* Haskell / Purescript / Elm * Ruby / Ruby on Rails * CSS / LESS / SASS / SCSS * Javascript / Typescript / Coffeescript From 930a1e1692dd09d8e85180e9934c000dcbdc725a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 17 May 2019 14:34:03 +1200 Subject: [PATCH 069/418] Disable prettify-symbols-mode in purescript-mode --- lisp/init-purescript.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-purescript.el b/lisp/init-purescript.el index 7b01b75811..8e67747c3a 100644 --- a/lisp/init-purescript.el +++ b/lisp/init-purescript.el @@ -9,6 +9,8 @@ (lambda () (add-hook 'before-save-hook 'purescript-sort-imports nil t))) + (add-hook 'purescript-mode-hook (apply-partially 'prettify-symbols-mode -1)) + (after-load 'purescript-mode (define-key purescript-mode-map (kbd "C-o") 'open-line)) From e20cbe36ddd3ea508dfdfee098c46853065cce63 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 17 May 2019 14:37:12 +1200 Subject: [PATCH 070/418] Workaround haskell-mode bug in Emacs 25 --- lisp/init-haskell.el | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 8f1647d7f9..7f32498a2a 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -25,6 +25,15 @@ (add-auto-mode 'haskell-mode "\\.ghci\\'") +;; Workaround for https://github.com/haskell/haskell-mode/issues/1577 +(when (eq 25 emacs-major-version) + (defun sanityinc/inhibit-bracket-inside-comment-or-default (ch) + (or (nth 4 (syntax-ppss)) + (funcall #'electric-pair-default-inhibit ch))) + (add-hook 'haskell-mode-hook + (lambda () + (setq-local electric-pair-inhibit-predicate 'sanityinc/inhibit-bracket-inside-comment-or-default)))) + ;; Indentation (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) From dc1403e136823dc6f0cf063ffb433265c1bf1dca Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 17 May 2019 14:37:45 +1200 Subject: [PATCH 071/418] Switch from intero to dante for Haskell flycheck/completion support --- lisp/init-haskell.el | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 7f32498a2a..5ca7f561c3 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -7,21 +7,16 @@ ;; Use intero for completion and flycheck -(when (maybe-require-package 'intero) - (after-load 'haskell-mode - (intero-global-mode) - (add-hook 'haskell-mode-hook 'subword-mode) - (add-hook 'haskell-mode-hook 'eldoc-mode)) - (after-load 'haskell-cabal - (add-hook 'haskell-cabal-mode 'subword-mode) - (define-key haskell-cabal-mode-map (kbd "C-c C-l") 'intero-restart)) - (after-load 'intero - ;; Don't clobber sanityinc/counsel-search-project binding - (define-key intero-mode-map (kbd "M-?") nil) - (after-load 'flycheck - (flycheck-add-next-checker 'intero - '(warning . haskell-hlint))))) +(add-hook 'haskell-mode-hook 'subword-mode) +(add-hook 'haskell-cabal-mode 'subword-mode) +(when (maybe-require-package 'dante) + (add-hook 'haskell-mode-hook 'dante-mode) + (after-load 'dante + (flycheck-add-next-checker 'haskell-dante + '(warning . haskell-hlint)))) + +(add-hook 'haskell-mode-hook 'interactive-haskell-mode) (add-auto-mode 'haskell-mode "\\.ghci\\'") From 27809f1a799ededb4d272f61949aa0c23b0f3c8c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 17 May 2019 15:08:31 +1200 Subject: [PATCH 072/418] Better formulation of stack-exec-path-mode --- lisp/init-haskell.el | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 5ca7f561c3..26f6779e7d 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -67,17 +67,15 @@ (if stack-exec-path-mode (when (and (executable-find "stack") (locate-dominating-file default-directory "stack.yaml")) - (setq-local - exec-path - (seq-uniq - (append (list (concat (string-trim-right (shell-command-to-string "stack path --local-install-root")) "/bin")) - (parse-colon-path - (replace-regexp-in-string "[\r\n]+\\'" "" - (shell-command-to-string "stack path --bin-path")))) - 'string-equal)) - ;(add-to-list (make-local-variable 'process-environment) (format "PATH=%s" (string-join exec-path path-separator))) - ) - (kill-local-variable 'exec-path))) + (let ((stack-path (replace-regexp-in-string + "[\r\n]+\\'" "" + (shell-command-to-string (concat "stack exec -- sh -c ") + (shell-quote-argument "echo $PATH"))))) + (setq-local exec-path (seq-uniq (parse-colon-path stack-path) 'string-equal)) + (make-local-variable 'process-environment) + (setenv "PATH" (string-join exec-path path-separator)))) + (kill-local-variable 'exec-path) + (kill-local-variable 'process-environment))) (add-hook 'haskell-mode-hook 'stack-exec-path-mode) From 7108c796cae9fe0d423e6f0c6bb0b0b282875a16 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 17 May 2019 15:09:08 +1200 Subject: [PATCH 073/418] Bind M-I to symbol-overlay-remove-all --- lisp/init-editing-utils.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index bb274b3eb9..1a8f14ce20 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -116,6 +116,7 @@ (after-load 'symbol-overlay (diminish 'symbol-overlay-mode) (define-key symbol-overlay-mode-map (kbd "M-i") 'symbol-overlay-put) + (define-key symbol-overlay-mode-map (kbd "M-I") 'symbol-overlay-remove-all) (define-key symbol-overlay-mode-map (kbd "M-n") 'symbol-overlay-jump-next) (define-key symbol-overlay-mode-map (kbd "M-p") 'symbol-overlay-jump-prev))) From 636d22cbc83a4842ba573fd4ba2918a96982c2cc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 17 May 2019 15:35:05 +1200 Subject: [PATCH 074/418] Fix silly error in stack-exec-path-mode --- lisp/init-haskell.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 26f6779e7d..2878902650 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -69,8 +69,8 @@ (locate-dominating-file default-directory "stack.yaml")) (let ((stack-path (replace-regexp-in-string "[\r\n]+\\'" "" - (shell-command-to-string (concat "stack exec -- sh -c ") - (shell-quote-argument "echo $PATH"))))) + (shell-command-to-string (concat "stack exec -- sh -c " + (shell-quote-argument "echo $PATH")))))) (setq-local exec-path (seq-uniq (parse-colon-path stack-path) 'string-equal)) (make-local-variable 'process-environment) (setenv "PATH" (string-join exec-path path-separator)))) From de5551212dff3530dcccef4085ff0d2349844c0f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 17 May 2019 15:35:18 +1200 Subject: [PATCH 075/418] Define and use my own hindent-on-save mode --- lisp/init-haskell.el | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 2878902650..fc7db49c70 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -39,15 +39,12 @@ (add-hook 'haskell-mode-hook 'haskell-auto-insert-module-template) -(when (maybe-require-package 'hindent) - (add-hook 'haskell-mode-hook 'hindent-mode) - (after-load 'hindent - (when (require 'nadvice) - (defun sanityinc/hindent--before-save-wrapper (oldfun &rest args) - (with-demoted-errors "Error invoking hindent: %s" - (let ((debug-on-error nil)) - (apply oldfun args)))) - (advice-add 'hindent--before-save :around 'sanityinc/hindent--before-save-wrapper)))) +(when (maybe-require-package 'reformatter) + (reformatter-define hindent + :program "hindent" + :lighter " Hin") + + (defalias 'hindent-mode 'hindent-on-save-mode)) (after-load 'haskell-mode (define-key haskell-mode-map (kbd "C-c h") 'hoogle) From da1fc8d03599429cc1b292f2552a0792a97e3974 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 11 Jun 2019 19:08:37 +1200 Subject: [PATCH 076/418] Quote any regex chars in current symbol when searching with M-? --- lisp/init-ivy.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index beaa0726b7..411bbffcba 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -55,7 +55,8 @@ If there is no project root, or if the prefix argument USE-CURRENT-DIR is set, then search from the current directory instead." - (interactive (list (thing-at-point 'symbol) + (interactive (list (let ((sym (thing-at-point 'symbol))) + (when sym (regexp-quote sym))) current-prefix-arg)) (let ((current-prefix-arg) (dir (if use-current-dir From a5df5cea11523be8183d1088523ad35d16da341d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 11 Jun 2019 19:11:33 +1200 Subject: [PATCH 077/418] Add dired-jump bindings (C-x C-j, C-x 4 C-j) --- lisp/init-dired.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 7d538c17b2..f8f2db9041 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -10,7 +10,12 @@ (when (maybe-require-package 'diredfl) (after-load 'dired - (diredfl-global-mode))) + (diredfl-global-mode) + (require 'dired-x))) + +;; Hook up dired-x global bindings without loading it up-front +(define-key ctl-x-map "\C-j" 'dired-jump) +(define-key ctl-x-4-map "\C-j" 'dired-jump-other-window) (after-load 'dired (setq dired-recursive-deletes 'top) From 407b1003b67dd0e6ee5b53f4a9ab75f2f207ab1a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 12 Jun 2019 10:11:57 +1200 Subject: [PATCH 078/418] Use swiper-thing-at-point instead of hand-rolled version Thanks @manuel-uberti --- lisp/init-ivy.el | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 411bbffcba..9347a7543d 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -72,12 +72,7 @@ instead." (when (maybe-require-package 'swiper) (after-load 'ivy - (defun sanityinc/swiper-at-point (sym) - "Use `swiper' to search for the symbol at point." - (interactive (list (thing-at-point 'symbol))) - (swiper sym)) - - (define-key ivy-mode-map (kbd "M-s /") 'sanityinc/swiper-at-point))) + (define-key ivy-mode-map (kbd "M-s /") 'swiper-thing-at-point))) (when (maybe-require-package 'ivy-xref) From a2a642518e99fb355c312dad8f1abbd2587c6862 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 24 Jun 2019 14:22:00 +1200 Subject: [PATCH 079/418] Prefer string-match-p to string-match when possible --- lisp/init-locales.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-locales.el b/lisp/init-locales.el index 8576e37858..906a717f99 100644 --- a/lisp/init-locales.el +++ b/lisp/init-locales.el @@ -4,7 +4,7 @@ (defun sanityinc/utf8-locale-p (v) "Return whether locale string V relates to a UTF-8 locale." - (and v (string-match "UTF-8" v))) + (and v (string-match-p "UTF-8" v))) (defun sanityinc/locale-is-utf8-p () "Return t iff the \"locale\" command or environment variables prefer UTF-8." From 072aa305ca1d6248b59b390618cd4075be61a8e3 Mon Sep 17 00:00:00 2001 From: Krzysztof Drewniak Date: Thu, 4 Jul 2019 13:00:08 -0700 Subject: [PATCH 080/418] Fix js2-mode error when loading coffee-mode on emacs 25.2 Attempting to load coffee-mode causes the error `File mode specification error: (void-variable js2-mode)`. If js2-mode was already enabled in the buffer, the error is instead `Symbol's value as variable is void: js2-mode` This problem is resolved by quoting `js2-mode`. --- lisp/init-javascript.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index ae30bb1cf4..5367c33fad 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -54,7 +54,7 @@ ;;; Coffeescript (after-load 'coffee-mode - (setq-default coffee-js-mode js2-mode + (setq-default coffee-js-mode 'js2-mode coffee-tab-width js-indent-level)) (when (fboundp 'coffee-mode) From 14f645a9bde04498ce2b60de268c2cbafa13604a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 11 Aug 2019 10:52:00 +1200 Subject: [PATCH 081/418] Work around Emacs bug affecting ELPA updates (fixes #721) --- lisp/init-elpa.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index a6ee481faf..3027f10c1b 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -28,6 +28,11 @@ ;; Force SSL for GNU ELPA (setcdr (assoc "gnu" package-archives) "https://elpa.gnu.org/packages/")))) + +;; Work-around for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34341 +(when (version= "26.2" emacs-version) + (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")) + ;;; On-demand installation of packages From 58a2df66b59f8faa1fe48307bf0022505e1e2a82 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 28 Aug 2019 10:04:26 +1200 Subject: [PATCH 082/418] Globally bind some useful org clocking functions under "C-c o" --- lisp/init-org.el | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lisp/init-org.el b/lisp/init-org.el index 26e51a4284..b61e1b5922 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -30,6 +30,16 @@ (define-key global-map (kbd "C-c l") 'org-store-link) (define-key global-map (kbd "C-c a") 'org-agenda) +(defvar sanityinc/org-global-prefix-map (make-sparse-keymap) + "A keymap for handy global access to org helpers, particularly clocking.") + +(define-key sanityinc/org-global-prefix-map (kbd "j") 'org-clock-jump-to-current-clock) +(define-key sanityinc/org-global-prefix-map (kbd "l") 'org-clock-in-last) +(define-key sanityinc/org-global-prefix-map (kbd "i") 'org-clock-in) +(define-key sanityinc/org-global-prefix-map (kbd "o") 'org-clock-out) +(define-key global-map (kbd "C-c o") sanityinc/org-global-prefix-map) + + ;; Various preferences (setq org-log-done t org-edit-timestamp-down-means-later t From ab7cbf67bce05a4fcd5c7e8ae270d1de129b5f47 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 13 Sep 2019 11:20:51 +1200 Subject: [PATCH 083/418] Switch Travis build from EVM to nix-emacs-ci --- .travis.yml | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/.travis.yml b/.travis.yml index f45be1dd90..9459bd035b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,27 +1,20 @@ -language: ruby +language: nix -cache: - directories: - - $HOME/.evm - -before_install: - - (cd $HOME/.evm && git pull) || git clone https://github.com/rejeep/evm.git $HOME/.evm - - export PATH=$HOME/.evm/bin:$PATH - - evm config path /tmp - - evm install $EVM_EMACS --use --skip +install: + # Enable downloadable pre-built binaries stored on cachix + - nix-env -iA cachix -f https://cachix.org/api/v1/install + - cachix use emacs-ci + - nix-env -iA $EMACS_VER -f https://github.com/purcell/nix-emacs-ci/archive/master.tar.gz env: - - EVM_EMACS=emacs-24.4-travis - - EVM_EMACS=emacs-24.5-travis - - EVM_EMACS=emacs-25.1-travis - - EVM_EMACS=emacs-25.2-travis - - EVM_EMACS=emacs-25.3-travis - - EVM_EMACS=emacs-26.1-travis - #- EVM_EMACS=emacs-git-snapshot-travis - -matrix: - allow_failures: - - env: EVM_EMACS=emacs-git-snapshot-travis + - EMACS_VER=emacs-24-4 + - EMACS_VER=emacs-24-5 + - EMACS_VER=emacs-25-1 + - EMACS_VER=emacs-25-2 + - EMACS_VER=emacs-25-3 + - EMACS_VER=emacs-26-1 + - EMACS_VER=emacs-26-2 + - EMACS_VER=emacs-26-3 script: lsb_release -a && ./test-startup.sh From 12cbebe00f38b496c740eab74973238c61718b6d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 13 Sep 2019 12:06:48 +1200 Subject: [PATCH 084/418] More effective workaround for GNUTLS + ELPA issues --- lisp/init-elpa.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 3027f10c1b..ade24278c8 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -30,7 +30,7 @@ ;; Work-around for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34341 -(when (version= "26.2" emacs-version) +(when (and (version< emacs-version "26.3") (>= libgnutls-version 30604)) (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")) From 0c0a585dbc99a213ae4904331f80951082dc4af9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 13 Sep 2019 12:14:11 +1200 Subject: [PATCH 085/418] libgnutls-version is not a bound variable in older Emacs versions --- lisp/init-elpa.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index ade24278c8..83242939d6 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -30,7 +30,7 @@ ;; Work-around for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34341 -(when (and (version< emacs-version "26.3") (>= libgnutls-version 30604)) +(when (and (version< emacs-version "26.3") (boundp 'libgnutls-version) (>= libgnutls-version 30604)) (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")) From 2837856ed9ce953706a033b01f42c3d23cd32584 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 13 Sep 2019 13:34:12 +1200 Subject: [PATCH 086/418] Don't bother setting gnutls-algorithm-priority if no such var exists --- lisp/init-elpa.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 83242939d6..71b4e8a0d6 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -30,7 +30,10 @@ ;; Work-around for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34341 -(when (and (version< emacs-version "26.3") (boundp 'libgnutls-version) (>= libgnutls-version 30604)) +(when (and (boundp 'gnutls-algorithm-priority) + (version< emacs-version "26.3") + (boundp 'libgnutls-version) + (>= libgnutls-version 30604)) (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")) From eca241daf76f93e146eba152d789f26f6931f9ae Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 13 Sep 2019 13:34:34 +1200 Subject: [PATCH 087/418] Don't override the default protocol for ELPA --- lisp/init-elpa.el | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 71b4e8a0d6..d6ff59cf30 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -21,12 +21,7 @@ (add-to-list 'package-archives (cons "melpa" (concat proto "://melpa.org/packages/")) t) ;; Official MELPA Mirror, in case necessary. ;;(add-to-list 'package-archives (cons "melpa-mirror" (concat proto "://www.mirrorservice.org/sites/melpa.org/packages/")) t) - (if (< emacs-major-version 24) - ;; For important compatibility libraries like cl-lib - (add-to-list 'package-archives '("gnu" . (concat proto "://elpa.gnu.org/packages/"))) - (unless no-ssl - ;; Force SSL for GNU ELPA - (setcdr (assoc "gnu" package-archives) "https://elpa.gnu.org/packages/")))) + ) ;; Work-around for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34341 From 9faabf7d5f7cf0689084cc7dcf98b9a6494b83fd Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 13 Sep 2019 13:42:36 +1200 Subject: [PATCH 088/418] Revert "Don't bother setting gnutls-algorithm-priority if no such var exists" This reverts commit 2837856ed9ce953706a033b01f42c3d23cd32584. The test is bogus because that variable is not autoloaded, and cannot be tested via boundp at that stage. --- lisp/init-elpa.el | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index d6ff59cf30..90b7cc1e7f 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -25,10 +25,7 @@ ;; Work-around for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34341 -(when (and (boundp 'gnutls-algorithm-priority) - (version< emacs-version "26.3") - (boundp 'libgnutls-version) - (>= libgnutls-version 30604)) +(when (and (version< emacs-version "26.3") (boundp 'libgnutls-version) (>= libgnutls-version 30604)) (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")) From 9c1909fb3f19b2db10126422953f795201e12d33 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 14 Sep 2019 16:52:52 +1200 Subject: [PATCH 089/418] Enable CI builds for both Linux and MacOS --- .travis.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9459bd035b..2eb1024536 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,11 @@ language: nix +os: + - linux + - osx + install: - # Enable downloadable pre-built binaries stored on cachix - - nix-env -iA cachix -f https://cachix.org/api/v1/install - - cachix use emacs-ci + - bash <(curl https://raw.githubusercontent.com/purcell/nix-emacs-ci/master/travis-install) - nix-env -iA $EMACS_VER -f https://github.com/purcell/nix-emacs-ci/archive/master.tar.gz env: From 9009671487bdb53eea4920936cee65818a6d1038 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 14 Sep 2019 17:18:03 +1200 Subject: [PATCH 090/418] Remove travis reference to lsb_release, which is missing on osx --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2eb1024536..1655b7304e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,7 @@ env: - EMACS_VER=emacs-26-3 script: - lsb_release -a && ./test-startup.sh + ./test-startup.sh # Local Variables: # indent-tabs-mode: nil From cdc910b5b8e1f4d11669d36715528d0df944331c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 15 Sep 2019 13:27:10 +1200 Subject: [PATCH 091/418] Log important gnutls during startup test --- test-startup.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/test-startup.sh b/test-startup.sh index 82a2328d89..4850e4eb7f 100755 --- a/test-startup.sh +++ b/test-startup.sh @@ -8,6 +8,7 @@ echo "Attempting startup..." ${EMACS:=emacs} -nw --batch \ --eval '(let ((debug-on-error t) (url-show-status nil) + (gnutls-log-level 1) (user-emacs-directory default-directory) (user-init-file (expand-file-name "init.el")) (load-path (delq default-directory load-path))) From 471a27f66c015766613453f18caded529bdaac05 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 15 Sep 2019 15:13:08 +1200 Subject: [PATCH 092/418] Use snapshot version in CI too --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 1655b7304e..485fbf115c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ env: - EMACS_VER=emacs-26-1 - EMACS_VER=emacs-26-2 - EMACS_VER=emacs-26-3 + - EMACS_VER=emacs-snapshot script: ./test-startup.sh From ef8818dc7651a36a5b09728cb10c44b4a697ac11 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 15 Sep 2019 15:17:10 +1200 Subject: [PATCH 093/418] Revert "Log important gnutls during startup test" This reverts commit cdc910b5b8e1f4d11669d36715528d0df944331c. --- test-startup.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/test-startup.sh b/test-startup.sh index 4850e4eb7f..82a2328d89 100755 --- a/test-startup.sh +++ b/test-startup.sh @@ -8,7 +8,6 @@ echo "Attempting startup..." ${EMACS:=emacs} -nw --batch \ --eval '(let ((debug-on-error t) (url-show-status nil) - (gnutls-log-level 1) (user-emacs-directory default-directory) (user-init-file (expand-file-name "init.el")) (load-path (delq default-directory load-path))) From b8fafc13b0e46057961c870dcaacc7d1d77f0186 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 16 Sep 2019 08:10:34 +1200 Subject: [PATCH 094/418] Use new Emacs CI auto-installation --- .travis.yml | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 485fbf115c..e2fa02694b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,20 +4,19 @@ os: - linux - osx +env: + - EMACS_CI_VERSION=emacs-24-4 + - EMACS_CI_VERSION=emacs-24-5 + - EMACS_CI_VERSION=emacs-25-1 + - EMACS_CI_VERSION=emacs-25-2 + - EMACS_CI_VERSION=emacs-25-3 + - EMACS_CI_VERSION=emacs-26-1 + - EMACS_CI_VERSION=emacs-26-2 + - EMACS_CI_VERSION=emacs-26-3 + - EMACS_CI_VERSION=emacs-snapshot + install: - bash <(curl https://raw.githubusercontent.com/purcell/nix-emacs-ci/master/travis-install) - - nix-env -iA $EMACS_VER -f https://github.com/purcell/nix-emacs-ci/archive/master.tar.gz - -env: - - EMACS_VER=emacs-24-4 - - EMACS_VER=emacs-24-5 - - EMACS_VER=emacs-25-1 - - EMACS_VER=emacs-25-2 - - EMACS_VER=emacs-25-3 - - EMACS_VER=emacs-26-1 - - EMACS_VER=emacs-26-2 - - EMACS_VER=emacs-26-3 - - EMACS_VER=emacs-snapshot script: ./test-startup.sh From 6c06faa7e2886af092dd1ddfc4f0ab28463ab8ad Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 16 Sep 2019 08:17:33 +1200 Subject: [PATCH 095/418] Use new shorter EMACS_CI env var --- .travis.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index e2fa02694b..e852c108b6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,15 +5,15 @@ os: - osx env: - - EMACS_CI_VERSION=emacs-24-4 - - EMACS_CI_VERSION=emacs-24-5 - - EMACS_CI_VERSION=emacs-25-1 - - EMACS_CI_VERSION=emacs-25-2 - - EMACS_CI_VERSION=emacs-25-3 - - EMACS_CI_VERSION=emacs-26-1 - - EMACS_CI_VERSION=emacs-26-2 - - EMACS_CI_VERSION=emacs-26-3 - - EMACS_CI_VERSION=emacs-snapshot + - EMACS_CI=emacs-24-4 + - EMACS_CI=emacs-24-5 + - EMACS_CI=emacs-25-1 + - EMACS_CI=emacs-25-2 + - EMACS_CI=emacs-25-3 + - EMACS_CI=emacs-26-1 + - EMACS_CI=emacs-26-2 + - EMACS_CI=emacs-26-3 + - EMACS_CI=emacs-snapshot install: - bash <(curl https://raw.githubusercontent.com/purcell/nix-emacs-ci/master/travis-install) From 00a9897f721d3f859bd69f7f273c1e783c39c4e0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 16 Sep 2019 09:00:28 +1200 Subject: [PATCH 096/418] Don't prompt to confirm theme safety: fixes startup with Emacs HEAD --- lisp/init-themes.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/init-themes.el b/lisp/init-themes.el index 54addedc4d..513a2fef3e 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -5,6 +5,10 @@ (require-package 'color-theme-sanityinc-solarized) (require-package 'color-theme-sanityinc-tomorrow) +;; Don't prompt to confirm theme safety. This avoids problems with +;; first-time startup on Emacs > 26.3. +(setq custom-safe-themes t) + ;; If you don't customize it, this is the theme you get. (setq-default custom-enabled-themes '(sanityinc-tomorrow-bright)) From 09e2a66b8b59f03f0ab5fce5339ea2b0b89d60c5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 30 Sep 2019 21:27:59 +1300 Subject: [PATCH 097/418] Add note about python and virtualenvs --- lisp/init-python.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/init-python.el b/lisp/init-python.el index 76c22cf24f..9529c58cc0 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -2,6 +2,12 @@ ;;; Commentary: ;;; Code: + +;; See the following note about how I set up python + virtualenv to +;; work seamlessly with Emacs: +;; https://gist.github.com/purcell/81f76c50a42eee710dcfc9a14bfc7240 + + (setq auto-mode-alist (append '(("SConstruct\\'" . python-mode) ("SConscript\\'" . python-mode)) From 088f3ffd2344933b3dbd5b1a3ad7fd7b86f604ec Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 30 Sep 2019 21:28:53 +1300 Subject: [PATCH 098/418] Don't enable anaconda over tramp --- lisp/init-python.el | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lisp/init-python.el b/lisp/init-python.el index 9529c58cc0..130a18c974 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -17,8 +17,12 @@ (when (maybe-require-package 'anaconda-mode) (after-load 'python - (add-hook 'python-mode-hook 'anaconda-mode) - (add-hook 'python-mode-hook 'anaconda-eldoc-mode)) + ;; Anaconda doesn't work on remote servers without some work, so + ;; by default we enable it only when working locally. + (add-hook 'python-mode-hook + (lambda () (unless (file-remote-p default-directory) + (anaconda-mode 1)))) + (add-hook 'anaconda-mode-hook 'anaconda-eldoc-mode)) (after-load 'anaconda-mode (define-key anaconda-mode-map (kbd "M-?") nil)) (when (maybe-require-package 'company-anaconda) From 794b278606d6c14bddab010ce858dfbc2e0eff98 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 7 Oct 2019 21:14:51 +1300 Subject: [PATCH 099/418] Install gnu-elpa-keyring-update --- lisp/init-elpa.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 90b7cc1e7f..d14c1c085c 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -91,6 +91,9 @@ locate PACKAGE." (require-package 'fullframe) (fullframe list-packages quit-window) + +(require-package 'gnu-elpa-keyring-update) + (defun sanityinc/set-tabulated-list-column-width (col-name width) "Set any column with name COL-NAME to the given WIDTH." From 619351042aa846aa4de33c98fe75540fdd0557d7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 25 Oct 2019 16:07:10 +1300 Subject: [PATCH 100/418] Switch from guide-key to which-key --- lisp/init-editing-utils.el | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 1a8f14ce20..355217ea5b 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -333,11 +333,11 @@ With arg N, insert N newlines." (add-hook 'after-init-hook 'hes-mode) -(require-package 'guide-key) -(setq guide-key/guide-key-sequence t) -(add-hook 'after-init-hook 'guide-key-mode) -(after-load 'guide-key - (diminish 'guide-key-mode)) +(require-package 'which-key) +(add-hook 'after-init-hook 'which-key-mode) +(setq-default which-key-idle-delay 1.5) +(after-load 'which-key + (diminish 'which-key-mode)) (defun sanityinc/disable-features-during-macro-call (orig &rest args) From 8a9f53e93a1c128dd3c4a8cbb3222eadb1441047 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 25 Oct 2019 16:16:36 +1300 Subject: [PATCH 101/418] Set counsel defaults after loading counsel, not ivy --- lisp/init-ivy.el | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 9347a7543d..7a102e3490 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -11,10 +11,7 @@ projectile-completion-system 'ivy ivy-magic-tilde nil ivy-dynamic-exhibit-delay-ms 150 - ivy-use-selectable-prompt t - ivy-initial-inputs-alist - '((Man-completion-table . "^") - (woman . "^"))) + ivy-use-selectable-prompt t) ;; IDO-style directory navigation (define-key ivy-minibuffer-map (kbd "RET") #'ivy-alt-done) @@ -37,6 +34,10 @@ (when (maybe-require-package 'counsel) (setq-default counsel-mode-override-describe-bindings t) + (after-load 'counsel + (setq-default ivy-initial-inputs-alist + '((Man-completion-table . "^") + (woman . "^")))) (when (maybe-require-package 'diminish) (after-load 'counsel (diminish 'counsel-mode))) From 9fb3d5235cad5ec4e99e1870c2d09efa2b450dca Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 25 Oct 2019 16:17:31 +1300 Subject: [PATCH 102/418] Never enable company-nix if nix-build is not detected --- lisp/init-nix.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 03eefad822..db7774577f 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -13,9 +13,10 @@ ;; Patch pending https://github.com/travisbhartwell/nix-emacs/pull/46 (after-load 'company-nixos-options (defun company-nixos--in-nix-context-p () - (or (derived-mode-p 'nix-mode 'nix-repl-mode) - (let ((file-name (buffer-file-name (current-buffer)))) - (and file-name (equal "nix" (file-name-extension file-name))))))) + (unless (executable-find "nix-build") + (or (derived-mode-p 'nix-mode 'nix-repl-mode) + (let ((file-name (buffer-file-name (current-buffer)))) + (and file-name (equal "nix" (file-name-extension file-name)))))))) (add-to-list 'company-backends 'company-nixos-options)))) From 7c2f51cbac755dc36cfbedc82b9c998face2a8f5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 25 Oct 2019 16:22:53 +1300 Subject: [PATCH 103/418] Don't enable debug-on-error by default --- init.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.el b/init.el index 7ac75cca9c..da85e1ac03 100644 --- a/init.el +++ b/init.el @@ -6,8 +6,8 @@ ;;; Code: -;; Produce backtraces when errors occur -(setq debug-on-error t) +;; Produce backtraces when errors occur: can be helpful to diagnose startup issues +;;(setq debug-on-error t) (let ((minver "24.4")) (when (version< emacs-version minver) From 9a5a77896a2d7bfc5247094640d2e1dcb2f169c8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 25 Oct 2019 16:23:21 +1300 Subject: [PATCH 104/418] Enable global-eldoc-mode when defined --- init.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/init.el b/init.el index da85e1ac03..277a879797 100644 --- a/init.el +++ b/init.el @@ -148,6 +148,8 @@ (setq-default uptimes-keep-count 200) (add-hook 'after-init-hook (lambda () (require 'uptimes)))) +(when (fboundp 'global-eldoc-mode) + (add-hook 'after-init-hook 'global-eldoc-mode)) ;;---------------------------------------------------------------------------- ;; Allow access from emacsclient From 3a876b5341150ddd24350f0bdcfff1940a7a17a4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 25 Oct 2019 16:25:12 +1300 Subject: [PATCH 105/418] Add early-init.el to ensure good behaviour in Emacs 27 --- early-init.el | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 early-init.el diff --git a/early-init.el b/early-init.el new file mode 100644 index 0000000000..2ad5d5c411 --- /dev/null +++ b/early-init.el @@ -0,0 +1,16 @@ +;;; early-init.el --- Emacs 27+ pre-initialisation config + +;;; Commentary: + +;; Emacs 27+ loads this file before (normally) calling +;; `package-initialize'. We use this file to suppress that automatic +;; behaviour so that startup is consistent across Emacs versions. + +;;; Code: + +(setq package-enable-at-startup nil) + +;; So we can detect this having been loaded +(provide 'early-init) + +;;; early-init.el ends here From eeee6adf11d8a2825ea5613feb8b9b84f3f62928 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 19 Nov 2019 08:48:31 +1300 Subject: [PATCH 106/418] Discontinue use of paredit-everywhere --- lisp/init-paredit.el | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index b9377b0610..c963f806b0 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -41,14 +41,6 @@ (if (memq this-command paredit-minibuffer-commands) (enable-paredit-mode))) -;; ---------------------------------------------------------------------------- -;; Enable some handy paredit functions in all prog modes -;; ---------------------------------------------------------------------------- - -(require-package 'paredit-everywhere) -(after-load 'paredit-everywhere - (define-key paredit-everywhere-mode-map (kbd "M-s") nil)) -(add-hook 'prog-mode-hook 'paredit-everywhere-mode) (provide 'init-paredit) ;;; init-paredit.el ends here From 5d5563ac858734f6bcf5d28183c38eec076c6809 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 19 Nov 2019 14:39:43 +1300 Subject: [PATCH 107/418] Remove haskell-mode bug workaround that has been upstreamed --- lisp/init-haskell.el | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index fc7db49c70..066e0c8e34 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -20,16 +20,6 @@ (add-auto-mode 'haskell-mode "\\.ghci\\'") -;; Workaround for https://github.com/haskell/haskell-mode/issues/1577 -(when (eq 25 emacs-major-version) - (defun sanityinc/inhibit-bracket-inside-comment-or-default (ch) - (or (nth 4 (syntax-ppss)) - (funcall #'electric-pair-default-inhibit ch))) - (add-hook 'haskell-mode-hook - (lambda () - (setq-local electric-pair-inhibit-predicate 'sanityinc/inhibit-bracket-inside-comment-or-default)))) - - ;; Indentation (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) From bfa23953a3396c28c446892b5bc328bcbabdc120 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 19 Nov 2019 14:41:27 +1300 Subject: [PATCH 108/418] haskell-mode is only available in Emacs 25.1 and up --- lisp/init-haskell.el | 53 ++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 066e0c8e34..f30952d3a8 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -2,47 +2,42 @@ ;;; Commentary: ;;; Code: -(require-package 'haskell-mode) +(when (maybe-require-package 'haskell-mode) + (add-hook 'haskell-mode-hook 'subword-mode) + (add-hook 'haskell-cabal-mode 'subword-mode) - -;; Use intero for completion and flycheck - -(add-hook 'haskell-mode-hook 'subword-mode) -(add-hook 'haskell-cabal-mode 'subword-mode) + (when (maybe-require-package 'dante) + (add-hook 'haskell-mode-hook 'dante-mode) + (after-load 'dante + (flycheck-add-next-checker 'haskell-dante + '(warning . haskell-hlint)))) -(when (maybe-require-package 'dante) - (add-hook 'haskell-mode-hook 'dante-mode) - (after-load 'dante - (flycheck-add-next-checker 'haskell-dante - '(warning . haskell-hlint)))) + (add-hook 'haskell-mode-hook 'interactive-haskell-mode) -(add-hook 'haskell-mode-hook 'interactive-haskell-mode) + (add-auto-mode 'haskell-mode "\\.ghci\\'") -(add-auto-mode 'haskell-mode "\\.ghci\\'") + ;; Indentation + (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) -;; Indentation -(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) + ;; Source code helpers - -;; Source code helpers - -(add-hook 'haskell-mode-hook 'haskell-auto-insert-module-template) + (add-hook 'haskell-mode-hook 'haskell-auto-insert-module-template) -(when (maybe-require-package 'reformatter) - (reformatter-define hindent - :program "hindent" - :lighter " Hin") + (when (maybe-require-package 'reformatter) + (reformatter-define hindent + :program "hindent" + :lighter " Hin") - (defalias 'hindent-mode 'hindent-on-save-mode)) + (defalias 'hindent-mode 'hindent-on-save-mode)) -(after-load 'haskell-mode - (define-key haskell-mode-map (kbd "C-c h") 'hoogle) - (define-key haskell-mode-map (kbd "C-o") 'open-line)) + (after-load 'haskell-mode + (define-key haskell-mode-map (kbd "C-c h") 'hoogle) + (define-key haskell-mode-map (kbd "C-o") 'open-line)) -(after-load 'page-break-lines - (push 'haskell-mode page-break-lines-modes)) + (after-load 'page-break-lines + (push 'haskell-mode page-break-lines-modes))) From a503d84b4c009bb3f6c4d678e4e52a5f1dc6b9ee Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 26 Nov 2019 17:08:37 +1300 Subject: [PATCH 109/418] Enable nix config by default --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index 277a879797..403c658d5f 100644 --- a/init.el +++ b/init.el @@ -111,7 +111,7 @@ (require 'init-yaml) (require 'init-docker) (require 'init-terraform) -;;(require 'init-nix) +(require 'init-nix) (maybe-require-package 'nginx-mode) (require 'init-paredit) From 5a13ebd929ec9e273fa9c60676375cd309d587d8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 26 Dec 2019 15:41:40 +1300 Subject: [PATCH 110/418] Streamline code for setting locales See #717 --- lisp/init-locales.el | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/lisp/init-locales.el b/lisp/init-locales.el index 906a717f99..6e35194b64 100644 --- a/lisp/init-locales.el +++ b/lisp/init-locales.el @@ -2,22 +2,25 @@ ;;; Commentary: ;;; Code: -(defun sanityinc/utf8-locale-p (v) - "Return whether locale string V relates to a UTF-8 locale." - (and v (string-match-p "UTF-8" v))) +(defun sanityinc/locale-var-encoding (v) + "Return the encoding portion of the locale string V, or nil if missing." + (when v + (save-match-data + (let ((case-fold-search t)) + (when (string-match "\\.\\([^.]*\\)\\'" v) + (intern (downcase (match-string 1 v)))))))) -(defun sanityinc/locale-is-utf8-p () - "Return t iff the \"locale\" command or environment variables prefer UTF-8." - (or (sanityinc/utf8-locale-p (and (executable-find "locale") (shell-command-to-string "locale"))) - (sanityinc/utf8-locale-p (getenv "LC_ALL")) - (sanityinc/utf8-locale-p (getenv "LC_CTYPE")) - (sanityinc/utf8-locale-p (getenv "LANG")))) +(dolist (varname '("LC_ALL" "LANG" "LC_CTYPE")) + (let ((encoding (sanityinc/locale-var-encoding (getenv varname)))) + (unless (memq encoding '(nil utf8 utf-8)) + (message "Warning: non-UTF8 encoding in environment variable %s may cause interop problems with this Emacs configuration." varname)))) -(when (or window-system (sanityinc/locale-is-utf8-p)) - (set-language-environment 'utf-8) - (setq locale-coding-system 'utf-8) - (set-selection-coding-system (if (eq system-type 'windows-nt) 'utf-16-le 'utf-8)) - (prefer-coding-system 'utf-8)) +(when (fboundp 'set-charset-priority) + (set-charset-priority 'unicode)) +(prefer-coding-system 'utf-8) +(setq locale-coding-system 'utf-8) +(unless (eq system-type 'windows-nt) + (set-selection-coding-system 'utf-8)) (provide 'init-locales) ;;; init-locales.el ends here From 8205955cc53f9908a2644ae622c3ff52f86e5290 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 26 Dec 2019 15:49:03 +1300 Subject: [PATCH 111/418] Use python3 by default Fixes #724 --- lisp/init-python.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-python.el b/lisp/init-python.el index 130a18c974..9cadb34687 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -13,6 +13,8 @@ ("SConscript\\'" . python-mode)) auto-mode-alist)) +(setq python-shell-interpreter "python3") + (require-package 'pip-requirements) (when (maybe-require-package 'anaconda-mode) From b1222b94f411182383a31570fa72b47974bdff05 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 26 Dec 2019 15:50:05 +1300 Subject: [PATCH 112/418] Switch to SVG Travis badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b29f41eaac..1496401402 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/purcell/emacs.d.png?branch=master)](https://travis-ci.org/purcell/emacs.d) +[![Build Status](https://travis-ci.org/purcell/emacs.d.svg?branch=master)](https://travis-ci.org/purcell/emacs.d) Support me # A reasonable Emacs config From f4330bdd5d4c6da916d72ff56a073a16846402f9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 26 Dec 2019 15:58:48 +1300 Subject: [PATCH 113/418] Restore crontab-mode, since it is available again these days --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index 403c658d5f..4cd4a33319 100644 --- a/init.el +++ b/init.el @@ -86,7 +86,7 @@ (require 'init-projectile) (require 'init-compile) -;;(require 'init-crontab) +(require 'init-crontab) (require 'init-textile) (require 'init-markdown) (require 'init-csv) From 00c3707a476fa8f9d77236da9d042aa4cd95c8c6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 26 Dec 2019 15:59:07 +1300 Subject: [PATCH 114/418] Remove reference to nonexistent init-helm --- init.el | 1 - 1 file changed, 1 deletion(-) diff --git a/init.el b/init.el index 4cd4a33319..93e554e6e4 100644 --- a/init.el +++ b/init.el @@ -68,7 +68,6 @@ (require 'init-recentf) (require 'init-smex) (require 'init-ivy) -;;(require 'init-helm) (require 'init-hippie-expand) (require 'init-company) (require 'init-windows) From c2d02c0203ebf018d0ca95b9d81b3a88264d74e0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 26 Dec 2019 16:02:04 +1300 Subject: [PATCH 115/418] Use reformatter to redefine terraform-format-on-save-mode --- lisp/init-terraform.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/init-terraform.el b/lisp/init-terraform.el index 4f1b99558e..86f8ca5442 100644 --- a/lisp/init-terraform.el +++ b/lisp/init-terraform.el @@ -7,7 +7,13 @@ (when (maybe-require-package 'terraform-mode) (when (maybe-require-package 'company-terraform) (after-load 'terraform-mode - (company-terraform-init)))) + (company-terraform-init) + + ;; I find formatters based on "reformatter" to be more reliable + ;; so I redefine `terraform-format-on-save-mode' here. + (when (maybe-require-package 'reformatter) + (reformatter-define terraform-format + :program "terraform" :args '("fmt" "-")))))) (provide 'init-terraform) ;;; init-terraform.el ends here From 28a1fc95bdee151938bc166fb6beca15d8ebe71c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 26 Dec 2019 16:03:32 +1300 Subject: [PATCH 116/418] Simpler formulation of code to suppress menu bar in tty frames --- lisp/init-gui-frames.el | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 130b755065..2a4793a66d 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -35,9 +35,8 @@ (if *is-a-mac* (add-hook 'after-make-frame-functions (lambda (frame) - (set-frame-parameter frame 'menu-bar-lines - (if (display-graphic-p frame) - 1 0)))) + (unless (display-graphic-p frame) + (set-frame-parameter frame 'menu-bar-lines 0)))) (when (fboundp 'menu-bar-mode) (menu-bar-mode -1))) From 33fcaf87ef81cbd5b76670e1c356d091aa1b18ec Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 7 Feb 2020 15:09:02 +1300 Subject: [PATCH 117/418] Provide my own version of ivy-previous-line-or-history See #473 --- lisp/init-ivy.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 7a102e3490..b12d00f86c 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -18,7 +18,14 @@ (dolist (k '("C-j" "C-RET")) (define-key ivy-minibuffer-map (kbd k) #'ivy-immediate-done)) - (define-key ivy-minibuffer-map (kbd "") #'ivy-previous-line-or-history) + (defun sanityinc/ivy-previous-line-or-history () + (interactive) + (let ((orig-index ivy--index)) + (ivy-previous-line) + (when (and (string= ivy-text "") (eq ivy--index orig-index)) + (ivy-previous-history-element 1)))) + + (define-key ivy-minibuffer-map (kbd "") #'sanityinc/ivy-previous-line-or-history) (define-key ivy-occur-mode-map (kbd "C-c C-q") #'ivy-wgrep-change-to-wgrep-mode) From 27df7729797522fc1a4420f3cae14363c1d51c2a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 7 Feb 2020 15:10:46 +1300 Subject: [PATCH 118/418] Add sanityinc/load-this-file for elisp, bound to C-c C-l --- lisp/init-lisp.el | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 4d65ca8904..df4d9069a0 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -53,6 +53,26 @@ +(defun sanityinc/load-this-file () + "Load the current file or buffer. +The current directory is temporarily added to `load-path'. When +there is no current file, eval the current buffer." + (interactive) + (let ((load-path (cons default-directory load-path)) + (file (buffer-file-name))) + (if file + (progn + (save-some-buffers nil (apply-partially 'derived-mode-p 'emacs-lisp-mode)) + (load-file (buffer-file-name)) + (message "Loaded %s" file)) + (eval-buffer) + (message "Evaluated %s" (current-buffer))))) + +(after-load 'lisp-mode + (define-key emacs-lisp-mode-map (kbd "C-c C-l") 'sanityinc/load-this-file)) + + + (defun sanityinc/maybe-set-bundled-elisp-readonly () "If this elisp appears to be part of Emacs, then disallow editing." (when (and (buffer-file-name) From 63f9d8b5b4af55c1fb0db3c861e36cd30cb58a72 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 7 Feb 2020 15:11:35 +1300 Subject: [PATCH 119/418] Don't check signatures when installing keyring update as a fallback --- lisp/init-elpa.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index d14c1c085c..a9f737d0c7 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -92,7 +92,8 @@ locate PACKAGE." (fullframe list-packages quit-window) -(require-package 'gnu-elpa-keyring-update) +(let ((package-check-signature nil)) + (require-package 'gnu-elpa-keyring-update)) (defun sanityinc/set-tabulated-list-column-width (col-name width) From 8d460b6c71762f9a147f7b2f3656e342e319502a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 7 Feb 2020 15:13:43 +1300 Subject: [PATCH 120/418] Use add-node-modules-path in Elm, for tooling installed with npm --- lisp/init-elm.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-elm.el b/lisp/init-elm.el index 8cad9dddad..7df44ed705 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -12,7 +12,9 @@ (maybe-require-package 'elm-test-runner) (when (maybe-require-package 'flycheck-elm) (after-load 'elm-mode - (flycheck-elm-setup)))) + (flycheck-elm-setup))) + (when (maybe-require-package 'add-node-modules-path) + (add-hook 'elm-mode-hook 'add-node-modules-path))) (provide 'init-elm) ;;; init-elm.el ends here From 69ad022d8cbbf9f491edc1be53d8ba42178034c8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 7 Feb 2020 15:14:55 +1300 Subject: [PATCH 121/418] Remove long-obsolete comment --- lisp/init-ruby.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index 45b4a87629..2a2af9a31d 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -107,8 +107,6 @@ ;; Ruby - my convention for heredocs containing SQL ;;---------------------------------------------------------------------------- -;; Needs to run after rinari to avoid clobbering font-lock-keywords? - ;; (require-package 'mmm-mode) ;; (eval-after-load 'mmm-mode ;; '(progn From 60666a53e1d124f1c4b7957338e0ef18e6480626 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 12 Feb 2020 10:25:13 +1300 Subject: [PATCH 122/418] Remove ivy-previous-line-or-history workaround --- lisp/init-ivy.el | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index b12d00f86c..c7bc914864 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -18,14 +18,8 @@ (dolist (k '("C-j" "C-RET")) (define-key ivy-minibuffer-map (kbd k) #'ivy-immediate-done)) - (defun sanityinc/ivy-previous-line-or-history () - (interactive) - (let ((orig-index ivy--index)) - (ivy-previous-line) - (when (and (string= ivy-text "") (eq ivy--index orig-index)) - (ivy-previous-history-element 1)))) - - (define-key ivy-minibuffer-map (kbd "") #'sanityinc/ivy-previous-line-or-history) + (define-key ivy-minibuffer-map (kbd "") #'ivy-previous-line-or-history) + (define-key ivy-minibuffer-map (kbd "") #'ivy-next-line-or-history) (define-key ivy-occur-mode-map (kbd "C-c C-q") #'ivy-wgrep-change-to-wgrep-mode) From 9fc6f78e86922adbf7635661f30664ccf4e2880c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 12 Feb 2020 10:25:30 +1300 Subject: [PATCH 123/418] Add FUNDING.yml --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000000..82925e0318 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +patreon: sanityinc From 82788313002f29eab83c0e42b4007d2894fc5e42 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 22 Feb 2020 17:53:04 +1300 Subject: [PATCH 124/418] Use my new flycheck-relint package --- lisp/init-lisp.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index df4d9069a0..51e2d14f61 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -286,6 +286,14 @@ there is no current file, eval the current buffer." (maybe-require-package 'cl-libify) + +(when (maybe-require-package 'flycheck-relint) + (after-load 'flycheck + (after-load 'elisp-mode + (flycheck-relint-setup)))) + + + (maybe-require-package 'cask-mode) (provide 'init-lisp) From 2a47e59cac7579d7226db915684719d0af9e5f7f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 9 Mar 2020 12:43:20 +1300 Subject: [PATCH 125/418] Drop use of goto-gem package, which appears to have been deleted upstream Fixes #738 --- lisp/init-ruby.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index 2a2af9a31d..df2745ddbb 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -61,9 +61,6 @@ (defalias 'ri 'yari) - -(require-package 'goto-gem) - (require-package 'bundler) From 71db52615191b88b997a795119ae9a3318a4f243 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 9 Mar 2020 15:53:15 +1300 Subject: [PATCH 126/418] Switch CI to Github Actions --- .github/workflows/test.yml | 32 ++++++++++++++++++++++++++++++++ .travis.yml | 27 --------------------------- README.md | 2 +- test-startup.sh | 5 ----- 4 files changed, 33 insertions(+), 33 deletions(-) create mode 100644 .github/workflows/test.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000000..cb3bdebce8 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,32 @@ +name: CI + +on: + pull_request: + push: + paths-ignore: + - '**.md' + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + emacs_version: + - 24.4 + - 24.5 + - 25.1 + - 25.2 + - 25.3 + - 26.1 + - 26.2 + - 26.3 + - snapshot + steps: + - uses: purcell/setup-emacs@master + with: + version: ${{ matrix.emacs_version }} + + - uses: actions/checkout@v1 + - name: Check startup + run: ./test-startup.sh diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e852c108b6..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,27 +0,0 @@ -language: nix - -os: - - linux - - osx - -env: - - EMACS_CI=emacs-24-4 - - EMACS_CI=emacs-24-5 - - EMACS_CI=emacs-25-1 - - EMACS_CI=emacs-25-2 - - EMACS_CI=emacs-25-3 - - EMACS_CI=emacs-26-1 - - EMACS_CI=emacs-26-2 - - EMACS_CI=emacs-26-3 - - EMACS_CI=emacs-snapshot - -install: - - bash <(curl https://raw.githubusercontent.com/purcell/nix-emacs-ci/master/travis-install) - -script: - ./test-startup.sh - -# Local Variables: -# indent-tabs-mode: nil -# coding: utf-8 -# End: diff --git a/README.md b/README.md index 1496401402..f56bfdf4f4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/purcell/emacs.d.svg?branch=master)](https://travis-ci.org/purcell/emacs.d) +[![Build Status](https://github.com/purcell/emacs.d/workflows/CI/badge.svg)](https://github.com/purcell/emacs.d/actions) Support me # A reasonable Emacs config diff --git a/test-startup.sh b/test-startup.sh index 82a2328d89..c5b29d653c 100755 --- a/test-startup.sh +++ b/test-startup.sh @@ -1,9 +1,4 @@ #!/bin/sh -e -if [ -n "$TRAVIS" ]; then - # Make it look like this is ~/.emacs.d (needed for Emacs 24.3, at least) - export HOME=$PWD/.. - ln -s emacs.d ../.emacs.d -fi echo "Attempting startup..." ${EMACS:=emacs} -nw --batch \ --eval '(let ((debug-on-error t) From f4471034d200da69d2befd9789feac8bd382b157 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 19 Mar 2020 13:15:01 +1300 Subject: [PATCH 127/418] Add toml-mode for poetry lockfiles --- lisp/init-python.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-python.el b/lisp/init-python.el index 9cadb34687..2bc5aecc0b 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -32,6 +32,8 @@ (after-load 'python (push 'company-anaconda company-backends))))) +(when (maybe-require-package 'toml-mode) + (add-to-list 'auto-mode-alist '("poetry\\.lock\\'" . toml-mode))) (provide 'init-python) ;;; init-python.el ends here From 7118005deb3641ae83075154751b667229d75fee Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 28 Mar 2020 12:17:13 +1300 Subject: [PATCH 128/418] Require nixpkg-fmt package as part of init-nix.el --- lisp/init-nix.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index db7774577f..d9eeceb0ca 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -20,6 +20,8 @@ (add-to-list 'company-backends 'company-nixos-options)))) +(when (featurep 'nix-mode) + (maybe-require-package 'nixpkgs-fmt)) (provide 'init-nix) From 7417a50e2048b1e4cda80db1d7f4352400be50fd Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 14 Apr 2020 15:27:58 +1200 Subject: [PATCH 129/418] Define a simple reformatter for Python using "black" --- lisp/init-python.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-python.el b/lisp/init-python.el index 2bc5aecc0b..ba983a25ef 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -35,5 +35,8 @@ (when (maybe-require-package 'toml-mode) (add-to-list 'auto-mode-alist '("poetry\\.lock\\'" . toml-mode))) +(when (maybe-require-package 'reformatter) + (reformatter-define black :program "black")) + (provide 'init-python) ;;; init-python.el ends here From a4355ae154875a3fcae7a8323f976b4434f5cc88 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 14 Apr 2020 15:42:49 +1200 Subject: [PATCH 130/418] Don't dim buffers in terminal frames --- lisp/init-themes.el | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lisp/init-themes.el b/lisp/init-themes.el index 513a2fef3e..6b225d0697 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -42,9 +42,16 @@ (when (maybe-require-package 'dimmer) (setq-default dimmer-fraction 0.15) (add-hook 'after-init-hook 'dimmer-mode) - ;; TODO: file upstream as a PR (after-load 'dimmer - (advice-add 'frame-set-background-mode :after (lambda (&rest args) (dimmer-process-all))))) + ;; TODO: file upstream as a PR + (advice-add 'frame-set-background-mode :after (lambda (&rest args) (dimmer-process-all)))) + (after-load 'dimmer + ;; Don't dim in terminal windows. Even with 256 colours it can + ;; lead to poor contrast. Better would be to vary dimmer-fraction + ;; according to frame type. + (defun sanityinc/display-non-graphic-p () + (not (display-graphic-p))) + (push 'sanityinc/display-non-graphic-p dimmer-exclusion-predicates))) (provide 'init-themes) From 27582e4cf723ce4c492bf43dc5dc6dfd37390b67 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 16 Apr 2020 10:24:32 +1200 Subject: [PATCH 131/418] Bootstrap the ELPA keyring update package over http if necessary See #740 --- lisp/init-elpa.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index a9f737d0c7..d76d7ea7cd 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -92,7 +92,10 @@ locate PACKAGE." (fullframe list-packages quit-window) -(let ((package-check-signature nil)) +;; For early Emacs 26 versions, make a special effort to grab the +;; latest ELPA keyring if it's not already installed. +(let ((package-check-signature nil) + (package-archives '(("elpa" . "http://elpa.gnu.org/packages")))) (require-package 'gnu-elpa-keyring-update)) From 79461538804f488f902628bc045b1312e33eb156 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 16 Apr 2020 10:31:18 +1200 Subject: [PATCH 132/418] Add missing slash to URL --- lisp/init-elpa.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index d76d7ea7cd..c36d839954 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -95,7 +95,7 @@ locate PACKAGE." ;; For early Emacs 26 versions, make a special effort to grab the ;; latest ELPA keyring if it's not already installed. (let ((package-check-signature nil) - (package-archives '(("elpa" . "http://elpa.gnu.org/packages")))) + (package-archives '(("elpa" . "http://elpa.gnu.org/packages/")))) (require-package 'gnu-elpa-keyring-update)) From 0b6f5f174ab8203ca85a20c1aed49a9d0f8504c2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 16 Apr 2020 10:47:45 +1200 Subject: [PATCH 133/418] Revert "Bootstrap the ELPA keyring update package over http if necessary" This reverts commit 27582e4cf723ce4c492bf43dc5dc6dfd37390b67. --- lisp/init-elpa.el | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index c36d839954..a9f737d0c7 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -92,10 +92,7 @@ locate PACKAGE." (fullframe list-packages quit-window) -;; For early Emacs 26 versions, make a special effort to grab the -;; latest ELPA keyring if it's not already installed. -(let ((package-check-signature nil) - (package-archives '(("elpa" . "http://elpa.gnu.org/packages/")))) +(let ((package-check-signature nil)) (require-package 'gnu-elpa-keyring-update)) From 06b8931ac43c0a80cf4f581d14d5b70455924756 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 17 Apr 2020 14:00:36 +1200 Subject: [PATCH 134/418] Remove some packages I don't use at all --- init.el | 1 - lisp/init-compile.el | 3 --- lisp/init-darcs.el | 1 - lisp/init-grep.el | 1 - lisp/init-ivy.el | 9 +-------- 5 files changed, 1 insertion(+), 14 deletions(-) diff --git a/init.el b/init.el index 93e554e6e4..c35f242db6 100644 --- a/init.el +++ b/init.el @@ -136,7 +136,6 @@ (require-package 'gnuplot) (require-package 'lua-mode) (require-package 'htmlize) -(require-package 'dsvn) (when *is-a-mac* (require-package 'osx-location)) (unless (eq system-type 'windows-nt) diff --git a/lisp/init-compile.el b/lisp/init-compile.el index d8457b6d9a..7886cd6c9a 100644 --- a/lisp/init-compile.el +++ b/lisp/init-compile.el @@ -63,8 +63,5 @@ (add-hook 'compilation-filter-hook 'sanityinc/colourise-compilation-buffer)) -(maybe-require-package 'cmd-to-echo) - - (provide 'init-compile) ;;; init-compile.el ends here diff --git a/lisp/init-darcs.el b/lisp/init-darcs.el index 551e602cc1..d2d1844287 100644 --- a/lisp/init-darcs.el +++ b/lisp/init-darcs.el @@ -2,7 +2,6 @@ ;;; Commentary: ;;; Code: -(require-package 'darcsum) (require-package 'vc-darcs) diff --git a/lisp/init-grep.el b/lisp/init-grep.el index 96573f1d31..b07164b125 100644 --- a/lisp/init-grep.el +++ b/lisp/init-grep.el @@ -21,7 +21,6 @@ (when (and (executable-find "rg") (maybe-require-package 'rg)) - (maybe-require-package 'deadgrep) (global-set-key (kbd "M-?") 'rg-project)) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index c7bc914864..6ee349e740 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -24,14 +24,7 @@ (define-key ivy-occur-mode-map (kbd "C-c C-q") #'ivy-wgrep-change-to-wgrep-mode) (when (maybe-require-package 'diminish) - (diminish 'ivy-mode))) - - (defun sanityinc/enable-ivy-flx-matching () - "Make `ivy' matching work more like IDO." - (interactive) - (require-package 'flx) - (setq-default ivy-re-builders-alist - '((t . ivy--regex-fuzzy))))) + (diminish 'ivy-mode)))) (when (maybe-require-package 'counsel) (setq-default counsel-mode-override-describe-bindings t) From 5aed7ed605ee05439f23b39453c6c3f778ce69ff Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 17 Apr 2020 14:00:49 +1200 Subject: [PATCH 135/418] Fix comment location --- lisp/init-isearch.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-isearch.el b/lisp/init-isearch.el index e96771f7cc..572cb95749 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -9,11 +9,11 @@ (global-set-key [remap query-replace-regexp] 'anzu-query-replace-regexp) (global-set-key [remap query-replace] 'anzu-query-replace)) -;; Activate occur easily inside isearch (after-load 'isearch ;; DEL during isearch should edit the search string, not jump back to the previous result (define-key isearch-mode-map [remap isearch-delete-char] 'isearch-del-char) + ;; Activate occur easily inside isearch (when (fboundp 'isearch-occur) ;; to match ivy conventions (define-key isearch-mode-map (kbd "C-c C-o") 'isearch-occur))) From b5c4bef663aa1d4da958ca3286f63c922e6bf857 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 24 Apr 2020 10:13:57 +1200 Subject: [PATCH 136/418] Require my new shfmt.el package --- init.el | 1 + 1 file changed, 1 insertion(+) diff --git a/init.el b/init.el index c35f242db6..3ab2172582 100644 --- a/init.el +++ b/init.el @@ -141,6 +141,7 @@ (unless (eq system-type 'windows-nt) (maybe-require-package 'daemons)) (maybe-require-package 'dotenv-mode) +(maybe-require-package 'shfmt) (when (maybe-require-package 'uptimes) (setq-default uptimes-keep-count 200) From 3a470276abdf9d0224032d41e2ecb04a0736d3a5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 4 May 2020 12:10:00 +1200 Subject: [PATCH 137/418] Pick up NIX_SSL_CERT_FILE via exec-path-from-shell --- lisp/init-exec-path.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-exec-path.el b/lisp/init-exec-path.el index 87736bfdaf..0541f2ccbd 100644 --- a/lisp/init-exec-path.el +++ b/lisp/init-exec-path.el @@ -5,7 +5,7 @@ (require-package 'exec-path-from-shell) (after-load 'exec-path-from-shell - (dolist (var '("SSH_AUTH_SOCK" "SSH_AGENT_PID" "GPG_AGENT_INFO" "LANG" "LC_CTYPE")) + (dolist (var '("SSH_AUTH_SOCK" "SSH_AGENT_PID" "GPG_AGENT_INFO" "LANG" "LC_CTYPE" "NIX_SSL_CERT_FILE")) (add-to-list 'exec-path-from-shell-variables var))) From baaff7823d2450b11aa9da4c461648def5ef2f32 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 6 May 2020 10:45:02 +1200 Subject: [PATCH 138/418] Start using ivy-rich --- lisp/init-ivy.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 6ee349e740..492f07515b 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -24,7 +24,14 @@ (define-key ivy-occur-mode-map (kbd "C-c C-q") #'ivy-wgrep-change-to-wgrep-mode) (when (maybe-require-package 'diminish) - (diminish 'ivy-mode)))) + (diminish 'ivy-mode))) + (when (maybe-require-package 'ivy-rich) + (setq ivy-virtual-abbreviate 'abbreviate + ivy-rich-switch-buffer-align-virtual-buffer nil + ivy-rich-path-style 'abbrev) + (after-load 'ivy + (setcdr (assq t ivy-format-functions-alist) #'ivy-format-function-line)) + (add-hook 'ivy-mode-hook (lambda () (ivy-rich-mode ivy-mode))))) (when (maybe-require-package 'counsel) (setq-default counsel-mode-override-describe-bindings t) From 785258a19f2de839994ecd256799a93df0e62e65 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 6 May 2020 10:45:30 +1200 Subject: [PATCH 139/418] Disable lock files and auto-save by default --- lisp/init-editing-utils.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 355217ea5b..a7511a75b9 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -24,6 +24,8 @@ ediff-split-window-function 'split-window-horizontally ediff-window-setup-function 'ediff-setup-windows-plain indent-tabs-mode nil + create-lockfiles nil + auto-save-default nil make-backup-files nil mouse-yank-at-point t save-interprogram-paste-before-kill t From 23ed2cc3ec71edf6d813211fe1206a25780e8237 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 6 May 2020 10:46:51 +1200 Subject: [PATCH 140/418] Add sudo-edit --- init.el | 1 + 1 file changed, 1 insertion(+) diff --git a/init.el b/init.el index 3ab2172582..e61ac9c545 100644 --- a/init.el +++ b/init.el @@ -133,6 +133,7 @@ (require 'init-ledger) ;; Extra packages which don't require any configuration +(require-package 'sudo-edit) (require-package 'gnuplot) (require-package 'lua-mode) (require-package 'htmlize) From 3cdb31e612bec1c52c618d01889f9a4e44b8c30d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 6 May 2020 10:47:29 +1200 Subject: [PATCH 141/418] Exclude elpa package autoloads in recentf --- lisp/init-recentf.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-recentf.el b/lisp/init-recentf.el index d69a22e7b7..983fc89c03 100644 --- a/lisp/init-recentf.el +++ b/lisp/init-recentf.el @@ -5,7 +5,7 @@ (add-hook 'after-init-hook 'recentf-mode) (setq-default recentf-max-saved-items 1000 - recentf-exclude '("/tmp/" "/ssh:")) + recentf-exclude `("/tmp/" "/ssh:" ,(concat package-user-dir "/.*-autoloads\\.el\\'"))) (provide 'init-recentf) From 1c286b8c3d962a343aab8e78092112faf5a61104 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 11 May 2020 16:41:19 +1200 Subject: [PATCH 142/418] Prefer add-to-list over push in most cases, to protect against dupes --- lisp/init-editing-utils.el | 4 ++-- lisp/init-elm.el | 2 +- lisp/init-haskell.el | 2 +- lisp/init-markdown.el | 2 +- lisp/init-php.el | 2 +- lisp/init-python.el | 2 +- lisp/init-ruby.el | 4 ++-- lisp/init-sql.el | 4 ++-- lisp/init-themes.el | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index a7511a75b9..9c2621be96 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -138,7 +138,7 @@ (define-key browse-kill-ring-mode-map (kbd "M-n") 'browse-kill-ring-forward) (define-key browse-kill-ring-mode-map (kbd "M-p") 'browse-kill-ring-previous)) (after-load 'page-break-lines - (push 'browse-kill-ring-mode page-break-lines-modes)) + (add-to-list 'page-break-lines-modes 'browse-kill-ring-mode)) ;;---------------------------------------------------------------------------- @@ -275,7 +275,7 @@ (advice-add 'cua--activate-rectangle :after (lambda (&rest _) (when (bound-and-true-p mode-name) - (push mode-name sanityinc/suspended-modes-during-cua-rect) + (add-to-list 'sanityinc/suspended-modes-during-cua-rect mode-name) (funcall mode-name 0)))))) (sanityinc/suspend-mode-during-cua-rect-selection 'whole-line-or-region-local-mode) diff --git a/lisp/init-elm.el b/lisp/init-elm.el index 7df44ed705..c9a38bd4a6 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -6,7 +6,7 @@ (after-load 'elm-mode (diminish 'elm-indent-mode) (after-load 'company - (push 'company-elm company-backends)) + (add-to-list 'company-backends 'company-elm)) (when (executable-find "elm-format") (setq-default elm-format-on-save t))) (maybe-require-package 'elm-test-runner) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index f30952d3a8..be7706e828 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -37,7 +37,7 @@ (after-load 'page-break-lines - (push 'haskell-mode page-break-lines-modes))) + (add-to-list 'page-break-lines-modes 'haskell-mode))) diff --git a/lisp/init-markdown.el b/lisp/init-markdown.el index 352a56c60c..c2a5e9ccec 100644 --- a/lisp/init-markdown.el +++ b/lisp/init-markdown.el @@ -5,7 +5,7 @@ (when (maybe-require-package 'markdown-mode) (add-auto-mode 'markdown-mode "\\.md\\.html\\'") (after-load 'whitespace-cleanup-mode - (push 'markdown-mode whitespace-cleanup-mode-ignore-modes))) + (add-to-list 'whitespace-cleanup-mode-ignore-modes 'markdown-mode))) (provide 'init-markdown) diff --git a/lisp/init-php.el b/lisp/init-php.el index 71f1a6f48d..e1552f25ef 100644 --- a/lisp/init-php.el +++ b/lisp/init-php.el @@ -7,7 +7,7 @@ (when (maybe-require-package 'company-php) (after-load 'company - (push 'company-ac-php-backend company-backends)))) + (add-to-list 'company-backends 'company-ac-php-backend)))) (provide 'init-php) ;;; init-php.el ends here diff --git a/lisp/init-python.el b/lisp/init-python.el index ba983a25ef..3c936a370a 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -30,7 +30,7 @@ (when (maybe-require-package 'company-anaconda) (after-load 'company (after-load 'python - (push 'company-anaconda company-backends))))) + (add-to-list 'company-backends 'company-anaconda))))) (when (maybe-require-package 'toml-mode) (add-to-list 'auto-mode-alist '("poetry\\.lock\\'" . toml-mode))) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index df2745ddbb..956e6bd293 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -18,7 +18,7 @@ (add-hook 'ruby-mode-hook 'subword-mode) (after-load 'page-break-lines - (push 'ruby-mode page-break-lines-modes)) + (add-to-list 'page-break-lines-modes 'ruby-mode)) (require-package 'rspec-mode) @@ -52,7 +52,7 @@ (add-hook 'ruby-mode-hook 'robe-mode)) (after-load 'robe (after-load 'company - (push 'company-robe company-backends)))) + (add-to-list 'company-backends 'company-robe)))) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index aad5bd1199..9809df6b82 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -4,7 +4,7 @@ (after-load 'sql ;; sql-mode pretty much requires your psql to be uncustomised from stock settings - (push "--no-psqlrc" sql-postgres-options)) + (add-to-list 'sql-postgres-options "--no-psqlrc")) (defun sanityinc/fix-postgres-prompt-regexp () "Work around https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22596. @@ -118,7 +118,7 @@ This command currently blocks the UI, sorry." (after-load 'page-break-lines - (push 'sql-mode page-break-lines-modes)) + (add-to-list 'page-break-lines-modes 'sql-mode)) (provide 'init-sql) ;;; init-sql.el ends here diff --git a/lisp/init-themes.el b/lisp/init-themes.el index 6b225d0697..3ab63b336d 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -51,7 +51,7 @@ ;; according to frame type. (defun sanityinc/display-non-graphic-p () (not (display-graphic-p))) - (push 'sanityinc/display-non-graphic-p dimmer-exclusion-predicates))) + (add-to-list 'dimmer-exclusion-predicates 'sanityinc/display-non-graphic-p))) (provide 'init-themes) From dd5d1826166824ba41f38276d3cd38d395bc1976 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 28 May 2020 08:58:12 +1200 Subject: [PATCH 143/418] Add NIX_PATH to exec-path-from-shell-variables --- lisp/init-exec-path.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-exec-path.el b/lisp/init-exec-path.el index 0541f2ccbd..badb10a56c 100644 --- a/lisp/init-exec-path.el +++ b/lisp/init-exec-path.el @@ -5,7 +5,7 @@ (require-package 'exec-path-from-shell) (after-load 'exec-path-from-shell - (dolist (var '("SSH_AUTH_SOCK" "SSH_AGENT_PID" "GPG_AGENT_INFO" "LANG" "LC_CTYPE" "NIX_SSL_CERT_FILE")) + (dolist (var '("SSH_AUTH_SOCK" "SSH_AGENT_PID" "GPG_AGENT_INFO" "LANG" "LC_CTYPE" "NIX_SSL_CERT_FILE" "NIX_PATH")) (add-to-list 'exec-path-from-shell-variables var))) From eabe4a98a823e926e8f4efc0958dd94e9e5e2781 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 28 May 2020 08:59:04 +1200 Subject: [PATCH 144/418] Add direnv support using envrc.el --- init.el | 2 ++ lisp/init-direnv.el | 12 ++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 lisp/init-direnv.el diff --git a/init.el b/init.el index e61ac9c545..91e8d99b15 100644 --- a/init.el +++ b/init.el @@ -151,6 +151,8 @@ (when (fboundp 'global-eldoc-mode) (add-hook 'after-init-hook 'global-eldoc-mode)) +(require 'init-direnv) + ;;---------------------------------------------------------------------------- ;; Allow access from emacsclient ;;---------------------------------------------------------------------------- diff --git a/lisp/init-direnv.el b/lisp/init-direnv.el new file mode 100644 index 0000000000..b0d3ec4824 --- /dev/null +++ b/lisp/init-direnv.el @@ -0,0 +1,12 @@ +;;; init-direnv.el --- Integrate with direnv -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +(defun sanityinc/maybe-enable-envrc-global-mode () + (when (executable-find "direnv") + (envrc-global-mode))) + +(when (maybe-require-package 'envrc) + (add-hook 'after-init-hook 'sanityinc/maybe-enable-envrc-global-mode t)) + +;;; init-direnv.el ends here From f1feba35b535701ecd57b4c28b2f238695ed014e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 28 May 2020 09:04:16 +1200 Subject: [PATCH 145/418] Fix up init-direnv.el --- lisp/init-direnv.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-direnv.el b/lisp/init-direnv.el index b0d3ec4824..a2e354ddc2 100644 --- a/lisp/init-direnv.el +++ b/lisp/init-direnv.el @@ -7,6 +7,8 @@ (envrc-global-mode))) (when (maybe-require-package 'envrc) - (add-hook 'after-init-hook 'sanityinc/maybe-enable-envrc-global-mode t)) + (add-hook 'after-init-hook 'sanityinc/maybe-enable-envrc-global-mode)) + +(provide 'init-direnv) ;;; init-direnv.el ends here From 7cbaaeab6b43717744171a28593499bbeb98d36a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 29 May 2020 13:54:34 +1200 Subject: [PATCH 146/418] Don't enable global-prettify-symbols-mode by default See #743 --- lisp/init-editing-utils.el | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 9c2621be96..29ec32693c 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -106,11 +106,6 @@ (when (require-package 'rainbow-delimiters) (add-hook 'prog-mode-hook 'rainbow-delimiters-mode)) - - -(when (fboundp 'global-prettify-symbols-mode) - (add-hook 'after-init-hook 'global-prettify-symbols-mode)) - (when (maybe-require-package 'symbol-overlay) (dolist (hook '(prog-mode-hook html-mode-hook yaml-mode-hook conf-mode-hook)) From 9503680c9204c828ad398b4d5c6973c17c08f44e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 29 May 2020 15:00:32 +1200 Subject: [PATCH 147/418] Remove code for downloading ditaa and plantuml, which I don't really use --- lisp/init-org.el | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index b61e1b5922..46c15a91ef 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -54,39 +54,6 @@ ;; Lots of stuff from http://doc.norang.ca/org-mode.html -;; TODO: fail gracefully -(defun sanityinc/grab-ditaa (url jar-name) - "Download URL and extract JAR-NAME as `org-ditaa-jar-path'." - ;; TODO: handle errors - (message "Grabbing %s for org." jar-name) - (let ((zip-temp (make-temp-name "emacs-ditaa"))) - (unwind-protect - (progn - (when (executable-find "unzip") - (url-copy-file url zip-temp) - (shell-command (concat "unzip -p " (shell-quote-argument zip-temp) - " " (shell-quote-argument jar-name) " > " - (shell-quote-argument org-ditaa-jar-path))))) - (when (file-exists-p zip-temp) - (delete-file zip-temp))))) - -(after-load 'ob-ditaa - (unless (and (boundp 'org-ditaa-jar-path) - (file-exists-p org-ditaa-jar-path)) - (let ((jar-name "ditaa0_9.jar") - (url "http://jaist.dl.sourceforge.net/project/ditaa/ditaa/0.9/ditaa0_9.zip")) - (setq org-ditaa-jar-path (expand-file-name jar-name (file-name-directory user-init-file))) - (unless (file-exists-p org-ditaa-jar-path) - (sanityinc/grab-ditaa url jar-name))))) - -(after-load 'ob-plantuml - (let ((jar-name "plantuml.jar") - (url "http://jaist.dl.sourceforge.net/project/plantuml/plantuml.jar")) - (setq org-plantuml-jar-path (expand-file-name jar-name (file-name-directory user-init-file))) - (unless (file-exists-p org-plantuml-jar-path) - (url-copy-file url org-plantuml-jar-path)))) - - ;; Re-align tags when window shape changes (after-load 'org-agenda (add-hook 'org-agenda-mode-hook From 4ae85c50fc6dde6c3c89a205baac7aee3d12d5cb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 2 Jun 2020 16:25:36 +1200 Subject: [PATCH 148/418] Add basic nim support --- init.el | 1 + lisp/init-nim.el | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 lisp/init-nim.el diff --git a/init.el b/init.el index 91e8d99b15..d6e4408f82 100644 --- a/init.el +++ b/init.el @@ -105,6 +105,7 @@ (require 'init-ruby) (require 'init-rails) (require 'init-sql) +(require 'init-nim) (require 'init-rust) (require 'init-toml) (require 'init-yaml) diff --git a/lisp/init-nim.el b/lisp/init-nim.el new file mode 100644 index 0000000000..d3dfff7293 --- /dev/null +++ b/lisp/init-nim.el @@ -0,0 +1,13 @@ +;;; init-nim.el --- Nim programming support -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +(when (maybe-require-package 'nim-mode) + (when (maybe-require-package 'flycheck-nim) + (after-load 'nim-mode + (after-load 'flycheck + (require 'flycheck-nim))))) + +(provide 'init-nim) + +;;; init-nim.el ends here From 282ecd416b6c9b91101e38b699623a468a0177b8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 11 Jun 2020 11:00:12 +1200 Subject: [PATCH 149/418] Add prefix binding of "C-c $" for commands in envrc-mode --- lisp/init-direnv.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-direnv.el b/lisp/init-direnv.el index a2e354ddc2..2733f280d0 100644 --- a/lisp/init-direnv.el +++ b/lisp/init-direnv.el @@ -3,10 +3,13 @@ ;;; Code: (defun sanityinc/maybe-enable-envrc-global-mode () + "Enable `envrc-global-mode' if `direnv' is installed." (when (executable-find "direnv") (envrc-global-mode))) (when (maybe-require-package 'envrc) + (after-load 'envrc + (define-key envrc-mode-map (kbd "C-c $") 'envrc-command-map)) (add-hook 'after-init-hook 'sanityinc/maybe-enable-envrc-global-mode)) (provide 'init-direnv) From 672e02b1761f0a129b3e09bb349b686932e273bb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 11 Jun 2020 15:43:28 +1200 Subject: [PATCH 150/418] Use "C-c e" for envrc-mode prefix --- lisp/init-direnv.el | 2 +- lisp/init-lisp.el | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-direnv.el b/lisp/init-direnv.el index 2733f280d0..c1c0cc5e98 100644 --- a/lisp/init-direnv.el +++ b/lisp/init-direnv.el @@ -9,7 +9,7 @@ (when (maybe-require-package 'envrc) (after-load 'envrc - (define-key envrc-mode-map (kbd "C-c $") 'envrc-command-map)) + (define-key envrc-mode-map (kbd "C-c e") 'envrc-command-map)) (add-hook 'after-init-hook 'sanityinc/maybe-enable-envrc-global-mode)) (provide 'init-direnv) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 51e2d14f61..3cc0e914ce 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -246,7 +246,7 @@ there is no current file, eval the current buffer." (require-package 'macrostep) (after-load 'lisp-mode - (define-key emacs-lisp-mode-map (kbd "C-c e") 'macrostep-expand)) + (define-key emacs-lisp-mode-map (kbd "C-c x") 'macrostep-expand)) From 0340a2d0fb54a58d502691f615e8a80f5b3274ce Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 13 Jun 2020 13:50:23 +1200 Subject: [PATCH 151/418] Reformulate init-nix --- lisp/init-nix.el | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index d9eeceb0ca..4227a233e0 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -2,26 +2,24 @@ ;;; Commentary: ;;; Code: -(maybe-require-package 'nix-mode) -(maybe-require-package 'nix-sandbox) -(maybe-require-package 'nix-buffer) +(when (maybe-require-package 'nix-mode) + (maybe-require-package 'nixpkgs-fmt) + (maybe-require-package 'nix-sandbox) + (maybe-require-package 'nix-buffer) -(when (maybe-require-package 'nixos-options) - (when (maybe-require-package 'company-nixos-options) - (after-load 'company + (when (maybe-require-package 'nixos-options) + (when (maybe-require-package 'company-nixos-options) + (after-load 'company - ;; Patch pending https://github.com/travisbhartwell/nix-emacs/pull/46 - (after-load 'company-nixos-options - (defun company-nixos--in-nix-context-p () - (unless (executable-find "nix-build") - (or (derived-mode-p 'nix-mode 'nix-repl-mode) - (let ((file-name (buffer-file-name (current-buffer)))) - (and file-name (equal "nix" (file-name-extension file-name)))))))) + ;; Patch pending https://github.com/travisbhartwell/nix-emacs/pull/46 + (after-load 'company-nixos-options + (defun company-nixos--in-nix-context-p () + (unless (executable-find "nix-build") + (or (derived-mode-p 'nix-mode 'nix-repl-mode) + (let ((file-name (buffer-file-name (current-buffer)))) + (and file-name (equal "nix" (file-name-extension file-name)))))))) - (add-to-list 'company-backends 'company-nixos-options)))) - -(when (featurep 'nix-mode) - (maybe-require-package 'nixpkgs-fmt)) + (add-to-list 'company-backends 'company-nixos-options))))) (provide 'init-nix) From 95239d59518a3439b6c439e123dc7adce1a0978f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 18 Jun 2020 10:06:29 +1200 Subject: [PATCH 152/418] Don't enable flycheck-relint by default --- lisp/init-lisp.el | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 3cc0e914ce..b1c04196f9 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -287,10 +287,7 @@ there is no current file, eval the current buffer." (maybe-require-package 'cl-libify) -(when (maybe-require-package 'flycheck-relint) - (after-load 'flycheck - (after-load 'elisp-mode - (flycheck-relint-setup)))) +(maybe-require-package 'flycheck-relint) From b14be4b670416a48fd18e1cf0cbed6d7818211ba Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 18 Jun 2020 10:06:04 +1200 Subject: [PATCH 153/418] Don't bother aliasing with-eval-after-load --- lisp/init-clojure-cider.el | 8 ++++---- lisp/init-clojure.el | 2 +- lisp/init-common-lisp.el | 2 +- lisp/init-company.el | 6 +++--- lisp/init-compile.el | 6 +++--- lisp/init-css.el | 2 +- lisp/init-dired.el | 6 +++--- lisp/init-direnv.el | 2 +- lisp/init-editing-utils.el | 16 ++++++++-------- lisp/init-elm.el | 6 +++--- lisp/init-exec-path.el | 2 +- lisp/init-folding.el | 2 +- lisp/init-git.el | 12 ++++++------ lisp/init-grep.el | 2 +- lisp/init-haml.el | 2 +- lisp/init-haskell.el | 6 +++--- lisp/init-html.el | 2 +- lisp/init-ibuffer.el | 4 ++-- lisp/init-isearch.el | 2 +- lisp/init-ivy.el | 12 ++++++------ lisp/init-javascript.el | 12 ++++++------ lisp/init-ledger.el | 8 ++++---- lisp/init-lisp.el | 20 ++++++++++---------- lisp/init-markdown.el | 2 +- lisp/init-misc.el | 6 +++--- lisp/init-nim.el | 4 ++-- lisp/init-nix.el | 4 ++-- lisp/init-org.el | 14 +++++++------- lisp/init-osx-keys.el | 2 +- lisp/init-paredit.el | 2 +- lisp/init-php.el | 2 +- lisp/init-projectile.el | 2 +- lisp/init-purescript.el | 6 +++--- lisp/init-python.el | 8 ++++---- lisp/init-ruby.el | 14 +++++++------- lisp/init-rust.el | 2 +- lisp/init-slime.el | 6 +++--- lisp/init-spelling.el | 2 +- lisp/init-sql.el | 12 ++++++------ lisp/init-terraform.el | 2 +- lisp/init-themes.el | 4 ++-- lisp/init-utils.el | 9 +-------- lisp/init-vc.el | 2 +- lisp/init-whitespace.el | 2 +- 44 files changed, 121 insertions(+), 128 deletions(-) diff --git a/lisp/init-clojure-cider.el b/lisp/init-clojure-cider.el index 80ad9bf0fe..ac244f3662 100644 --- a/lisp/init-clojure-cider.el +++ b/lisp/init-clojure-cider.el @@ -7,14 +7,14 @@ (when (maybe-require-package 'cider) (setq nrepl-popup-stacktraces nil) - (after-load 'cider + (with-eval-after-load 'cider (add-hook 'cider-repl-mode-hook 'subword-mode) (add-hook 'cider-repl-mode-hook 'paredit-mode)) (require-package 'flycheck-clojure) - (after-load 'clojure-mode - (after-load 'cider - (after-load 'flycheck + (with-eval-after-load 'clojure-mode + (with-eval-after-load 'cider + (with-eval-after-load 'flycheck (flycheck-clojure-setup))))) diff --git a/lisp/init-clojure.el b/lisp/init-clojure.el index fdefe6d11f..0961d9979e 100644 --- a/lisp/init-clojure.el +++ b/lisp/init-clojure.el @@ -8,7 +8,7 @@ (require-package 'cljsbuild-mode) (require-package 'elein) - (after-load 'clojure-mode + (with-eval-after-load 'clojure-mode (add-hook 'clojure-mode-hook 'sanityinc/lisp-setup) (add-hook 'clojure-mode-hook 'subword-mode))) diff --git a/lisp/init-common-lisp.el b/lisp/init-common-lisp.el index be9f3cf58e..e5390d4577 100644 --- a/lisp/init-common-lisp.el +++ b/lisp/init-common-lisp.el @@ -9,7 +9,7 @@ (require 'slime) (normal-mode)))) -(after-load 'slime +(with-eval-after-load 'slime (when (executable-find "sbcl") (add-to-list 'slime-lisp-implementations '(sbcl ("sbcl") :coding-system utf-8-unix))) diff --git a/lisp/init-company.el b/lisp/init-company.el index 8530163821..11e453867d 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -10,7 +10,7 @@ (when (maybe-require-package 'company) (add-hook 'after-init-hook 'global-company-mode) - (after-load 'company + (with-eval-after-load 'company (dolist (backend '(company-eclim company-semantic)) (delq backend company-backends)) (diminish 'company-mode) @@ -26,8 +26,8 @@ ;; Suspend page-break-lines-mode while company menu is active ;; (see https://github.com/company-mode/company-mode/issues/416) -(after-load 'company - (after-load 'page-break-lines +(with-eval-after-load 'company + (with-eval-after-load 'page-break-lines (defvar-local sanityinc/page-break-lines-on-p nil) (defun sanityinc/page-break-lines-disable (&rest ignore) diff --git a/lisp/init-compile.el b/lisp/init-compile.el index 7886cd6c9a..ac196b7eed 100644 --- a/lisp/init-compile.el +++ b/lisp/init-compile.el @@ -20,14 +20,14 @@ :buffer buf :category 'compilation)))) -(after-load 'compile +(with-eval-after-load 'compile (add-hook 'compilation-finish-functions 'sanityinc/alert-after-compilation-finish)) (defvar sanityinc/last-compilation-buffer nil "The last buffer in which compilation took place.") -(after-load 'compile +(with-eval-after-load 'compile (defun sanityinc/save-compilation-buffer (&rest _) "Save the compilation buffer to find it later." (setq sanityinc/last-compilation-buffer next-error-last-buffer)) @@ -55,7 +55,7 @@ (advice-add 'shell-command-on-region :after 'sanityinc/shell-command-in-view-mode) -(after-load 'compile +(with-eval-after-load 'compile (require 'ansi-color) (defun sanityinc/colourise-compilation-buffer () (when (eq major-mode 'compilation-mode) diff --git a/lisp/init-css.el b/lisp/init-css.el index 099886f9e6..c04db14003 100644 --- a/lisp/init-css.el +++ b/lisp/init-css.el @@ -10,7 +10,7 @@ ;;; Embedding in html (require-package 'mmm-mode) -(after-load 'mmm-vars +(with-eval-after-load 'mmm-vars (mmm-add-group 'html-css '((css-cdata diff --git a/lisp/init-dired.el b/lisp/init-dired.el index f8f2db9041..a5c4403582 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -9,7 +9,7 @@ (when gls (setq insert-directory-program gls))) (when (maybe-require-package 'diredfl) - (after-load 'dired + (with-eval-after-load 'dired (diredfl-global-mode) (require 'dired-x))) @@ -17,13 +17,13 @@ (define-key ctl-x-map "\C-j" 'dired-jump) (define-key ctl-x-4-map "\C-j" 'dired-jump-other-window) -(after-load 'dired +(with-eval-after-load 'dired (setq dired-recursive-deletes 'top) (define-key dired-mode-map [mouse-2] 'dired-find-file) (define-key dired-mode-map (kbd "C-c C-q") 'wdired-change-to-wdired-mode)) (when (maybe-require-package 'diff-hl) - (after-load 'dired + (with-eval-after-load 'dired (add-hook 'dired-mode-hook 'diff-hl-dired-mode))) (provide 'init-dired) diff --git a/lisp/init-direnv.el b/lisp/init-direnv.el index c1c0cc5e98..7d81dfb748 100644 --- a/lisp/init-direnv.el +++ b/lisp/init-direnv.el @@ -8,7 +8,7 @@ (envrc-global-mode))) (when (maybe-require-package 'envrc) - (after-load 'envrc + (with-eval-after-load 'envrc (define-key envrc-mode-map (kbd "C-c e") 'envrc-command-map)) (add-hook 'after-init-hook 'sanityinc/maybe-enable-envrc-global-mode)) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 29ec32693c..062eb716f3 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -38,7 +38,7 @@ (add-hook 'after-init-hook 'global-auto-revert-mode) (setq global-auto-revert-non-file-buffers t auto-revert-verbose nil) -(after-load 'autorevert +(with-eval-after-load 'autorevert (diminish 'auto-revert-mode)) (add-hook 'after-init-hook 'transient-mark-mode) @@ -84,7 +84,7 @@ -(after-load 'subword +(with-eval-after-load 'subword (diminish 'subword-mode)) @@ -110,7 +110,7 @@ (when (maybe-require-package 'symbol-overlay) (dolist (hook '(prog-mode-hook html-mode-hook yaml-mode-hook conf-mode-hook)) (add-hook hook 'symbol-overlay-mode)) - (after-load 'symbol-overlay + (with-eval-after-load 'symbol-overlay (diminish 'symbol-overlay-mode) (define-key symbol-overlay-mode-map (kbd "M-i") 'symbol-overlay-put) (define-key symbol-overlay-mode-map (kbd "M-I") 'symbol-overlay-remove-all) @@ -128,11 +128,11 @@ (require-package 'browse-kill-ring) (setq browse-kill-ring-separator "\f") (global-set-key (kbd "M-Y") 'browse-kill-ring) -(after-load 'browse-kill-ring +(with-eval-after-load 'browse-kill-ring (define-key browse-kill-ring-mode-map (kbd "C-g") 'browse-kill-ring-quit) (define-key browse-kill-ring-mode-map (kbd "M-n") 'browse-kill-ring-forward) (define-key browse-kill-ring-mode-map (kbd "M-p") 'browse-kill-ring-previous)) -(after-load 'page-break-lines +(with-eval-after-load 'page-break-lines (add-to-list 'page-break-lines-modes 'browse-kill-ring-mode)) @@ -211,7 +211,7 @@ ;;---------------------------------------------------------------------------- (when (maybe-require-package 'page-break-lines) (add-hook 'after-init-hook 'global-page-break-lines-mode) - (after-load 'page-break-lines + (with-eval-after-load 'page-break-lines (diminish 'page-break-lines-mode))) ;;---------------------------------------------------------------------------- @@ -248,7 +248,7 @@ ;;---------------------------------------------------------------------------- (require-package 'whole-line-or-region) (add-hook 'after-init-hook 'whole-line-or-region-global-mode) -(after-load 'whole-line-or-region +(with-eval-after-load 'whole-line-or-region (diminish 'whole-line-or-region-local-mode)) @@ -333,7 +333,7 @@ With arg N, insert N newlines." (require-package 'which-key) (add-hook 'after-init-hook 'which-key-mode) (setq-default which-key-idle-delay 1.5) -(after-load 'which-key +(with-eval-after-load 'which-key (diminish 'which-key-mode)) diff --git a/lisp/init-elm.el b/lisp/init-elm.el index c9a38bd4a6..2251660324 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -3,15 +3,15 @@ ;;; Code: (when (maybe-require-package 'elm-mode) - (after-load 'elm-mode + (with-eval-after-load 'elm-mode (diminish 'elm-indent-mode) - (after-load 'company + (with-eval-after-load 'company (add-to-list 'company-backends 'company-elm)) (when (executable-find "elm-format") (setq-default elm-format-on-save t))) (maybe-require-package 'elm-test-runner) (when (maybe-require-package 'flycheck-elm) - (after-load 'elm-mode + (with-eval-after-load 'elm-mode (flycheck-elm-setup))) (when (maybe-require-package 'add-node-modules-path) (add-hook 'elm-mode-hook 'add-node-modules-path))) diff --git a/lisp/init-exec-path.el b/lisp/init-exec-path.el index badb10a56c..557bfa9d34 100644 --- a/lisp/init-exec-path.el +++ b/lisp/init-exec-path.el @@ -4,7 +4,7 @@ (require-package 'exec-path-from-shell) -(after-load 'exec-path-from-shell +(with-eval-after-load 'exec-path-from-shell (dolist (var '("SSH_AUTH_SOCK" "SSH_AGENT_PID" "GPG_AGENT_INFO" "LANG" "LC_CTYPE" "NIX_SSL_CERT_FILE" "NIX_PATH")) (add-to-list 'exec-path-from-shell-variables var))) diff --git a/lisp/init-folding.el b/lisp/init-folding.el index 289b6bb864..6448f59d77 100644 --- a/lisp/init-folding.el +++ b/lisp/init-folding.el @@ -3,7 +3,7 @@ ;;; Code: (when (maybe-require-package 'origami) - (after-load 'origami + (with-eval-after-load 'origami (define-key origami-mode-map (kbd "C-c f") 'origami-recursively-toggle-node) (define-key origami-mode-map (kbd "C-c F") 'origami-toggle-all-nodes))) diff --git a/lisp/init-git.el b/lisp/init-git.el index 1613467cca..9320a0cb9a 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -33,17 +33,17 @@ (magit-log-buffer-file t)) (vc-print-log))) - (after-load 'vc + (with-eval-after-load 'vc (define-key vc-prefix-map (kbd "l") 'sanityinc/magit-or-vc-log-file))) -(after-load 'magit +(with-eval-after-load 'magit (define-key magit-status-mode-map (kbd "C-M-") 'magit-section-up)) (maybe-require-package 'magit-todos) (require-package 'fullframe) -(after-load 'magit +(with-eval-after-load 'magit (fullframe magit-status magit-mode-quit-window)) (when (maybe-require-package 'git-commit) @@ -51,13 +51,13 @@ (when *is-a-mac* - (after-load 'magit + (with-eval-after-load 'magit (add-hook 'magit-mode-hook (lambda () (local-unset-key [(meta h)]))))) ;; Convenient binding for vc-git-grep -(after-load 'vc +(with-eval-after-load 'vc (define-key vc-prefix-map (kbd "f") 'vc-git-grep)) @@ -72,7 +72,7 @@ ;; (magit-svn-mode))) ;; (add-hook 'magit-status-mode-hook #'sanityinc/maybe-enable-magit-svn-mode)) -(after-load 'compile +(with-eval-after-load 'compile (dolist (defn (list '(git-svn-updated "^\t[A-Z]\t\\(.*\\)$" 1 nil nil 0 1) '(git-svn-needs-update "^\\(.*\\): needs update$" 1 nil nil 2 1))) (add-to-list 'compilation-error-regexp-alist-alist defn) diff --git a/lisp/init-grep.el b/lisp/init-grep.el index b07164b125..7ff1954d63 100644 --- a/lisp/init-grep.el +++ b/lisp/init-grep.el @@ -9,7 +9,7 @@ (setq-default locate-command "mdfind")) (require-package 'wgrep) -(after-load 'grep +(with-eval-after-load 'grep (dolist (key (list (kbd "C-c C-q") (kbd "w"))) (define-key grep-mode-map key 'wgrep-change-to-wgrep-mode))) diff --git a/lisp/init-haml.el b/lisp/init-haml.el index 4f404e8c80..924d2d9e0f 100644 --- a/lisp/init-haml.el +++ b/lisp/init-haml.el @@ -4,7 +4,7 @@ (require-package 'haml-mode) -(after-load 'haml-mode +(with-eval-after-load 'haml-mode (define-key haml-mode-map (kbd "C-o") 'open-line)) (provide 'init-haml) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index be7706e828..51181a516f 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -8,7 +8,7 @@ (when (maybe-require-package 'dante) (add-hook 'haskell-mode-hook 'dante-mode) - (after-load 'dante + (with-eval-after-load 'dante (flycheck-add-next-checker 'haskell-dante '(warning . haskell-hlint)))) @@ -31,12 +31,12 @@ (defalias 'hindent-mode 'hindent-on-save-mode)) - (after-load 'haskell-mode + (with-eval-after-load 'haskell-mode (define-key haskell-mode-map (kbd "C-c h") 'hoogle) (define-key haskell-mode-map (kbd "C-o") 'open-line)) - (after-load 'page-break-lines + (with-eval-after-load 'page-break-lines (add-to-list 'page-break-lines-modes 'haskell-mode))) diff --git a/lisp/init-html.el b/lisp/init-html.el index dca8107ded..518c84379d 100644 --- a/lisp/init-html.el +++ b/lisp/init-html.el @@ -6,7 +6,7 @@ ;;; Code: (require-package 'tagedit) -(after-load 'sgml-mode +(with-eval-after-load 'sgml-mode (tagedit-add-paredit-like-keybindings) (define-key tagedit-mode-map (kbd "M-?") nil) (define-key tagedit-mode-map (kbd "M-s") nil) diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index 9d3465cf10..672dee878f 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -7,7 +7,7 @@ ;;; Code: (require-package 'fullframe) -(after-load 'ibuffer +(with-eval-after-load 'ibuffer (fullframe ibuffer ibuffer-quit)) (require-package 'ibuffer-vc) @@ -22,7 +22,7 @@ (setq-default ibuffer-show-empty-filter-groups nil) -(after-load 'ibuffer +(with-eval-after-load 'ibuffer ;; Use human readable Size column instead of original one (define-ibuffer-column size-h (:name "Size" :inline t) diff --git a/lisp/init-isearch.el b/lisp/init-isearch.el index 572cb95749..b3316df92b 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -9,7 +9,7 @@ (global-set-key [remap query-replace-regexp] 'anzu-query-replace-regexp) (global-set-key [remap query-replace] 'anzu-query-replace)) -(after-load 'isearch +(with-eval-after-load 'isearch ;; DEL during isearch should edit the search string, not jump back to the previous result (define-key isearch-mode-map [remap isearch-delete-char] 'isearch-del-char) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 492f07515b..007cea543c 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -4,7 +4,7 @@ (when (maybe-require-package 'ivy) (add-hook 'after-init-hook 'ivy-mode) - (after-load 'ivy + (with-eval-after-load 'ivy (setq-default ivy-use-virtual-buffers t ivy-virtual-abbreviate 'fullpath ivy-count-format "" @@ -29,18 +29,18 @@ (setq ivy-virtual-abbreviate 'abbreviate ivy-rich-switch-buffer-align-virtual-buffer nil ivy-rich-path-style 'abbrev) - (after-load 'ivy + (with-eval-after-load 'ivy (setcdr (assq t ivy-format-functions-alist) #'ivy-format-function-line)) (add-hook 'ivy-mode-hook (lambda () (ivy-rich-mode ivy-mode))))) (when (maybe-require-package 'counsel) (setq-default counsel-mode-override-describe-bindings t) - (after-load 'counsel + (with-eval-after-load 'counsel (setq-default ivy-initial-inputs-alist '((Man-completion-table . "^") (woman . "^")))) (when (maybe-require-package 'diminish) - (after-load 'counsel + (with-eval-after-load 'counsel (diminish 'counsel-mode))) (add-hook 'after-init-hook 'counsel-mode) @@ -67,13 +67,13 @@ instead." (projectile-project-root) (error default-directory))))) (funcall search-function initial-input dir))))) - (after-load 'ivy + (with-eval-after-load 'ivy (add-to-list 'ivy-height-alist (cons 'counsel-ag 20))) (global-set-key (kbd "M-?") 'sanityinc/counsel-search-project))) (when (maybe-require-package 'swiper) - (after-load 'ivy + (with-eval-after-load 'ivy (define-key ivy-mode-map (kbd "M-s /") 'swiper-thing-at-point))) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 5367c33fad..9a349405ff 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -17,7 +17,7 @@ ;; Change some defaults: customize them to override (setq-default js2-bounce-indent-p nil) -(after-load 'js2-mode +(with-eval-after-load 'js2-mode ;; Disable js2 mode's syntax error highlighting by default... (setq-default js2-mode-show-parse-errors nil js2-mode-show-strict-warnings nil) @@ -44,7 +44,7 @@ (when (and (executable-find "ag") (maybe-require-package 'xref-js2)) - (after-load 'js2-mode + (with-eval-after-load 'js2-mode (define-key js2-mode-map (kbd "M-.") nil) (add-hook 'js2-mode-hook (lambda () (add-hook 'xref-backend-functions #'xref-js2-xref-backend nil t))))) @@ -53,7 +53,7 @@ ;;; Coffeescript -(after-load 'coffee-mode +(with-eval-after-load 'coffee-mode (setq-default coffee-js-mode 'js2-mode coffee-tab-width js-indent-level)) @@ -83,16 +83,16 @@ ;; --------------------------------------------------------------------------- (when (maybe-require-package 'skewer-mode) - (after-load 'skewer-mode + (with-eval-after-load 'skewer-mode (add-hook 'skewer-mode-hook (lambda () (inferior-js-keys-mode -1))))) (when (maybe-require-package 'add-node-modules-path) - (after-load 'typescript-mode + (with-eval-after-load 'typescript-mode (add-hook 'typescript-mode-hook 'add-node-modules-path)) - (after-load 'js2-mode + (with-eval-after-load 'js2-mode (add-hook 'js2-mode-hook 'add-node-modules-path))) diff --git a/lisp/init-ledger.el b/lisp/init-ledger.el index 7d6c5b211b..44727531d7 100644 --- a/lisp/init-ledger.el +++ b/lisp/init-ledger.el @@ -4,18 +4,18 @@ (when (maybe-require-package 'ledger-mode) (when (maybe-require-package 'flycheck-ledger) - (after-load 'flycheck - (after-load 'ledger-mode + (with-eval-after-load 'flycheck + (with-eval-after-load 'ledger-mode (require 'flycheck-ledger)))) - (after-load 'ledger-mode + (with-eval-after-load 'ledger-mode (define-key ledger-mode-map (kbd "RET") 'newline) (define-key ledger-mode-map (kbd "C-o") 'open-line)) (setq ledger-highlight-xact-under-point nil ledger-use-iso-dates nil) - (after-load 'ledger-mode + (with-eval-after-load 'ledger-mode (when (memq window-system '(mac ns)) (exec-path-from-shell-copy-env "LEDGER_FILE"))) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index b1c04196f9..6aec522fcb 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -37,7 +37,7 @@ (global-set-key [remap eval-expression] 'pp-eval-expression) -(after-load 'lisp-mode +(with-eval-after-load 'lisp-mode (define-key emacs-lisp-mode-map (kbd "C-x C-e") 'sanityinc/eval-last-sexp-or-region)) (when (maybe-require-package 'ipretty) @@ -68,7 +68,7 @@ there is no current file, eval the current buffer." (eval-buffer) (message "Evaluated %s" (current-buffer))))) -(after-load 'lisp-mode +(with-eval-after-load 'lisp-mode (define-key emacs-lisp-mode-map (kbd "C-c C-l") 'sanityinc/load-this-file)) @@ -106,9 +106,9 @@ there is no current file, eval the current buffer." (funcall sanityinc/repl-switch-function sanityinc/repl-original-buffer) (error "No original buffer"))) -(after-load 'elisp-mode +(with-eval-after-load 'elisp-mode (define-key emacs-lisp-mode-map (kbd "C-c C-z") 'sanityinc/switch-to-ielm)) -(after-load 'ielm +(with-eval-after-load 'ielm (define-key ielm-map (kbd "C-c C-z") 'sanityinc/repl-switch-back)) ;; ---------------------------------------------------------------------------- @@ -204,7 +204,7 @@ there is no current file, eval the current buffer." (add-to-list 'auto-mode-alist '("archive-contents\\'" . emacs-lisp-mode)) (require-package 'cl-lib-highlight) -(after-load 'lisp-mode +(with-eval-after-load 'lisp-mode (cl-lib-highlight-initialize)) ;; ---------------------------------------------------------------------------- @@ -245,7 +245,7 @@ there is no current file, eval the current buffer." (require-package 'macrostep) -(after-load 'lisp-mode +(with-eval-after-load 'lisp-mode (define-key emacs-lisp-mode-map (kbd "C-c x") 'macrostep-expand)) @@ -262,7 +262,7 @@ there is no current file, eval the current buffer." (rainbow-mode))) (add-hook 'emacs-lisp-mode-hook 'sanityinc/enable-rainbow-mode-if-theme) (add-hook 'help-mode-hook 'rainbow-mode) - (after-load 'rainbow-mode + (with-eval-after-load 'rainbow-mode (diminish 'rainbow-mode))) @@ -273,14 +273,14 @@ there is no current file, eval the current buffer." (when (maybe-require-package 'flycheck) (require-package 'flycheck-package) - (after-load 'flycheck - (after-load 'elisp-mode + (with-eval-after-load 'flycheck + (with-eval-after-load 'elisp-mode (flycheck-package-setup)))) ;; ERT -(after-load 'ert +(with-eval-after-load 'ert (define-key ert-results-mode-map (kbd "g") 'ert-results-rerun-all-tests)) diff --git a/lisp/init-markdown.el b/lisp/init-markdown.el index c2a5e9ccec..aa476cbb80 100644 --- a/lisp/init-markdown.el +++ b/lisp/init-markdown.el @@ -4,7 +4,7 @@ (when (maybe-require-package 'markdown-mode) (add-auto-mode 'markdown-mode "\\.md\\.html\\'") - (after-load 'whitespace-cleanup-mode + (with-eval-after-load 'whitespace-cleanup-mode (add-to-list 'whitespace-cleanup-mode-ignore-modes 'markdown-mode))) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index 5640c84ea1..ed7cca05ea 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -26,12 +26,12 @@ (when (maybe-require-package 'info-colors) - (after-load 'info + (with-eval-after-load 'info (add-hook 'Info-selection-hook 'info-colors-fontify-node))) ;; Handle the prompt pattern for the 1password command-line interface -(after-load 'comint +(with-eval-after-load 'comint (setq comint-password-prompt-regexp (concat comint-password-prompt-regexp @@ -42,7 +42,7 @@ (when (maybe-require-package 'regex-tool) (setq-default regex-tool-backend 'perl)) -(after-load 're-builder +(with-eval-after-load 're-builder ;; Support a slightly more idiomatic quit binding in re-builder (define-key reb-mode-map (kbd "C-c C-k") 'reb-quit)) diff --git a/lisp/init-nim.el b/lisp/init-nim.el index d3dfff7293..667db1ffa7 100644 --- a/lisp/init-nim.el +++ b/lisp/init-nim.el @@ -4,8 +4,8 @@ (when (maybe-require-package 'nim-mode) (when (maybe-require-package 'flycheck-nim) - (after-load 'nim-mode - (after-load 'flycheck + (with-eval-after-load 'nim-mode + (with-eval-after-load 'flycheck (require 'flycheck-nim))))) (provide 'init-nim) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 4227a233e0..652f57506f 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -9,10 +9,10 @@ (when (maybe-require-package 'nixos-options) (when (maybe-require-package 'company-nixos-options) - (after-load 'company + (with-eval-after-load 'company ;; Patch pending https://github.com/travisbhartwell/nix-emacs/pull/46 - (after-load 'company-nixos-options + (with-eval-after-load 'company-nixos-options (defun company-nixos--in-nix-context-p () (unless (executable-find "nix-build") (or (derived-mode-p 'nix-mode 'nix-repl-mode) diff --git a/lisp/init-org.el b/lisp/init-org.el index 46c15a91ef..e3dbe280af 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -55,7 +55,7 @@ ;; Lots of stuff from http://doc.norang.ca/org-mode.html ;; Re-align tags when window shape changes -(after-load 'org-agenda +(with-eval-after-load 'org-agenda (add-hook 'org-agenda-mode-hook (lambda () (add-hook 'window-configuration-change-hook 'org-agenda-align-tags nil t)))) @@ -126,7 +126,7 @@ typical word processor." ;; Targets include this file and any file contributing to the agenda - up to 5 levels deep (setq org-refile-targets '((nil :maxlevel . 5) (org-agenda-files :maxlevel . 5))) -(after-load 'org-agenda +(with-eval-after-load 'org-agenda (add-to-list 'org-agenda-after-show-hook 'org-show-entry)) (advice-add 'org-refile :after (lambda (&rest _) (org-save-all-org-buffers))) @@ -267,7 +267,7 @@ typical word processor." ;;; Org clock ;; Save the running clock and all clock history when exiting Emacs, load it on startup -(after-load 'org +(with-eval-after-load 'org (org-clock-persistence-insinuate)) (setq org-clock-persist t) (setq org-clock-in-resume t) @@ -296,7 +296,7 @@ typical word processor." (add-hook 'org-clock-out-hook 'sanityinc/hide-org-clock-from-header-line) (add-hook 'org-clock-cancel-hook 'sanityinc/hide-org-clock-from-header-line) -(after-load 'org-clock +(with-eval-after-load 'org-clock (define-key org-clock-mode-line-map [header-line mouse-2] 'org-clock-goto) (define-key org-clock-mode-line-map [header-line mouse-1] 'org-clock-menu)) @@ -328,7 +328,7 @@ typical word processor." (require-package 'org-pomodoro) (setq org-pomodoro-keep-killed-pomodoro-time t) -(after-load 'org-agenda +(with-eval-after-load 'org-agenda (define-key org-agenda-mode-map (kbd "P") 'org-pomodoro)) @@ -353,13 +353,13 @@ typical word processor." ;; (insert (match-string 0)))))) -(after-load 'org +(with-eval-after-load 'org (define-key org-mode-map (kbd "C-M-") 'org-up-element) (when *is-a-mac* (define-key org-mode-map (kbd "M-h") nil) (define-key org-mode-map (kbd "C-c g") 'org-mac-grab-link))) -(after-load 'org +(with-eval-after-load 'org (org-babel-do-load-languages 'org-babel-load-languages `((R . t) diff --git a/lisp/init-osx-keys.el b/lisp/init-osx-keys.el index f049155946..e6bec59b19 100644 --- a/lisp/init-osx-keys.el +++ b/lisp/init-osx-keys.el @@ -15,7 +15,7 @@ (global-set-key (kbd "M-`") 'ns-next-frame) (global-set-key (kbd "M-h") 'ns-do-hide-emacs) (global-set-key (kbd "M-˙") 'ns-do-hide-others) - (after-load 'nxml-mode + (with-eval-after-load 'nxml-mode (define-key nxml-mode-map (kbd "M-h") nil)) (global-set-key (kbd "M-ˍ") 'ns-do-hide-others) ;; what describe-key reports for cmd-option-h ) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index c963f806b0..da228851c3 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -11,7 +11,7 @@ (add-hook 'paredit-mode-hook 'maybe-map-paredit-newline) -(after-load 'paredit +(with-eval-after-load 'paredit (diminish 'paredit-mode " Par") ;; Suppress certain paredit keybindings to avoid clashes, including ;; my global binding of M-? diff --git a/lisp/init-php.el b/lisp/init-php.el index e1552f25ef..e45dfd62a8 100644 --- a/lisp/init-php.el +++ b/lisp/init-php.el @@ -6,7 +6,7 @@ (maybe-require-package 'smarty-mode) (when (maybe-require-package 'company-php) - (after-load 'company + (with-eval-after-load 'company (add-to-list 'company-backends 'company-ac-php-backend)))) (provide 'init-php) diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index 47c402bf18..bcfbced28c 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -8,7 +8,7 @@ ;; Shorter modeline (setq-default projectile-mode-line-prefix " Proj") - (after-load 'projectile + (with-eval-after-load 'projectile (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)) (maybe-require-package 'ibuffer-projectile)) diff --git a/lisp/init-purescript.el b/lisp/init-purescript.el index 8e67747c3a..f69c57b82b 100644 --- a/lisp/init-purescript.el +++ b/lisp/init-purescript.el @@ -11,7 +11,7 @@ (add-hook 'purescript-mode-hook (apply-partially 'prettify-symbols-mode -1)) - (after-load 'purescript-mode + (with-eval-after-load 'purescript-mode (define-key purescript-mode-map (kbd "C-o") 'open-line)) (when (maybe-require-package 'reformatter) @@ -56,9 +56,9 @@ corresponding .purs file is open." (add-hook 'purescript-mode-hook 'inferior-psci-mode)) (when (maybe-require-package 'add-node-modules-path) - (after-load 'purescript-mode + (with-eval-after-load 'purescript-mode (add-hook 'purescript-mode-hook 'add-node-modules-path)) - (after-load 'psci + (with-eval-after-load 'psci (advice-add 'psci :around (lambda (oldfun &rest args) (let ((psci/purs-path (or (executable-find "purs") psci/purs-path))) diff --git a/lisp/init-python.el b/lisp/init-python.el index 3c936a370a..30942c2b6b 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -18,18 +18,18 @@ (require-package 'pip-requirements) (when (maybe-require-package 'anaconda-mode) - (after-load 'python + (with-eval-after-load 'python ;; Anaconda doesn't work on remote servers without some work, so ;; by default we enable it only when working locally. (add-hook 'python-mode-hook (lambda () (unless (file-remote-p default-directory) (anaconda-mode 1)))) (add-hook 'anaconda-mode-hook 'anaconda-eldoc-mode)) - (after-load 'anaconda-mode + (with-eval-after-load 'anaconda-mode (define-key anaconda-mode-map (kbd "M-?") nil)) (when (maybe-require-package 'company-anaconda) - (after-load 'company - (after-load 'python + (with-eval-after-load 'company + (with-eval-after-load 'python (add-to-list 'company-backends 'company-anaconda))))) (when (maybe-require-package 'toml-mode) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index 956e6bd293..00a189ea8c 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -17,7 +17,7 @@ (add-hook 'ruby-mode-hook 'subword-mode) -(after-load 'page-break-lines +(with-eval-after-load 'page-break-lines (add-to-list 'page-break-lines-modes 'ruby-mode)) (require-package 'rspec-mode) @@ -37,21 +37,21 @@ ;;; Ruby compilation (require-package 'ruby-compilation) -(after-load 'ruby-mode +(with-eval-after-load 'ruby-mode (define-key ruby-mode-map [S-f7] 'ruby-compilation-this-buffer) (define-key ruby-mode-map [f7] 'ruby-compilation-this-test)) -(after-load 'ruby-compilation +(with-eval-after-load 'ruby-compilation (defalias 'rake 'ruby-compilation-rake)) ;;; Robe (when (maybe-require-package 'robe) - (after-load 'ruby-mode + (with-eval-after-load 'ruby-mode (add-hook 'ruby-mode-hook 'robe-mode)) - (after-load 'robe - (after-load 'company + (with-eval-after-load 'robe + (with-eval-after-load 'company (add-to-list 'company-backends 'company-robe)))) @@ -67,7 +67,7 @@ (when (maybe-require-package 'yard-mode) (add-hook 'ruby-mode-hook 'yard-mode) - (after-load 'yard-mode + (with-eval-after-load 'yard-mode (diminish 'yard-mode))) diff --git a/lisp/init-rust.el b/lisp/init-rust.el index 23dbf2128f..d3ead5b5ff 100644 --- a/lisp/init-rust.el +++ b/lisp/init-rust.el @@ -9,7 +9,7 @@ (add-hook 'racer-mode-hook #'company-mode))) (when (maybe-require-package 'flycheck-rust) - (after-load 'rust-mode + (with-eval-after-load 'rust-mode (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))) (provide 'init-rust) diff --git a/lisp/init-slime.el b/lisp/init-slime.el index 98d7c2c7cf..36967404ff 100644 --- a/lisp/init-slime.el +++ b/lisp/init-slime.el @@ -19,7 +19,7 @@ "Mode setup function for slime lisp buffers." (set-up-slime-hippie-expand)) -(after-load 'slime +(with-eval-after-load 'slime (setq slime-protocol-version 'ignore) (setq slime-net-coding-system 'utf-8-unix) (let ((extras (when (require 'slime-company nil t) @@ -37,9 +37,9 @@ (sanityinc/lisp-setup) (set-up-slime-hippie-expand)) -(after-load 'slime-repl +(with-eval-after-load 'slime-repl ;; Stop SLIME's REPL from grabbing DEL, which is annoying when backspacing over a '(' - (after-load 'paredit + (with-eval-after-load 'paredit (define-key slime-repl-mode-map (read-kbd-macro paredit-backward-delete-key) nil)) ;; Bind TAB to `indent-for-tab-command', as in regular Slime buffers. diff --git a/lisp/init-spelling.el b/lisp/init-spelling.el index 3d40bf29da..6e11ad0232 100644 --- a/lisp/init-spelling.el +++ b/lisp/init-spelling.el @@ -8,7 +8,7 @@ ;; Add spell-checking in comments for all programming language modes (add-hook 'prog-mode-hook 'flyspell-prog-mode) - (after-load 'flyspell + (with-eval-after-load 'flyspell (define-key flyspell-mode-map (kbd "C-;") nil) (add-to-list 'flyspell-prog-text-faces 'nxml-text-face))) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 9809df6b82..3844c8b42f 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -2,7 +2,7 @@ ;;; Commentary: ;;; Code: -(after-load 'sql +(with-eval-after-load 'sql ;; sql-mode pretty much requires your psql to be uncustomised from stock settings (add-to-list 'sql-postgres-options "--no-psqlrc")) @@ -26,7 +26,7 @@ Fix for the above hasn't been released as of Emacs 25.2." (when sql-buffer (sanityinc/pop-to-sqli-buffer)))) -(after-load 'sql +(with-eval-after-load 'sql (define-key sql-mode-map (kbd "C-c C-z") 'sanityinc/pop-to-sqli-buffer) (when (package-installed-p 'dash-at-point) (defun sanityinc/maybe-set-dash-db-docset (&rest _) @@ -48,7 +48,7 @@ Fix for the above hasn't been released as of Emacs 25.2." (require-package 'sqlformat) -(after-load 'sql +(with-eval-after-load 'sql (define-key sql-mode-map (kbd "C-c C-f") 'sqlformat)) ;; Package ideas: @@ -112,12 +112,12 @@ This command currently blocks the UI, sorry." ;; Submitted upstream as https://github.com/stanaka/dash-at-point/pull/28 -(after-load 'sql - (after-load 'dash-at-point +(with-eval-after-load 'sql + (with-eval-after-load 'dash-at-point (add-to-list 'dash-at-point-mode-alist '(sql-mode . "psql,mysql,sqlite,postgis")))) -(after-load 'page-break-lines +(with-eval-after-load 'page-break-lines (add-to-list 'page-break-lines-modes 'sql-mode)) (provide 'init-sql) diff --git a/lisp/init-terraform.el b/lisp/init-terraform.el index 86f8ca5442..f24782ce59 100644 --- a/lisp/init-terraform.el +++ b/lisp/init-terraform.el @@ -6,7 +6,7 @@ (when (maybe-require-package 'terraform-mode) (when (maybe-require-package 'company-terraform) - (after-load 'terraform-mode + (with-eval-after-load 'terraform-mode (company-terraform-init) ;; I find formatters based on "reformatter" to be more reliable diff --git a/lisp/init-themes.el b/lisp/init-themes.el index 3ab63b336d..1ea7f11be6 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -42,10 +42,10 @@ (when (maybe-require-package 'dimmer) (setq-default dimmer-fraction 0.15) (add-hook 'after-init-hook 'dimmer-mode) - (after-load 'dimmer + (with-eval-after-load 'dimmer ;; TODO: file upstream as a PR (advice-add 'frame-set-background-mode :after (lambda (&rest args) (dimmer-process-all)))) - (after-load 'dimmer + (with-eval-after-load 'dimmer ;; Don't dim in terminal windows. Even with 256 colours it can ;; lead to poor contrast. Better would be to vary dimmer-fraction ;; according to frame type. diff --git a/lisp/init-utils.el b/lisp/init-utils.el index cc3f5d06b6..08584419ae 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -2,14 +2,7 @@ ;;; Commentary: ;;; Code: -(if (fboundp 'with-eval-after-load) - (defalias 'after-load 'with-eval-after-load) - (defmacro after-load (feature &rest body) - "After FEATURE is loaded, evaluate BODY." - (declare (indent defun)) - `(eval-after-load ,feature - '(progn ,@body)))) - +(define-obsolete-function-alias 'after-load 'with-eval-after-load "") ;;---------------------------------------------------------------------------- ;; Handier way to add modes to auto-mode-alist diff --git a/lisp/init-vc.el b/lisp/init-vc.el index 1183924070..09b2084a34 100644 --- a/lisp/init-vc.el +++ b/lisp/init-vc.el @@ -10,7 +10,7 @@ (add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh) (add-hook 'after-init-hook 'global-diff-hl-mode) - (after-load 'diff-hl + (with-eval-after-load 'diff-hl (define-key diff-hl-mode-map (kbd " ") 'diff-hl-diff-goto-hunk))) diff --git a/lisp/init-whitespace.el b/lisp/init-whitespace.el index 3342a14dc7..b208215500 100644 --- a/lisp/init-whitespace.el +++ b/lisp/init-whitespace.el @@ -17,7 +17,7 @@ (require-package 'whitespace-cleanup-mode) (add-hook 'after-init-hook 'global-whitespace-cleanup-mode) -(after-load 'whitespace-cleanup-mode +(with-eval-after-load 'whitespace-cleanup-mode (diminish 'whitespace-cleanup-mode)) (global-set-key [remap just-one-space] 'cycle-spacing) From 48ae5264c6042eeb1e8abc9608536ffad052848e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 18 Jun 2020 11:24:48 +1200 Subject: [PATCH 154/418] Use rg (if available) to list files in generic projectile roots --- lisp/init-projectile.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index bcfbced28c..df6928f1b0 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -8,6 +8,9 @@ ;; Shorter modeline (setq-default projectile-mode-line-prefix " Proj") + (when (executable-find "rg") + (setq-default projectile-generic-command "rg --files --hidden")) + (with-eval-after-load 'projectile (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)) From e9b1486d04efc6413690e258d2720bf67df31dcf Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 20 Jul 2020 11:25:02 +1200 Subject: [PATCH 155/418] Add windswap --- lisp/init-windows.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-windows.el b/lisp/init-windows.el index f73e210ca7..8c1a6b4fab 100644 --- a/lisp/init-windows.el +++ b/lisp/init-windows.el @@ -103,7 +103,9 @@ Call a second time to restore the original window configuration." (unless (memq window-system '(nt w32)) - (windmove-default-keybindings 'control)) + (require-package 'windswap) + (add-hook 'after-init-hook (apply-partially 'windmove-default-keybindings 'control)) + (add-hook 'after-init-hook (apply-partially 'windswap-default-keybindings 'shift 'control))) (provide 'init-windows) From a54ea3fdfb2eb8fcc8e606ea5f6168c2476e95b3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 20 Jul 2020 11:25:58 +1200 Subject: [PATCH 156/418] Define a simple ormolu reformatter --- lisp/init-haskell.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 51181a516f..a128b46da5 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -29,7 +29,11 @@ :program "hindent" :lighter " Hin") - (defalias 'hindent-mode 'hindent-on-save-mode)) + (defalias 'hindent-mode 'hindent-on-save-mode) + + (reformatter-define ormolu + :program "ormolu" + :lighter " Orm")) (with-eval-after-load 'haskell-mode (define-key haskell-mode-map (kbd "C-c h") 'hoogle) From 45a5363b11667ea6f328a7090e498b66ae818bbf Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 21 Jul 2020 09:48:07 +1200 Subject: [PATCH 157/418] Bind C-d and M-. to useful things in company-active-map --- lisp/init-company.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-company.el b/lisp/init-company.el index 11e453867d..b48d60ae18 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -18,6 +18,8 @@ (define-key company-active-map (kbd "M-/") 'company-other-backend) (define-key company-active-map (kbd "C-n") 'company-select-next) (define-key company-active-map (kbd "C-p") 'company-select-previous) + (define-key company-active-map (kbd "C-d") 'company-show-doc-buffer) + (define-key company-active-map (kbd "M-.") 'company-show-location) (setq-default company-dabbrev-other-buffers 'all company-tooltip-align-annotations t)) (global-set-key (kbd "M-C-/") 'company-complete) From d66934fe17b0aa5995007d220f8c5e5b8de5b9a8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 21 Jul 2020 09:48:55 +1200 Subject: [PATCH 158/418] Improve slime-company setup --- lisp/init-slime.el | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lisp/init-slime.el b/lisp/init-slime.el index 36967404ff..85c3fd4917 100644 --- a/lisp/init-slime.el +++ b/lisp/init-slime.el @@ -10,7 +10,11 @@ (file-expand-wildcards (concat user-emacs-directory "elpa/slime-2*/contrib/*.elc"))) (require-package 'hippie-expand-slime) -(maybe-require-package 'slime-company) +(when (maybe-require-package 'slime-company) + (setq slime-company-completion 'fuzzy + slime-company-after-completion 'slime-company-just-one-space) + (with-eval-after-load 'slime-company + (add-to-list 'company-backends 'company-slime))) ;;; Lisp buffers @@ -22,11 +26,10 @@ (with-eval-after-load 'slime (setq slime-protocol-version 'ignore) (setq slime-net-coding-system 'utf-8-unix) - (let ((extras (when (require 'slime-company nil t) - '(slime-company)))) - (slime-setup (append '(slime-repl slime-fuzzy) extras))) - (setq slime-complete-symbol*-fancy t) - (setq slime-complete-symbol-function 'slime-fuzzy-complete-symbol) + (let ((features '(slime-fancy slime-repl slime-fuzzy))) + (when (require 'slime-company nil t) + (push 'slime-company features)) + (slime-setup features)) (add-hook 'slime-mode-hook 'sanityinc/slime-setup)) From 8b67b5c78615ed7e5f8f935852f6278669c3cf6e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 21 Jul 2020 09:49:53 +1200 Subject: [PATCH 159/418] Ignore lsp session files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b7bb7c81e9..40243bbe00 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,4 @@ site-lisp/package/ .cache/ /forge-database.sqlite /transient +/.lsp-session-v1 From 83458dab3ae9f25712334c6103774401f9f469fe Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 24 Jul 2020 09:46:59 +1200 Subject: [PATCH 160/418] Remove broken code for turning off menus on MacOS Fixes #744 --- lisp/init-gui-frames.el | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 2a4793a66d..1d18204725 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -29,16 +29,7 @@ (when (fboundp 'set-scroll-bar-mode) (set-scroll-bar-mode nil)) -;; I generally prefer to hide the menu bar, but doing this on OS X -;; simply makes it update unreliably in GUI frames, so we make an -;; exception. -(if *is-a-mac* - (add-hook 'after-make-frame-functions - (lambda (frame) - (unless (display-graphic-p frame) - (set-frame-parameter frame 'menu-bar-lines 0)))) - (when (fboundp 'menu-bar-mode) - (menu-bar-mode -1))) +(menu-bar-mode -1) (let ((no-border '(internal-border-width . 0))) (add-to-list 'default-frame-alist no-border) From 182676bef4370f4337aa6a0c3005e5fb06900583 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 30 Jul 2020 12:43:08 +1200 Subject: [PATCH 161/418] Require Emacs 24.5 --- .github/workflows/test.yml | 1 - README.md | 2 +- init.el | 2 +- lisp/init-editing-utils.el | 3 +-- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cb3bdebce8..dbb184cee5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,6 @@ jobs: matrix: os: [ubuntu-latest, macos-latest] emacs_version: - - 24.4 - 24.5 - 25.1 - 25.2 diff --git a/README.md b/README.md index f56bfdf4f4..bdd7e8f0c1 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ other languages. ## Supported Emacs versions -The config should run on Emacs 24.4 or greater and is designed to +The config should run on Emacs 24.5 or greater and is designed to degrade smoothly - see the Travis build - but note that much newer versions are required for an increasing number of key packages, so to get full functionality you should use the latest Emacs version diff --git a/init.el b/init.el index d6e4408f82..4c4258ca2b 100644 --- a/init.el +++ b/init.el @@ -9,7 +9,7 @@ ;; Produce backtraces when errors occur: can be helpful to diagnose startup issues ;;(setq debug-on-error t) -(let ((minver "24.4")) +(let ((minver "24.5")) (when (version< emacs-version minver) (error "Your Emacs is too old -- this config requires v%s or higher" minver))) (when (version< emacs-version "25.1") diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 062eb716f3..dd2755d255 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -6,8 +6,7 @@ (when (fboundp 'electric-pair-mode) (add-hook 'after-init-hook 'electric-pair-mode)) -(when (eval-when-compile (version< "24.4" emacs-version)) - (add-hook 'after-init-hook 'electric-indent-mode)) +(add-hook 'after-init-hook 'electric-indent-mode) (maybe-require-package 'list-unicode-display) From 5783e05e682fcef3ee113cb67e33286650e6812e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 1 Aug 2020 14:25:02 +1200 Subject: [PATCH 162/418] Try using M-j for join-line, to break the M-^ habit --- lisp/init-editing-utils.el | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index dd2755d255..5db3028f48 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -307,9 +307,12 @@ With arg N, insert N newlines." (global-set-key (kbd "C-o") 'sanityinc/open-line-with-reindent) -;;---------------------------------------------------------------------------- + +;; M-^ is inconvenient, so also bind M-j +(global-set-key (kbd "M-j") 'join-line) + + ;; Random line sorting -;;---------------------------------------------------------------------------- (defun sanityinc/sort-lines-random (beg end) "Sort lines in region from BEG to END randomly." (interactive "r") From b16420cee52915764299bf855589fa404d55237e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 1 Aug 2020 14:26:07 +1200 Subject: [PATCH 163/418] Tidy up slime config --- lisp/init-slime.el | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/lisp/init-slime.el b/lisp/init-slime.el index 85c3fd4917..b7d176cb33 100644 --- a/lisp/init-slime.el +++ b/lisp/init-slime.el @@ -3,13 +3,7 @@ ;;; Code: (require-package 'slime) -;; package.el compiles the contrib subdir, but the compilation order -;; causes problems, so we remove the .elc files there. See -;; http://lists.common-lisp.net/pipermail/slime-devel/2012-February/018470.html -(mapc #'delete-file - (file-expand-wildcards (concat user-emacs-directory "elpa/slime-2*/contrib/*.elc"))) -(require-package 'hippie-expand-slime) (when (maybe-require-package 'slime-company) (setq slime-company-completion 'fuzzy slime-company-after-completion 'slime-company-just-one-space) @@ -19,26 +13,20 @@ ;;; Lisp buffers -(defun sanityinc/slime-setup () - "Mode setup function for slime lisp buffers." - (set-up-slime-hippie-expand)) - (with-eval-after-load 'slime (setq slime-protocol-version 'ignore) (setq slime-net-coding-system 'utf-8-unix) (let ((features '(slime-fancy slime-repl slime-fuzzy))) (when (require 'slime-company nil t) (push 'slime-company features)) - (slime-setup features)) - (add-hook 'slime-mode-hook 'sanityinc/slime-setup)) + (slime-setup features)) ) ;;; REPL (defun sanityinc/slime-repl-setup () "Mode setup function for slime REPL." - (sanityinc/lisp-setup) - (set-up-slime-hippie-expand)) + (sanityinc/lisp-setup)) (with-eval-after-load 'slime-repl ;; Stop SLIME's REPL from grabbing DEL, which is annoying when backspacing over a '(' From 16dcd94ddcb851c3d055334675e82907fda94c64 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 6 Aug 2020 15:03:28 +1200 Subject: [PATCH 164/418] Update list of languages with enhanced support --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bdd7e8f0c1..4aece690bf 100644 --- a/README.md +++ b/README.md @@ -15,13 +15,14 @@ in the approximate order of how much I use them, from most to least: * Haskell / Purescript / Elm * Ruby / Ruby on Rails +* SQL * CSS / LESS / SASS / SCSS * Javascript / Typescript / Coffeescript * HTML / HAML / Markdown / Textile / ERB -* Rust +* Common Lisp (with Slime) * Python +* Rust * Clojure (with Cider and nRepl) -* Common Lisp (with Slime) * PHP * Erlang From 65d93e0fcd0c37190e0800b83361006cfd8c265a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 6 Aug 2020 15:04:12 +1200 Subject: [PATCH 165/418] Don't refer to now-defunct Travis build --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4aece690bf..c8ba737d23 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ other languages. ## Supported Emacs versions The config should run on Emacs 24.5 or greater and is designed to -degrade smoothly - see the Travis build - but note that much newer +degrade smoothly - see the CI build - but note that much newer versions are required for an increasing number of key packages, so to get full functionality you should use the latest Emacs version available to you. From 7c9f71fb6c34741d1c225baaf60ebc7915547e56 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 6 Aug 2020 15:05:41 +1200 Subject: [PATCH 166/418] Remove code for falling back to http for MELPA --- lisp/init-elpa.el | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index a9f737d0c7..13c91ff2ed 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -15,13 +15,10 @@ ;;; Standard package repositories -(let* ((no-ssl (and (memq system-type '(windows-nt ms-dos)) - (not (gnutls-available-p)))) - (proto (if no-ssl "http" "https"))) - (add-to-list 'package-archives (cons "melpa" (concat proto "://melpa.org/packages/")) t) - ;; Official MELPA Mirror, in case necessary. - ;;(add-to-list 'package-archives (cons "melpa-mirror" (concat proto "://www.mirrorservice.org/sites/melpa.org/packages/")) t) - ) +(add-to-list 'package-archives '( "melpa" . "https://melpa.org/packages/") t) +;; Official MELPA Mirror, in case necessary. +;;(add-to-list 'package-archives (cons "melpa-mirror" (concat proto "://www.mirrorservice.org/sites/melpa.org/packages/")) t) + ;; Work-around for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34341 From 662b9235c5bfe689a55122172ff39b97de9839e5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 10 Aug 2020 09:35:30 +1200 Subject: [PATCH 167/418] Tidy up coffeescript config --- lisp/init-javascript.el | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 9a349405ff..4ef2ee0154 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -4,7 +4,6 @@ (maybe-require-package 'json-mode) (maybe-require-package 'js2-mode) -(maybe-require-package 'coffee-mode) (maybe-require-package 'typescript-mode) (maybe-require-package 'prettier-js) @@ -53,12 +52,12 @@ ;;; Coffeescript -(with-eval-after-load 'coffee-mode - (setq-default coffee-js-mode 'js2-mode - coffee-tab-width js-indent-level)) +(when (maybe-require-package 'coffee-mode) + (with-eval-after-load 'coffee-mode + (setq-default coffee-tab-width js-indent-level)) -(when (fboundp 'coffee-mode) - (add-to-list 'auto-mode-alist '("\\.coffee\\.erb\\'" . coffee-mode))) + (when (fboundp 'coffee-mode) + (add-to-list 'auto-mode-alist '("\\.coffee\\.erb\\'" . coffee-mode)))) ;; --------------------------------------------------------------------------- ;; Run and interact with an inferior JS via js-comint.el From 075b9e8b4728268c42df26537c6f4ee967728574 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 10 Aug 2020 09:35:44 +1200 Subject: [PATCH 168/418] Enable xref-js2 in js-mode --- lisp/init-javascript.el | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 4ef2ee0154..53208866b8 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -41,12 +41,18 @@ -(when (and (executable-find "ag") +(when (and (or (executable-find "rg") (executable-find "ag")) (maybe-require-package 'xref-js2)) + (when (executable-find "rg") + (setq-default xref-js2-search-program 'rg)) + (defun sanityinc/enable-xref-js2 () + (add-hook 'xref-backend-functions #'xref-js2-xref-backend nil t)) + (with-eval-after-load 'js + (define-key js-mode-map (kbd "M-.") nil) + (add-hook 'js-mode-hook 'sanityinc/enable-xref-js2)) (with-eval-after-load 'js2-mode (define-key js2-mode-map (kbd "M-.") nil) - (add-hook 'js2-mode-hook - (lambda () (add-hook 'xref-backend-functions #'xref-js2-xref-backend nil t))))) + (add-hook 'js2-mode-hook 'sanityinc/enable-xref-js2))) From e85812b411af82b3ef89662cf5f146511056c1e3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 10 Aug 2020 09:36:25 +1200 Subject: [PATCH 169/418] Generally prefer js-mode to js2-mode, but use js2-minor-mode as a linter --- lisp/init-javascript.el | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 53208866b8..f88acfcddc 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -10,7 +10,7 @@ ;; Need to first remove from list if present, since elpa adds entries too, which ;; may be in an arbitrary order -(add-to-list 'auto-mode-alist '("\\.\\(js\\|es6\\)\\(\\.erb\\)?\\'" . js2-mode)) +(add-to-list 'auto-mode-alist '("\\.\\(js\\|es6\\)\\(\\.erb\\)?\\'" . js-mode)) ;; js2-mode @@ -25,7 +25,10 @@ (defun sanityinc/enable-js2-checks-if-flycheck-inactive () (unless (flycheck-get-checker-for-buffer) (setq-local js2-mode-show-parse-errors t) - (setq-local js2-mode-show-strict-warnings t))) + (setq-local js2-mode-show-strict-warnings t) + (when (derived-mode-p 'js-mode) + (js2-minor-mode 1)))) + (add-hook 'js-mode-hook 'sanityinc/enable-js2-checks-if-flycheck-inactive) (add-hook 'js2-mode-hook 'sanityinc/enable-js2-checks-if-flycheck-inactive) (add-hook 'js2-mode-hook (lambda () (setq mode-name "JS2"))) From 5b59c6923607fdd2e7a524cbe042e67670c07014 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 10 Aug 2020 09:36:49 +1200 Subject: [PATCH 170/418] Use node modules path in js-mode and coffee-mode too --- lisp/init-javascript.el | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index f88acfcddc..c9fad5e92e 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -98,10 +98,8 @@ (when (maybe-require-package 'add-node-modules-path) - (with-eval-after-load 'typescript-mode - (add-hook 'typescript-mode-hook 'add-node-modules-path)) - (with-eval-after-load 'js2-mode - (add-hook 'js2-mode-hook 'add-node-modules-path))) + (dolist (mode '(typescript-mode js-mode js2-mode coffee-mode)) + (add-hook (derived-mode-hook-name mode) 'add-node-modules-path))) (provide 'init-javascript) From a04dede020e329978572d23129c27176a271db43 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 10 Aug 2020 12:04:52 +1200 Subject: [PATCH 171/418] Override javascript major mode lighters --- lisp/init-javascript.el | 9 +++++++-- lisp/init-utils.el | 8 ++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index c9fad5e92e..38266f96bb 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -31,8 +31,6 @@ (add-hook 'js-mode-hook 'sanityinc/enable-js2-checks-if-flycheck-inactive) (add-hook 'js2-mode-hook 'sanityinc/enable-js2-checks-if-flycheck-inactive) - (add-hook 'js2-mode-hook (lambda () (setq mode-name "JS2"))) - (js2-imenu-extras-setup)) (setq-default js-indent-level 2) @@ -42,6 +40,13 @@ (add-to-list 'interpreter-mode-alist (cons "node" 'js2-mode)) +(with-eval-after-load 'js2-mode + (sanityinc/major-mode-lighter 'js2-mode "JS2") + (sanityinc/major-mode-lighter 'js2-jsx-mode "JSX2")) +(with-eval-after-load 'js + (sanityinc/major-mode-lighter 'js-mode "JS") + (sanityinc/major-mode-lighter 'js-jsx-mode "JSX")) + (when (and (or (executable-find "rg") (executable-find "ag")) diff --git a/lisp/init-utils.el b/lisp/init-utils.el index 08584419ae..0bdd8c843f 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -12,6 +12,14 @@ (dolist (pattern patterns) (add-to-list 'auto-mode-alist (cons pattern mode)))) +;; Like diminish, but for major modes +(defun sanityinc/set-major-mode-name (name) + "Override the major mode NAME in this buffer." + (setq-local mode-name name)) + +(defun sanityinc/major-mode-lighter (mode name) + (add-hook (derived-mode-hook-name mode) + (apply-partially 'sanityinc/set-major-mode-name name))) ;;---------------------------------------------------------------------------- ;; String utilities missing from core emacs From 4dba611e3b4a5149e989c751d82e02d2329522e0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 10 Aug 2020 12:07:46 +1200 Subject: [PATCH 172/418] Tidy up js settings --- lisp/init-javascript.el | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 38266f96bb..9c20b78128 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -7,11 +7,19 @@ (maybe-require-package 'typescript-mode) (maybe-require-package 'prettier-js) -;; Need to first remove from list if present, since elpa adds entries too, which -;; may be in an arbitrary order + +;;; Basic js-mode setup (add-to-list 'auto-mode-alist '("\\.\\(js\\|es6\\)\\(\\.erb\\)?\\'" . js-mode)) +(with-eval-after-load 'js + (sanityinc/major-mode-lighter 'js-mode "JS") + (sanityinc/major-mode-lighter 'js-jsx-mode "JSX")) + +(setq-default js-indent-level 2) + + + ;; js2-mode ;; Change some defaults: customize them to override @@ -33,19 +41,14 @@ (js2-imenu-extras-setup)) -(setq-default js-indent-level 2) ;; In Emacs >= 25, the following is an alias for js-indent-level anyway (setq-default js2-basic-offset 2) - (add-to-list 'interpreter-mode-alist (cons "node" 'js2-mode)) (with-eval-after-load 'js2-mode (sanityinc/major-mode-lighter 'js2-mode "JS2") (sanityinc/major-mode-lighter 'js2-jsx-mode "JSX2")) -(with-eval-after-load 'js - (sanityinc/major-mode-lighter 'js-mode "JS") - (sanityinc/major-mode-lighter 'js-jsx-mode "JSX")) From 1a35fff729a3173571fd25ae97f35267dd402fd6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 13 Aug 2020 15:20:38 +1200 Subject: [PATCH 173/418] Enable fill-column-indicator mode in prog-mode when available --- lisp/init-editing-utils.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 5db3028f48..65e91f0be4 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -102,6 +102,14 @@ (advice-add 'goto-line-preview :around #'sanityinc/with-display-line-numbers))) + +(when (boundp 'display-fill-column-indicator) + (setq-default indicate-buffer-boundaries 'left) + (setq-default display-fill-column-indicator-character ?\u254e) + (add-hook 'prog-mode-hook 'display-fill-column-indicator-mode)) + + + (when (require-package 'rainbow-delimiters) (add-hook 'prog-mode-hook 'rainbow-delimiters-mode)) From aa5ef0cccd04d224dc1a4c5f2e6376ec665bbc8b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 13 Aug 2020 15:21:06 +1200 Subject: [PATCH 174/418] Add Emacs 27.1 to CI matrix --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dbb184cee5..ab0ee2be10 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,6 +20,7 @@ jobs: - 26.1 - 26.2 - 26.3 + - 27.1 - snapshot steps: - uses: purcell/setup-emacs@master From 2dbfa0b5af80cd5e5aedef9b63e011e80839322e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 13 Aug 2020 15:23:08 +1200 Subject: [PATCH 175/418] Bind C-c C-e in emacs-lisp-mode to match Slime binding --- lisp/init-lisp.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 6aec522fcb..7f2cb9c1e5 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -38,7 +38,8 @@ (global-set-key [remap eval-expression] 'pp-eval-expression) (with-eval-after-load 'lisp-mode - (define-key emacs-lisp-mode-map (kbd "C-x C-e") 'sanityinc/eval-last-sexp-or-region)) + (define-key emacs-lisp-mode-map (kbd "C-x C-e") 'sanityinc/eval-last-sexp-or-region) + (define-key emacs-lisp-mode-map (kbd "C-c C-e") 'pp-eval-expression)) (when (maybe-require-package 'ipretty) (add-hook 'after-init-hook 'ipretty-mode)) From 0415df9c2b5e14b92df91654af9524a9ca0b6ecc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 29 Aug 2020 15:24:16 +1200 Subject: [PATCH 176/418] Turn off anaconda-eldoc-mode along with anaconda-mode --- lisp/init-python.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/init-python.el b/lisp/init-python.el index 30942c2b6b..8b14dd0500 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -23,8 +23,10 @@ ;; by default we enable it only when working locally. (add-hook 'python-mode-hook (lambda () (unless (file-remote-p default-directory) - (anaconda-mode 1)))) - (add-hook 'anaconda-mode-hook 'anaconda-eldoc-mode)) + (anaconda-mode 1)))) + (add-hook 'anaconda-mode-hook + (lambda () + (anaconda-eldoc-mode (if anaconda-mode 1 0))))) (with-eval-after-load 'anaconda-mode (define-key anaconda-mode-map (kbd "M-?") nil)) (when (maybe-require-package 'company-anaconda) From 80289b4b27ef44a1dcf515296c54b93479c6d4a0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 29 Aug 2020 15:24:48 +1200 Subject: [PATCH 177/418] Ignore smex-items file --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 40243bbe00..474afb6d74 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ site-lisp/package/ /forge-database.sqlite /transient /.lsp-session-v1 +/smex-items From a3b9393fc3fed15c790d4ef315ab6d53a6e24b59 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Sep 2020 10:31:19 +1200 Subject: [PATCH 178/418] Tidy up init-elpa --- lisp/init-elpa.el | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 13c91ff2ed..b479bcd5db 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -3,13 +3,13 @@ ;;; Code: (require 'package) +(require 'cl-lib) ;;; Install into separate package dirs for each Emacs version, to prevent bytecode incompatibility -(let ((versioned-package-dir - (expand-file-name (format "elpa-%s.%s" emacs-major-version emacs-minor-version) - user-emacs-directory))) - (setq package-user-dir versioned-package-dir)) +(setq package-user-dir + (expand-file-name (format "elpa-%s.%s" emacs-major-version emacs-minor-version) + user-emacs-directory)) @@ -28,8 +28,6 @@ ;;; On-demand installation of packages -(require 'cl-lib) - (defun require-package (package &optional min-version no-refresh) "Install given PACKAGE, optionally requiring MIN-VERSION. If NO-REFRESH is non-nil, the available package lists will not be @@ -37,7 +35,7 @@ re-downloaded in order to locate PACKAGE." (or (package-installed-p package min-version) (let* ((known (cdr (assoc package package-archive-contents))) (versions (mapcar #'package-desc-version known))) - (if (cl-find-if (lambda (v) (version-list-<= min-version v)) versions) + (if (cl-some (lambda (v) (version-list-<= min-version v)) versions) (package-install package) (if no-refresh (error "No version of %s >= %S is available" package min-version) @@ -50,11 +48,9 @@ In the event of failure, return nil and print a warning message. Optionally require MIN-VERSION. If NO-REFRESH is non-nil, the available package lists will not be re-downloaded in order to locate PACKAGE." - (condition-case err - (require-package package min-version no-refresh) - (error - (message "Couldn't install optional package `%s': %S" package err) - nil))) + (with-demoted-errors + (concat "Couldn't install optional package `" (symbol-name package) "': %S") + (require-package package min-version no-refresh))) ;;; Fire up package.el @@ -70,10 +66,14 @@ locate PACKAGE." (defvar sanityinc/required-packages nil) (defun sanityinc/note-selected-package (oldfun package &rest args) - "If OLDFUN reports PACKAGE was successfully installed, note it in `sanityinc/required-packages'." + "If OLDFUN reports PACKAGE was successfully installed, note that fact. +The package name is noted by adding it to +`sanityinc/required-packages'. This function is used as an +advice for `require-package', to which ARGS are passed." (let ((available (apply oldfun package args))) - (prog1 available - (when (and available (boundp 'package-selected-packages)) + (prog1 + available + (when available (add-to-list 'sanityinc/required-packages package))))) (advice-add 'require-package :around 'sanityinc/note-selected-package) @@ -81,8 +81,9 @@ locate PACKAGE." (when (fboundp 'package--save-selected-packages) (require-package 'seq) (add-hook 'after-init-hook - (lambda () (package--save-selected-packages - (seq-uniq (append sanityinc/required-packages package-selected-packages)))))) + (lambda () + (package--save-selected-packages + (seq-uniq (append sanityinc/required-packages package-selected-packages)))))) (require-package 'fullframe) From ea6b2badad3554ff3eb34e8417379e61691b3d02 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Sep 2020 10:37:04 +1200 Subject: [PATCH 179/418] Disable counsel-yank-pop --- lisp/init-ivy.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 007cea543c..a87fa9a63c 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -38,7 +38,10 @@ (with-eval-after-load 'counsel (setq-default ivy-initial-inputs-alist '((Man-completion-table . "^") - (woman . "^")))) + (woman . "^"))) + ;; I prefer the default behaviour or cycling in place, or + ;; explicit use of browse-kill-ring + (define-key counsel-mode-map [remap yank-pop] nil)) (when (maybe-require-package 'diminish) (with-eval-after-load 'counsel (diminish 'counsel-mode))) From bcba8945e98ac52aee2116f799fe6a577ac49a3e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Sep 2020 10:40:00 +1200 Subject: [PATCH 180/418] Stop using cua-selection-mode --- lisp/init-editing-utils.el | 31 ------------------------------- lisp/init-paredit.el | 4 ---- 2 files changed, 35 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 65e91f0be4..1b9d90b35c 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -169,12 +169,6 @@ (put 'downcase-region 'disabled nil) -;;---------------------------------------------------------------------------- -;; Rectangle selections, and overwrite text when the selection is active -;;---------------------------------------------------------------------------- -(cua-selection-mode t) ; for rectangles, CUA is nice - - ;;---------------------------------------------------------------------------- ;; Handy key bindings ;;---------------------------------------------------------------------------- @@ -258,31 +252,6 @@ (with-eval-after-load 'whole-line-or-region (diminish 'whole-line-or-region-local-mode)) - -;; Some local minor modes clash with CUA rectangle selection - -(defvar-local sanityinc/suspended-modes-during-cua-rect nil - "Modes that should be re-activated when cua-rect selection is done.") - -(eval-after-load 'cua-rect - (advice-add 'cua--deactivate-rectangle :after - (lambda (&rest _) - (dolist (m sanityinc/suspended-modes-during-cua-rect) - (funcall m 1) - (setq sanityinc/suspended-modes-during-cua-rect nil))))) - -(defun sanityinc/suspend-mode-during-cua-rect-selection (mode-name) - "Add an advice to suspend `MODE-NAME' while selecting a CUA rectangle." - (eval-after-load 'cua-rect - (advice-add 'cua--activate-rectangle :after - (lambda (&rest _) - (when (bound-and-true-p mode-name) - (add-to-list 'sanityinc/suspended-modes-during-cua-rect mode-name) - (funcall mode-name 0)))))) - -(sanityinc/suspend-mode-during-cua-rect-selection 'whole-line-or-region-local-mode) - - (defun sanityinc/open-line-with-reindent (n) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index da228851c3..b0364326f0 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -19,10 +19,6 @@ (define-key paredit-mode-map (read-kbd-macro binding) nil))) -;; Compatibility with other modes - -(sanityinc/suspend-mode-during-cua-rect-selection 'paredit-mode) - ;; Use paredit in the minibuffer ;; TODO: break out into separate package From 02db6b1ca458d26cf4a04f95acdb343bc0a9aa5e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Sep 2020 10:45:17 +1200 Subject: [PATCH 181/418] Reformat init-editing-utils --- lisp/init-editing-utils.el | 63 ++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 37 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 1b9d90b35c..67ab062967 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -10,9 +10,9 @@ (maybe-require-package 'list-unicode-display) -;;---------------------------------------------------------------------------- -;; Some basic preferences -;;---------------------------------------------------------------------------- + +;;; Some basic preferences + (setq-default blink-cursor-interval 0.4 bookmark-default-file (expand-file-name ".bookmarks.el" user-emacs-directory) @@ -124,9 +124,9 @@ (define-key symbol-overlay-mode-map (kbd "M-n") 'symbol-overlay-jump-next) (define-key symbol-overlay-mode-map (kbd "M-p") 'symbol-overlay-jump-prev))) -;;---------------------------------------------------------------------------- -;; Zap *up* to char is a handy pair for zap-to-char -;;---------------------------------------------------------------------------- + +;;; Zap *up* to char is a handy pair for zap-to-char + (autoload 'zap-up-to-char "misc" "Kill up to, but not including ARGth occurrence of CHAR.") (global-set-key (kbd "M-Z") 'zap-up-to-char) @@ -143,35 +143,28 @@ (add-to-list 'page-break-lines-modes 'browse-kill-ring-mode)) -;;---------------------------------------------------------------------------- ;; Don't disable narrowing commands -;;---------------------------------------------------------------------------- (put 'narrow-to-region 'disabled nil) (put 'narrow-to-page 'disabled nil) (put 'narrow-to-defun 'disabled nil) +;; Don't disable case-change functions +(put 'upcase-region 'disabled nil) +(put 'downcase-region 'disabled nil) + -;;---------------------------------------------------------------------------- ;; Show matching parens -;;---------------------------------------------------------------------------- (add-hook 'after-init-hook 'show-paren-mode) -;;---------------------------------------------------------------------------- -;; Expand region -;;---------------------------------------------------------------------------- + +;;; Expand region + (require-package 'expand-region) (global-set-key (kbd "C-=") 'er/expand-region) -;;---------------------------------------------------------------------------- -;; Don't disable case-change functions -;;---------------------------------------------------------------------------- -(put 'upcase-region 'disabled nil) -(put 'downcase-region 'disabled nil) - + +;;; Handy key bindings -;;---------------------------------------------------------------------------- -;; Handy key bindings -;;---------------------------------------------------------------------------- (global-set-key (kbd "C-.") 'set-mark-command) (global-set-key (kbd "C-x C-.") 'pop-global-mark) @@ -190,13 +183,10 @@ (global-set-key (kbd "C-c m e") 'mc/edit-ends-of-lines) (global-set-key (kbd "C-c m a") 'mc/edit-beginnings-of-lines) - ;; Train myself to use M-f and M-b instead (global-unset-key [M-left]) (global-unset-key [M-right]) - - (defun kill-back-to-indentation () "Kill from point back to the first non-whitespace character on the line." (interactive) @@ -207,19 +197,20 @@ (global-set-key (kbd "C-M-") 'kill-back-to-indentation) -;;---------------------------------------------------------------------------- -;; Page break lines -;;---------------------------------------------------------------------------- + +;;; Page break lines + (when (maybe-require-package 'page-break-lines) (add-hook 'after-init-hook 'global-page-break-lines-mode) (with-eval-after-load 'page-break-lines (diminish 'page-break-lines-mode))) -;;---------------------------------------------------------------------------- + + ;; Shift lines up and down with M-up and M-down. When paredit is enabled, ;; it will use those keybindings. For this reason, you might prefer to ;; use M-S-up and M-S-down, which will work even in lisp modes. -;;---------------------------------------------------------------------------- + (require-package 'move-dup) (global-set-key [M-up] 'md-move-lines-up) (global-set-key [M-down] 'md-move-lines-down) @@ -229,9 +220,9 @@ (global-set-key (kbd "C-c d") 'md-duplicate-down) (global-set-key (kbd "C-c u") 'md-duplicate-up) -;;---------------------------------------------------------------------------- -;; Fix backward-up-list to understand quotes, see http://bit.ly/h7mdIL -;;---------------------------------------------------------------------------- + +;;; Fix backward-up-list to understand quotes, see http://bit.ly/h7mdIL + (defun sanityinc/backward-up-sexp (arg) "Jump up to the start of the ARG'th enclosing sexp." (interactive "p") @@ -244,9 +235,8 @@ (global-set-key [remap backward-up-list] 'sanityinc/backward-up-sexp) ; C-M-u, C-M-up -;;---------------------------------------------------------------------------- -;; Cut/copy the current line if no region is active -;;---------------------------------------------------------------------------- + +;;; Cut/copy the current line if no region is active (require-package 'whole-line-or-region) (add-hook 'after-init-hook 'whole-line-or-region-global-mode) (with-eval-after-load 'whole-line-or-region @@ -302,7 +292,6 @@ With arg N, insert N newlines." (sort-subr nil 'forward-line 'end-of-line nil nil (lambda (s1 s2) (eq (random 2) 0))))))) - (require-package 'highlight-escape-sequences) From edd084a9ca0315a638309b3c8d285a8488faae8f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Sep 2020 10:45:49 +1200 Subject: [PATCH 182/418] I just don't use expand-region --- lisp/init-editing-utils.el | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 67ab062967..5767c0a96d 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -155,12 +155,6 @@ ;; Show matching parens (add-hook 'after-init-hook 'show-paren-mode) - -;;; Expand region - -(require-package 'expand-region) -(global-set-key (kbd "C-=") 'er/expand-region) - ;;; Handy key bindings From 754a3ce1871f44c0c235887c18a32ac5dc799eb7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Sep 2020 10:50:51 +1200 Subject: [PATCH 183/418] Previous formulation of maybe-require-package was better --- lisp/init-elpa.el | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index b479bcd5db..f0b1ae6751 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -48,9 +48,11 @@ In the event of failure, return nil and print a warning message. Optionally require MIN-VERSION. If NO-REFRESH is non-nil, the available package lists will not be re-downloaded in order to locate PACKAGE." - (with-demoted-errors - (concat "Couldn't install optional package `" (symbol-name package) "': %S") - (require-package package min-version no-refresh))) + (condition-case err + (require-package package min-version no-refresh) + (error + (message "Couldn't install optional package `%s': %S" package err) + nil))) ;;; Fire up package.el From 42f270cf2c310803c7a4ba538ab2c4613e6d83d5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Sep 2020 11:06:36 +1200 Subject: [PATCH 184/418] Don't test so many version on MacOS --- .github/workflows/test.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ab0ee2be10..a9574277aa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, macos-latest] + os: [ubuntu-latest] emacs_version: - 24.5 - 25.1 @@ -22,6 +22,10 @@ jobs: - 26.3 - 27.1 - snapshot + include: + - os: macos-latest + emacs_version: 24.5 + emacs_version: 27.1 steps: - uses: purcell/setup-emacs@master with: From b5b1503c1520ee52a42052d77a521ce96d3fb296 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Sep 2020 11:08:10 +1200 Subject: [PATCH 185/418] Fix broken matrix spec --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a9574277aa..cf41c67d7e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,6 @@ jobs: - snapshot include: - os: macos-latest - emacs_version: 24.5 emacs_version: 27.1 steps: - uses: purcell/setup-emacs@master From ce57d8bb302ca3faf0a4374ca8480bc340407e1b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 26 Sep 2020 13:54:50 +1200 Subject: [PATCH 186/418] Make tab completion bring up company --- lisp/init-company.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-company.el b/lisp/init-company.el index b48d60ae18..84c0a74997 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -15,6 +15,8 @@ (delq backend company-backends)) (diminish 'company-mode) (define-key company-mode-map (kbd "M-/") 'company-complete) + (define-key company-mode-map [remap completion-at-point] 'company-complete) + (define-key company-mode-map [remap indent-for-tab-command] 'company-indent-or-complete-common) (define-key company-active-map (kbd "M-/") 'company-other-backend) (define-key company-active-map (kbd "C-n") 'company-select-next) (define-key company-active-map (kbd "C-p") 'company-select-previous) From bf65ab24cb31a32add371a7bad5d391d02b5391d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 15 Oct 2020 09:57:53 +1300 Subject: [PATCH 187/418] Add ocaml support --- README.md | 2 +- init.el | 1 + lisp/init-ocaml.el | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 lisp/init-ocaml.el diff --git a/README.md b/README.md index c8ba737d23..858834d5b3 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Emacs itself comes with support for many programming languages. This config adds improved defaults and extended support for the following, listed in the approximate order of how much I use them, from most to least: -* Haskell / Purescript / Elm +* Haskell / Purescript / Elm / OCaml * Ruby / Ruby on Rails * SQL * CSS / LESS / SASS / SCSS diff --git a/init.el b/init.el index 4c4258ca2b..51ff695f1f 100644 --- a/init.el +++ b/init.el @@ -105,6 +105,7 @@ (require 'init-ruby) (require 'init-rails) (require 'init-sql) +(require 'init-ocaml) (require 'init-nim) (require 'init-rust) (require 'init-toml) diff --git a/lisp/init-ocaml.el b/lisp/init-ocaml.el new file mode 100644 index 0000000000..6b65a01add --- /dev/null +++ b/lisp/init-ocaml.el @@ -0,0 +1,54 @@ +;;; init-ocaml.el --- Support the OCaml language -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +(when (maybe-require-package 'tuareg) + (when (maybe-require-package 'merlin) + (autoload 'merlin-mode "merlin" "Merlin mode" t) + (add-hook 'tuareg-mode-hook 'merlin-mode) + + (with-eval-after-load 'merlin + (with-eval-after-load 'company + (push 'merlin-company-backend company-backends))) + + (when (maybe-require-package 'merlin-eldoc) + (with-eval-after-load 'merlin + (autoload 'merlin-eldoc--gather-info "merlin-eldoc") + (add-hook 'merlin-mode-hook + (lambda () + (setq-local eldoc-documentation-function + #'merlin-eldoc--gather-info)))))) + + (with-eval-after-load 'tuareg + (defvar-local tuareg-previous-tuareg-buffer nil + "Buffer from which we jumped to the REPL.") + + (defun sanityinc/tuareg-repl-switch () + (interactive) + (let ((last-tuareg-buf (when (derived-mode-p 'tuareg-mode) + (current-buffer)))) + (tuareg-run-ocaml) + (pop-to-buffer tuareg-interactive-buffer-name) + (when last-tuareg-buf + (setq-local tuareg-previous-tuareg-buffer last-tuareg-buf)))) + + (defun sanityinc/tuareg-repl-switch-back () + (interactive) + (when tuareg-previous-tuareg-buffer + (pop-to-buffer tuareg-previous-tuareg-buffer))) + + (define-key tuareg-mode-map (kbd "C-c C-z") 'sanityinc/tuareg-repl-switch) + (define-key tuareg-interactive-mode-map (kbd "C-c C-z") 'sanityinc/tuareg-repl-switch-back))) + +(when (maybe-require-package 'reformatter) + (defcustom ocp-indent-args nil + "Arguments for \"ocp-indent\" invocation.") + + (reformatter-define ocp-indent + :program "ocp-indent" + :args ocp-indent-args + :lighter " OCP")) + + +(provide 'init-ocaml) +;;; init-ocaml.el ends here From 5dd4bce164ee7aef5045feb19c2711bc18b6b21f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Oct 2020 10:16:33 +1300 Subject: [PATCH 188/418] Ignore gccemacs native compilation cache dir --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 474afb6d74..87b89afb3b 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,4 @@ site-lisp/package/ /transient /.lsp-session-v1 /smex-items +/eln-cache/ From 63cd121dac46a7619f3bc33bca05a75f043c8704 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Oct 2020 10:17:01 +1300 Subject: [PATCH 189/418] Change C-c C-l in ruby-mode to work more like in other langs --- lisp/init-ruby.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index 00a189ea8c..12c879eca1 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -31,6 +31,14 @@ ;;; Inferior ruby (require-package 'inf-ruby) +(with-eval-after-load 'inf-ruby + (defun sanityinc/ruby-load-file (&optional choose-file) + (interactive "P") + (if (or choose-file (not buffer-file-name)) + (call-interactively 'ruby-load-file) + (save-some-buffers) + (ruby-load-file buffer-file-name))) + (define-key inf-ruby-minor-mode-map [remap ruby-load-file] 'sanityinc/ruby-load-file)) From 0fc6ff73a4ccefcc7e0d99e648161f9cf20c95af Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Oct 2020 10:19:18 +1300 Subject: [PATCH 190/418] Prefix more personal functions with "sanityinc/" --- lisp/init-paredit.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index b0364326f0..bd976e2c8e 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -4,12 +4,12 @@ (require-package 'paredit) -(defun maybe-map-paredit-newline () +(defun sanityinc/maybe-map-paredit-newline () (unless (or (memq major-mode '(inferior-emacs-lisp-mode cider-repl-mode)) (minibufferp)) (local-set-key (kbd "RET") 'paredit-newline))) -(add-hook 'paredit-mode-hook 'maybe-map-paredit-newline) +(add-hook 'paredit-mode-hook 'sanityinc/maybe-map-paredit-newline) (with-eval-after-load 'paredit (diminish 'paredit-mode " Par") @@ -23,7 +23,7 @@ ;; Use paredit in the minibuffer ;; TODO: break out into separate package ;; http://emacsredux.com/blog/2013/04/18/evaluate-emacs-lisp-in-the-minibuffer/ -(add-hook 'minibuffer-setup-hook 'conditionally-enable-paredit-mode) +(add-hook 'minibuffer-setup-hook 'sanityinc/conditionally-enable-paredit-mode) (defvar paredit-minibuffer-commands '(eval-expression pp-eval-expression @@ -32,7 +32,7 @@ ibuffer-do-view-and-eval) "Interactive commands for which paredit should be enabled in the minibuffer.") -(defun conditionally-enable-paredit-mode () +(defun sanityinc/conditionally-enable-paredit-mode () "Enable paredit during lisp-related minibuffer commands." (if (memq this-command paredit-minibuffer-commands) (enable-paredit-mode))) From b47e7efc8553225a17ab3b907e7de2e79f77408c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Oct 2020 10:19:43 +1300 Subject: [PATCH 191/418] Add docstring --- lisp/init-http.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-http.el b/lisp/init-http.el index c2a854f6c1..d058a4f8c2 100644 --- a/lisp/init-http.el +++ b/lisp/init-http.el @@ -7,6 +7,7 @@ (add-auto-mode 'restclient-mode "\\.rest\\'") (defun sanityinc/restclient () + "Work with `rest' in the *restclient* buffer." (interactive) (with-current-buffer (get-buffer-create "*restclient*") (restclient-mode) From 69a47ae58446021e831a2899b2b472a0a260abc3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Oct 2020 10:19:50 +1300 Subject: [PATCH 192/418] Make httprepl understand images --- lisp/init-http.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lisp/init-http.el b/lisp/init-http.el index d058a4f8c2..bacc852a67 100644 --- a/lisp/init-http.el +++ b/lisp/init-http.el @@ -3,6 +3,14 @@ ;;; Code: (maybe-require-package 'httprepl) +(with-eval-after-load 'httprepl + (push '("image" . image) httprepl-content-type-alist) + (push '(image . ((lambda (b) (with-current-buffer b + (image-mode) + b)))) + httprepl-content-type-middleware-alist)) + + (when (maybe-require-package 'restclient) (add-auto-mode 'restclient-mode "\\.rest\\'") From 60a0adbd83b8a87e0b12f3d5adca494db2f81a51 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Oct 2020 10:20:20 +1300 Subject: [PATCH 193/418] Resize windows and frames pixelwise if possible --- lisp/init-gui-frames.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 1d18204725..e86e80a09b 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -24,6 +24,10 @@ ;;---------------------------------------------------------------------------- ;; Window size and features ;;---------------------------------------------------------------------------- +(setq-default + window-resize-pixelwise t + frame-resize-pixelwise t) + (when (fboundp 'tool-bar-mode) (tool-bar-mode -1)) (when (fboundp 'set-scroll-bar-mode) From 82de7b9912dfd133bc41d65764d590a3944d9057 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Oct 2020 10:20:46 +1300 Subject: [PATCH 194/418] Use so-long for very large files when available --- lisp/init-editing-utils.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 5767c0a96d..16bd148d3e 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -46,6 +46,9 @@ ;; Huge files +(when (fboundp 'so-long-enable) + (add-hook 'after-init-hook 'so-long-enable)) + (require-package 'vlf) (defun ffap-vlf () From 1d211322c78b22d9a4540a5b7a0ebb97b6746cfb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Oct 2020 10:21:09 +1300 Subject: [PATCH 195/418] Remove some multiple-cursors bindings I don't use --- lisp/init-editing-utils.el | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 16bd148d3e..4f18687e1d 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -174,11 +174,6 @@ (global-set-key (kbd "C->") 'mc/mark-next-like-this) (global-set-key (kbd "C-+") 'mc/mark-next-like-this) (global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this) -;; From active region to multiple cursors: -(global-set-key (kbd "C-c m r") 'set-rectangular-region-anchor) -(global-set-key (kbd "C-c m c") 'mc/edit-lines) -(global-set-key (kbd "C-c m e") 'mc/edit-ends-of-lines) -(global-set-key (kbd "C-c m a") 'mc/edit-beginnings-of-lines) ;; Train myself to use M-f and M-b instead (global-unset-key [M-left]) From b8948ae6ea8ac63a090682cc89049d3eb900157d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Oct 2020 10:22:12 +1300 Subject: [PATCH 196/418] Make "q" kill the debugger, not bury it --- lisp/init-lisp.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 7f2cb9c1e5..b8f8adfe70 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -2,6 +2,8 @@ ;;; Commentary: ;;; Code: +(setq-default debugger-bury-or-kill 'kill) + (require-package 'elisp-slime-nav) (dolist (hook '(emacs-lisp-mode-hook ielm-mode-hook)) (add-hook hook 'turn-on-elisp-slime-nav-mode)) From cdb7f8ab2e63e02d31217852b57c8499ba769f79 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 27 Oct 2020 11:32:43 +1300 Subject: [PATCH 197/418] Enable merlin xref backend in ocaml buffers --- lisp/init-ocaml.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-ocaml.el b/lisp/init-ocaml.el index 6b65a01add..7c616094a3 100644 --- a/lisp/init-ocaml.el +++ b/lisp/init-ocaml.el @@ -8,6 +8,11 @@ (add-hook 'tuareg-mode-hook 'merlin-mode) (with-eval-after-load 'merlin + (add-hook 'merlin-mode-hook + (lambda () + (if merlin-mode + (add-hook 'xref-backend-functions 'merlin-xref-backend nil t) + (remove-hook 'xref-backend-functions 'merlin-xref-backend t)))) (with-eval-after-load 'company (push 'merlin-company-backend company-backends))) From 75b3c24fc2f6d10db90234d06f0e31ba7106548b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 17 Nov 2020 10:59:10 +1300 Subject: [PATCH 198/418] Ensure ~/.emacs.d/site-lisp is in load-path Fixes #756 --- lisp/init-site-lisp.el | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lisp/init-site-lisp.el b/lisp/init-site-lisp.el index 6dab3b4e32..b10aae680e 100644 --- a/lisp/init-site-lisp.el +++ b/lisp/init-site-lisp.el @@ -4,20 +4,22 @@ ;;; Set load path -(eval-when-compile (require 'cl)) +(require 'cl-lib) + (defun sanityinc/add-subdirs-to-load-path (parent-dir) "Adds every non-hidden subdir of PARENT-DIR to `load-path'." (let* ((default-directory parent-dir)) (progn (setq load-path (append - (remove-if-not - (lambda (dir) (file-directory-p dir)) + (cl-remove-if-not + #'file-directory-p (directory-files (expand-file-name parent-dir) t "^[^\\.]")) load-path))))) -(sanityinc/add-subdirs-to-load-path - (expand-file-name "site-lisp/" user-emacs-directory)) +(let ((site-lisp-dir (expand-file-name "site-lisp/" user-emacs-directory))) + (push site-lisp-dir load-path) + (sanityinc/add-subdirs-to-load-path site-lisp-dir)) ;;; Utilities for grabbing upstream libs From 4c81c50ba77d165df8008dd5905f8c49102793d4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 17 Nov 2020 16:32:53 +1300 Subject: [PATCH 199/418] Small tidy-up of init-site-lisp --- lisp/init-site-lisp.el | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lisp/init-site-lisp.el b/lisp/init-site-lisp.el index b10aae680e..8b190abbe4 100644 --- a/lisp/init-site-lisp.el +++ b/lisp/init-site-lisp.el @@ -7,16 +7,16 @@ (require 'cl-lib) (defun sanityinc/add-subdirs-to-load-path (parent-dir) - "Adds every non-hidden subdir of PARENT-DIR to `load-path'." - (let* ((default-directory parent-dir)) - (progn - (setq load-path - (append - (cl-remove-if-not - #'file-directory-p - (directory-files (expand-file-name parent-dir) t "^[^\\.]")) - load-path))))) - + "Add every non-hidden subdir of PARENT-DIR to `load-path'." + (let ((default-directory parent-dir)) + (setq load-path + (append + (cl-remove-if-not + #'file-directory-p + (directory-files (expand-file-name parent-dir) t "^[^\\.]")) + load-path)))) + +;; Add both site-lisp and its immediate subdirs to `load-path' (let ((site-lisp-dir (expand-file-name "site-lisp/" user-emacs-directory))) (push site-lisp-dir load-path) (sanityinc/add-subdirs-to-load-path site-lisp-dir)) From 834479600a3b130835cf838be96736281e4f4edb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 5 Jan 2021 15:06:33 +1300 Subject: [PATCH 200/418] Fix incorrect org command bindings Fixes #763 and #762, thanks @Eason0210 --- lisp/init-org.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index e3dbe280af..a90b89d96a 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -33,7 +33,7 @@ (defvar sanityinc/org-global-prefix-map (make-sparse-keymap) "A keymap for handy global access to org helpers, particularly clocking.") -(define-key sanityinc/org-global-prefix-map (kbd "j") 'org-clock-jump-to-current-clock) +(define-key sanityinc/org-global-prefix-map (kbd "j") 'org-clock-goto) (define-key sanityinc/org-global-prefix-map (kbd "l") 'org-clock-in-last) (define-key sanityinc/org-global-prefix-map (kbd "i") 'org-clock-in) (define-key sanityinc/org-global-prefix-map (kbd "o") 'org-clock-out) @@ -357,7 +357,7 @@ typical word processor." (define-key org-mode-map (kbd "C-M-") 'org-up-element) (when *is-a-mac* (define-key org-mode-map (kbd "M-h") nil) - (define-key org-mode-map (kbd "C-c g") 'org-mac-grab-link))) + (define-key org-mode-map (kbd "C-c g") 'grab-mac-link))) (with-eval-after-load 'org (org-babel-do-load-languages From e3b067a28501f4356a9901c1d669c3c5066dffac Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 11 Jan 2021 11:30:03 +1300 Subject: [PATCH 201/418] More reliably enable delete-selection-mode --- lisp/init-editing-utils.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 4f18687e1d..0cc9bd3717 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -19,7 +19,6 @@ buffers-menu-max-size 30 case-fold-search t column-number-mode t - delete-selection-mode t ediff-split-window-function 'split-window-horizontally ediff-window-setup-function 'ediff-setup-windows-plain indent-tabs-mode nil @@ -34,6 +33,8 @@ truncate-lines nil truncate-partial-width-windows nil) +(add-hook 'after-init-hook 'delete-selection-mode) + (add-hook 'after-init-hook 'global-auto-revert-mode) (setq global-auto-revert-non-file-buffers t auto-revert-verbose nil) From 90b8fd24756e9953d47dce7217b379038a623740 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 13 Jan 2021 16:36:26 +1300 Subject: [PATCH 202/418] Switch from ivy/counsel to selectrum/consult/embark --- init.el | 3 +- lisp/init-ivy.el | 88 ------------------------------------------ lisp/init-selectrum.el | 45 +++++++++++++++++++++ lisp/init-smex.el | 12 ------ 4 files changed, 46 insertions(+), 102 deletions(-) delete mode 100644 lisp/init-ivy.el create mode 100644 lisp/init-selectrum.el delete mode 100644 lisp/init-smex.el diff --git a/init.el b/init.el index 51ff695f1f..3b4750bc90 100644 --- a/init.el +++ b/init.el @@ -66,8 +66,7 @@ (require 'init-flycheck) (require 'init-recentf) -(require 'init-smex) -(require 'init-ivy) +(require 'init-selectrum) (require 'init-hippie-expand) (require 'init-company) (require 'init-windows) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el deleted file mode 100644 index a87fa9a63c..0000000000 --- a/lisp/init-ivy.el +++ /dev/null @@ -1,88 +0,0 @@ -;;; init-ivy.el --- Use ivy for minibuffer completion and more -*- lexical-binding: t -*- -;;; Commentary: -;;; Code: - -(when (maybe-require-package 'ivy) - (add-hook 'after-init-hook 'ivy-mode) - (with-eval-after-load 'ivy - (setq-default ivy-use-virtual-buffers t - ivy-virtual-abbreviate 'fullpath - ivy-count-format "" - projectile-completion-system 'ivy - ivy-magic-tilde nil - ivy-dynamic-exhibit-delay-ms 150 - ivy-use-selectable-prompt t) - - ;; IDO-style directory navigation - (define-key ivy-minibuffer-map (kbd "RET") #'ivy-alt-done) - (dolist (k '("C-j" "C-RET")) - (define-key ivy-minibuffer-map (kbd k) #'ivy-immediate-done)) - - (define-key ivy-minibuffer-map (kbd "") #'ivy-previous-line-or-history) - (define-key ivy-minibuffer-map (kbd "") #'ivy-next-line-or-history) - - (define-key ivy-occur-mode-map (kbd "C-c C-q") #'ivy-wgrep-change-to-wgrep-mode) - - (when (maybe-require-package 'diminish) - (diminish 'ivy-mode))) - (when (maybe-require-package 'ivy-rich) - (setq ivy-virtual-abbreviate 'abbreviate - ivy-rich-switch-buffer-align-virtual-buffer nil - ivy-rich-path-style 'abbrev) - (with-eval-after-load 'ivy - (setcdr (assq t ivy-format-functions-alist) #'ivy-format-function-line)) - (add-hook 'ivy-mode-hook (lambda () (ivy-rich-mode ivy-mode))))) - -(when (maybe-require-package 'counsel) - (setq-default counsel-mode-override-describe-bindings t) - (with-eval-after-load 'counsel - (setq-default ivy-initial-inputs-alist - '((Man-completion-table . "^") - (woman . "^"))) - ;; I prefer the default behaviour or cycling in place, or - ;; explicit use of browse-kill-ring - (define-key counsel-mode-map [remap yank-pop] nil)) - (when (maybe-require-package 'diminish) - (with-eval-after-load 'counsel - (diminish 'counsel-mode))) - (add-hook 'after-init-hook 'counsel-mode) - - (when (maybe-require-package 'projectile) - (let ((search-function - (cond - ((executable-find "rg") 'counsel-rg) - ((executable-find "ag") 'counsel-ag) - ((executable-find "pt") 'counsel-pt) - ((executable-find "ack") 'counsel-ack)))) - (when search-function - (defun sanityinc/counsel-search-project (initial-input &optional use-current-dir) - "Search using `counsel-rg' or similar from the project root for INITIAL-INPUT. -If there is no project root, or if the prefix argument -USE-CURRENT-DIR is set, then search from the current directory -instead." - (interactive (list (let ((sym (thing-at-point 'symbol))) - (when sym (regexp-quote sym))) - current-prefix-arg)) - (let ((current-prefix-arg) - (dir (if use-current-dir - default-directory - (condition-case err - (projectile-project-root) - (error default-directory))))) - (funcall search-function initial-input dir))))) - (with-eval-after-load 'ivy - (add-to-list 'ivy-height-alist (cons 'counsel-ag 20))) - (global-set-key (kbd "M-?") 'sanityinc/counsel-search-project))) - - -(when (maybe-require-package 'swiper) - (with-eval-after-load 'ivy - (define-key ivy-mode-map (kbd "M-s /") 'swiper-thing-at-point))) - - -(when (maybe-require-package 'ivy-xref) - (setq xref-show-xrefs-function 'ivy-xref-show-xrefs)) - - -(provide 'init-ivy) -;;; init-ivy.el ends here diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el new file mode 100644 index 0000000000..e5f4470148 --- /dev/null +++ b/lisp/init-selectrum.el @@ -0,0 +1,45 @@ +;;; init-selectrum.el --- Config for selectrum -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: + +(when (maybe-require-package 'orderless) + (setq completion-styles '(orderless))) + +(when (require-package 'selectrum) + (add-hook 'after-init-hook (lambda () (selectrum-mode 1))) + + (when (maybe-require-package 'selectrum-prescient) + (require 'prescient) + (prescient-persist-mode 1) + (selectrum-prescient-mode 1) + (global-set-key [remap execute-extended-command] nil) + (global-set-key [remap execute-extended-command] 'execute-extended-command)) + + ;;(defun sanityinc/read-buffer-function (prompt &optional def require-match predicate)) + + (when (maybe-require-package 'embark) + (define-key selectrum-minibuffer-map (kbd "C-c C-o") 'embark-export) + (define-key selectrum-minibuffer-map (kbd "C-c C-c") 'embark-act)) + + (when (maybe-require-package 'consult) + (when (maybe-require-package 'projectile) + (setq-default consult-project-root-function 'projectile-project-root)) + + (when (executable-find "rg") + (global-set-key (kbd "M-?") 'consult-ripgrep)) + (global-set-key [remap switch-to-buffer] 'consult-buffer) + (global-set-key [remap switch-to-buffer-other-window] 'consult-buffer-other-window) + (global-set-key [remap switch-to-buffer-other-frame] 'consult-buffer-other-frame) + (maybe-require-package 'embark-consult) ) + + (maybe-require-package 'consult-flycheck) + + (when (maybe-require-package 'marginalia) + (add-hook 'after-init-hook (lambda () (marginalia-mode 1))) + (setq-default marginalia-annotators '(marginalia-annotators-heavy))) + ) + + + +(provide 'init-selectrum) +;;; init-selectrum.el ends here diff --git a/lisp/init-smex.el b/lisp/init-smex.el deleted file mode 100644 index 640f342dae..0000000000 --- a/lisp/init-smex.el +++ /dev/null @@ -1,12 +0,0 @@ -;;; init-smex.el --- Use smex to improve M-x -*- lexical-binding: t -*- -;;; Commentary: -;;; Code: - -;; Use smex to handle M-x -(when (maybe-require-package 'smex) - ;; Change path for ~/.smex-items - (setq-default smex-save-file (expand-file-name ".smex-items" user-emacs-directory)) - (global-set-key [remap execute-extended-command] 'smex)) - -(provide 'init-smex) -;;; init-smex.el ends here From 1392c8c6ea8dda6cdb411bea887f364f7fc66027 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 13 Jan 2021 16:38:12 +1300 Subject: [PATCH 203/418] Add basic support for the J programming language --- init.el | 1 + lisp/init-j.el | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 lisp/init-j.el diff --git a/init.el b/init.el index 3b4750bc90..4a80b0289a 100644 --- a/init.el +++ b/init.el @@ -105,6 +105,7 @@ (require 'init-rails) (require 'init-sql) (require 'init-ocaml) +(require 'init-j) (require 'init-nim) (require 'init-rust) (require 'init-toml) diff --git a/lisp/init-j.el b/lisp/init-j.el new file mode 100644 index 0000000000..68e2c49bdd --- /dev/null +++ b/lisp/init-j.el @@ -0,0 +1,12 @@ +;;; init-j.el --- Basic support for programming in J -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +(require-package 'j-mode) + +(setq-default j-console-cmd "jconsole") +(add-hook 'inferior-j-mode-hook (lambda () (electric-pair-mode -1))) + + +(provide 'init-j) +;;; init-j.el ends here From 0c23b05dbccc698e76eb7fa1422864bcb1abc5a7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 13 Jan 2021 21:02:26 +1300 Subject: [PATCH 204/418] Require Emacs 25.1 --- .github/workflows/test.yml | 1 - README.md | 2 +- init.el | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cf41c67d7e..6fba3d4ffa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,6 @@ jobs: matrix: os: [ubuntu-latest] emacs_version: - - 24.5 - 25.1 - 25.2 - 25.3 diff --git a/README.md b/README.md index 858834d5b3..a185db76b6 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ other languages. ## Supported Emacs versions -The config should run on Emacs 24.5 or greater and is designed to +The config should run on Emacs 25.1 or greater and is designed to degrade smoothly - see the CI build - but note that much newer versions are required for an increasing number of key packages, so to get full functionality you should use the latest Emacs version diff --git a/init.el b/init.el index 4a80b0289a..98f3f86501 100644 --- a/init.el +++ b/init.el @@ -9,10 +9,10 @@ ;; Produce backtraces when errors occur: can be helpful to diagnose startup issues ;;(setq debug-on-error t) -(let ((minver "24.5")) +(let ((minver "25.1")) (when (version< emacs-version minver) (error "Your Emacs is too old -- this config requires v%s or higher" minver))) -(when (version< emacs-version "25.1") +(when (version< emacs-version "26.1") (message "Your Emacs is old, and some functionality in this config will be disabled. Please upgrade if possible.")) (add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory)) From 965e59242f9ca6662435892a657cd3fafcac1c09 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 13 Jan 2021 21:02:54 +1300 Subject: [PATCH 205/418] Bump version of github action --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6fba3d4ffa..850bbbfc70 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,6 +29,6 @@ jobs: with: version: ${{ matrix.emacs_version }} - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Check startup run: ./test-startup.sh From a4115c2abd5c3a41ffc77b194ca8fb834918198d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 13 Jan 2021 21:16:19 +1300 Subject: [PATCH 206/418] Don't fail fast in CI build --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 850bbbfc70..17072d257b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,6 +10,7 @@ jobs: build: runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: os: [ubuntu-latest] emacs_version: From 89f335412c6aeee2ae0d13ad294c657317aa4dd1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 13 Jan 2021 21:20:05 +1300 Subject: [PATCH 207/418] Revert "Switch from ivy/counsel to selectrum/consult/embark" for now See https://github.com/oantolin/embark/issues/108 This reverts commit 90b8fd24756e9953d47dce7217b379038a623740. --- init.el | 3 +- lisp/init-ivy.el | 88 ++++++++++++++++++++++++++++++++++++++++++ lisp/init-selectrum.el | 45 --------------------- lisp/init-smex.el | 12 ++++++ 4 files changed, 102 insertions(+), 46 deletions(-) create mode 100644 lisp/init-ivy.el delete mode 100644 lisp/init-selectrum.el create mode 100644 lisp/init-smex.el diff --git a/init.el b/init.el index 98f3f86501..048d47f430 100644 --- a/init.el +++ b/init.el @@ -66,7 +66,8 @@ (require 'init-flycheck) (require 'init-recentf) -(require 'init-selectrum) +(require 'init-smex) +(require 'init-ivy) (require 'init-hippie-expand) (require 'init-company) (require 'init-windows) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el new file mode 100644 index 0000000000..a87fa9a63c --- /dev/null +++ b/lisp/init-ivy.el @@ -0,0 +1,88 @@ +;;; init-ivy.el --- Use ivy for minibuffer completion and more -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +(when (maybe-require-package 'ivy) + (add-hook 'after-init-hook 'ivy-mode) + (with-eval-after-load 'ivy + (setq-default ivy-use-virtual-buffers t + ivy-virtual-abbreviate 'fullpath + ivy-count-format "" + projectile-completion-system 'ivy + ivy-magic-tilde nil + ivy-dynamic-exhibit-delay-ms 150 + ivy-use-selectable-prompt t) + + ;; IDO-style directory navigation + (define-key ivy-minibuffer-map (kbd "RET") #'ivy-alt-done) + (dolist (k '("C-j" "C-RET")) + (define-key ivy-minibuffer-map (kbd k) #'ivy-immediate-done)) + + (define-key ivy-minibuffer-map (kbd "") #'ivy-previous-line-or-history) + (define-key ivy-minibuffer-map (kbd "") #'ivy-next-line-or-history) + + (define-key ivy-occur-mode-map (kbd "C-c C-q") #'ivy-wgrep-change-to-wgrep-mode) + + (when (maybe-require-package 'diminish) + (diminish 'ivy-mode))) + (when (maybe-require-package 'ivy-rich) + (setq ivy-virtual-abbreviate 'abbreviate + ivy-rich-switch-buffer-align-virtual-buffer nil + ivy-rich-path-style 'abbrev) + (with-eval-after-load 'ivy + (setcdr (assq t ivy-format-functions-alist) #'ivy-format-function-line)) + (add-hook 'ivy-mode-hook (lambda () (ivy-rich-mode ivy-mode))))) + +(when (maybe-require-package 'counsel) + (setq-default counsel-mode-override-describe-bindings t) + (with-eval-after-load 'counsel + (setq-default ivy-initial-inputs-alist + '((Man-completion-table . "^") + (woman . "^"))) + ;; I prefer the default behaviour or cycling in place, or + ;; explicit use of browse-kill-ring + (define-key counsel-mode-map [remap yank-pop] nil)) + (when (maybe-require-package 'diminish) + (with-eval-after-load 'counsel + (diminish 'counsel-mode))) + (add-hook 'after-init-hook 'counsel-mode) + + (when (maybe-require-package 'projectile) + (let ((search-function + (cond + ((executable-find "rg") 'counsel-rg) + ((executable-find "ag") 'counsel-ag) + ((executable-find "pt") 'counsel-pt) + ((executable-find "ack") 'counsel-ack)))) + (when search-function + (defun sanityinc/counsel-search-project (initial-input &optional use-current-dir) + "Search using `counsel-rg' or similar from the project root for INITIAL-INPUT. +If there is no project root, or if the prefix argument +USE-CURRENT-DIR is set, then search from the current directory +instead." + (interactive (list (let ((sym (thing-at-point 'symbol))) + (when sym (regexp-quote sym))) + current-prefix-arg)) + (let ((current-prefix-arg) + (dir (if use-current-dir + default-directory + (condition-case err + (projectile-project-root) + (error default-directory))))) + (funcall search-function initial-input dir))))) + (with-eval-after-load 'ivy + (add-to-list 'ivy-height-alist (cons 'counsel-ag 20))) + (global-set-key (kbd "M-?") 'sanityinc/counsel-search-project))) + + +(when (maybe-require-package 'swiper) + (with-eval-after-load 'ivy + (define-key ivy-mode-map (kbd "M-s /") 'swiper-thing-at-point))) + + +(when (maybe-require-package 'ivy-xref) + (setq xref-show-xrefs-function 'ivy-xref-show-xrefs)) + + +(provide 'init-ivy) +;;; init-ivy.el ends here diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el deleted file mode 100644 index e5f4470148..0000000000 --- a/lisp/init-selectrum.el +++ /dev/null @@ -1,45 +0,0 @@ -;;; init-selectrum.el --- Config for selectrum -*- lexical-binding: t; -*- -;;; Commentary: -;;; Code: - -(when (maybe-require-package 'orderless) - (setq completion-styles '(orderless))) - -(when (require-package 'selectrum) - (add-hook 'after-init-hook (lambda () (selectrum-mode 1))) - - (when (maybe-require-package 'selectrum-prescient) - (require 'prescient) - (prescient-persist-mode 1) - (selectrum-prescient-mode 1) - (global-set-key [remap execute-extended-command] nil) - (global-set-key [remap execute-extended-command] 'execute-extended-command)) - - ;;(defun sanityinc/read-buffer-function (prompt &optional def require-match predicate)) - - (when (maybe-require-package 'embark) - (define-key selectrum-minibuffer-map (kbd "C-c C-o") 'embark-export) - (define-key selectrum-minibuffer-map (kbd "C-c C-c") 'embark-act)) - - (when (maybe-require-package 'consult) - (when (maybe-require-package 'projectile) - (setq-default consult-project-root-function 'projectile-project-root)) - - (when (executable-find "rg") - (global-set-key (kbd "M-?") 'consult-ripgrep)) - (global-set-key [remap switch-to-buffer] 'consult-buffer) - (global-set-key [remap switch-to-buffer-other-window] 'consult-buffer-other-window) - (global-set-key [remap switch-to-buffer-other-frame] 'consult-buffer-other-frame) - (maybe-require-package 'embark-consult) ) - - (maybe-require-package 'consult-flycheck) - - (when (maybe-require-package 'marginalia) - (add-hook 'after-init-hook (lambda () (marginalia-mode 1))) - (setq-default marginalia-annotators '(marginalia-annotators-heavy))) - ) - - - -(provide 'init-selectrum) -;;; init-selectrum.el ends here diff --git a/lisp/init-smex.el b/lisp/init-smex.el new file mode 100644 index 0000000000..640f342dae --- /dev/null +++ b/lisp/init-smex.el @@ -0,0 +1,12 @@ +;;; init-smex.el --- Use smex to improve M-x -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +;; Use smex to handle M-x +(when (maybe-require-package 'smex) + ;; Change path for ~/.smex-items + (setq-default smex-save-file (expand-file-name ".smex-items" user-emacs-directory)) + (global-set-key [remap execute-extended-command] 'smex)) + +(provide 'init-smex) +;;; init-smex.el ends here From cd2be4d6a663cb0410b8206ea23594d04981da44 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 15 Jan 2021 11:40:04 +1300 Subject: [PATCH 208/418] Switch from ivy+counsel+smex to selectrum+consult+embark+prescient This is a relatively big change in terms of user experience, but should be largely familiar to counsel/ivy users. Existing users may find that counsel-mode and ivy-mode stay activated due to desktop-save-mode, which could lead to confusion: these modes should be deactivated and can, ultimately, be uninstalled. --- init.el | 3 +- lisp/init-ivy.el | 88 ------------------------------------------ lisp/init-selectrum.el | 48 +++++++++++++++++++++++ lisp/init-smex.el | 12 ------ 4 files changed, 49 insertions(+), 102 deletions(-) delete mode 100644 lisp/init-ivy.el create mode 100644 lisp/init-selectrum.el delete mode 100644 lisp/init-smex.el diff --git a/init.el b/init.el index 048d47f430..98f3f86501 100644 --- a/init.el +++ b/init.el @@ -66,8 +66,7 @@ (require 'init-flycheck) (require 'init-recentf) -(require 'init-smex) -(require 'init-ivy) +(require 'init-selectrum) (require 'init-hippie-expand) (require 'init-company) (require 'init-windows) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el deleted file mode 100644 index a87fa9a63c..0000000000 --- a/lisp/init-ivy.el +++ /dev/null @@ -1,88 +0,0 @@ -;;; init-ivy.el --- Use ivy for minibuffer completion and more -*- lexical-binding: t -*- -;;; Commentary: -;;; Code: - -(when (maybe-require-package 'ivy) - (add-hook 'after-init-hook 'ivy-mode) - (with-eval-after-load 'ivy - (setq-default ivy-use-virtual-buffers t - ivy-virtual-abbreviate 'fullpath - ivy-count-format "" - projectile-completion-system 'ivy - ivy-magic-tilde nil - ivy-dynamic-exhibit-delay-ms 150 - ivy-use-selectable-prompt t) - - ;; IDO-style directory navigation - (define-key ivy-minibuffer-map (kbd "RET") #'ivy-alt-done) - (dolist (k '("C-j" "C-RET")) - (define-key ivy-minibuffer-map (kbd k) #'ivy-immediate-done)) - - (define-key ivy-minibuffer-map (kbd "") #'ivy-previous-line-or-history) - (define-key ivy-minibuffer-map (kbd "") #'ivy-next-line-or-history) - - (define-key ivy-occur-mode-map (kbd "C-c C-q") #'ivy-wgrep-change-to-wgrep-mode) - - (when (maybe-require-package 'diminish) - (diminish 'ivy-mode))) - (when (maybe-require-package 'ivy-rich) - (setq ivy-virtual-abbreviate 'abbreviate - ivy-rich-switch-buffer-align-virtual-buffer nil - ivy-rich-path-style 'abbrev) - (with-eval-after-load 'ivy - (setcdr (assq t ivy-format-functions-alist) #'ivy-format-function-line)) - (add-hook 'ivy-mode-hook (lambda () (ivy-rich-mode ivy-mode))))) - -(when (maybe-require-package 'counsel) - (setq-default counsel-mode-override-describe-bindings t) - (with-eval-after-load 'counsel - (setq-default ivy-initial-inputs-alist - '((Man-completion-table . "^") - (woman . "^"))) - ;; I prefer the default behaviour or cycling in place, or - ;; explicit use of browse-kill-ring - (define-key counsel-mode-map [remap yank-pop] nil)) - (when (maybe-require-package 'diminish) - (with-eval-after-load 'counsel - (diminish 'counsel-mode))) - (add-hook 'after-init-hook 'counsel-mode) - - (when (maybe-require-package 'projectile) - (let ((search-function - (cond - ((executable-find "rg") 'counsel-rg) - ((executable-find "ag") 'counsel-ag) - ((executable-find "pt") 'counsel-pt) - ((executable-find "ack") 'counsel-ack)))) - (when search-function - (defun sanityinc/counsel-search-project (initial-input &optional use-current-dir) - "Search using `counsel-rg' or similar from the project root for INITIAL-INPUT. -If there is no project root, or if the prefix argument -USE-CURRENT-DIR is set, then search from the current directory -instead." - (interactive (list (let ((sym (thing-at-point 'symbol))) - (when sym (regexp-quote sym))) - current-prefix-arg)) - (let ((current-prefix-arg) - (dir (if use-current-dir - default-directory - (condition-case err - (projectile-project-root) - (error default-directory))))) - (funcall search-function initial-input dir))))) - (with-eval-after-load 'ivy - (add-to-list 'ivy-height-alist (cons 'counsel-ag 20))) - (global-set-key (kbd "M-?") 'sanityinc/counsel-search-project))) - - -(when (maybe-require-package 'swiper) - (with-eval-after-load 'ivy - (define-key ivy-mode-map (kbd "M-s /") 'swiper-thing-at-point))) - - -(when (maybe-require-package 'ivy-xref) - (setq xref-show-xrefs-function 'ivy-xref-show-xrefs)) - - -(provide 'init-ivy) -;;; init-ivy.el ends here diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el new file mode 100644 index 0000000000..12be908730 --- /dev/null +++ b/lisp/init-selectrum.el @@ -0,0 +1,48 @@ +;;; init-selectrum.el --- Config for selectrum -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: + +(when (maybe-require-package 'orderless) + (setq completion-styles '(orderless))) + +(when (require-package 'selectrum) + (add-hook 'after-init-hook 'selectrum-mode) + + (when (maybe-require-package 'selectrum-prescient) + (require 'prescient) + (prescient-persist-mode 1) + (selectrum-prescient-mode 1) + (global-set-key [remap execute-extended-command] nil) + (global-set-key [remap execute-extended-command] 'execute-extended-command)) + + ;;(defun sanityinc/read-buffer-function (prompt &optional def require-match predicate)) + + (when (maybe-require-package 'embark) + (define-key selectrum-minibuffer-map (kbd "C-c C-o") 'embark-export) + (define-key selectrum-minibuffer-map (kbd "C-c C-c") 'embark-act)) + + (when (maybe-require-package 'consult) + (when (maybe-require-package 'projectile) + (setq-default consult-project-root-function 'projectile-project-root)) + + (when (executable-find "rg") + (global-set-key (kbd "M-?") 'consult-ripgrep)) + (global-set-key [remap switch-to-buffer] 'consult-buffer) + (global-set-key [remap switch-to-buffer-other-window] 'consult-buffer-other-window) + (global-set-key [remap switch-to-buffer-other-frame] 'consult-buffer-other-frame) + (when (maybe-require-package 'embark-consult) + (with-eval-after-load 'embark + (add-hook 'embark-collect-mode-hook 'embark-consult-preview-minor-mode) + (with-eval-after-load 'consult + (require 'embark-consult))))) + + (maybe-require-package 'consult-flycheck) + + (when (maybe-require-package 'marginalia) + (add-hook 'after-init-hook 'marginalia-mode) + (setq-default marginalia-annotators '(marginalia-annotators-heavy)))) + + + +(provide 'init-selectrum) +;;; init-selectrum.el ends here diff --git a/lisp/init-smex.el b/lisp/init-smex.el deleted file mode 100644 index 640f342dae..0000000000 --- a/lisp/init-smex.el +++ /dev/null @@ -1,12 +0,0 @@ -;;; init-smex.el --- Use smex to improve M-x -*- lexical-binding: t -*- -;;; Commentary: -;;; Code: - -;; Use smex to handle M-x -(when (maybe-require-package 'smex) - ;; Change path for ~/.smex-items - (setq-default smex-save-file (expand-file-name ".smex-items" user-emacs-directory)) - (global-set-key [remap execute-extended-command] 'smex)) - -(provide 'init-smex) -;;; init-smex.el ends here From 99961e1170eb84b19a896753102c3d7179dff6ce Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 15 Jan 2021 11:56:06 +1300 Subject: [PATCH 209/418] Don't restore counsel-mode or ivy-mode via desktop.el --- lisp/init-selectrum.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index 12be908730..cc2239646b 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -42,7 +42,11 @@ (add-hook 'after-init-hook 'marginalia-mode) (setq-default marginalia-annotators '(marginalia-annotators-heavy)))) - +(with-eval-after-load 'desktop + ;; Try to prevent old minibuffer completion system being reactivated in + ;; buffers restored via desktop.el + (push (cons 'counsel-mode nil) desktop-minor-mode-table) + (push (cons 'ivy-mode nil) desktop-minor-mode-table)) (provide 'init-selectrum) ;;; init-selectrum.el ends here From c59be0ab729341b7d3b5a3e99552d3d6a55c722d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 15 Jan 2021 13:21:51 +1300 Subject: [PATCH 210/418] Remove commented-out cruft --- lisp/init-selectrum.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index cc2239646b..ec0104edd1 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -15,8 +15,6 @@ (global-set-key [remap execute-extended-command] nil) (global-set-key [remap execute-extended-command] 'execute-extended-command)) - ;;(defun sanityinc/read-buffer-function (prompt &optional def require-match predicate)) - (when (maybe-require-package 'embark) (define-key selectrum-minibuffer-map (kbd "C-c C-o") 'embark-export) (define-key selectrum-minibuffer-map (kbd "C-c C-c") 'embark-act)) From a2d8d6e9160fa2f47b6388d56916cc81df5064bb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 15 Jan 2021 14:55:38 +1300 Subject: [PATCH 211/418] Trim unnecessary parts out of selectrum config Thanks @minad, @oantolin --- lisp/init-selectrum.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index ec0104edd1..fc6b246302 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -2,8 +2,6 @@ ;;; Commentary: ;;; Code: -(when (maybe-require-package 'orderless) - (setq completion-styles '(orderless))) (when (require-package 'selectrum) (add-hook 'after-init-hook 'selectrum-mode) @@ -12,7 +10,6 @@ (require 'prescient) (prescient-persist-mode 1) (selectrum-prescient-mode 1) - (global-set-key [remap execute-extended-command] nil) (global-set-key [remap execute-extended-command] 'execute-extended-command)) (when (maybe-require-package 'embark) From 0aac95b36583afffc35cab3a4f05ba5f0f3551b3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 15 Jan 2021 14:57:56 +1300 Subject: [PATCH 212/418] For conditionals, need `maybe-require-package` --- lisp/init-selectrum.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index fc6b246302..287e28f70c 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -3,7 +3,7 @@ ;;; Code: -(when (require-package 'selectrum) +(when (maybe-require-package 'selectrum) (add-hook 'after-init-hook 'selectrum-mode) (when (maybe-require-package 'selectrum-prescient) From 0e9861dedf2a5dcba5ba71d59873ccfd4c89afff Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 15 Jan 2021 15:40:31 +1300 Subject: [PATCH 213/418] Default to embark-act-noexit --- lisp/init-selectrum.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index 287e28f70c..bcee0b174f 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -14,7 +14,7 @@ (when (maybe-require-package 'embark) (define-key selectrum-minibuffer-map (kbd "C-c C-o") 'embark-export) - (define-key selectrum-minibuffer-map (kbd "C-c C-c") 'embark-act)) + (define-key selectrum-minibuffer-map (kbd "C-c C-c") 'embark-act-noexit)) (when (maybe-require-package 'consult) (when (maybe-require-package 'projectile) From 23c40e6078390b49a0ff48e9b66ab8e534d97dd1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 15 Jan 2021 15:40:45 +1300 Subject: [PATCH 214/418] Fix config for embark-consult --- lisp/init-selectrum.el | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index bcee0b174f..ebcecacf19 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -27,9 +27,8 @@ (global-set-key [remap switch-to-buffer-other-frame] 'consult-buffer-other-frame) (when (maybe-require-package 'embark-consult) (with-eval-after-load 'embark - (add-hook 'embark-collect-mode-hook 'embark-consult-preview-minor-mode) - (with-eval-after-load 'consult - (require 'embark-consult))))) + (require 'embark-consult) + (add-hook 'embark-collect-mode-hook 'embark-consult-preview-minor-mode)))) (maybe-require-package 'consult-flycheck) From a423aab174d8bb65f71397ec28ecaa273ae6a722 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 26 Jan 2021 17:44:30 +1300 Subject: [PATCH 215/418] Provide sanityinc/consult-ripgrep-at-point for M-? binding --- lisp/init-selectrum.el | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index ebcecacf19..0680708375 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -21,20 +21,24 @@ (setq-default consult-project-root-function 'projectile-project-root)) (when (executable-find "rg") - (global-set-key (kbd "M-?") 'consult-ripgrep)) + (defun sanityinc/consult-ripgrep-at-point (&optional dir initial) + (interactive (list prefix-arg (let ((s (symbol-at-point))) + (when s (symbol-name s))))) + (consult-ripgrep dir initial))) + (global-set-key (kbd "M-?") 'sanityinc/consult-ripgrep-at-point) (global-set-key [remap switch-to-buffer] 'consult-buffer) (global-set-key [remap switch-to-buffer-other-window] 'consult-buffer-other-window) (global-set-key [remap switch-to-buffer-other-frame] 'consult-buffer-other-frame) (when (maybe-require-package 'embark-consult) (with-eval-after-load 'embark (require 'embark-consult) - (add-hook 'embark-collect-mode-hook 'embark-consult-preview-minor-mode)))) + (add-hook 'embark-collect-mode-hook 'embark-consult-preview-minor-mode))) - (maybe-require-package 'consult-flycheck) + (maybe-require-package 'consult-flycheck))) - (when (maybe-require-package 'marginalia) - (add-hook 'after-init-hook 'marginalia-mode) - (setq-default marginalia-annotators '(marginalia-annotators-heavy)))) +(when (maybe-require-package 'marginalia) + (add-hook 'after-init-hook 'marginalia-mode) + (setq-default marginalia-annotators '(marginalia-annotators-heavy))) (with-eval-after-load 'desktop ;; Try to prevent old minibuffer completion system being reactivated in From a238c395aa182b69b7118ce21a9c0dcb9322e54e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 26 Jan 2021 17:44:59 +1300 Subject: [PATCH 216/418] Disable some auto-compile cleanup to minimise org startup time --- lisp/init-lisp.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index b8f8adfe70..5e11561228 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -129,6 +129,7 @@ there is no current file, eval the current buffer." ;; Automatic byte compilation ;; ---------------------------------------------------------------------------- (when (maybe-require-package 'auto-compile) + (setq auto-compile-delete-stray-dest nil) (add-hook 'after-init-hook 'auto-compile-on-save-mode) (add-hook 'after-init-hook 'auto-compile-on-load-mode)) From 640d0afe6963adfcad55d4b76ece0fdfea6aa585 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 9 Feb 2021 15:28:50 +1300 Subject: [PATCH 217/418] embark-act-noexit has been removed upstream Fixes #768 --- lisp/init-selectrum.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index 0680708375..cd440ee111 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -14,7 +14,7 @@ (when (maybe-require-package 'embark) (define-key selectrum-minibuffer-map (kbd "C-c C-o") 'embark-export) - (define-key selectrum-minibuffer-map (kbd "C-c C-c") 'embark-act-noexit)) + (define-key selectrum-minibuffer-map (kbd "C-c C-c") 'embark-act)) (when (maybe-require-package 'consult) (when (maybe-require-package 'projectile) From 18816a9ffbc4b607d9b2409fa6775996573b3c76 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 17 Feb 2021 15:51:47 +1300 Subject: [PATCH 218/418] Allow require-package to upgrade a package if min-version given See #771 --- lisp/init-elpa.el | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index f0b1ae6751..47f58eb0de 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -34,13 +34,16 @@ If NO-REFRESH is non-nil, the available package lists will not be re-downloaded in order to locate PACKAGE." (or (package-installed-p package min-version) (let* ((known (cdr (assoc package package-archive-contents))) - (versions (mapcar #'package-desc-version known))) - (if (cl-some (lambda (v) (version-list-<= min-version v)) versions) - (package-install package) + (best (car (sort known (lambda (a b) + (version-list-<= (package-desc-version b) + (package-desc-version a))))))) + (if (and best (version-list-<= min-version (package-desc-version best))) + (package-install best) (if no-refresh (error "No version of %s >= %S is available" package min-version) (package-refresh-contents) - (require-package package min-version t)))))) + (require-package package min-version t))) + (package-installed-p package min-version)))) (defun maybe-require-package (package &optional min-version no-refresh) "Try to install PACKAGE, and return non-nil if successful. From e78c2b9bbea4913a8b52a4c923c0ff3419ca58c4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 22 Feb 2021 14:20:33 +1300 Subject: [PATCH 219/418] Workaround for company menu with page-break-lines is now redundant --- lisp/init-company.el | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index 84c0a74997..2c4037abae 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -28,24 +28,6 @@ (when (maybe-require-package 'company-quickhelp) (add-hook 'after-init-hook 'company-quickhelp-mode))) -;; Suspend page-break-lines-mode while company menu is active -;; (see https://github.com/company-mode/company-mode/issues/416) -(with-eval-after-load 'company - (with-eval-after-load 'page-break-lines - (defvar-local sanityinc/page-break-lines-on-p nil) - - (defun sanityinc/page-break-lines-disable (&rest ignore) - (when (setq sanityinc/page-break-lines-on-p (bound-and-true-p page-break-lines-mode)) - (page-break-lines-mode -1))) - - (defun sanityinc/page-break-lines-maybe-reenable (&rest ignore) - (when sanityinc/page-break-lines-on-p - (page-break-lines-mode 1))) - - (add-hook 'company-completion-started-hook 'sanityinc/page-break-lines-disable) - (add-hook 'company-after-completion-hook 'sanityinc/page-break-lines-maybe-reenable))) - - (provide 'init-company) ;;; init-company.el ends here From ed119437dfbe063de25965a9ae0eb7e6c50caa44 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 23 Feb 2021 11:26:39 +1300 Subject: [PATCH 220/418] Work around selectrum minibuffer height issue See #773 See https://github.com/raxod502/selectrum/issues/435 --- lisp/init-selectrum.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index cd440ee111..76cdcc6e9f 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -5,6 +5,7 @@ (when (maybe-require-package 'selectrum) (add-hook 'after-init-hook 'selectrum-mode) + (setq-default selectrum-fix-vertical-window-height t) (when (maybe-require-package 'selectrum-prescient) (require 'prescient) From c53fc4ff2ee3b31ec6921d391131a7f372f79b6d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 4 Mar 2021 13:22:33 +1300 Subject: [PATCH 221/418] Add support for ocaml's "dune" build tool --- lisp/init-ocaml.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/init-ocaml.el b/lisp/init-ocaml.el index 7c616094a3..9720867eeb 100644 --- a/lisp/init-ocaml.el +++ b/lisp/init-ocaml.el @@ -45,6 +45,8 @@ (define-key tuareg-mode-map (kbd "C-c C-z") 'sanityinc/tuareg-repl-switch) (define-key tuareg-interactive-mode-map (kbd "C-c C-z") 'sanityinc/tuareg-repl-switch-back))) +(maybe-require-package 'dune) + (when (maybe-require-package 'reformatter) (defcustom ocp-indent-args nil "Arguments for \"ocp-indent\" invocation.") @@ -52,7 +54,12 @@ (reformatter-define ocp-indent :program "ocp-indent" :args ocp-indent-args - :lighter " OCP")) + :lighter " OCP") + + (reformatter-define dune-format + :program "dune" + :args '("format-dune-file") + :lighter " DuneFmt")) (provide 'init-ocaml) From 61fb6047abdd578774008c256cd0a7f2066403f0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 13 Mar 2021 11:37:27 +1300 Subject: [PATCH 222/418] Update note about using pyvenv, see #774 --- lisp/init-python.el | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lisp/init-python.el b/lisp/init-python.el index 8b14dd0500..7ad5f81dac 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -2,10 +2,9 @@ ;;; Commentary: ;;; Code: - -;; See the following note about how I set up python + virtualenv to -;; work seamlessly with Emacs: -;; https://gist.github.com/purcell/81f76c50a42eee710dcfc9a14bfc7240 +;; I use nix + direnv instead of virtualenv/pyenv/pyvenv, and it is an +;; approach which extends to other languages too. I recorded a +;; screencast about this: https://www.youtube.com/watch?v=TbIHRHy7_JM (setq auto-mode-alist From 5f324a707647b98aa2cca993189b8a20a00995b9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 13 Mar 2021 12:34:11 +1300 Subject: [PATCH 223/418] Pre-declare url-show-status var in startup script Aiming to prevent this in Emacs 28: Debugger entered--Lisp error: (error "Defining as dynamic an already lexical var") internal--define-uninitialized-variable(url-show-status "Whether to show a running total of bytes transferr...") --- test-startup.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test-startup.sh b/test-startup.sh index c5b29d653c..3d3d83c329 100755 --- a/test-startup.sh +++ b/test-startup.sh @@ -1,11 +1,13 @@ #!/bin/sh -e echo "Attempting startup..." ${EMACS:=emacs} -nw --batch \ - --eval '(let ((debug-on-error t) + --eval '(progn + (defvar url-show-status) + (let ((debug-on-error t) (url-show-status nil) (user-emacs-directory default-directory) (user-init-file (expand-file-name "init.el")) (load-path (delq default-directory load-path))) (load-file user-init-file) - (run-hooks (quote after-init-hook)))' + (run-hooks (quote after-init-hook))))' echo "Startup successful" From 0cd0ca857f3ee863f202b66df78a7a0e7c488e8e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 16 Mar 2021 13:32:42 +1300 Subject: [PATCH 224/418] Zap-up-to-char has been autoloaded for 5 years now --- lisp/init-editing-utils.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 0cc9bd3717..c00d8b4c8c 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -130,8 +130,6 @@ ;;; Zap *up* to char is a handy pair for zap-to-char - -(autoload 'zap-up-to-char "misc" "Kill up to, but not including ARGth occurrence of CHAR.") (global-set-key (kbd "M-Z") 'zap-up-to-char) From 9f506ab520f2f6ec3fae44a27a864ee5e0d24af0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 16 Mar 2021 13:33:05 +1300 Subject: [PATCH 225/418] move-dup commands have been renamed --- lisp/init-editing-utils.el | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index c00d8b4c8c..6d75dcc532 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -203,13 +203,13 @@ ;; use M-S-up and M-S-down, which will work even in lisp modes. (require-package 'move-dup) -(global-set-key [M-up] 'md-move-lines-up) -(global-set-key [M-down] 'md-move-lines-down) -(global-set-key [M-S-up] 'md-move-lines-up) -(global-set-key [M-S-down] 'md-move-lines-down) +(global-set-key [M-up] 'move-dup-move-lines-up) +(global-set-key [M-down] 'move-dup-move-lines-down) +(global-set-key [M-S-up] 'move-dup-move-lines-up) +(global-set-key [M-S-down] 'move-dup-move-lines-down) -(global-set-key (kbd "C-c d") 'md-duplicate-down) -(global-set-key (kbd "C-c u") 'md-duplicate-up) +(global-set-key (kbd "C-c d") 'move-dup-duplicate-down) +(global-set-key (kbd "C-c u") 'move-dup-duplicate-up) ;;; Fix backward-up-list to understand quotes, see http://bit.ly/h7mdIL From 2f068fc36653353e2ccea10d21628583a6333160 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 29 Mar 2021 15:18:29 +1300 Subject: [PATCH 226/418] Support company margin icons --- lisp/init-company.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/init-company.el b/lisp/init-company.el index 2c4037abae..77d4b76583 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -14,6 +14,12 @@ (dolist (backend '(company-eclim company-semantic)) (delq backend company-backends)) (diminish 'company-mode) + (defun sanityinc/company-icons-margin-auto (&rest args) + (apply (if (eq 'dark (frame-parameter nil 'background-mode)) + #'company-vscode-dark-icons-margin + #'company-vscode-light-icons-margin) + args)) + (setq company-format-margin-function #'sanityinc/company-icons-margin-auto) (define-key company-mode-map (kbd "M-/") 'company-complete) (define-key company-mode-map [remap completion-at-point] 'company-complete) (define-key company-mode-map [remap indent-for-tab-command] 'company-indent-or-complete-common) From 0b5c4b530e0fe1a6de4f15445619d44100a8c950 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 31 Mar 2021 13:03:30 +1300 Subject: [PATCH 227/418] Prefer consult-goto-line to goto-line-preview --- lisp/init-editing-utils.el | 9 --------- lisp/init-selectrum.el | 1 + 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 6d75dcc532..3128243d75 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -96,15 +96,6 @@ (setq-default display-line-numbers-width 3) (add-hook 'prog-mode-hook 'display-line-numbers-mode)) -(when (maybe-require-package 'goto-line-preview) - (global-set-key [remap goto-line] 'goto-line-preview) - - (when (fboundp 'display-line-numbers-mode) - (defun sanityinc/with-display-line-numbers (f &rest args) - (let ((display-line-numbers t)) - (apply f args))) - (advice-add 'goto-line-preview :around #'sanityinc/with-display-line-numbers))) - (when (boundp 'display-fill-column-indicator) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index 76cdcc6e9f..a878223038 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -30,6 +30,7 @@ (global-set-key [remap switch-to-buffer] 'consult-buffer) (global-set-key [remap switch-to-buffer-other-window] 'consult-buffer-other-window) (global-set-key [remap switch-to-buffer-other-frame] 'consult-buffer-other-frame) + (global-set-key [remap goto-line] 'consult-goto-line) (when (maybe-require-package 'embark-consult) (with-eval-after-load 'embark (require 'embark-consult) From 90aef2612e3e5f9ac79f0e17b50ceb61936a563b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 31 Mar 2021 13:42:52 +1300 Subject: [PATCH 228/418] Add Emacs 27.2 to CI --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 17072d257b..6d51a7b20f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,10 +21,11 @@ jobs: - 26.2 - 26.3 - 27.1 + - 27.2 - snapshot include: - os: macos-latest - emacs_version: 27.1 + emacs_version: 27.2 steps: - uses: purcell/setup-emacs@master with: From 130b24ecb6f97155b2ec20654697c774d85fc0eb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 1 Apr 2021 13:25:17 +1300 Subject: [PATCH 229/418] Tweaks to consult config --- lisp/init-selectrum.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index a878223038..058367e61c 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -23,14 +23,15 @@ (when (executable-find "rg") (defun sanityinc/consult-ripgrep-at-point (&optional dir initial) - (interactive (list prefix-arg (let ((s (symbol-at-point))) - (when s (symbol-name s))))) + (interactive (list prefix-arg (when-let ((s (symbol-at-point))) + (symbol-name s)))) (consult-ripgrep dir initial))) (global-set-key (kbd "M-?") 'sanityinc/consult-ripgrep-at-point) (global-set-key [remap switch-to-buffer] 'consult-buffer) (global-set-key [remap switch-to-buffer-other-window] 'consult-buffer-other-window) (global-set-key [remap switch-to-buffer-other-frame] 'consult-buffer-other-frame) (global-set-key [remap goto-line] 'consult-goto-line) + (global-set-key [remap yank-pop] 'consult-yank-replace) (when (maybe-require-package 'embark-consult) (with-eval-after-load 'embark (require 'embark-consult) From f36c1db8ce0f7e427b240aa8fbfaeff49b5593bb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 12 Apr 2021 13:05:19 +1200 Subject: [PATCH 230/418] Use new dune-format package extracted from this config --- lisp/init-ocaml.el | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lisp/init-ocaml.el b/lisp/init-ocaml.el index 9720867eeb..5bdca0bcc1 100644 --- a/lisp/init-ocaml.el +++ b/lisp/init-ocaml.el @@ -45,8 +45,10 @@ (define-key tuareg-mode-map (kbd "C-c C-z") 'sanityinc/tuareg-repl-switch) (define-key tuareg-interactive-mode-map (kbd "C-c C-z") 'sanityinc/tuareg-repl-switch-back))) -(maybe-require-package 'dune) +(when (maybe-require-package 'dune) + (maybe-require-package 'dune-format)) +;; Add my own lightweight ocp-indent reformatter, instead of the clunky upstream package (when (maybe-require-package 'reformatter) (defcustom ocp-indent-args nil "Arguments for \"ocp-indent\" invocation.") @@ -54,12 +56,7 @@ (reformatter-define ocp-indent :program "ocp-indent" :args ocp-indent-args - :lighter " OCP") - - (reformatter-define dune-format - :program "dune" - :args '("format-dune-file") - :lighter " DuneFmt")) + :lighter " OCP")) (provide 'init-ocaml) From 476728fadee8c063f0ae1749760bfcaa18958c60 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 12 Apr 2021 13:08:25 +1200 Subject: [PATCH 231/418] Remove defunct company-elm package --- lisp/init-elm.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-elm.el b/lisp/init-elm.el index 2251660324..1548210a03 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -5,8 +5,6 @@ (when (maybe-require-package 'elm-mode) (with-eval-after-load 'elm-mode (diminish 'elm-indent-mode) - (with-eval-after-load 'company - (add-to-list 'company-backends 'company-elm)) (when (executable-find "elm-format") (setq-default elm-format-on-save t))) (maybe-require-package 'elm-test-runner) From cde8b07752a7517bc6cce176ac55af4919f4f5b1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 12 Apr 2021 13:17:06 +1200 Subject: [PATCH 232/418] Divide code sections consistently --- init.el | 29 ++++++++--------------------- lisp/init-gui-frames.el | 12 ++++++------ lisp/init-javascript.el | 6 ++---- lisp/init-lisp.el | 18 ++++++++---------- lisp/init-misc.el | 4 ++-- lisp/init-mmm.el | 3 --- lisp/init-nxml.el | 3 +-- lisp/init-ruby.el | 3 +-- lisp/init-sessions.el | 4 ++-- lisp/init-themes.el | 4 ++-- lisp/init-uniquify.el | 2 -- lisp/init-utils.el | 19 +++++++++---------- lisp/init-windows.el | 15 ++++++++------- 13 files changed, 49 insertions(+), 73 deletions(-) diff --git a/init.el b/init.el index 98f3f86501..fc2150b500 100644 --- a/init.el +++ b/init.el @@ -21,18 +21,19 @@ (defconst *spell-check-support-enabled* nil) ;; Enable with t if you prefer (defconst *is-a-mac* (eq system-type 'darwin)) -;;---------------------------------------------------------------------------- + ;; Adjust garbage collection thresholds during startup, and thereafter -;;---------------------------------------------------------------------------- + (let ((normal-gc-cons-threshold (* 20 1024 1024)) (init-gc-cons-threshold (* 128 1024 1024))) (setq gc-cons-threshold init-gc-cons-threshold) (add-hook 'emacs-startup-hook (lambda () (setq gc-cons-threshold normal-gc-cons-threshold)))) -;;---------------------------------------------------------------------------- + ;; Bootstrap config -;;---------------------------------------------------------------------------- + + (setq custom-file (expand-file-name "custom.el" user-emacs-directory)) (require 'init-utils) (require 'init-site-lisp) ;; Must come before elpa, as it may provide package.el @@ -40,15 +41,11 @@ (require 'init-elpa) ;; Machinery for installing required packages (require 'init-exec-path) ;; Set up $PATH -;;---------------------------------------------------------------------------- + ;; Allow users to provide an optional "init-preload-local.el" -;;---------------------------------------------------------------------------- (require 'init-preload-local nil t) -;;---------------------------------------------------------------------------- ;; Load configs for specific features and modes -;;---------------------------------------------------------------------------- - (require-package 'diminish) (maybe-require-package 'scratch) (require-package 'command-log-mode) @@ -155,35 +152,25 @@ (require 'init-direnv) -;;---------------------------------------------------------------------------- + + ;; Allow access from emacsclient -;;---------------------------------------------------------------------------- (add-hook 'after-init-hook (lambda () (require 'server) (unless (server-running-p) (server-start)))) -;;---------------------------------------------------------------------------- ;; Variables configured via the interactive 'customize' interface -;;---------------------------------------------------------------------------- (when (file-exists-p custom-file) (load custom-file)) - -;;---------------------------------------------------------------------------- ;; Locales (setting them earlier in this file doesn't work in X) -;;---------------------------------------------------------------------------- (require 'init-locales) - -;;---------------------------------------------------------------------------- ;; Allow users to provide an optional "init-local" containing personal settings -;;---------------------------------------------------------------------------- (require 'init-local nil t) - - (provide 'init) ;; Local Variables: diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index e86e80a09b..2e49da8a4d 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -2,9 +2,9 @@ ;;; Commentary: ;;; Code: -;;---------------------------------------------------------------------------- + ;; Stop C-z from minimizing windows under OS X -;;---------------------------------------------------------------------------- + (defun sanityinc/maybe-suspend-frame () (interactive) (unless (and *is-a-mac* window-system) @@ -13,17 +13,17 @@ (global-set-key (kbd "C-z") 'sanityinc/maybe-suspend-frame) -;;---------------------------------------------------------------------------- + ;; Suppress GUI features -;;---------------------------------------------------------------------------- + (setq use-file-dialog nil) (setq use-dialog-box nil) (setq inhibit-startup-screen t) -;;---------------------------------------------------------------------------- + ;; Window size and features -;;---------------------------------------------------------------------------- + (setq-default window-resize-pixelwise t frame-resize-pixelwise t) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 9c20b78128..68fa5f0678 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -76,9 +76,8 @@ (when (fboundp 'coffee-mode) (add-to-list 'auto-mode-alist '("\\.coffee\\.erb\\'" . coffee-mode)))) -;; --------------------------------------------------------------------------- + ;; Run and interact with an inferior JS via js-comint.el -;; --------------------------------------------------------------------------- (when (maybe-require-package 'js-comint) (setq js-comint-program-command "node") @@ -94,9 +93,8 @@ (dolist (hook '(js2-mode-hook js-mode-hook)) (add-hook hook 'inferior-js-keys-mode))) -;; --------------------------------------------------------------------------- + ;; Alternatively, use skewer-mode -;; --------------------------------------------------------------------------- (when (maybe-require-package 'skewer-mode) (with-eval-after-load 'skewer-mode diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 5e11561228..9a4f22436e 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -114,9 +114,8 @@ there is no current file, eval the current buffer." (with-eval-after-load 'ielm (define-key ielm-map (kbd "C-c C-z") 'sanityinc/repl-switch-back)) -;; ---------------------------------------------------------------------------- + ;; Hippie-expand -;; ---------------------------------------------------------------------------- (defun set-up-hippie-expand-for-elisp () "Locally set `hippie-expand' completion functions for use with Emacs Lisp." @@ -125,17 +124,17 @@ there is no current file, eval the current buffer." (add-to-list 'hippie-expand-try-functions-list 'try-complete-lisp-symbol-partially t)) -;; ---------------------------------------------------------------------------- + ;; Automatic byte compilation -;; ---------------------------------------------------------------------------- + (when (maybe-require-package 'auto-compile) (setq auto-compile-delete-stray-dest nil) (add-hook 'after-init-hook 'auto-compile-on-save-mode) (add-hook 'after-init-hook 'auto-compile-on-load-mode)) -;; ---------------------------------------------------------------------------- + ;; Load .el if newer than corresponding .elc -;; ---------------------------------------------------------------------------- + (setq load-prefer-newer t) @@ -160,9 +159,9 @@ there is no current file, eval the current buffer." " "))))) -;; ---------------------------------------------------------------------------- + ;; Enable desired features for all lisp modes -;; ---------------------------------------------------------------------------- + (defun sanityinc/enable-check-parens-on-save () "Run `check-parens' when the current buffer is saved." (add-hook 'after-save-hook #'check-parens nil t)) @@ -211,9 +210,8 @@ there is no current file, eval the current buffer." (with-eval-after-load 'lisp-mode (cl-lib-highlight-initialize)) -;; ---------------------------------------------------------------------------- + ;; Delete .elc files when reverting the .el from VC or magit -;; ---------------------------------------------------------------------------- ;; When .el files are open, we can intercept when they are modified ;; by VC or magit in order to remove .elc files that are likely to diff --git a/lisp/init-misc.el b/lisp/init-misc.el index ed7cca05ea..253c1995de 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -2,9 +2,9 @@ ;;; Commentary: ;;; Code: -;;---------------------------------------------------------------------------- + ;; Misc config - yet to be placed in separate files -;;---------------------------------------------------------------------------- + (add-auto-mode 'tcl-mode "^Portfile\\'") (fset 'yes-or-no-p 'y-or-n-p) diff --git a/lisp/init-mmm.el b/lisp/init-mmm.el index 7bd37bf59e..4cd592fe0d 100644 --- a/lisp/init-mmm.el +++ b/lisp/init-mmm.el @@ -2,9 +2,6 @@ ;;; Commentary: ;;; Code: -;;---------------------------------------------------------------------------- -;; Multiple major modes -;;---------------------------------------------------------------------------- (require-package 'mmm-mode) (require 'mmm-auto) (setq mmm-global-mode 'buffers-with-submode-classes) diff --git a/lisp/init-nxml.el b/lisp/init-nxml.el index 7ebbfb5e99..78b3449eda 100644 --- a/lisp/init-nxml.el +++ b/lisp/init-nxml.el @@ -34,9 +34,8 @@ indentation rules." (nxml-mode) (indent-region beg end))) -;;---------------------------------------------------------------------------- + ;; Integration with tidy for html + xml -;;---------------------------------------------------------------------------- (defun sanityinc/tidy-buffer-xml (beg end) "Run \"tidy -xml\" on the region from BEG to END, or whole buffer." diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index 12c879eca1..d6dd10095b 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -108,9 +108,8 @@ (mmm-add-mode-ext-class mode "\\.js\\.erb\\'" 'erb)) -;;---------------------------------------------------------------------------- + ;; Ruby - my convention for heredocs containing SQL -;;---------------------------------------------------------------------------- ;; (require-package 'mmm-mode) ;; (eval-after-load 'mmm-mode diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index 7b3e3077e0..4d606d3944 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -27,9 +27,9 @@ (abbreviate-file-name filename)))))) (advice-add 'desktop-create-buffer :around 'sanityinc/desktop-time-buffer-create) -;;---------------------------------------------------------------------------- + ;; Restore histories and registers after saving -;;---------------------------------------------------------------------------- + (setq-default history-length 1000) (add-hook 'after-init-hook 'savehist-mode) diff --git a/lisp/init-themes.el b/lisp/init-themes.el index 1ea7f11be6..1ac94c5d8a 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -23,9 +23,9 @@ (add-hook 'after-init-hook 'reapply-themes) -;;------------------------------------------------------------------------------ + ;; Toggle between light and dark -;;------------------------------------------------------------------------------ + (defun light () "Activate a light color theme." (interactive) diff --git a/lisp/init-uniquify.el b/lisp/init-uniquify.el index 3daa06c50d..71fd2706be 100644 --- a/lisp/init-uniquify.el +++ b/lisp/init-uniquify.el @@ -2,9 +2,7 @@ ;;; Commentary: ;;; Code: -;;---------------------------------------------------------------------------- ;; Nicer naming of buffers for files with identical names -;;---------------------------------------------------------------------------- (require 'uniquify) (setq uniquify-buffer-name-style 'reverse) diff --git a/lisp/init-utils.el b/lisp/init-utils.el index 0bdd8c843f..cff9fab9c1 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -4,9 +4,8 @@ (define-obsolete-function-alias 'after-load 'with-eval-after-load "") -;;---------------------------------------------------------------------------- + ;; Handier way to add modes to auto-mode-alist -;;---------------------------------------------------------------------------- (defun add-auto-mode (mode &rest patterns) "Add entries to `auto-mode-alist' to use `MODE' for all given file `PATTERNS'." (dolist (pattern patterns) @@ -21,9 +20,9 @@ (add-hook (derived-mode-hook-name mode) (apply-partially 'sanityinc/set-major-mode-name name))) -;;---------------------------------------------------------------------------- + ;; String utilities missing from core emacs -;;---------------------------------------------------------------------------- + (defun sanityinc/string-all-matches (regex str &optional group) "Find all matches for `REGEX' within `STR', returning the full match string or group `GROUP'." (let ((result nil) @@ -35,9 +34,9 @@ result)) -;;---------------------------------------------------------------------------- + ;; Delete the current file -;;---------------------------------------------------------------------------- + (defun delete-this-file () "Delete the current file, and kill the buffer." (interactive) @@ -49,9 +48,9 @@ (kill-this-buffer))) -;;---------------------------------------------------------------------------- + ;; Rename the current file -;;---------------------------------------------------------------------------- + (defun rename-this-file-and-buffer (new-name) "Renames both current buffer and file it's visiting to NEW-NAME." (interactive "sNew name: ") @@ -65,9 +64,9 @@ (set-visited-file-name new-name) (rename-buffer new-name)))) -;;---------------------------------------------------------------------------- + ;; Browse current HTML file -;;---------------------------------------------------------------------------- + (defun browse-current-file () "Open the current file as a URL using `browse-url'." (interactive) diff --git a/lisp/init-windows.el b/lisp/init-windows.el index 8c1a6b4fab..1c996845f5 100644 --- a/lisp/init-windows.el +++ b/lisp/init-windows.el @@ -7,11 +7,9 @@ ;;; Code: -;;---------------------------------------------------------------------------- ;; Navigate window layouts with "C-c " and "C-c " -;;---------------------------------------------------------------------------- -(add-hook 'after-init-hook 'winner-mode) +(add-hook 'after-init-hook 'winner-mode) ;; Make "C-x o" prompt for a target window when there are more than 2 @@ -21,9 +19,9 @@ (global-set-key (kbd "C-x o") 'switch-window) -;;---------------------------------------------------------------------------- + ;; When splitting window, show (other-buffer) in the new window -;;---------------------------------------------------------------------------- + (defun split-window-func-with-other-buffer (split-function) (lambda (&optional arg) "Split this window and switch to the new window unless ARG is provided." @@ -47,9 +45,9 @@ (global-set-key (kbd "C-x 1") 'sanityinc/toggle-delete-other-windows) -;;---------------------------------------------------------------------------- + ;; Rearrange split windows -;;---------------------------------------------------------------------------- + (defun split-window-horizontally-instead () "Kill any other windows and re-split such that the current window is on the top half of the frame." (interactive) @@ -73,6 +71,7 @@ ;; Borrowed from http://postmomentum.ch/blog/201304/blog-on-emacs + (defun sanityinc/split-window() "Split the window to see the most recent buffer in the other window. Call a second time to restore the original window configuration." @@ -88,6 +87,7 @@ Call a second time to restore the original window configuration." + (defun sanityinc/toggle-current-window-dedication () "Toggle whether the current window is dedicated to its current buffer." (interactive) @@ -102,6 +102,7 @@ Call a second time to restore the original window configuration." + (unless (memq window-system '(nt w32)) (require-package 'windswap) (add-hook 'after-init-hook (apply-partially 'windmove-default-keybindings 'control)) From 090b7995d774f427b8b5f9ee3e32a27b7467527d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 12 Apr 2021 17:06:56 +1200 Subject: [PATCH 233/418] init-ocaml: remove merlin-mode code no longer required since upstream fixes --- lisp/init-ocaml.el | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lisp/init-ocaml.el b/lisp/init-ocaml.el index 5bdca0bcc1..18bf63ee03 100644 --- a/lisp/init-ocaml.el +++ b/lisp/init-ocaml.el @@ -4,15 +4,9 @@ (when (maybe-require-package 'tuareg) (when (maybe-require-package 'merlin) - (autoload 'merlin-mode "merlin" "Merlin mode" t) (add-hook 'tuareg-mode-hook 'merlin-mode) (with-eval-after-load 'merlin - (add-hook 'merlin-mode-hook - (lambda () - (if merlin-mode - (add-hook 'xref-backend-functions 'merlin-xref-backend nil t) - (remove-hook 'xref-backend-functions 'merlin-xref-backend t)))) (with-eval-after-load 'company (push 'merlin-company-backend company-backends))) From 4b16a4cef625f29dfe92e398cbd5869337b6d047 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 12 Apr 2021 17:08:17 +1200 Subject: [PATCH 234/418] init-ocaml: better handling of merlin-company --- lisp/init-ocaml.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/init-ocaml.el b/lisp/init-ocaml.el index 18bf63ee03..7e1092c27d 100644 --- a/lisp/init-ocaml.el +++ b/lisp/init-ocaml.el @@ -6,9 +6,10 @@ (when (maybe-require-package 'merlin) (add-hook 'tuareg-mode-hook 'merlin-mode) - (with-eval-after-load 'merlin - (with-eval-after-load 'company - (push 'merlin-company-backend company-backends))) + (when (maybe-require-package 'merlin-company) + (with-eval-after-load 'merlin + (with-eval-after-load 'company + (push 'merlin-company-backend company-backends)))) (when (maybe-require-package 'merlin-eldoc) (with-eval-after-load 'merlin From 5fc677db02da96ff8a75e7cf6201276d961e400a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 12 Apr 2021 17:09:04 +1200 Subject: [PATCH 235/418] init-ocaml: add incantations for using ocamllsp with eglot --- lisp/init-ocaml.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/init-ocaml.el b/lisp/init-ocaml.el index 7e1092c27d..876a9e6b2a 100644 --- a/lisp/init-ocaml.el +++ b/lisp/init-ocaml.el @@ -2,6 +2,10 @@ ;;; Commentary: ;;; Code: +(with-eval-after-load 'eglot + (put 'tuareg-mode 'eglot-language-id "ocaml") + (add-to-list 'eglot-server-programs '((tuareg-mode) . ("ocamllsp")) t)) + (when (maybe-require-package 'tuareg) (when (maybe-require-package 'merlin) (add-hook 'tuareg-mode-hook 'merlin-mode) From 7fc76f7e39222f784c32c81a0178829e2f2184ca Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 24 Apr 2021 10:47:31 +1200 Subject: [PATCH 236/418] Don't remap yank-pop to consult-yank-replace --- lisp/init-selectrum.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index 058367e61c..77d936b244 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -31,7 +31,6 @@ (global-set-key [remap switch-to-buffer-other-window] 'consult-buffer-other-window) (global-set-key [remap switch-to-buffer-other-frame] 'consult-buffer-other-frame) (global-set-key [remap goto-line] 'consult-goto-line) - (global-set-key [remap yank-pop] 'consult-yank-replace) (when (maybe-require-package 'embark-consult) (with-eval-after-load 'embark (require 'embark-consult) From bad8ac68dd07d841eb1f570c03a5409013f4b69a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 24 Apr 2021 10:47:54 +1200 Subject: [PATCH 237/418] Don't automatically preview consult ripgrep commands --- lisp/init-selectrum.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/init-selectrum.el b/lisp/init-selectrum.el index 77d936b244..ce824b27ef 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-selectrum.el @@ -31,6 +31,12 @@ (global-set-key [remap switch-to-buffer-other-window] 'consult-buffer-other-window) (global-set-key [remap switch-to-buffer-other-frame] 'consult-buffer-other-frame) (global-set-key [remap goto-line] 'consult-goto-line) + + (with-eval-after-load 'consult + (dolist (cmd '(consult-ripgrep sanityinc/consult-ripgrep-at-point)) + (add-to-list 'consult-config + `(,cmd :preview-key ,(kbd "M-P"))))) + (when (maybe-require-package 'embark-consult) (with-eval-after-load 'embark (require 'embark-consult) From 27397903021f9e3f62f25ef00a68ff07d6ec229d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 24 Apr 2021 11:17:39 +1200 Subject: [PATCH 238/418] Clarify why users should update packes regularly --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a185db76b6..12d37e6d99 100644 --- a/README.md +++ b/README.md @@ -68,8 +68,9 @@ running `M-x package-refresh-contents` before doing so. ## Updates -Update the config with `git pull`. You'll probably also want/need to update -the third-party packages regularly too: +Update the config with `git pull`. You'll probably also want/need to +update the third-party packages regularly too, because that's what I +do, and the config assumes it: M-x package-list-packages, then U followed by x. From 47b66aea700c382ecf5b2cf35a00b6e6050acd89 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 24 Apr 2021 11:18:59 +1200 Subject: [PATCH 239/418] Update copyright year --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index edaae7aec4..9c161b813e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2006-2018, Steve Purcell +Copyright (c) 2006-2021, Steve Purcell All rights reserved. Redistribution and use in source and binary forms, with or without From 55c2d42708c2f5385f140bfbb227be0c6abda616 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 14 May 2021 11:54:10 +1200 Subject: [PATCH 240/418] Don't override company-format-margin-function The default is smarter now, so this is unnecessary. --- lisp/init-company.el | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index 77d4b76583..2c4037abae 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -14,12 +14,6 @@ (dolist (backend '(company-eclim company-semantic)) (delq backend company-backends)) (diminish 'company-mode) - (defun sanityinc/company-icons-margin-auto (&rest args) - (apply (if (eq 'dark (frame-parameter nil 'background-mode)) - #'company-vscode-dark-icons-margin - #'company-vscode-light-icons-margin) - args)) - (setq company-format-margin-function #'sanityinc/company-icons-margin-auto) (define-key company-mode-map (kbd "M-/") 'company-complete) (define-key company-mode-map [remap completion-at-point] 'company-complete) (define-key company-mode-map [remap indent-for-tab-command] 'company-indent-or-complete-common) From 0d980c8baa5bb4d9ec9b99398eec8977bb04709c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 26 May 2021 10:05:43 +1200 Subject: [PATCH 241/418] Switch from selectrum to vertico for minibuffer completion --- init.el | 2 +- .../{init-selectrum.el => init-minibuffer.el} | 41 +++++++++---------- 2 files changed, 20 insertions(+), 23 deletions(-) rename lisp/{init-selectrum.el => init-minibuffer.el} (51%) diff --git a/init.el b/init.el index fc2150b500..7ee135e846 100644 --- a/init.el +++ b/init.el @@ -63,7 +63,7 @@ (require 'init-flycheck) (require 'init-recentf) -(require 'init-selectrum) +(require 'init-minibuffer) (require 'init-hippie-expand) (require 'init-company) (require 'init-windows) diff --git a/lisp/init-selectrum.el b/lisp/init-minibuffer.el similarity index 51% rename from lisp/init-selectrum.el rename to lisp/init-minibuffer.el index ce824b27ef..88522880e3 100644 --- a/lisp/init-selectrum.el +++ b/lisp/init-minibuffer.el @@ -1,39 +1,41 @@ -;;; init-selectrum.el --- Config for selectrum -*- lexical-binding: t; -*- +;;; init-minibuffer.el --- Config for minibuffer completion -*- lexical-binding: t; -*- ;;; Commentary: ;;; Code: -(when (maybe-require-package 'selectrum) - (add-hook 'after-init-hook 'selectrum-mode) - (setq-default selectrum-fix-vertical-window-height t) +(when (maybe-require-package 'vertico) + (add-hook 'after-init-hook 'vertico-mode) - (when (maybe-require-package 'selectrum-prescient) - (require 'prescient) - (prescient-persist-mode 1) - (selectrum-prescient-mode 1) - (global-set-key [remap execute-extended-command] 'execute-extended-command)) + (require-package 'orderless) + (with-eval-after-load 'vertico + (require 'orderless)) + + (setq completion-styles '(substring orderless)) (when (maybe-require-package 'embark) - (define-key selectrum-minibuffer-map (kbd "C-c C-o") 'embark-export) - (define-key selectrum-minibuffer-map (kbd "C-c C-c") 'embark-act)) + (with-eval-after-load 'vertico + (define-key vertico-map (kbd "C-c C-o") 'embark-export) + (define-key vertico-map (kbd "C-c C-c") 'embark-act))) (when (maybe-require-package 'consult) (when (maybe-require-package 'projectile) (setq-default consult-project-root-function 'projectile-project-root)) (when (executable-find "rg") - (defun sanityinc/consult-ripgrep-at-point (&optional dir initial) + (maybe-require-package 'affe) + (defun sanityinc/affe-grep-at-point (&optional dir initial) (interactive (list prefix-arg (when-let ((s (symbol-at-point))) (symbol-name s)))) - (consult-ripgrep dir initial))) - (global-set-key (kbd "M-?") 'sanityinc/consult-ripgrep-at-point) + (affe-grep dir initial)) + (global-set-key (kbd "M-?") 'sanityinc/affe-grep-at-point)) + (global-set-key [remap switch-to-buffer] 'consult-buffer) (global-set-key [remap switch-to-buffer-other-window] 'consult-buffer-other-window) (global-set-key [remap switch-to-buffer-other-frame] 'consult-buffer-other-frame) (global-set-key [remap goto-line] 'consult-goto-line) (with-eval-after-load 'consult - (dolist (cmd '(consult-ripgrep sanityinc/consult-ripgrep-at-point)) + (dolist (cmd '(consult-ripgrep sanityinc/affe-grep-at-point)) (add-to-list 'consult-config `(,cmd :preview-key ,(kbd "M-P"))))) @@ -48,11 +50,6 @@ (add-hook 'after-init-hook 'marginalia-mode) (setq-default marginalia-annotators '(marginalia-annotators-heavy))) -(with-eval-after-load 'desktop - ;; Try to prevent old minibuffer completion system being reactivated in - ;; buffers restored via desktop.el - (push (cons 'counsel-mode nil) desktop-minor-mode-table) - (push (cons 'ivy-mode nil) desktop-minor-mode-table)) -(provide 'init-selectrum) -;;; init-selectrum.el ends here +(provide 'init-minibuffer) +;;; init-minibuffer.el ends here From fce80299d9b37f577423299c7aafe0f4f314be85 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 26 May 2021 11:48:31 +1200 Subject: [PATCH 242/418] Drop daemons package, which I don't use --- init.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/init.el b/init.el index 7ee135e846..2f83508070 100644 --- a/init.el +++ b/init.el @@ -138,8 +138,6 @@ (require-package 'htmlize) (when *is-a-mac* (require-package 'osx-location)) -(unless (eq system-type 'windows-nt) - (maybe-require-package 'daemons)) (maybe-require-package 'dotenv-mode) (maybe-require-package 'shfmt) From 962b988740f2258c88a32fe5971a7d67a3b9aac4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 26 May 2021 11:48:54 +1200 Subject: [PATCH 243/418] Don't override default company backends --- lisp/init-company.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index 2c4037abae..9d0de03d47 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -11,8 +11,6 @@ (when (maybe-require-package 'company) (add-hook 'after-init-hook 'global-company-mode) (with-eval-after-load 'company - (dolist (backend '(company-eclim company-semantic)) - (delq backend company-backends)) (diminish 'company-mode) (define-key company-mode-map (kbd "M-/") 'company-complete) (define-key company-mode-map [remap completion-at-point] 'company-complete) From 2e24253e8144cf40970373d6f6c37cc75539b4bb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 26 May 2021 11:49:59 +1200 Subject: [PATCH 244/418] Define function inside conditional block which uses it --- lisp/init-direnv.el | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lisp/init-direnv.el b/lisp/init-direnv.el index 7d81dfb748..d35e646cf9 100644 --- a/lisp/init-direnv.el +++ b/lisp/init-direnv.el @@ -2,12 +2,12 @@ ;;; Commentary: ;;; Code: -(defun sanityinc/maybe-enable-envrc-global-mode () - "Enable `envrc-global-mode' if `direnv' is installed." - (when (executable-find "direnv") - (envrc-global-mode))) - (when (maybe-require-package 'envrc) + (defun sanityinc/maybe-enable-envrc-global-mode () + "Enable `envrc-global-mode' if `direnv' is installed." + (when (executable-find "direnv") + (envrc-global-mode))) + (with-eval-after-load 'envrc (define-key envrc-mode-map (kbd "C-c e") 'envrc-command-map)) (add-hook 'after-init-hook 'sanityinc/maybe-enable-envrc-global-mode)) From fae993861b498343453153af11923b9ab60d48b8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 27 May 2021 12:34:28 +1200 Subject: [PATCH 245/418] Use manual rather than automatic previews with affe-grep --- lisp/init-minibuffer.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index 88522880e3..bd68d7602a 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -35,7 +35,7 @@ (global-set-key [remap goto-line] 'consult-goto-line) (with-eval-after-load 'consult - (dolist (cmd '(consult-ripgrep sanityinc/affe-grep-at-point)) + (dolist (cmd '(consult-ripgrep affe-grep sanityinc/affe-grep-at-point)) (add-to-list 'consult-config `(,cmd :preview-key ,(kbd "M-P"))))) From c23b081db0e50a5f0f777cf0d45b41fb81bec49c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 29 May 2021 10:34:38 +1200 Subject: [PATCH 246/418] Drop redundant setting of obsolete marginalia-annotators var Fixes #777 --- lisp/init-minibuffer.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index bd68d7602a..e7b7308a0e 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -47,8 +47,7 @@ (maybe-require-package 'consult-flycheck))) (when (maybe-require-package 'marginalia) - (add-hook 'after-init-hook 'marginalia-mode) - (setq-default marginalia-annotators '(marginalia-annotators-heavy))) + (add-hook 'after-init-hook 'marginalia-mode)) (provide 'init-minibuffer) From cfa5feb61aca319e8013c5ef64e11eb867dd4ef3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 29 May 2021 18:04:09 +1200 Subject: [PATCH 247/418] Better defaults for completion-styles, for more natural ordering These styles affect completion-at-point functions, and therefore company-capf, leading to unnatural matching when that company backend is active. Fixes #778 --- lisp/init-minibuffer.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index e7b7308a0e..0dedd87419 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -10,7 +10,7 @@ (with-eval-after-load 'vertico (require 'orderless)) - (setq completion-styles '(substring orderless)) + (setq completion-styles '(basic partial-completion orderless)) (when (maybe-require-package 'embark) (with-eval-after-load 'vertico From 5e2cda9a544aaecbc318f38b30c933a9e25162a9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 21 Jun 2021 11:45:44 +1200 Subject: [PATCH 248/418] Only override completion-styles in minibuffer Thanks @Eason0210, see #778 --- lisp/init-minibuffer.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index 0dedd87419..6915560bbc 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -10,7 +10,9 @@ (with-eval-after-load 'vertico (require 'orderless)) - (setq completion-styles '(basic partial-completion orderless)) + (defun sanityinc/use-orderless-in-minibuffer () + (setq-local completion-styles '(substring orderless))) + (add-hook 'minibuffer-setup-hook 'sanityinc/use-orderless-in-minibuffer) (when (maybe-require-package 'embark) (with-eval-after-load 'vertico From 7b55c418e8cbfc20b22ceb5ab4de2320ba8a9e46 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 27 Jun 2021 16:34:46 +1200 Subject: [PATCH 249/418] More neatly and completely disable file-jumping consult previews Fixes #779 --- lisp/init-minibuffer.el | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index 6915560bbc..bf808677f2 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -37,9 +37,13 @@ (global-set-key [remap goto-line] 'consult-goto-line) (with-eval-after-load 'consult - (dolist (cmd '(consult-ripgrep affe-grep sanityinc/affe-grep-at-point)) - (add-to-list 'consult-config - `(,cmd :preview-key ,(kbd "M-P"))))) + (consult-customize + consult-ripgrep + affe-grep sanityinc/affe-grep-at-point + consult-git-grep consult-grep + consult-bookmark consult-recent-file consult-xref + consult--source-file consult--source-project-file consult--source-bookmark + :preview-key (kbd "M-P"))) (when (maybe-require-package 'embark-consult) (with-eval-after-load 'embark From 72715575f08cbee7651b4e318321854a4385f7e9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 27 Jun 2021 21:37:25 +1200 Subject: [PATCH 250/418] Work around consult-customize insisting customized commands are loaded See https://github.com/minad/consult/issues/345 --- lisp/init-minibuffer.el | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index bf808677f2..e5453ebba3 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -20,30 +20,34 @@ (define-key vertico-map (kbd "C-c C-c") 'embark-act))) (when (maybe-require-package 'consult) + (defmacro sanityinc/no-consult-preview (&rest cmds) + `(with-eval-after-load 'consult + (consult-customize ,@cmds :preview-key (kbd "M-P")))) + + (sanityinc/no-consult-preview + consult-ripgrep + consult-git-grep consult-grep + consult-bookmark consult-recent-file consult-xref + consult--source-file consult--source-project-file consult--source-bookmark) + (when (maybe-require-package 'projectile) (setq-default consult-project-root-function 'projectile-project-root)) - (when (executable-find "rg") - (maybe-require-package 'affe) + (when (and (executable-find "rg") (maybe-require-package 'affe)) (defun sanityinc/affe-grep-at-point (&optional dir initial) (interactive (list prefix-arg (when-let ((s (symbol-at-point))) (symbol-name s)))) (affe-grep dir initial)) - (global-set-key (kbd "M-?") 'sanityinc/affe-grep-at-point)) + (global-set-key (kbd "M-?") 'sanityinc/affe-grep-at-point) + (sanityinc/no-consult-preview sanityinc/affe-grep-at-point) + (with-eval-after-load 'affe (sanityinc/no-consult-preview affe-grep))) (global-set-key [remap switch-to-buffer] 'consult-buffer) (global-set-key [remap switch-to-buffer-other-window] 'consult-buffer-other-window) (global-set-key [remap switch-to-buffer-other-frame] 'consult-buffer-other-frame) (global-set-key [remap goto-line] 'consult-goto-line) - (with-eval-after-load 'consult - (consult-customize - consult-ripgrep - affe-grep sanityinc/affe-grep-at-point - consult-git-grep consult-grep - consult-bookmark consult-recent-file consult-xref - consult--source-file consult--source-project-file consult--source-bookmark - :preview-key (kbd "M-P"))) + (when (maybe-require-package 'embark-consult) (with-eval-after-load 'embark From 8583325874875152c35c7a78ad46091248d3461d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 5 Jul 2021 14:34:56 +1200 Subject: [PATCH 251/418] Remove stack-exec-path-mode, which I no longer use --- lisp/init-haskell.el | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index a128b46da5..f32f19b22a 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -44,28 +44,6 @@ (add-to-list 'page-break-lines-modes 'haskell-mode))) - -(define-minor-mode stack-exec-path-mode - "If this is a stack project, set `exec-path' to the path \"stack exec\" would use." - nil - :lighter "" - :global nil - (if stack-exec-path-mode - (when (and (executable-find "stack") - (locate-dominating-file default-directory "stack.yaml")) - (let ((stack-path (replace-regexp-in-string - "[\r\n]+\\'" "" - (shell-command-to-string (concat "stack exec -- sh -c " - (shell-quote-argument "echo $PATH")))))) - (setq-local exec-path (seq-uniq (parse-colon-path stack-path) 'string-equal)) - (make-local-variable 'process-environment) - (setenv "PATH" (string-join exec-path path-separator)))) - (kill-local-variable 'exec-path) - (kill-local-variable 'process-environment))) - -(add-hook 'haskell-mode-hook 'stack-exec-path-mode) - - (when (maybe-require-package 'dhall-mode) (add-hook 'dhall-mode-hook 'stack-exec-path-mode)) From adf337dfa8c324983e5dc01ed055a34c3cc4a964 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 5 Jul 2021 14:35:37 +1200 Subject: [PATCH 252/418] Fix deprecated params passed to define-minor mode (fixes #780) --- lisp/init-javascript.el | 2 +- lisp/init-org.el | 2 +- lisp/init-purescript.el | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 68fa5f0678..70f9aa6b9a 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -88,7 +88,7 @@ (define-minor-mode inferior-js-keys-mode "Bindings for communicating with an inferior js interpreter." - nil " InfJS" inferior-js-minor-mode-map) + :init-value nil :lighter " InfJS" :keymap inferior-js-minor-mode-map) (dolist (hook '(js2-mode-hook js-mode-hook)) (add-hook hook 'inferior-js-keys-mode))) diff --git a/lisp/init-org.el b/lisp/init-org.el index a90b89d96a..b1b946b1b5 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -69,7 +69,7 @@ This enables or modifies a number of settings so that the experience of editing prose is a little more like that of a typical word processor." - nil " Prose" nil + :init-value nil :lighter " Prose" :keymap nil (if prose-mode (progn (when (fboundp 'writeroom-mode) diff --git a/lisp/init-purescript.el b/lisp/init-purescript.el index f69c57b82b..794ecb0ff8 100644 --- a/lisp/init-purescript.el +++ b/lisp/init-purescript.el @@ -45,7 +45,7 @@ corresponding .purs file is open." (define-minor-mode psc-ide-foreign-js-mode "Rebuild corresponding purescript file." - nil + :init-value nil :lighter " PursJS" :global nil (if psc-ide-foreign-js-mode From 03bcd2789976a3ea021653cdc9f58583de02b71f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Jul 2021 15:38:29 +1200 Subject: [PATCH 253/418] Drop obsolete cl-lib-highlight package Fixes #784 --- lisp/init-lisp.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 9a4f22436e..f8c64477c0 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -206,9 +206,6 @@ there is no current file, eval the current buffer." (add-to-list 'auto-mode-alist '("\\.emacs-project\\'" . emacs-lisp-mode)) (add-to-list 'auto-mode-alist '("archive-contents\\'" . emacs-lisp-mode)) -(require-package 'cl-lib-highlight) -(with-eval-after-load 'lisp-mode - (cl-lib-highlight-initialize)) ;; Delete .elc files when reverting the .el from VC or magit From 58ba9e023b85954ad694ff9133742160076706b2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 10 Aug 2021 10:29:15 +0200 Subject: [PATCH 254/418] Fix dangling reference to removed stack-exec-path-mode Fixes #786 --- lisp/init-haskell.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index f32f19b22a..18afe058f9 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -45,8 +45,7 @@ -(when (maybe-require-package 'dhall-mode) - (add-hook 'dhall-mode-hook 'stack-exec-path-mode)) +(maybe-require-package 'dhall-mode) From 85ce2603e1b891bfa98f40ed3b9018024c62dc14 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 22 Aug 2021 10:28:56 +0200 Subject: [PATCH 255/418] Use locate-user-emacs-file where applicable --- init.el | 2 +- lisp/init-editing-utils.el | 2 +- lisp/init-sessions.el | 2 +- lisp/init-sql.el | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/init.el b/init.el index 2f83508070..6ce48c92c7 100644 --- a/init.el +++ b/init.el @@ -34,7 +34,7 @@ ;; Bootstrap config -(setq custom-file (expand-file-name "custom.el" user-emacs-directory)) +(setq custom-file (locate-user-emacs-file "custom.el")) (require 'init-utils) (require 'init-site-lisp) ;; Must come before elpa, as it may provide package.el ;; Calls (package-initialize) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 3128243d75..87069bd249 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -15,7 +15,7 @@ (setq-default blink-cursor-interval 0.4 - bookmark-default-file (expand-file-name ".bookmarks.el" user-emacs-directory) + bookmark-default-file (locate-user-emacs-file ".bookmarks.el") buffers-menu-max-size 30 case-fold-search t column-number-mode t diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index 4d606d3944..1ae7fd59ff 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -35,7 +35,7 @@ (require-package 'session) -(setq session-save-file (expand-file-name ".session" user-emacs-directory)) +(setq session-save-file (locate-user-emacs-file ".session")) (setq session-name-disable-regexp "\\(?:\\`'/tmp\\|\\.git/[A-Z_]+\\'\\)") (setq session-save-file-coding-system 'utf-8) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 3844c8b42f..891ee4534d 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -38,7 +38,7 @@ Fix for the above hasn't been released as of Emacs 25.2." (advice-add 'sql-set-product :after 'sanityinc/maybe-set-dash-db-docset))) (setq-default sql-input-ring-file-name - (expand-file-name ".sqli_history" user-emacs-directory)) + (locate-user-emacs-file ".sqli_history")) ;; See my answer to https://emacs.stackexchange.com/questions/657/why-do-sql-mode-and-sql-interactive-mode-not-highlight-strings-the-same-way/673 (defun sanityinc/font-lock-everything-in-sql-interactive-mode () From ee74d758ba5fce41722ee500cb861816687ccc35 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 9 Oct 2021 16:58:02 +0200 Subject: [PATCH 256/418] Don't load ob-* modules that can't be located Fixes #791 --- lisp/init-org.el | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index b1b946b1b5..199ad6c180 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -362,23 +362,27 @@ typical word processor." (with-eval-after-load 'org (org-babel-do-load-languages 'org-babel-load-languages - `((R . t) - (ditaa . t) - (dot . t) - (emacs-lisp . t) - (gnuplot . t) - (haskell . nil) - (latex . t) - (ledger . t) - (ocaml . nil) - (octave . t) - (plantuml . t) - (python . t) - (ruby . t) - (screen . nil) - (,(if (locate-library "ob-sh") 'sh 'shell) . t) - (sql . t) - (sqlite . t)))) + (seq-filter + (lambda (pair) + (featurep (intern (concat "ob-" (symbol-name (car pair)))))) + '((R . t) + (ditaa . t) + (dot . t) + (emacs-lisp . t) + (gnuplot . t) + (haskell . nil) + (latex . t) + (ledger . t) + (ocaml . nil) + (octave . t) + (plantuml . t) + (python . t) + (ruby . t) + (screen . nil) + (sh . t) ;; obsolete + (shell . t) + (sql . t) + (sqlite . t))))) (provide 'init-org) From 64695dd330650391e7c2b03c0b70e1d414333ec7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 21 Oct 2021 14:10:05 +0200 Subject: [PATCH 257/418] Prefer cl-incf to incf --- lisp/init-benchmarking.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-benchmarking.el b/lisp/init-benchmarking.el index eb7c1cf99b..cfae65673e 100644 --- a/lisp/init-benchmarking.el +++ b/lisp/init-benchmarking.el @@ -49,7 +49,7 @@ LOAD-DURATION is the time taken in milliseconds to load FEATURE.") (defun sanityinc/require-times-tabulated-list-entries () (cl-loop for (feature start-time millis) in sanityinc/require-times with order = 0 - do (incf order) + do (cl-incf order) collect (list order (vector (format "%.3f" (sanityinc/time-subtract-millis start-time before-init-time)) From 4699f24b46d4c3f203e94fd22d7910d1a122c2c9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 21 Oct 2021 14:18:03 +0200 Subject: [PATCH 258/418] Use new bundled git-modes package --- lisp/init-git.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index 9320a0cb9a..e1ae32f555 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -8,8 +8,7 @@ ;; TODO: link commits from vc-log to magit-show-commit ;; TODO: smerge-mode (require-package 'git-blamed) -(require-package 'gitignore-mode) -(require-package 'gitconfig-mode) +(require-package 'git-modes) (when (maybe-require-package 'git-timemachine) (global-set-key (kbd "C-x v t") 'git-timemachine-toggle)) From 195386b93503b4c931fb058a4d9dfa918264a226 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 21 Oct 2021 14:22:37 +0200 Subject: [PATCH 259/418] Don't load company backend for nixos-options until nix-mode is needed See #793 --- lisp/init-nix.el | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 652f57506f..47d886b9ee 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -10,16 +10,16 @@ (when (maybe-require-package 'nixos-options) (when (maybe-require-package 'company-nixos-options) (with-eval-after-load 'company + (with-eval-after-load 'nix-mode + ;; Patch pending https://github.com/travisbhartwell/nix-emacs/pull/46 + (with-eval-after-load 'company-nixos-options + (defun company-nixos--in-nix-context-p () + (unless (executable-find "nix-build") + (or (derived-mode-p 'nix-mode 'nix-repl-mode) + (let ((file-name (buffer-file-name (current-buffer)))) + (and file-name (equal "nix" (file-name-extension file-name)))))))) - ;; Patch pending https://github.com/travisbhartwell/nix-emacs/pull/46 - (with-eval-after-load 'company-nixos-options - (defun company-nixos--in-nix-context-p () - (unless (executable-find "nix-build") - (or (derived-mode-p 'nix-mode 'nix-repl-mode) - (let ((file-name (buffer-file-name (current-buffer)))) - (and file-name (equal "nix" (file-name-extension file-name)))))))) - - (add-to-list 'company-backends 'company-nixos-options))))) + (add-to-list 'company-backends 'company-nixos-options)))))) (provide 'init-nix) From b3ac7029eada16ac82324515b0eed203d32d6042 Mon Sep 17 00:00:00 2001 From: Arthur Lee Date: Sat, 6 Nov 2021 12:51:18 +0000 Subject: [PATCH 260/418] Add "-" arg to make black reformatter read from stdin --- lisp/init-python.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-python.el b/lisp/init-python.el index 7ad5f81dac..99719bbbb0 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -37,7 +37,7 @@ (add-to-list 'auto-mode-alist '("poetry\\.lock\\'" . toml-mode))) (when (maybe-require-package 'reformatter) - (reformatter-define black :program "black")) + (reformatter-define black :program "black" :args '("-"))) (provide 'init-python) ;;; init-python.el ends here From e81e69a2aba8793b3c4a36ccb49daf9d8168e932 Mon Sep 17 00:00:00 2001 From: moonpole <92289673+moonpole@users.noreply.github.com> Date: Wed, 9 Feb 2022 01:22:21 +0000 Subject: [PATCH 261/418] Fix consult-buffer error please refer to https://github.com/minad/consult/issues/508 --- lisp/init-minibuffer.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index e5453ebba3..a6f0cf3201 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -28,7 +28,7 @@ consult-ripgrep consult-git-grep consult-grep consult-bookmark consult-recent-file consult-xref - consult--source-file consult--source-project-file consult--source-bookmark) + consult--source-recent-file consult--source-project-recent-file consult--source-bookmark) (when (maybe-require-package 'projectile) (setq-default consult-project-root-function 'projectile-project-root)) From adc5d50f5845a32a2340f1ad0bdcd1866c685f76 Mon Sep 17 00:00:00 2001 From: archer Date: Thu, 3 Mar 2022 09:55:58 +0800 Subject: [PATCH 262/418] $PATH for PGTK window --- lisp/init-exec-path.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-exec-path.el b/lisp/init-exec-path.el index 557bfa9d34..494b4c486a 100644 --- a/lisp/init-exec-path.el +++ b/lisp/init-exec-path.el @@ -9,7 +9,7 @@ (add-to-list 'exec-path-from-shell-variables var))) -(when (or (memq window-system '(mac ns x)) +(when (or (memq window-system '(mac ns x pgtk)) (unless (memq system-type '(ms-dos windows-nt)) (daemonp))) (exec-path-from-shell-initialize)) From 7c5861664f7912ddd4014798a9b2dec4681cb767 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Mar 2022 10:16:45 +0100 Subject: [PATCH 263/418] Switch from flycheck to flymake (but with flymake-flycheck) --- README.md | 6 +++--- init.el | 2 +- lisp/init-flycheck.el | 14 -------------- lisp/init-flymake.el | 41 +++++++++++++++++++++++++++++++++++++++++ lisp/init-lisp.el | 7 ++----- 5 files changed, 47 insertions(+), 23 deletions(-) delete mode 100644 lisp/init-flycheck.el create mode 100644 lisp/init-flymake.el diff --git a/README.md b/README.md index 12d37e6d99..3575caba24 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,9 @@ in the approximate order of how much I use them, from most to least: In particular, there's a nice config for *autocompletion* with [company](https://company-mode.github.io/), and -[flycheck](http://www.flycheck.org) is used to immediately highlight -syntax errors in Ruby, Python, Javascript, Haskell and a number of -other languages. +`flymake` (re-using backends from [flycheck](http://www.flycheck.org)) +is used to immediately highlight syntax errors in Ruby, Python, +Javascript, Haskell and a number of other languages. ## Supported Emacs versions diff --git a/init.el b/init.el index 6ce48c92c7..bfce66d756 100644 --- a/init.el +++ b/init.el @@ -60,7 +60,7 @@ (require 'init-grep) (require 'init-uniquify) (require 'init-ibuffer) -(require 'init-flycheck) +(require 'init-flymake) (require 'init-recentf) (require 'init-minibuffer) diff --git a/lisp/init-flycheck.el b/lisp/init-flycheck.el deleted file mode 100644 index fe4190952d..0000000000 --- a/lisp/init-flycheck.el +++ /dev/null @@ -1,14 +0,0 @@ -;;; init-flycheck.el --- Configure Flycheck global behaviour -*- lexical-binding: t -*- -;;; Commentary: -;;; Code: - -(when (maybe-require-package 'flycheck) - (add-hook 'after-init-hook 'global-flycheck-mode) - (setq flycheck-display-errors-function #'flycheck-display-error-messages-unless-error-list) - - (when (maybe-require-package 'flycheck-color-mode-line) - (add-hook 'flycheck-mode-hook 'flycheck-color-mode-line-mode))) - - -(provide 'init-flycheck) -;;; init-flycheck.el ends here diff --git a/lisp/init-flymake.el b/lisp/init-flymake.el new file mode 100644 index 0000000000..fa7f7c1fa0 --- /dev/null +++ b/lisp/init-flymake.el @@ -0,0 +1,41 @@ +;;; init-flymake.el --- Configure Flymake global behaviour -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +(with-eval-after-load 'flymake + (defun sanityinc/eldoc-flymake-first () + "Gives flymake's eldoc function priority in the minibuffer." + (when flymake-mode + (setq-local eldoc-documentation-functions + (cons 'flymake-eldoc-function + (delq 'flymake-eldoc-function eldoc-documentation-functions))))) + + (add-hook 'flymake-mode-hook 'sanityinc/eldoc-flymake-first)) + + +;; Use flycheck checkers with flymake, to extend its coverage +(when (maybe-require-package 'flymake-flycheck) + ;; Disable flycheck checkers for which we have flymake equivalents + (with-eval-after-load 'flycheck + (setq-default flycheck-disabled-checkers + (append (default-value 'flycheck-disabled-checkers) + '(emacs-lisp emacs-lisp-checkdoc emacs-lisp-package)))) + + (defun sanityinc/enable-flymake-flycheck () + (setq-local flymake-diagnostic-functions + (append flymake-diagnostic-functions + (flymake-flycheck-all-chained-diagnostic-functions)))) + + (add-hook 'flymake-mode-hook 'sanityinc/enable-flymake-flycheck) + (add-hook 'prog-mode-hook 'flymake-mode) + (add-hook 'text-mode-hook 'flymake-mode)) + +(with-eval-after-load 'flymake + ;; Provide some flycheck-like bindings in flymake mode to ease transition + (define-key flymake-mode-map (kbd "C-c ! n") 'flymake-goto-next-error) + (define-key flymake-mode-map (kbd "C-c ! p") 'flymake-goto-prev-error) + (define-key flymake-mode-map (kbd "C-c ! c") 'flymake-start)) + + +(provide 'init-flymake) +;;; init-flymake.el ends here diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index f8c64477c0..6d2594b57b 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -270,11 +270,8 @@ there is no current file, eval the current buffer." (add-hook 'emacs-lisp-mode-hook 'highlight-quoted-mode)) -(when (maybe-require-package 'flycheck) - (require-package 'flycheck-package) - (with-eval-after-load 'flycheck - (with-eval-after-load 'elisp-mode - (flycheck-package-setup)))) +(when (maybe-require-package 'package-lint-flymake) + (add-hook 'emacs-lisp-mode-hook #'package-lint-flymake-setup)) From 5ebfbeb1bdb7c2b35e126ca0fadbe161bd33066b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Mar 2022 10:18:18 +0100 Subject: [PATCH 264/418] Add eglot config for LSP, and remove some pre-LSP tool support --- init.el | 1 + lisp/init-eglot.el | 18 ++++++++++++++++++ lisp/init-elm.el | 7 +------ lisp/init-haskell.el | 6 ------ lisp/init-ocaml.el | 16 ---------------- lisp/init-python.el | 17 ----------------- 6 files changed, 20 insertions(+), 45 deletions(-) create mode 100644 lisp/init-eglot.el diff --git a/init.el b/init.el index bfce66d756..003e1a1e11 100644 --- a/init.el +++ b/init.el @@ -61,6 +61,7 @@ (require 'init-uniquify) (require 'init-ibuffer) (require 'init-flymake) +(require 'init-eglot) (require 'init-recentf) (require 'init-minibuffer) diff --git a/lisp/init-eglot.el b/lisp/init-eglot.el new file mode 100644 index 0000000000..9cf28b84f0 --- /dev/null +++ b/lisp/init-eglot.el @@ -0,0 +1,18 @@ +;;; init-eglot.el --- LSP support via eglot -*- lexical-binding: t; -*- + +;;; Commentary: + +;;; Code: + +;; For Emacs >= 27 +(setq read-process-output-max (* 1024 1024)) + + +(when (maybe-require-package 'eglot) + (maybe-require-package 'consult-eglot)) + + + + +(provide 'init-eglot) +;;; init-eglot.el ends here diff --git a/lisp/init-elm.el b/lisp/init-elm.el index 1548210a03..aa1c8a5c61 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -7,12 +7,7 @@ (diminish 'elm-indent-mode) (when (executable-find "elm-format") (setq-default elm-format-on-save t))) - (maybe-require-package 'elm-test-runner) - (when (maybe-require-package 'flycheck-elm) - (with-eval-after-load 'elm-mode - (flycheck-elm-setup))) - (when (maybe-require-package 'add-node-modules-path) - (add-hook 'elm-mode-hook 'add-node-modules-path))) + (maybe-require-package 'elm-test-runner)) (provide 'init-elm) ;;; init-elm.el ends here diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 18afe058f9..1a061bb8b9 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -6,12 +6,6 @@ (add-hook 'haskell-mode-hook 'subword-mode) (add-hook 'haskell-cabal-mode 'subword-mode) - (when (maybe-require-package 'dante) - (add-hook 'haskell-mode-hook 'dante-mode) - (with-eval-after-load 'dante - (flycheck-add-next-checker 'haskell-dante - '(warning . haskell-hlint)))) - (add-hook 'haskell-mode-hook 'interactive-haskell-mode) (add-auto-mode 'haskell-mode "\\.ghci\\'") diff --git a/lisp/init-ocaml.el b/lisp/init-ocaml.el index 876a9e6b2a..209b180075 100644 --- a/lisp/init-ocaml.el +++ b/lisp/init-ocaml.el @@ -7,22 +7,6 @@ (add-to-list 'eglot-server-programs '((tuareg-mode) . ("ocamllsp")) t)) (when (maybe-require-package 'tuareg) - (when (maybe-require-package 'merlin) - (add-hook 'tuareg-mode-hook 'merlin-mode) - - (when (maybe-require-package 'merlin-company) - (with-eval-after-load 'merlin - (with-eval-after-load 'company - (push 'merlin-company-backend company-backends)))) - - (when (maybe-require-package 'merlin-eldoc) - (with-eval-after-load 'merlin - (autoload 'merlin-eldoc--gather-info "merlin-eldoc") - (add-hook 'merlin-mode-hook - (lambda () - (setq-local eldoc-documentation-function - #'merlin-eldoc--gather-info)))))) - (with-eval-after-load 'tuareg (defvar-local tuareg-previous-tuareg-buffer nil "Buffer from which we jumped to the REPL.") diff --git a/lisp/init-python.el b/lisp/init-python.el index 99719bbbb0..1c20728ce7 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -16,23 +16,6 @@ (require-package 'pip-requirements) -(when (maybe-require-package 'anaconda-mode) - (with-eval-after-load 'python - ;; Anaconda doesn't work on remote servers without some work, so - ;; by default we enable it only when working locally. - (add-hook 'python-mode-hook - (lambda () (unless (file-remote-p default-directory) - (anaconda-mode 1)))) - (add-hook 'anaconda-mode-hook - (lambda () - (anaconda-eldoc-mode (if anaconda-mode 1 0))))) - (with-eval-after-load 'anaconda-mode - (define-key anaconda-mode-map (kbd "M-?") nil)) - (when (maybe-require-package 'company-anaconda) - (with-eval-after-load 'company - (with-eval-after-load 'python - (add-to-list 'company-backends 'company-anaconda))))) - (when (maybe-require-package 'toml-mode) (add-to-list 'auto-mode-alist '("poetry\\.lock\\'" . toml-mode))) From e3ea4fa189142fcd14ebe24b917b7c6528955db6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Mar 2022 10:19:56 +0100 Subject: [PATCH 265/418] Note provision of LSP support with eglot --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3575caba24..44ee9ce443 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ In particular, there's a nice config for *autocompletion* with is used to immediately highlight syntax errors in Ruby, Python, Javascript, Haskell and a number of other languages. +LSP support is provided using `eglot`. + ## Supported Emacs versions The config should run on Emacs 25.1 or greater and is designed to From 23eb550a87ee7392e78b0d91e8038fe4ea3e9255 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Mar 2022 10:33:03 +0100 Subject: [PATCH 266/418] Avoid problematic wrangling of flymake-eldoc-function --- lisp/init-flymake.el | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lisp/init-flymake.el b/lisp/init-flymake.el index fa7f7c1fa0..19681cb5a0 100644 --- a/lisp/init-flymake.el +++ b/lisp/init-flymake.el @@ -2,16 +2,6 @@ ;;; Commentary: ;;; Code: -(with-eval-after-load 'flymake - (defun sanityinc/eldoc-flymake-first () - "Gives flymake's eldoc function priority in the minibuffer." - (when flymake-mode - (setq-local eldoc-documentation-functions - (cons 'flymake-eldoc-function - (delq 'flymake-eldoc-function eldoc-documentation-functions))))) - - (add-hook 'flymake-mode-hook 'sanityinc/eldoc-flymake-first)) - ;; Use flycheck checkers with flymake, to extend its coverage (when (maybe-require-package 'flymake-flycheck) From a3689baaec293f38a9545855ef8f61859bedcd14 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Mar 2022 10:36:42 +0100 Subject: [PATCH 267/418] Require a relatively recent flymake This is probably helpful for Emacs 26.x and 27.x users --- lisp/init-flymake.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-flymake.el b/lisp/init-flymake.el index 19681cb5a0..17d6c7760c 100644 --- a/lisp/init-flymake.el +++ b/lisp/init-flymake.el @@ -2,6 +2,7 @@ ;;; Commentary: ;;; Code: +(maybe-require-package 'flymake "1.2.1") ;; Use flycheck checkers with flymake, to extend its coverage (when (maybe-require-package 'flymake-flycheck) From d5a8f36d30ca8de9b9b1bb60e7cec3563057d207 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Mar 2022 10:41:38 +0100 Subject: [PATCH 268/418] Remove unnecessary setting of js2-basic-offset --- lisp/init-javascript.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 70f9aa6b9a..3ab2fbf260 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -41,9 +41,6 @@ (js2-imenu-extras-setup)) -;; In Emacs >= 25, the following is an alias for js-indent-level anyway -(setq-default js2-basic-offset 2) - (add-to-list 'interpreter-mode-alist (cons "node" 'js2-mode)) (with-eval-after-load 'js2-mode From f80fbe52d1ce04f850eb63e51d5d08fef9411196 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 14 Mar 2022 11:03:37 +0100 Subject: [PATCH 269/418] Add slime contrib path This workaround somehow only seems necessary in snapshot emacs versions. --- lisp/init-slime.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-slime.el b/lisp/init-slime.el index b7d176cb33..6e0e3d46cf 100644 --- a/lisp/init-slime.el +++ b/lisp/init-slime.el @@ -3,6 +3,7 @@ ;;; Code: (require-package 'slime) +(push (expand-file-name "contrib" (file-name-directory (locate-library "slime"))) load-path) (when (maybe-require-package 'slime-company) (setq slime-company-completion 'fuzzy From 88aa6035fb0517bf59f9efdffe55f4dd5c939d63 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 15 Mar 2022 01:06:36 +1300 Subject: [PATCH 270/418] Don't try to maintain any pointers to other configs --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 44ee9ce443..a47ed06a7d 100644 --- a/README.md +++ b/README.md @@ -104,10 +104,6 @@ config remains compatible with the latest package and Emacs versions. *Please note that I cannot provide support for customised versions of this configuration.* -## Similar configs - -You might also want to check out `emacs-starter-kit` and `prelude`. - ## Support / issues If you hit any problems, please first ensure that you are using the latest version From 259323bb8c644be6c340330bee08131cd6de1ce7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 14 Mar 2022 11:07:39 +0100 Subject: [PATCH 271/418] Switch from browse-at-remote to git-link --- lisp/init-git.el | 2 +- lisp/init-vc.el | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index e1ae32f555..d3d57dec1e 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -12,7 +12,7 @@ (when (maybe-require-package 'git-timemachine) (global-set-key (kbd "C-x v t") 'git-timemachine-toggle)) - +(require-package 'git-link) (when (maybe-require-package 'magit) (setq-default magit-diff-refine-hunk t) diff --git a/lisp/init-vc.el b/lisp/init-vc.el index 09b2084a34..8df0cc4933 100644 --- a/lisp/init-vc.el +++ b/lisp/init-vc.el @@ -15,7 +15,5 @@ (kbd " ") 'diff-hl-diff-goto-hunk))) -(maybe-require-package 'browse-at-remote) - (provide 'init-vc) ;;; init-vc.el ends here From 521829cb549801fd9479e673f2cc343d6e52aeb2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 14 Mar 2022 11:08:27 +0100 Subject: [PATCH 272/418] Ignore "~/.emacs.d/projects" save file --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 87b89afb3b..d03d13d586 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ site-lisp/package/ /.lsp-session-v1 /smex-items /eln-cache/ +/projects From 44a30d55beb6cb956ea4f14312c76e93bd39a90c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 31 Mar 2022 18:49:51 +0200 Subject: [PATCH 273/418] Handle stringy min-versions in require-package Fixes #805 --- lisp/init-elpa.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 47f58eb0de..8700c3ac38 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -32,6 +32,8 @@ "Install given PACKAGE, optionally requiring MIN-VERSION. If NO-REFRESH is non-nil, the available package lists will not be re-downloaded in order to locate PACKAGE." + (when (stringp min-version) + (setq min-version (version-to-list min-version))) (or (package-installed-p package min-version) (let* ((known (cdr (assoc package package-archive-contents))) (best (car (sort known (lambda (a b) From 4befed18bd91dcd0546d02f24e9bbc975e69405c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 8 Apr 2022 09:09:09 +0200 Subject: [PATCH 274/418] Drop racer from rust config Fixes #806 --- lisp/init-rust.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-rust.el b/lisp/init-rust.el index d3ead5b5ff..55942e010f 100644 --- a/lisp/init-rust.el +++ b/lisp/init-rust.el @@ -3,8 +3,6 @@ ;;; Code: (when (maybe-require-package 'rust-mode) - (when (maybe-require-package 'racer) - (add-hook 'rust-mode-hook #'racer-mode)) (when (maybe-require-package 'company) (add-hook 'racer-mode-hook #'company-mode))) From 0101e9e5d5544081a5a6536137af56a10b70ac70 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 15 Apr 2022 20:48:25 +0200 Subject: [PATCH 275/418] Let docstrings and flymake popups coexist in the echo area --- lisp/init-flymake.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-flymake.el b/lisp/init-flymake.el index 17d6c7760c..96777fc891 100644 --- a/lisp/init-flymake.el +++ b/lisp/init-flymake.el @@ -27,6 +27,7 @@ (define-key flymake-mode-map (kbd "C-c ! p") 'flymake-goto-prev-error) (define-key flymake-mode-map (kbd "C-c ! c") 'flymake-start)) +(setq eldoc-documentation-function 'eldoc-documentation-compose) (provide 'init-flymake) ;;; init-flymake.el ends here From 840cd1deed37d7ca35fc19518d2aa63517c9bd8f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 28 Apr 2022 17:50:31 +0200 Subject: [PATCH 276/418] Drop modification of racer-mode-hook --- lisp/init-rust.el | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lisp/init-rust.el b/lisp/init-rust.el index 55942e010f..ddc8681489 100644 --- a/lisp/init-rust.el +++ b/lisp/init-rust.el @@ -3,12 +3,9 @@ ;;; Code: (when (maybe-require-package 'rust-mode) - (when (maybe-require-package 'company) - (add-hook 'racer-mode-hook #'company-mode))) - -(when (maybe-require-package 'flycheck-rust) - (with-eval-after-load 'rust-mode - (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))) + (when (maybe-require-package 'flycheck-rust) + (with-eval-after-load 'rust-mode + (add-hook 'flycheck-mode-hook #'flycheck-rust-setup)))) (provide 'init-rust) ;;; init-rust.el ends here From b484cada4356803d0ecb063d33546835f996fefe Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 10 May 2022 09:57:54 +0200 Subject: [PATCH 277/418] Don't override eldoc-documentation-function in Emacs < 28 Fixes #810 --- lisp/init-flymake.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-flymake.el b/lisp/init-flymake.el index 96777fc891..22078f2ef6 100644 --- a/lisp/init-flymake.el +++ b/lisp/init-flymake.el @@ -27,7 +27,8 @@ (define-key flymake-mode-map (kbd "C-c ! p") 'flymake-goto-prev-error) (define-key flymake-mode-map (kbd "C-c ! c") 'flymake-start)) -(setq eldoc-documentation-function 'eldoc-documentation-compose) +(unless (version< emacs-version "28.1") + (setq eldoc-documentation-function 'eldoc-documentation-compose)) (provide 'init-flymake) ;;; init-flymake.el ends here From 5ed2eeec63684c634b26f6e22f69608c10e643ea Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 22 Jul 2022 10:59:46 +0200 Subject: [PATCH 278/418] Switch from company to corfu for completion --- README.md | 2 +- init.el | 2 +- lisp/init-company.el | 31 ------------------------------- lisp/init-corfu.el | 31 +++++++++++++++++++++++++++++++ lisp/init-nix.el | 14 ++------------ lisp/init-php.el | 6 +----- lisp/init-ruby.el | 5 +---- lisp/init-slime.el | 8 -------- lisp/init-terraform.el | 16 +++++++--------- 9 files changed, 44 insertions(+), 71 deletions(-) delete mode 100644 lisp/init-company.el create mode 100644 lisp/init-corfu.el diff --git a/README.md b/README.md index a47ed06a7d..01d7975c40 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ in the approximate order of how much I use them, from most to least: * Erlang In particular, there's a nice config for *autocompletion* with -[company](https://company-mode.github.io/), and +[corfu](https://github.com/minad/corfu), and `flymake` (re-using backends from [flycheck](http://www.flycheck.org)) is used to immediately highlight syntax errors in Ruby, Python, Javascript, Haskell and a number of other languages. diff --git a/init.el b/init.el index 003e1a1e11..110bf5022c 100644 --- a/init.el +++ b/init.el @@ -66,7 +66,7 @@ (require 'init-recentf) (require 'init-minibuffer) (require 'init-hippie-expand) -(require 'init-company) +(require 'init-corfu) (require 'init-windows) (require 'init-sessions) (require 'init-mmm) diff --git a/lisp/init-company.el b/lisp/init-company.el deleted file mode 100644 index 9d0de03d47..0000000000 --- a/lisp/init-company.el +++ /dev/null @@ -1,31 +0,0 @@ -;;; init-company.el --- Completion with company -*- lexical-binding: t -*- -;;; Commentary: -;;; Code: - -;; WAITING: haskell-mode sets tags-table-list globally, breaks tags-completion-at-point-function -;; TODO Default sort order should place [a-z] before punctuation - -(setq tab-always-indent 'complete) -(add-to-list 'completion-styles 'initials t) - -(when (maybe-require-package 'company) - (add-hook 'after-init-hook 'global-company-mode) - (with-eval-after-load 'company - (diminish 'company-mode) - (define-key company-mode-map (kbd "M-/") 'company-complete) - (define-key company-mode-map [remap completion-at-point] 'company-complete) - (define-key company-mode-map [remap indent-for-tab-command] 'company-indent-or-complete-common) - (define-key company-active-map (kbd "M-/") 'company-other-backend) - (define-key company-active-map (kbd "C-n") 'company-select-next) - (define-key company-active-map (kbd "C-p") 'company-select-previous) - (define-key company-active-map (kbd "C-d") 'company-show-doc-buffer) - (define-key company-active-map (kbd "M-.") 'company-show-location) - (setq-default company-dabbrev-other-buffers 'all - company-tooltip-align-annotations t)) - (global-set-key (kbd "M-C-/") 'company-complete) - (when (maybe-require-package 'company-quickhelp) - (add-hook 'after-init-hook 'company-quickhelp-mode))) - - -(provide 'init-company) -;;; init-company.el ends here diff --git a/lisp/init-corfu.el b/lisp/init-corfu.el new file mode 100644 index 0000000000..6a982bc534 --- /dev/null +++ b/lisp/init-corfu.el @@ -0,0 +1,31 @@ +;;; init-corfu.el --- Interactive completion in buffers -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +;; WAITING: haskell-mode sets tags-table-list globally, breaks tags-completion-at-point-function +;; TODO Default sort order should place [a-z] before punctuation + +(setq tab-always-indent 'complete) +(require-package 'orderless) +(with-eval-after-load 'vertico + (require 'orderless)) +(setq completion-styles '(orderless basic) + completion-category-defaults nil + completion-category-overrides nil) +(setq completion-cycle-threshold 4) + +(when (maybe-require-package 'corfu) + (setq-default corfu-auto t) + (setq-default corfu-quit-no-match 'separator) + (add-hook 'after-init-hook 'global-corfu-mode) + + (when (maybe-require-package 'corfu-doc) + (with-eval-after-load 'corfu + (add-hook 'corfu-mode-hook #'corfu-doc-mode))) + + ;; TODO: https://github.com/jdtsmith/kind-icon + ) + + +(provide 'init-corfu) +;;; init-corfu.el ends here diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 47d886b9ee..d1c5c2fc9c 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -8,18 +8,8 @@ (maybe-require-package 'nix-buffer) (when (maybe-require-package 'nixos-options) - (when (maybe-require-package 'company-nixos-options) - (with-eval-after-load 'company - (with-eval-after-load 'nix-mode - ;; Patch pending https://github.com/travisbhartwell/nix-emacs/pull/46 - (with-eval-after-load 'company-nixos-options - (defun company-nixos--in-nix-context-p () - (unless (executable-find "nix-build") - (or (derived-mode-p 'nix-mode 'nix-repl-mode) - (let ((file-name (buffer-file-name (current-buffer)))) - (and file-name (equal "nix" (file-name-extension file-name)))))))) - - (add-to-list 'company-backends 'company-nixos-options)))))) + ;; TODO: write a CAPF backend based on company-nixos-options + )) (provide 'init-nix) diff --git a/lisp/init-php.el b/lisp/init-php.el index e45dfd62a8..e0aceef697 100644 --- a/lisp/init-php.el +++ b/lisp/init-php.el @@ -3,11 +3,7 @@ ;;; Code: (when (maybe-require-package 'php-mode) - (maybe-require-package 'smarty-mode) - - (when (maybe-require-package 'company-php) - (with-eval-after-load 'company - (add-to-list 'company-backends 'company-ac-php-backend)))) + (maybe-require-package 'smarty-mode)) (provide 'init-php) ;;; init-php.el ends here diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index d6dd10095b..0c2e80ea8a 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -57,10 +57,7 @@ ;;; Robe (when (maybe-require-package 'robe) (with-eval-after-load 'ruby-mode - (add-hook 'ruby-mode-hook 'robe-mode)) - (with-eval-after-load 'robe - (with-eval-after-load 'company - (add-to-list 'company-backends 'company-robe)))) + (add-hook 'ruby-mode-hook 'robe-mode))) diff --git a/lisp/init-slime.el b/lisp/init-slime.el index 6e0e3d46cf..278a21c54e 100644 --- a/lisp/init-slime.el +++ b/lisp/init-slime.el @@ -5,12 +5,6 @@ (require-package 'slime) (push (expand-file-name "contrib" (file-name-directory (locate-library "slime"))) load-path) -(when (maybe-require-package 'slime-company) - (setq slime-company-completion 'fuzzy - slime-company-after-completion 'slime-company-just-one-space) - (with-eval-after-load 'slime-company - (add-to-list 'company-backends 'company-slime))) - ;;; Lisp buffers @@ -18,8 +12,6 @@ (setq slime-protocol-version 'ignore) (setq slime-net-coding-system 'utf-8-unix) (let ((features '(slime-fancy slime-repl slime-fuzzy))) - (when (require 'slime-company nil t) - (push 'slime-company features)) (slime-setup features)) ) diff --git a/lisp/init-terraform.el b/lisp/init-terraform.el index f24782ce59..edd2efb021 100644 --- a/lisp/init-terraform.el +++ b/lisp/init-terraform.el @@ -5,15 +5,13 @@ ;;; Terraform (when (maybe-require-package 'terraform-mode) - (when (maybe-require-package 'company-terraform) - (with-eval-after-load 'terraform-mode - (company-terraform-init) - - ;; I find formatters based on "reformatter" to be more reliable - ;; so I redefine `terraform-format-on-save-mode' here. - (when (maybe-require-package 'reformatter) - (reformatter-define terraform-format - :program "terraform" :args '("fmt" "-")))))) + ;; TODO: find/write a replacement for company-terraform + (with-eval-after-load 'terraform-mode + ;; I find formatters based on "reformatter" to be more reliable + ;; so I redefine `terraform-format-on-save-mode' here. + (when (maybe-require-package 'reformatter) + (reformatter-define terraform-format + :program "terraform" :args '("fmt" "-"))))) (provide 'init-terraform) ;;; init-terraform.el ends here From 6a227555bafbe9496c43b70c6f99bc42b6b40bb5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 22 Jul 2022 11:00:28 +0200 Subject: [PATCH 279/418] Don't set completion-styles locally in minibuffer --- lisp/init-minibuffer.el | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index a6f0cf3201..3f933daacf 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -6,14 +6,6 @@ (when (maybe-require-package 'vertico) (add-hook 'after-init-hook 'vertico-mode) - (require-package 'orderless) - (with-eval-after-load 'vertico - (require 'orderless)) - - (defun sanityinc/use-orderless-in-minibuffer () - (setq-local completion-styles '(substring orderless))) - (add-hook 'minibuffer-setup-hook 'sanityinc/use-orderless-in-minibuffer) - (when (maybe-require-package 'embark) (with-eval-after-load 'vertico (define-key vertico-map (kbd "C-c C-o") 'embark-export) From e23ae9ec379a47d5382b4804b35cd9369242ca07 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 22 Jul 2022 22:56:22 +0200 Subject: [PATCH 280/418] Account for csv-mode requiring newer Emacs versions --- lisp/init-csv.el | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lisp/init-csv.el b/lisp/init-csv.el index 3dfd8e02b8..77af1359c4 100644 --- a/lisp/init-csv.el +++ b/lisp/init-csv.el @@ -2,11 +2,10 @@ ;;; Commentary: ;;; Code: -(require-package 'csv-mode) +(when (maybe-require-package 'csv-mode) + (add-auto-mode 'csv-mode "\\.[Cc][Ss][Vv]\\'") -(add-auto-mode 'csv-mode "\\.[Cc][Ss][Vv]\\'") - -(setq csv-separators '("," ";" "|" " ")) + (setq csv-separators '("," ";" "|" " "))) (provide 'init-csv) ;;; init-csv.el ends here From 03bd3ce41dbc7b6baa2eea55dc4454ca44f58c9e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 22 Jul 2022 23:06:02 +0200 Subject: [PATCH 281/418] orderless isn't compatible with older emacsen --- lisp/init-corfu.el | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lisp/init-corfu.el b/lisp/init-corfu.el index 6a982bc534..2a2ce0af10 100644 --- a/lisp/init-corfu.el +++ b/lisp/init-corfu.el @@ -6,11 +6,11 @@ ;; TODO Default sort order should place [a-z] before punctuation (setq tab-always-indent 'complete) -(require-package 'orderless) -(with-eval-after-load 'vertico - (require 'orderless)) -(setq completion-styles '(orderless basic) - completion-category-defaults nil +(when (maybe-require-package 'orderless) + (with-eval-after-load 'vertico + (require 'orderless) + (setq completion-styles '(orderless basic)))) +(setq completion-category-defaults nil completion-category-overrides nil) (setq completion-cycle-threshold 4) From ac935b1aeaff1e444ca27bc5130d42523f179cbb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 22 Jul 2022 23:08:34 +0200 Subject: [PATCH 282/418] Add Emacs 28.1 to CI --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6d51a7b20f..7bb5f10ecf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,10 +22,11 @@ jobs: - 26.3 - 27.1 - 27.2 + - 28.1 - snapshot include: - os: macos-latest - emacs_version: 27.2 + emacs_version: 28.1 steps: - uses: purcell/setup-emacs@master with: From a3a98a16d5b90e798e4f5b1fb99050477e726e97 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 23 Jul 2022 21:28:55 +1200 Subject: [PATCH 283/418] Emphasise that basic functionality may break in older Emacsen --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 01d7975c40..ee879a0bc7 100644 --- a/README.md +++ b/README.md @@ -36,11 +36,12 @@ LSP support is provided using `eglot`. ## Supported Emacs versions +Use the latest released Emacs version available to you. The author +typically uses the latest stable version. + The config should run on Emacs 25.1 or greater and is designed to -degrade smoothly - see the CI build - but note that much newer -versions are required for an increasing number of key packages, so to -get full functionality you should use the latest Emacs version -available to you. +degrade smoothly - see the CI build - but even basic enhancements +like completion may be unavailable if your Emacs is too old. Some Windows users might need to follow [these instructions](http://xn--9dbdkw.se/diary/how_to_enable_GnuTLS_for_Emacs_24_on_Windows/index.en.html) From 6190c87929af81dca0dd0a91ff71a3551daaaa68 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 23 Jul 2022 11:32:14 +0200 Subject: [PATCH 284/418] Drop support for Emacs 25.x --- .github/workflows/test.yml | 3 --- README.md | 2 +- init.el | 4 ++-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7bb5f10ecf..8fffbc0d5c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,9 +14,6 @@ jobs: matrix: os: [ubuntu-latest] emacs_version: - - 25.1 - - 25.2 - - 25.3 - 26.1 - 26.2 - 26.3 diff --git a/README.md b/README.md index ee879a0bc7..e0b7479802 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ LSP support is provided using `eglot`. Use the latest released Emacs version available to you. The author typically uses the latest stable version. -The config should run on Emacs 25.1 or greater and is designed to +The config should run on Emacs 26.1 or greater and is designed to degrade smoothly - see the CI build - but even basic enhancements like completion may be unavailable if your Emacs is too old. diff --git a/init.el b/init.el index 110bf5022c..a6eca530fa 100644 --- a/init.el +++ b/init.el @@ -9,10 +9,10 @@ ;; Produce backtraces when errors occur: can be helpful to diagnose startup issues ;;(setq debug-on-error t) -(let ((minver "25.1")) +(let ((minver "26.1")) (when (version< emacs-version minver) (error "Your Emacs is too old -- this config requires v%s or higher" minver))) -(when (version< emacs-version "26.1") +(when (version< emacs-version "27.1") (message "Your Emacs is old, and some functionality in this config will be disabled. Please upgrade if possible.")) (add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory)) From b0cc9ea7dd7c3ab7d9a77bc89cbb0d0d106c4528 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 26 Aug 2022 17:22:50 +0200 Subject: [PATCH 285/418] Disable corfu-auto in eshell-mode Fixes #818 --- lisp/init-corfu.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-corfu.el b/lisp/init-corfu.el index 2a2ce0af10..e22c2901ec 100644 --- a/lisp/init-corfu.el +++ b/lisp/init-corfu.el @@ -16,6 +16,8 @@ (when (maybe-require-package 'corfu) (setq-default corfu-auto t) + (with-eval-after-load 'eshell + (add-hook 'eshell-mode-hook (lambda () (setq-local corfu-auto nil)))) (setq-default corfu-quit-no-match 'separator) (add-hook 'after-init-hook 'global-corfu-mode) From a8f2a45015bd8bca82f90747d40dcb593957ee01 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 8 Sep 2022 07:30:11 +0200 Subject: [PATCH 286/418] Show flymake message first in eldoc, so it isn't hidden when using eglot --- lisp/init-flymake.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/init-flymake.el b/lisp/init-flymake.el index 22078f2ef6..06dcf5963c 100644 --- a/lisp/init-flymake.el +++ b/lisp/init-flymake.el @@ -28,7 +28,13 @@ (define-key flymake-mode-map (kbd "C-c ! c") 'flymake-start)) (unless (version< emacs-version "28.1") - (setq eldoc-documentation-function 'eldoc-documentation-compose)) + (setq eldoc-documentation-function 'eldoc-documentation-compose) + + (add-hook 'flymake-mode-hook + (lambda () + (setq eldoc-documentation-functions + (cons 'flymake-eldoc-function + (delq 'flymake-eldoc-function eldoc-documentation-functions)))))) (provide 'init-flymake) ;;; init-flymake.el ends here From aeb16fe067d33cddf0065e6d486b9f33bdabd3c2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 18 Nov 2022 17:55:36 +0100 Subject: [PATCH 287/418] Prefer load-library to featurep when checking for available ob- libs See #824 --- lisp/init-org.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index 199ad6c180..b9bac92361 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -364,7 +364,7 @@ typical word processor." 'org-babel-load-languages (seq-filter (lambda (pair) - (featurep (intern (concat "ob-" (symbol-name (car pair)))))) + (locate-library (concat "ob-" (symbol-name (car pair))))) '((R . t) (ditaa . t) (dot . t) From f4548029eb6d6ac879ff20cd5c9510acdaa31a52 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 23 Nov 2022 18:51:25 +0100 Subject: [PATCH 288/418] Set ledger-mode-should-check-version to nil See #825 --- lisp/init-ledger.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-ledger.el b/lisp/init-ledger.el index 44727531d7..80a0163ab6 100644 --- a/lisp/init-ledger.el +++ b/lisp/init-ledger.el @@ -13,7 +13,8 @@ (define-key ledger-mode-map (kbd "C-o") 'open-line)) (setq ledger-highlight-xact-under-point nil - ledger-use-iso-dates nil) + ledger-use-iso-dates nil + ledger-mode-should-check-version nil) (with-eval-after-load 'ledger-mode (when (memq window-system '(mac ns)) From 80ead24af3bf95c89e8b8c07041d9e9b788ddb14 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 25 Nov 2022 10:00:30 +0100 Subject: [PATCH 289/418] Remove beacon to stop CI from breaking (see #87) --- lisp/init-editing-utils.el | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 87069bd249..2e71323d5b 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -65,13 +65,6 @@ (require-package 'mode-line-bell) (add-hook 'after-init-hook 'mode-line-bell-mode) - - -(when (maybe-require-package 'beacon) - (setq-default beacon-lighter "") - (setq-default beacon-size 20) - (add-hook 'after-init-hook 'beacon-mode)) - ;;; Newline behaviour From 6eec82f623d6a866cba1b182c63d6d11446d88c4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 29 Nov 2022 14:11:16 +0100 Subject: [PATCH 290/418] Update config for corfu info popups Fixes #827 --- lisp/init-corfu.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-corfu.el b/lisp/init-corfu.el index e22c2901ec..d6234411d0 100644 --- a/lisp/init-corfu.el +++ b/lisp/init-corfu.el @@ -21,9 +21,9 @@ (setq-default corfu-quit-no-match 'separator) (add-hook 'after-init-hook 'global-corfu-mode) - (when (maybe-require-package 'corfu-doc) + (when (featurep 'corfu-popupinfo) (with-eval-after-load 'corfu - (add-hook 'corfu-mode-hook #'corfu-doc-mode))) + (corfu-popupinfo-mode))) ;; TODO: https://github.com/jdtsmith/kind-icon ) From a9e0eb8c79293954b1d9a9d74c869c14fbe2992c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 17 Jan 2023 17:52:47 +0100 Subject: [PATCH 291/418] Allow extra args in advised function See #832 --- lisp/init-lisp.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 6d2594b57b..36af413fcc 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -47,7 +47,7 @@ (add-hook 'after-init-hook 'ipretty-mode)) -(defun sanityinc/make-read-only (expression out-buffer-name) +(defun sanityinc/make-read-only (_expression out-buffer-name &rest _) "Enable `view-mode' in the output buffer - if any - so it can be closed with `\"q\"." (when (get-buffer out-buffer-name) (with-current-buffer out-buffer-name From 289a7480f39eb48b8b264528f869affc26ec8f29 Mon Sep 17 00:00:00 2001 From: Charles Celerier Date: Mon, 13 Feb 2023 14:15:48 +0000 Subject: [PATCH 292/418] [minibuffer] Fix "Invalid preview key" message in minibuffer The consult-customize function will now report a message when using (kbd ...) as a value for the :preview-key. See https://github.com/doomemacs/doomemacs/issues/7064. --- lisp/init-minibuffer.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index 3f933daacf..aca7a3aeca 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -14,7 +14,7 @@ (when (maybe-require-package 'consult) (defmacro sanityinc/no-consult-preview (&rest cmds) `(with-eval-after-load 'consult - (consult-customize ,@cmds :preview-key (kbd "M-P")))) + (consult-customize ,@cmds :preview-key "M-P"))) (sanityinc/no-consult-preview consult-ripgrep From 678073da7d01314d1ceea890fad292724faa5210 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 24 Feb 2023 18:43:58 +0100 Subject: [PATCH 293/418] When using rg for projectile file lists, print with nulls Fixes #837 --- lisp/init-projectile.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index df6928f1b0..61c8a9d6fe 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -9,7 +9,7 @@ (setq-default projectile-mode-line-prefix " Proj") (when (executable-find "rg") - (setq-default projectile-generic-command "rg --files --hidden")) + (setq-default projectile-generic-command "rg --files --hidden -0")) (with-eval-after-load 'projectile (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)) From 0297f158c9feba4413e561dd51020f9ac3e188c3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 29 Mar 2023 12:13:16 +0200 Subject: [PATCH 294/418] Bind C-h A to describe-face --- lisp/init-editing-utils.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 2e71323d5b..06fcf0c102 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -145,6 +145,9 @@ ;;; Handy key bindings +(with-eval-after-load 'help + (define-key help-map "A" 'describe-face)) + (global-set-key (kbd "C-.") 'set-mark-command) (global-set-key (kbd "C-x C-.") 'pop-global-mark) From fc2aa350359f0b0360c068a6ed67d844f89b988c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 29 Mar 2023 12:14:40 +0200 Subject: [PATCH 295/418] Use "nil" as the language server for nix-mode --- lisp/init-nix.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index d1c5c2fc9c..3ac17ee809 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -11,6 +11,8 @@ ;; TODO: write a CAPF backend based on company-nixos-options )) +(with-eval-after-load 'eglot + (add-to-list 'eglot-server-programs '((nix-mode) . ("nil")))) (provide 'init-nix) ;;; init-nix.el ends here From 7507f176abd50aa936076899328d9a1b7db08226 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 6 Jun 2023 17:24:11 +0200 Subject: [PATCH 296/418] Don't override RET binding globally, just rely on electric-indent Fixes #792 --- lisp/init-editing-utils.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 06fcf0c102..7f730d7dca 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -67,9 +67,8 @@ -;;; Newline behaviour +;;; Newline behaviour (see also electric-indent-mode, enabled above) -(global-set-key (kbd "RET") 'newline-and-indent) (defun sanityinc/newline-at-end-of-line () "Move to end of line, enter a newline, and reindent." (interactive) From 1b18fd24267bcc984e446a8eaae27c8dcebdba4e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 8 Jun 2023 15:30:30 +0200 Subject: [PATCH 297/418] Prefer derived-mode-p when checking major-mode --- lisp/init-paredit.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index bd976e2c8e..9d437f1d1f 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -4,8 +4,9 @@ (require-package 'paredit) + (defun sanityinc/maybe-map-paredit-newline () - (unless (or (memq major-mode '(inferior-emacs-lisp-mode cider-repl-mode)) + (unless (or (derived-mode-p 'inferior-emacs-lisp-mode 'cider-repl-mode) (minibufferp)) (local-set-key (kbd "RET") 'paredit-newline))) From 2e1c51d117374fcf8cd054bad33abcf44f54da7a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 8 Jun 2023 15:46:17 +0200 Subject: [PATCH 298/418] Remove now-redundant eglot server override for tuareg-mode --- lisp/init-ocaml.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lisp/init-ocaml.el b/lisp/init-ocaml.el index 209b180075..c3bf20b999 100644 --- a/lisp/init-ocaml.el +++ b/lisp/init-ocaml.el @@ -2,10 +2,6 @@ ;;; Commentary: ;;; Code: -(with-eval-after-load 'eglot - (put 'tuareg-mode 'eglot-language-id "ocaml") - (add-to-list 'eglot-server-programs '((tuareg-mode) . ("ocamllsp")) t)) - (when (maybe-require-package 'tuareg) (with-eval-after-load 'tuareg (defvar-local tuareg-previous-tuareg-buffer nil From e76fb181cfd72b5bd0be2aab2dff8417eb0d252e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 8 Jun 2023 17:43:33 +0200 Subject: [PATCH 299/418] Remove default binding of RET in paredit-mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is to avoid messing things up in the minibuffer — code already exists to bind this conditionally elsewhere. --- lisp/init-paredit.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index 9d437f1d1f..e68f780181 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -16,7 +16,7 @@ (diminish 'paredit-mode " Par") ;; Suppress certain paredit keybindings to avoid clashes, including ;; my global binding of M-? - (dolist (binding '("C-" "C-" "C-M-" "C-M-" "M-s" "M-?")) + (dolist (binding '("RET" "C-" "C-" "C-M-" "C-M-" "M-s" "M-?")) (define-key paredit-mode-map (read-kbd-macro binding) nil))) From 9b7ddc50ec6447986b37302e99e123d5d968facb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 8 Jun 2023 17:44:37 +0200 Subject: [PATCH 300/418] Upgrade granularity of magit diffs --- lisp/init-git.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index d3d57dec1e..fac54186e9 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -15,7 +15,7 @@ (require-package 'git-link) (when (maybe-require-package 'magit) - (setq-default magit-diff-refine-hunk t) + (setq-default magit-diff-refine-hunk 'all) ;; Hint: customize `magit-repository-directories' so that you can use C-u M-F12 to ;; quickly open magit on any one of your projects. From 5f1ef303868c2aef37d85761a4c3ddaacd66b166 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 28 Jun 2023 14:17:13 +0200 Subject: [PATCH 301/418] Prefer "when" to "if" with no "else" branch --- lisp/init-paredit.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index e68f780181..0292eec8bb 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -35,8 +35,8 @@ (defun sanityinc/conditionally-enable-paredit-mode () "Enable paredit during lisp-related minibuffer commands." - (if (memq this-command paredit-minibuffer-commands) - (enable-paredit-mode))) + (when (memq this-command paredit-minibuffer-commands) + (enable-paredit-mode))) (provide 'init-paredit) From 9d80c30c0889f5606dec351d0547d50aea0f19ad Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 10 Jul 2023 17:29:32 +0200 Subject: [PATCH 302/418] Unconditionally load corfu-popupinfo --- lisp/init-corfu.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/init-corfu.el b/lisp/init-corfu.el index d6234411d0..1c193dd0e1 100644 --- a/lisp/init-corfu.el +++ b/lisp/init-corfu.el @@ -21,9 +21,10 @@ (setq-default corfu-quit-no-match 'separator) (add-hook 'after-init-hook 'global-corfu-mode) - (when (featurep 'corfu-popupinfo) - (with-eval-after-load 'corfu - (corfu-popupinfo-mode))) + + + (with-eval-after-load 'corfu + (corfu-popupinfo-mode)) ;; TODO: https://github.com/jdtsmith/kind-icon ) From 6c88ee200de6ae5b002e919aa6e757e8c0beca6b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 28 Jul 2023 08:09:20 +0200 Subject: [PATCH 303/418] Add keybinding for flymake-show-buffer-diagnostics --- lisp/init-flymake.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-flymake.el b/lisp/init-flymake.el index 06dcf5963c..06e91226a7 100644 --- a/lisp/init-flymake.el +++ b/lisp/init-flymake.el @@ -23,6 +23,7 @@ (with-eval-after-load 'flymake ;; Provide some flycheck-like bindings in flymake mode to ease transition + (define-key flymake-mode-map (kbd "C-c ! l") 'flymake-show-buffer-diagnostics) (define-key flymake-mode-map (kbd "C-c ! n") 'flymake-goto-next-error) (define-key flymake-mode-map (kbd "C-c ! p") 'flymake-goto-prev-error) (define-key flymake-mode-map (kbd "C-c ! c") 'flymake-start)) From 04ad959fb0f897d6598e1f7a1aaf09b48f9cad49 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Aug 2023 08:11:52 +0200 Subject: [PATCH 304/418] Add basic treesitter support --- .gitignore | 1 + init.el | 3 +++ lisp/init-treesitter.el | 56 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 lisp/init-treesitter.el diff --git a/.gitignore b/.gitignore index d03d13d586..2905347d18 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ CVS cookies /newsticker \#* +/tree-sitter /elpa /elpa-* site-lisp/package/ diff --git a/init.el b/init.el index a6eca530fa..c5ffc3c6bf 100644 --- a/init.el +++ b/init.el @@ -128,6 +128,9 @@ (require 'init-folding) (require 'init-dash) +(when (featurep 'treesit) + (require 'init-treesitter)) + ;;(require 'init-twitter) ;; (require 'init-mu) (require 'init-ledger) diff --git a/lisp/init-treesitter.el b/lisp/init-treesitter.el new file mode 100644 index 0000000000..64167f574e --- /dev/null +++ b/lisp/init-treesitter.el @@ -0,0 +1,56 @@ +;; Install third-party treesitter-based modes +(require-package 'clojure-ts-mode) + + +;; You can download per-architecture pre-compiled release from +;; https://github.com/emacs-tree-sitter/tree-sitter-langs Rename +;; contained grammars to add prefix "libtree-sitter-", place in +;; ~/.emacs.d/tree-sitter. +;; +;; Nix users can pre-install all grammars alongside their Emacs, see +;; https://github.com/nix-community/emacs-overlay/issues/341 +;; +;; Note that grammar files from different sources can be differently +;; named and configured, so there could be different results. Some +;; common remappings are included below. +(setq treesit-load-name-override-list nil + major-mode-remap-alist nil) + +;; Go through all the installed grammars and configure corresponding emacs ts-modes if they +;; exist. +(let ((alternates '(("c-sharp" . "csharp") + ("cpp" . "c++") + ("gomod" . "go-mod") + ("javascript" . "js")))) + (dolist (dir (cons (expand-file-name "tree-sitter" user-emacs-directory) treesit-extra-load-path)) + (when (file-directory-p dir) + (dolist (file (directory-files dir)) + (let ((fname (file-name-sans-extension (file-name-nondirectory file)))) + (when (string-match "libtree-sitter-\\(.*\\)" fname) + (let* ((file-lang (match-string 1 fname)) + (emacs-lang (or (cdr (assoc-string file-lang alternates)) file-lang))) + (unless (string-equal file-lang emacs-lang) + (push (list (intern emacs-lang) + fname + (concat "tree_sitter_" (replace-regexp-in-string "-" "_" file-lang))) + treesit-load-name-override-list)) + ;; TODO: don't reconfigure if we've already found a lib earlier in the treesit load path + (let ((ts-mode-name (intern (concat emacs-lang "-ts-mode"))) + (regular-mode-name (intern (concat emacs-lang "-mode")))) + (when (fboundp ts-mode-name) + (push (cons regular-mode-name ts-mode-name) + major-mode-remap-alist)))))))))) + + +;; When there's js-ts-mode, we prefer it to js2-mode +(when-let (jsmap (assoc 'js-mode major-mode-remap-alist)) + (push (cons 'js2-mode (cdr jsmap)) major-mode-remap-alist)) + + + +;; Default +;; (setq treesit-font-lock-level 3) + + + +(provide 'init-treesitter) From 29f07b512966acb9b94fa4161aa5fe774d7d6a1f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Aug 2023 08:27:48 +0200 Subject: [PATCH 305/418] Fix snippet for treesitter remapping of js2-mode --- lisp/init-treesitter.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-treesitter.el b/lisp/init-treesitter.el index 64167f574e..7ba2873412 100644 --- a/lisp/init-treesitter.el +++ b/lisp/init-treesitter.el @@ -43,8 +43,8 @@ ;; When there's js-ts-mode, we prefer it to js2-mode -(when-let (jsmap (assoc 'js-mode major-mode-remap-alist)) - (push (cons 'js2-mode (cdr jsmap)) major-mode-remap-alist)) +(when-let (jsmap (alist-get 'js-mode major-mode-remap-alist)) + (add-to-list 'major-mode-remap-alist (cons 'js2-mode jsmap))) From b53dc608752d87e3000dcb0e9b572c1d4fb6b0be Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Aug 2023 08:28:17 +0200 Subject: [PATCH 306/418] Alter clojure-ts-mode-hook along with clojure-mode-hook --- lisp/init-clojure.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/init-clojure.el b/lisp/init-clojure.el index 0961d9979e..6c7f3e4608 100644 --- a/lisp/init-clojure.el +++ b/lisp/init-clojure.el @@ -9,8 +9,9 @@ (require-package 'elein) (with-eval-after-load 'clojure-mode - (add-hook 'clojure-mode-hook 'sanityinc/lisp-setup) - (add-hook 'clojure-mode-hook 'subword-mode))) + (dolist (m '(clojure-mode-hook clojure-ts-mode-hook)) + (add-hook m 'sanityinc/lisp-setup) + (add-hook m 'subword-mode)))) (provide 'init-clojure) From 1506a906b36f4a4db4fab2039cad0ce0a5d688bf Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Aug 2023 09:02:43 +0200 Subject: [PATCH 307/418] Make treesitter auto-configuration code clearer --- lisp/init-treesitter.el | 57 ++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/lisp/init-treesitter.el b/lisp/init-treesitter.el index 7ba2873412..6efc011a63 100644 --- a/lisp/init-treesitter.el +++ b/lisp/init-treesitter.el @@ -16,31 +16,40 @@ (setq treesit-load-name-override-list nil major-mode-remap-alist nil) -;; Go through all the installed grammars and configure corresponding emacs ts-modes if they -;; exist. -(let ((alternates '(("c-sharp" . "csharp") - ("cpp" . "c++") - ("gomod" . "go-mod") - ("javascript" . "js")))) - (dolist (dir (cons (expand-file-name "tree-sitter" user-emacs-directory) treesit-extra-load-path)) - (when (file-directory-p dir) - (dolist (file (directory-files dir)) - (let ((fname (file-name-sans-extension (file-name-nondirectory file)))) - (when (string-match "libtree-sitter-\\(.*\\)" fname) - (let* ((file-lang (match-string 1 fname)) - (emacs-lang (or (cdr (assoc-string file-lang alternates)) file-lang))) - (unless (string-equal file-lang emacs-lang) - (push (list (intern emacs-lang) - fname - (concat "tree_sitter_" (replace-regexp-in-string "-" "_" file-lang))) - treesit-load-name-override-list)) - ;; TODO: don't reconfigure if we've already found a lib earlier in the treesit load path - (let ((ts-mode-name (intern (concat emacs-lang "-ts-mode"))) - (regular-mode-name (intern (concat emacs-lang "-mode")))) - (when (fboundp ts-mode-name) - (push (cons regular-mode-name ts-mode-name) - major-mode-remap-alist)))))))))) +(defun sanityinc/auto-configure-treesitter () + "Find and configure installed grammars, remap to matching -ts-modes if present. +Return a list of languages seen along the way." + (let ((grammar-name-to-emacs-lang '(("c-sharp" . "csharp") + ("cpp" . "c++") + ("gomod" . "go-mod") + ("javascript" . "js"))) + seen-grammars) + (dolist (dir (cons (expand-file-name "tree-sitter" user-emacs-directory) + treesit-extra-load-path)) + (when (file-directory-p dir) + (dolist (file (directory-files dir)) + (let ((fname (file-name-sans-extension (file-name-nondirectory file)))) + (when (string-match "libtree-sitter-\\(.*\\)" fname) + (let* ((file-lang (match-string 1 fname)) + (emacs-lang (or (cdr (assoc-string file-lang grammar-name-to-emacs-lang)) file-lang))) + ;; Override library if its filename doesn't match the Emacs name + (unless (or (memq (intern emacs-lang) seen-grammars) + (string-equal file-lang emacs-lang)) + (let ((libname (concat "tree_sitter_" (replace-regexp-in-string "-" "_" file-lang)))) + (add-to-list 'treesit-load-name-override-list + (list (intern emacs-lang) fname libname)))) + ;; If there's a corresponding -ts mode, remap the standard mode to it + (let ((ts-mode-name (intern (concat emacs-lang "-ts-mode"))) + (regular-mode-name (intern (concat emacs-lang "-mode")))) + (when (fboundp ts-mode-name) + (add-to-list 'major-mode-remap-alist + (cons regular-mode-name ts-mode-name)))) + ;; Remember we saw this language so we don't squash its config when we + ;; find another lib later in the treesit load path + (push (intern emacs-lang) seen-grammars))))))) + seen-grammars)) +(sanityinc/auto-configure-treesitter) ;; When there's js-ts-mode, we prefer it to js2-mode (when-let (jsmap (alist-get 'js-mode major-mode-remap-alist)) From 048f7bdd2a392f064cf6f1ce5bc9708357efedb7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Aug 2023 14:29:03 +0200 Subject: [PATCH 308/418] Add Emacs 29.1 to CI, don't fail if Emacs HEAD fails --- .github/workflows/test.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8fffbc0d5c..34e321ffab 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,6 +9,7 @@ on: jobs: build: runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.experimental }} strategy: fail-fast: false matrix: @@ -20,10 +21,13 @@ jobs: - 27.1 - 27.2 - 28.1 - - snapshot + - 29.1 + experimental: [false] include: - os: macos-latest emacs_version: 28.1 + - emacs_version: snapshot + experimental: true steps: - uses: purcell/setup-emacs@master with: From 9819951db082eb2648c9425f7911d2b35ba85808 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Aug 2023 14:33:23 +0200 Subject: [PATCH 309/418] Fix actions --- .github/workflows/test.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 34e321ffab..191c793597 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,6 @@ jobs: runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.experimental }} strategy: - fail-fast: false matrix: os: [ubuntu-latest] emacs_version: @@ -24,10 +23,10 @@ jobs: - 29.1 experimental: [false] include: - - os: macos-latest - emacs_version: 28.1 - emacs_version: snapshot experimental: true + - os: macos-latest + emacs_version: 28.1 steps: - uses: purcell/setup-emacs@master with: From 76a70503af5a7c182ec952acba26d44c8b7dd06e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Aug 2023 14:34:40 +0200 Subject: [PATCH 310/418] Only run CI on Linux --- .github/workflows/test.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 191c793597..cc15cfcc03 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,11 +8,10 @@ on: jobs: build: - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental }} strategy: matrix: - os: [ubuntu-latest] emacs_version: - 26.1 - 26.2 @@ -25,8 +24,6 @@ jobs: include: - emacs_version: snapshot experimental: true - - os: macos-latest - emacs_version: 28.1 steps: - uses: purcell/setup-emacs@master with: From 5050cb5e18d8b1b9f87f94b726506c48574347fc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Aug 2023 21:09:28 +0200 Subject: [PATCH 311/418] Fix bindings inside when-let --- lisp/init-treesitter.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-treesitter.el b/lisp/init-treesitter.el index 6efc011a63..ecfddb724d 100644 --- a/lisp/init-treesitter.el +++ b/lisp/init-treesitter.el @@ -52,13 +52,13 @@ Return a list of languages seen along the way." (sanityinc/auto-configure-treesitter) ;; When there's js-ts-mode, we prefer it to js2-mode -(when-let (jsmap (alist-get 'js-mode major-mode-remap-alist)) +(when-let ((jsmap (alist-get 'js-mode major-mode-remap-alist))) (add-to-list 'major-mode-remap-alist (cons 'js2-mode jsmap))) ;; Default -;; (setq treesit-font-lock-level 3) +(setq treesit-font-lock-level 4) From f67b76f2b68625f3ba1b03e4d18dc64258826855 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Aug 2023 21:13:23 +0200 Subject: [PATCH 312/418] Add dependabot config to get automatic Actions updates --- .github/dependabot.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..ba29cb1dad --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: +- package-ecosystem: github-actions + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 + commit-message: + prefix: "chore" + include: "scope" From 7ce2be564ecfea7e950b027fdb71765c9b503d97 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Aug 2023 19:13:57 +0000 Subject: [PATCH 313/418] chore(deps): bump actions/checkout from 2 to 3 Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cc15cfcc03..baae6aa93d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,6 +29,6 @@ jobs: with: version: ${{ matrix.emacs_version }} - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Check startup run: ./test-startup.sh From 5d114074a1813e31c3417975d01542b4a7bb82ca Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 4 Aug 2023 10:26:12 +0200 Subject: [PATCH 314/418] Switch back from affe to consult-ripgrep --- lisp/init-minibuffer.el | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index aca7a3aeca..d45b3114ac 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -25,14 +25,12 @@ (when (maybe-require-package 'projectile) (setq-default consult-project-root-function 'projectile-project-root)) - (when (and (executable-find "rg") (maybe-require-package 'affe)) - (defun sanityinc/affe-grep-at-point (&optional dir initial) + (when (and (executable-find "rg")) + (defun sanityinc/consult-ripgrep-at-point (&optional dir initial) (interactive (list prefix-arg (when-let ((s (symbol-at-point))) (symbol-name s)))) - (affe-grep dir initial)) - (global-set-key (kbd "M-?") 'sanityinc/affe-grep-at-point) - (sanityinc/no-consult-preview sanityinc/affe-grep-at-point) - (with-eval-after-load 'affe (sanityinc/no-consult-preview affe-grep))) + (consult-ripgrep dir initial)) + (global-set-key (kbd "M-?") 'sanityinc/consult-ripgrep-at-point)) (global-set-key [remap switch-to-buffer] 'consult-buffer) (global-set-key [remap switch-to-buffer-other-window] 'consult-buffer-other-window) From e4ee065b4f3a64ecba378b3bac8fc4d5b91a799b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 9 Aug 2023 08:15:14 +0200 Subject: [PATCH 315/418] Turn off consult preview for my consult-ripgrep wrapper too --- lisp/init-minibuffer.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index d45b3114ac..54808e6792 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -30,6 +30,7 @@ (interactive (list prefix-arg (when-let ((s (symbol-at-point))) (symbol-name s)))) (consult-ripgrep dir initial)) + (sanityinc/no-consult-preview sanityinc/consult-ripgrep-at-point) (global-set-key (kbd "M-?") 'sanityinc/consult-ripgrep-at-point)) (global-set-key [remap switch-to-buffer] 'consult-buffer) From db0ebae353e92e196d7ca2ce0e8d03037dcf4866 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 9 Aug 2023 08:15:30 +0200 Subject: [PATCH 316/418] Don't set defunct consult config var --- lisp/init-minibuffer.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index 54808e6792..34039b9b27 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -22,9 +22,6 @@ consult-bookmark consult-recent-file consult-xref consult--source-recent-file consult--source-project-recent-file consult--source-bookmark) - (when (maybe-require-package 'projectile) - (setq-default consult-project-root-function 'projectile-project-root)) - (when (and (executable-find "rg")) (defun sanityinc/consult-ripgrep-at-point (&optional dir initial) (interactive (list prefix-arg (when-let ((s (symbol-at-point))) From 2c76710de3959475dfa95f971d5d8ae7b97e6412 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 9 Aug 2023 08:18:09 +0200 Subject: [PATCH 317/418] Restore M- binding for paredit --- lisp/init-paredit.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index 0292eec8bb..fa3b4493f8 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -17,7 +17,8 @@ ;; Suppress certain paredit keybindings to avoid clashes, including ;; my global binding of M-? (dolist (binding '("RET" "C-" "C-" "C-M-" "C-M-" "M-s" "M-?")) - (define-key paredit-mode-map (read-kbd-macro binding) nil))) + (define-key paredit-mode-map (read-kbd-macro binding) nil)) + (define-key paredit-mode-map (kbd "M-") 'paredit-splice-sexp-killing-backward)) From 7a3448467023ccd4c1d09babfe8defd39d4b731a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 10 Aug 2023 16:18:38 +0200 Subject: [PATCH 318/418] More aggressively try to load treesit to judge its presence Fixes #848 --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index c5ffc3c6bf..99b03db394 100644 --- a/init.el +++ b/init.el @@ -128,7 +128,7 @@ (require 'init-folding) (require 'init-dash) -(when (featurep 'treesit) +(when (require 'treesit nil t) (require 'init-treesitter)) ;;(require 'init-twitter) From b9ec84c2e1fe60106388f1ac15f5af8dd9c5f690 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 10 Aug 2023 18:50:25 +0200 Subject: [PATCH 319/418] Avoid duplicate flymake checkers when using flymake-flycheck --- lisp/init-flymake.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-flymake.el b/lisp/init-flymake.el index 06e91226a7..4d76afdd17 100644 --- a/lisp/init-flymake.el +++ b/lisp/init-flymake.el @@ -14,8 +14,8 @@ (defun sanityinc/enable-flymake-flycheck () (setq-local flymake-diagnostic-functions - (append flymake-diagnostic-functions - (flymake-flycheck-all-chained-diagnostic-functions)))) + (seq-uniq (append flymake-diagnostic-functions + (flymake-flycheck-all-chained-diagnostic-functions))))) (add-hook 'flymake-mode-hook 'sanityinc/enable-flymake-flycheck) (add-hook 'prog-mode-hook 'flymake-mode) From 61633873d129cf72f0c52ea3e66f3705d57599ef Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 11 Aug 2023 19:19:44 +0200 Subject: [PATCH 320/418] When we have clojure-ts-mode, prefer clojurescript-ts-mode too --- lisp/init-treesitter.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-treesitter.el b/lisp/init-treesitter.el index ecfddb724d..7b60f11e01 100644 --- a/lisp/init-treesitter.el +++ b/lisp/init-treesitter.el @@ -55,6 +55,9 @@ Return a list of languages seen along the way." (when-let ((jsmap (alist-get 'js-mode major-mode-remap-alist))) (add-to-list 'major-mode-remap-alist (cons 'js2-mode jsmap))) +(when-let ((jsmap (alist-get 'clojure-mode major-mode-remap-alist))) + (add-to-list 'major-mode-remap-alist (cons 'clojurescript-mode 'clojurescript-ts-mode))) + ;; Default From e4df2230c20d489a845c3a9c83fc9fdb24c5b34e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 11 Aug 2023 19:22:07 +0200 Subject: [PATCH 321/418] Add flymake-actionlint --- lisp/init-github.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-github.el b/lisp/init-github.el index f5b8b4707f..e82e2b5c1d 100644 --- a/lisp/init-github.el +++ b/lisp/init-github.el @@ -12,5 +12,8 @@ (maybe-require-package 'forge) (maybe-require-package 'github-review) +(when (maybe-require-package 'flymake-actionlint) + (add-hook 'yaml-mode-hook 'flymake-actionlint-action-load-when-actions-file)) + (provide 'init-github) ;;; init-github.el ends here From 4bc86dfb7113144d09f8bc492256ccbe938fb465 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 11 Aug 2023 19:22:53 +0200 Subject: [PATCH 322/418] Remove defunct local patch for dash-at-point --- lisp/init-sql.el | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 891ee4534d..ada34f5c99 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -110,13 +110,6 @@ This command currently blocks the UI, sorry." (display-buffer (current-buffer)) (user-error "EXPLAIN failed"))))))))) - -;; Submitted upstream as https://github.com/stanaka/dash-at-point/pull/28 -(with-eval-after-load 'sql - (with-eval-after-load 'dash-at-point - (add-to-list 'dash-at-point-mode-alist '(sql-mode . "psql,mysql,sqlite,postgis")))) - - (with-eval-after-load 'page-break-lines (add-to-list 'page-break-lines-modes 'sql-mode)) From d71e9beac4e3faf1ca61a32028c338dc689c3793 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 11 Aug 2023 19:29:38 +0200 Subject: [PATCH 323/418] Add corfu-terminal-mode --- lisp/init-corfu.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-corfu.el b/lisp/init-corfu.el index 1c193dd0e1..1f99b06e80 100644 --- a/lisp/init-corfu.el +++ b/lisp/init-corfu.el @@ -26,6 +26,11 @@ (with-eval-after-load 'corfu (corfu-popupinfo-mode)) + ;; Make Corfu also work in terminals, without disturbing usual behaviour in GUI + (require-package 'corfu-terminal) + (with-eval-after-load 'corfu + (corfu-terminal-mode)) + ;; TODO: https://github.com/jdtsmith/kind-icon ) From 2f49e472dbf8289322080e03c4ed25159b3598a3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 11 Aug 2023 19:46:01 +0200 Subject: [PATCH 324/418] Properly enable paredit in lispy modes: had been unintentionally broken --- lisp/init-paredit.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index fa3b4493f8..60572be2d1 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -39,6 +39,7 @@ (when (memq this-command paredit-minibuffer-commands) (enable-paredit-mode))) +(add-hook 'sanityinc/lispy-modes-hook 'enable-paredit-mode) (provide 'init-paredit) ;;; init-paredit.el ends here From 5f8d6503a275ff06d438e08b49d5c8e47909ad7b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Aug 2023 17:51:21 +0200 Subject: [PATCH 325/418] Enable pixel-scroll-precision-mode if available --- lisp/init-gui-frames.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 2e49da8a4d..5fb5f937ea 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -88,6 +88,10 @@ (require-package 'disable-mouse) + +(when (fboundp 'pixel-scroll-precision-mode) + (pixel-scroll-precision-mode)) + (provide 'init-gui-frames) ;;; init-gui-frames.el ends here From 86befb5590ecf2fa750e74fdf71977bba4d9331a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Aug 2023 18:42:31 +0200 Subject: [PATCH 326/418] No subword-mode in clojure-mode --- lisp/init-clojure.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-clojure.el b/lisp/init-clojure.el index 6c7f3e4608..7090c33fd5 100644 --- a/lisp/init-clojure.el +++ b/lisp/init-clojure.el @@ -10,8 +10,7 @@ (with-eval-after-load 'clojure-mode (dolist (m '(clojure-mode-hook clojure-ts-mode-hook)) - (add-hook m 'sanityinc/lisp-setup) - (add-hook m 'subword-mode)))) + (add-hook m 'sanityinc/lisp-setup)))) (provide 'init-clojure) From 8d3ccb2d32fa401173018a51b82b0302ed234a36 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Aug 2023 18:42:50 +0200 Subject: [PATCH 327/418] Remove misleading lists of lispy-modes These couldn't meaningfully be altered anywhere else, it seems, so better not to expose them. --- lisp/init-lisp.el | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 36af413fcc..250969cdc0 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -179,26 +179,10 @@ there is no current file, eval the current buffer." "Enable features useful in any Lisp mode." (run-hooks 'sanityinc/lispy-modes-hook)) -(defun sanityinc/emacs-lisp-setup () - "Enable features useful when working with elisp." - (set-up-hippie-expand-for-elisp)) - -(defconst sanityinc/elispy-modes - '(emacs-lisp-mode ielm-mode) - "Major modes relating to elisp.") - -(defconst sanityinc/lispy-modes - (append sanityinc/elispy-modes - '(lisp-mode inferior-lisp-mode lisp-interaction-mode)) - "All lispy major modes.") - (require 'derived) -(dolist (hook (mapcar #'derived-mode-hook-name sanityinc/lispy-modes)) - (add-hook hook 'sanityinc/lisp-setup)) - -(dolist (hook (mapcar #'derived-mode-hook-name sanityinc/elispy-modes)) - (add-hook hook 'sanityinc/emacs-lisp-setup)) +(dolist (mode '(emacs-lisp-mode ielm-mode lisp-mode inferior-lisp-mode lisp-interaction-mode)) + (add-hook (derived-mode-hook-name mode) 'sanityinc/lisp-setup)) (when (boundp 'eval-expression-minibuffer-setup-hook) (add-hook 'eval-expression-minibuffer-setup-hook #'eldoc-mode)) From 1fe8f0dd3b18e147e3e7c590d71f89b51aa864c0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 14 Aug 2023 08:35:41 +0200 Subject: [PATCH 328/418] Soft-fail when corfu-terminal is uninstallable, e.g. in Emacs 27 --- lisp/init-corfu.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-corfu.el b/lisp/init-corfu.el index 1f99b06e80..3119df3469 100644 --- a/lisp/init-corfu.el +++ b/lisp/init-corfu.el @@ -27,9 +27,9 @@ (corfu-popupinfo-mode)) ;; Make Corfu also work in terminals, without disturbing usual behaviour in GUI - (require-package 'corfu-terminal) - (with-eval-after-load 'corfu - (corfu-terminal-mode)) + (when (maybe-require-package 'corfu-terminal) + (with-eval-after-load 'corfu + (corfu-terminal-mode))) ;; TODO: https://github.com/jdtsmith/kind-icon ) From 7b174a5d968cbdb1cd66844bb4b4a700b7ef750b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 16 Aug 2023 18:12:39 +0200 Subject: [PATCH 329/418] Be more cautious before loading treesitter config See #849 --- init.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/init.el b/init.el index 99b03db394..2627ff10ae 100644 --- a/init.el +++ b/init.el @@ -128,7 +128,9 @@ (require 'init-folding) (require 'init-dash) -(when (require 'treesit nil t) +(when (and (require 'treesit nil t) + (fboundp 'treesit-available-p) + (treesit-available-p)) (require 'init-treesitter)) ;;(require 'init-twitter) From 4291138d291e1c566d0ddd7622266e44bb135d5e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 17 Aug 2023 11:23:12 +0200 Subject: [PATCH 330/418] Remove defunct references to init-*.el files --- init.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.el b/init.el index 2627ff10ae..199d75088e 100644 --- a/init.el +++ b/init.el @@ -133,14 +133,14 @@ (treesit-available-p)) (require 'init-treesitter)) -;;(require 'init-twitter) -;; (require 'init-mu) (require 'init-ledger) ;; Extra packages which don't require any configuration (require-package 'sudo-edit) (require-package 'gnuplot) (require-package 'lua-mode) +(reformatter-define lua-format :program "lua-format" :args '("--indent-width=2" "--no-use-tab") :lighter "LuaFmt ") +(setq-default lua-indent-level 2) (require-package 'htmlize) (when *is-a-mac* (require-package 'osx-location)) From aa0d9d98cf656125bd87af18b6e6cb216781b20a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 21 Aug 2023 18:17:17 +0200 Subject: [PATCH 331/418] Use nix-ts-mode, drop unused nix-related packages, tidy up treesitter config --- init.el | 10 +++++----- lisp/init-clojure.el | 3 ++- lisp/init-nix.el | 13 ++++--------- lisp/init-treesitter.el | 7 ++++--- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/init.el b/init.el index 199d75088e..324578bbca 100644 --- a/init.el +++ b/init.el @@ -128,11 +128,6 @@ (require 'init-folding) (require 'init-dash) -(when (and (require 'treesit nil t) - (fboundp 'treesit-available-p) - (treesit-available-p)) - (require 'init-treesitter)) - (require 'init-ledger) ;; Extra packages which don't require any configuration @@ -156,6 +151,11 @@ (require 'init-direnv) +(when (and (require 'treesit nil t) + (fboundp 'treesit-available-p) + (treesit-available-p)) + (require 'init-treesitter)) + ;; Allow access from emacsclient diff --git a/lisp/init-clojure.el b/lisp/init-clojure.el index 7090c33fd5..8c5e6329c1 100644 --- a/lisp/init-clojure.el +++ b/lisp/init-clojure.el @@ -4,7 +4,8 @@ ;; See also init-clojure-cider.el -(when (maybe-require-package 'clojure-mode) +(when (or (maybe-require-package 'clojure-ts-mode) + (maybe-require-package 'clojure-mode)) (require-package 'cljsbuild-mode) (require-package 'elein) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 3ac17ee809..6f8d235def 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -2,17 +2,12 @@ ;;; Commentary: ;;; Code: -(when (maybe-require-package 'nix-mode) +(when (or (maybe-require-package 'nix-ts-mode) + (maybe-require-package 'nix-mode)) (maybe-require-package 'nixpkgs-fmt) - (maybe-require-package 'nix-sandbox) - (maybe-require-package 'nix-buffer) - (when (maybe-require-package 'nixos-options) - ;; TODO: write a CAPF backend based on company-nixos-options - )) - -(with-eval-after-load 'eglot - (add-to-list 'eglot-server-programs '((nix-mode) . ("nil")))) + (with-eval-after-load 'eglot + (add-to-list 'eglot-server-programs '((nix-mode nix-ts-mode) . ("nil"))))) (provide 'init-nix) ;;; init-nix.el ends here diff --git a/lisp/init-treesitter.el b/lisp/init-treesitter.el index 7b60f11e01..7e168fbc8d 100644 --- a/lisp/init-treesitter.el +++ b/lisp/init-treesitter.el @@ -1,6 +1,6 @@ -;; Install third-party treesitter-based modes -(require-package 'clojure-ts-mode) - +;;; init-treesitter.el --- Enable Treesitter-based major modes -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: ;; You can download per-architecture pre-compiled release from ;; https://github.com/emacs-tree-sitter/tree-sitter-langs Rename @@ -66,3 +66,4 @@ Return a list of languages seen along the way." (provide 'init-treesitter) +;;; init-treesitter.el ends here From 97f54388899a2d4f3555f6094019305f60b2d527 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 23 Aug 2023 10:28:55 +0200 Subject: [PATCH 332/418] Set up xref-js2 in all the JS modes See #850 --- lisp/init-javascript.el | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 3ab2fbf260..ee5dbc8d8d 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -48,19 +48,21 @@ (sanityinc/major-mode-lighter 'js2-jsx-mode "JSX2")) - +(require 'derived) (when (and (or (executable-find "rg") (executable-find "ag")) (maybe-require-package 'xref-js2)) (when (executable-find "rg") (setq-default xref-js2-search-program 'rg)) + (defun sanityinc/enable-xref-js2 () (add-hook 'xref-backend-functions #'xref-js2-xref-backend nil t)) - (with-eval-after-load 'js - (define-key js-mode-map (kbd "M-.") nil) - (add-hook 'js-mode-hook 'sanityinc/enable-xref-js2)) + + (let ((base-mode (if (fboundp 'js-base-mode) 'js-base-mode 'js-mode))) + (with-eval-after-load 'js + (add-hook (derived-mode-hook-name base-mode) 'sanityinc/enable-xref-js2) + (define-key 'js-mode-map (kbd "M-.") nil))) (with-eval-after-load 'js2-mode - (define-key js2-mode-map (kbd "M-.") nil) - (add-hook 'js2-mode-hook 'sanityinc/enable-xref-js2))) + (define-key js2-mode-map (kbd "M-.") nil)) From b6e5c6c3b892d39bf11f236e08c65991cd078960 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 23 Aug 2023 10:50:31 +0200 Subject: [PATCH 333/418] Fix mistake in prior commit --- lisp/init-javascript.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index ee5dbc8d8d..952dc5b207 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -60,9 +60,9 @@ (let ((base-mode (if (fboundp 'js-base-mode) 'js-base-mode 'js-mode))) (with-eval-after-load 'js (add-hook (derived-mode-hook-name base-mode) 'sanityinc/enable-xref-js2) - (define-key 'js-mode-map (kbd "M-.") nil))) + (define-key js-mode-map (kbd "M-.") nil))) (with-eval-after-load 'js2-mode - (define-key js2-mode-map (kbd "M-.") nil)) + (define-key js2-mode-map (kbd "M-.") nil))) From ba42e3371a7f5e232628d4f898a1499362ff7190 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 26 Aug 2023 09:09:33 +0200 Subject: [PATCH 334/418] Use add-hook for eldoc-documentation-functions --- lisp/init-flymake.el | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lisp/init-flymake.el b/lisp/init-flymake.el index 4d76afdd17..91ab8c053b 100644 --- a/lisp/init-flymake.el +++ b/lisp/init-flymake.el @@ -33,9 +33,7 @@ (add-hook 'flymake-mode-hook (lambda () - (setq eldoc-documentation-functions - (cons 'flymake-eldoc-function - (delq 'flymake-eldoc-function eldoc-documentation-functions)))))) + (add-hook 'eldoc-documentation-functions 'flymake-eldoc-function nil t)))) (provide 'init-flymake) ;;; init-flymake.el ends here From bc039c55c6b8c0532478a9a7ad0313feff25667a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 26 Aug 2023 09:13:57 +0200 Subject: [PATCH 335/418] Suppress flycheck backend for shellcheck: we have a flymake equivalent --- lisp/init-flymake.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/init-flymake.el b/lisp/init-flymake.el index 91ab8c053b..1b964947a8 100644 --- a/lisp/init-flymake.el +++ b/lisp/init-flymake.el @@ -8,9 +8,10 @@ (when (maybe-require-package 'flymake-flycheck) ;; Disable flycheck checkers for which we have flymake equivalents (with-eval-after-load 'flycheck - (setq-default flycheck-disabled-checkers - (append (default-value 'flycheck-disabled-checkers) - '(emacs-lisp emacs-lisp-checkdoc emacs-lisp-package)))) + (setq-default + flycheck-disabled-checkers + (append (default-value 'flycheck-disabled-checkers) + '(emacs-lisp emacs-lisp-checkdoc emacs-lisp-package sh-shellcheck)))) (defun sanityinc/enable-flymake-flycheck () (setq-local flymake-diagnostic-functions From 1a0ca90d8e177a8ecf03d438350e386b79732e83 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 26 Aug 2023 09:17:15 +0200 Subject: [PATCH 336/418] Enable slime-autodoc, remove slime load-path hacks --- lisp/init-slime.el | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lisp/init-slime.el b/lisp/init-slime.el index 278a21c54e..e7183c3a20 100644 --- a/lisp/init-slime.el +++ b/lisp/init-slime.el @@ -2,8 +2,6 @@ ;;; Commentary: ;;; Code: -(require-package 'slime) -(push (expand-file-name "contrib" (file-name-directory (locate-library "slime"))) load-path) ;;; Lisp buffers @@ -11,8 +9,8 @@ (with-eval-after-load 'slime (setq slime-protocol-version 'ignore) (setq slime-net-coding-system 'utf-8-unix) - (let ((features '(slime-fancy slime-repl slime-fuzzy))) - (slime-setup features)) ) + (let ((features '(slime-fancy slime-repl slime-fuzzy slime-autodoc))) + (slime-setup features))) ;;; REPL From ef94ad7588ffaf082e75c251c0c160be3150e669 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 26 Aug 2023 09:18:50 +0200 Subject: [PATCH 337/418] Move lua config to its own init-lua.el --- init.el | 5 ++--- lisp/init-lua.el | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 lisp/init-lua.el diff --git a/init.el b/init.el index 324578bbca..e188779ebc 100644 --- a/init.el +++ b/init.el @@ -129,13 +129,12 @@ (require 'init-dash) (require 'init-ledger) +(require 'init-lua) + ;; Extra packages which don't require any configuration (require-package 'sudo-edit) (require-package 'gnuplot) -(require-package 'lua-mode) -(reformatter-define lua-format :program "lua-format" :args '("--indent-width=2" "--no-use-tab") :lighter "LuaFmt ") -(setq-default lua-indent-level 2) (require-package 'htmlize) (when *is-a-mac* (require-package 'osx-location)) diff --git a/lisp/init-lua.el b/lisp/init-lua.el new file mode 100644 index 0000000000..60b7f7492d --- /dev/null +++ b/lisp/init-lua.el @@ -0,0 +1,16 @@ +;;; init-lua.el --- Support for Lua programming -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +(require-package 'lua-mode) + +(setq-default lua-indent-level 2) + +(reformatter-define lua-format + :program "lua-format" + :args '("--indent-width=2" "--no-use-tab") + :lighter "LuaFmt ") + + +(provide 'init-lua) +;;; init-lua.el ends here From 9eacae9dbe22ee51c7f1a268e1fafe4f6390df8a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 26 Aug 2023 09:20:45 +0200 Subject: [PATCH 338/418] Use rename-visited-file instead of rename-this-file-and-buffer when available --- lisp/init-utils.el | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/lisp/init-utils.el b/lisp/init-utils.el index cff9fab9c1..6b3f2f4307 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -51,18 +51,20 @@ ;; Rename the current file -(defun rename-this-file-and-buffer (new-name) - "Renames both current buffer and file it's visiting to NEW-NAME." - (interactive "sNew name: ") - (let ((name (buffer-name)) - (filename (buffer-file-name))) - (unless filename - (error "Buffer '%s' is not visiting a file!" name)) - (progn - (when (file-exists-p filename) - (rename-file filename new-name 1)) - (set-visited-file-name new-name) - (rename-buffer new-name)))) +(if (fboundp 'rename-visited-file) + (defalias 'rename-this-file-and-buffer 'rename-visited-file) + (defun rename-this-file-and-buffer (new-name) + "Renames both current buffer and file it's visiting to NEW-NAME." + (interactive "sNew name: ") + (let ((name (buffer-name)) + (filename (buffer-file-name))) + (unless filename + (error "Buffer '%s' is not visiting a file!" name)) + (progn + (when (file-exists-p filename) + (rename-file filename new-name 1)) + (set-visited-file-name new-name) + (rename-buffer new-name))))) ;; Browse current HTML file From 2e29e5f111c27c2b635ef021353332a6c5d56a91 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 00:15:01 +0000 Subject: [PATCH 339/418] chore(deps): bump actions/checkout from 3 to 4 Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index baae6aa93d..cfdb564301 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,6 +29,6 @@ jobs: with: version: ${{ matrix.emacs_version }} - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Check startup run: ./test-startup.sh From 324d049e668de6dc87366c68efc38f67a4fb7cee Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 29 Aug 2023 18:56:49 +0200 Subject: [PATCH 340/418] Remove obsolete patch --- lisp/init-sql.el | 9 --------- 1 file changed, 9 deletions(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index ada34f5c99..236b26244a 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -6,15 +6,6 @@ ;; sql-mode pretty much requires your psql to be uncustomised from stock settings (add-to-list 'sql-postgres-options "--no-psqlrc")) -(defun sanityinc/fix-postgres-prompt-regexp () - "Work around https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22596. -Fix for the above hasn't been released as of Emacs 25.2." - (when (eq sql-product 'postgres) - (setq-local sql-prompt-regexp "^[[:alnum:]_]*=[#>] ") - (setq-local sql-prompt-cont-regexp "^[[:alnum:]_]*[-(][#>] "))) - -(add-hook 'sql-interactive-mode-hook 'sanityinc/fix-postgres-prompt-regexp) - (defun sanityinc/pop-to-sqli-buffer () "Switch to the corresponding sqli buffer." (interactive) From c6ff1f2acb84065523de41e8056b83ba33eb20ef Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 15 Oct 2023 20:45:01 +0100 Subject: [PATCH 341/418] Set use-short-answers --- lisp/init-misc.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index 253c1995de..a1e23165dc 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -7,6 +7,8 @@ (add-auto-mode 'tcl-mode "^Portfile\\'") (fset 'yes-or-no-p 'y-or-n-p) +(when (boundp 'use-short-answers) + (setopt use-short-answers t)) (add-hook 'prog-mode-hook 'goto-address-prog-mode) (setq goto-address-mail-face 'link) From 5669488b85f1296b168d938887196e19888f142e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 15 Oct 2023 20:45:52 +0100 Subject: [PATCH 342/418] Ignore forge sqlite DBs --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2905347d18..4f80ddb062 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,4 @@ site-lisp/package/ /smex-items /eln-cache/ /projects +/forge-*.sqlite From d2cf3376d6b3b151a004cc493e127430b8db1ff6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 23 Oct 2023 09:55:49 +0100 Subject: [PATCH 343/418] Avoid setopt for now (fixes #852) --- lisp/init-misc.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index a1e23165dc..a212285072 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -8,7 +8,7 @@ (add-auto-mode 'tcl-mode "^Portfile\\'") (fset 'yes-or-no-p 'y-or-n-p) (when (boundp 'use-short-answers) - (setopt use-short-answers t)) + (setq use-short-answers t)) (add-hook 'prog-mode-hook 'goto-address-prog-mode) (setq goto-address-mail-face 'link) From 34acf91cd365db61ab3ac891d2c2d1ced17016e5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 23 Oct 2023 21:58:04 +1300 Subject: [PATCH 344/418] Add Emacs 28.2 to CI matrix --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cfdb564301..c76b5314bd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,6 +19,7 @@ jobs: - 27.1 - 27.2 - 28.1 + - 28.2 - 29.1 experimental: [false] include: From 28194a035ca9a259030ba7ef58089561078c4893 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 29 Oct 2023 15:31:27 +0000 Subject: [PATCH 345/418] Better setup for nix-ts-mode --- lisp/init-nix.el | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 6f8d235def..d0f0671cec 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -2,12 +2,20 @@ ;;; Commentary: ;;; Code: -(when (or (maybe-require-package 'nix-ts-mode) - (maybe-require-package 'nix-mode)) - (maybe-require-package 'nixpkgs-fmt) +(if (maybe-require-package 'nix-ts-mode) + (progn + (defun sanityinc/set-nix-ts-auto-mode () + (when (and (fboundp 'treesit-ready-p) + (treesit-ready-p 'nix) + (fboundp 'nix-ts-mode)) + (add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-ts-mode)))) + (add-hook 'after-init-hook 'sanityinc/set-nix-ts-auto-mode)) + (maybe-require-package 'nix-mode)) - (with-eval-after-load 'eglot - (add-to-list 'eglot-server-programs '((nix-mode nix-ts-mode) . ("nil"))))) +(with-eval-after-load 'eglot + (add-to-list 'eglot-server-programs '((nix-mode nix-ts-mode) . ("nil")))) + +(maybe-require-package 'nixpkgs-fmt) (provide 'init-nix) ;;; init-nix.el ends here From 440749652504add37942cc2f58c5f3a392fbba95 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 29 Oct 2023 15:32:19 +0000 Subject: [PATCH 346/418] Use new flymake-flycheck-auto function --- lisp/init-flymake.el | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lisp/init-flymake.el b/lisp/init-flymake.el index 1b964947a8..a8b3a45c24 100644 --- a/lisp/init-flymake.el +++ b/lisp/init-flymake.el @@ -13,12 +13,7 @@ (append (default-value 'flycheck-disabled-checkers) '(emacs-lisp emacs-lisp-checkdoc emacs-lisp-package sh-shellcheck)))) - (defun sanityinc/enable-flymake-flycheck () - (setq-local flymake-diagnostic-functions - (seq-uniq (append flymake-diagnostic-functions - (flymake-flycheck-all-chained-diagnostic-functions))))) - - (add-hook 'flymake-mode-hook 'sanityinc/enable-flymake-flycheck) + (add-hook 'flymake-mode-hook 'flymake-flycheck-auto) (add-hook 'prog-mode-hook 'flymake-mode) (add-hook 'text-mode-hook 'flymake-mode)) From 91371a6d22343cad3d9761d9d997d6d106a4b2d9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 29 Oct 2023 15:32:53 +0000 Subject: [PATCH 347/418] Fix outdated "pev" link in init-sql.el --- lisp/init-sql.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 236b26244a..c27b70dbc4 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -47,7 +47,7 @@ (defun sanityinc/sql-explain-region-as-json (beg end &optional copy) "Explain the SQL between BEG and END in detailed JSON format. This is suitable for pasting into tools such as -http://tatiyants.com/pev/. +https://explain.dalibo.com/. When the prefix argument COPY is non-nil, do not display the resulting JSON, but instead copy it to the kill ring. From 699a47da9566a7bf145ab13a11872ea9285f3416 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 29 Oct 2023 15:33:16 +0000 Subject: [PATCH 348/418] Prefer qwerty style for switch-window shortcuts --- lisp/init-windows.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-windows.el b/lisp/init-windows.el index 1c996845f5..47e8e299b0 100644 --- a/lisp/init-windows.el +++ b/lisp/init-windows.el @@ -14,7 +14,7 @@ ;; Make "C-x o" prompt for a target window when there are more than 2 (require-package 'switch-window) -(setq-default switch-window-shortcut-style 'alphabet) +(setq-default switch-window-shortcut-style 'qwerty) (setq-default switch-window-timeout nil) (global-set-key (kbd "C-x o") 'switch-window) From 8c7aaff5ad6a56419fc96db484f1b48f269d841f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 1 Nov 2023 08:01:35 +0000 Subject: [PATCH 349/418] Check quietly for treesitter grammar presence Fixes #853 --- lisp/init-nix.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index d0f0671cec..8c6cf01978 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -6,7 +6,7 @@ (progn (defun sanityinc/set-nix-ts-auto-mode () (when (and (fboundp 'treesit-ready-p) - (treesit-ready-p 'nix) + (treesit-ready-p 'nix t) (fboundp 'nix-ts-mode)) (add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-ts-mode)))) (add-hook 'after-init-hook 'sanityinc/set-nix-ts-auto-mode)) From 49d4940c13b0027c0b934a2c10b8ea12b53668e6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 1 Nov 2023 17:42:38 +0000 Subject: [PATCH 350/418] Add flymake-ruff for Python See https://github.com/purcell/emacs.d/issues/845#issuecomment-1788793903 --- lisp/init-python.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/init-python.el b/lisp/init-python.el index 1c20728ce7..85a152cc40 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -16,6 +16,12 @@ (require-package 'pip-requirements) +(when (maybe-require-package 'flymake-ruff) + (defun sanityinc/flymake-ruff-maybe-enable () + (when (executable-find flymake-ruff-program) + (flymake-ruff-load))) + (add-hook 'python-mode-hook 'sanityinc/flymake-ruff-maybe-enable)) + (when (maybe-require-package 'toml-mode) (add-to-list 'auto-mode-alist '("poetry\\.lock\\'" . toml-mode))) From a108411f666b499790a3b9b25a6499ebd25f8eb8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 1 Nov 2023 18:04:20 +0000 Subject: [PATCH 351/418] Fix bootstrapping issue in Emacs 29 with seq --- init.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/init.el b/init.el index e188779ebc..dacdadd2da 100644 --- a/init.el +++ b/init.el @@ -45,6 +45,11 @@ ;; Allow users to provide an optional "init-preload-local.el" (require 'init-preload-local nil t) +;; Work around an issue in Emacs 29 where this gets implicitly +;; reinstalled via the rg -> transient dependency chain, but fails to +;; reload cleanly, breaking first-time start-up +(require-package 'seq "2.24") + ;; Load configs for specific features and modes (require-package 'diminish) (maybe-require-package 'scratch) From cdaf01622bac68da0b6d4b0e899a73f09feaf855 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 2 Nov 2023 11:02:01 +0000 Subject: [PATCH 352/418] Move seq fix for bootstrapping issue --- init.el | 5 ----- lisp/init-elpa.el | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/init.el b/init.el index dacdadd2da..e188779ebc 100644 --- a/init.el +++ b/init.el @@ -45,11 +45,6 @@ ;; Allow users to provide an optional "init-preload-local.el" (require 'init-preload-local nil t) -;; Work around an issue in Emacs 29 where this gets implicitly -;; reinstalled via the rg -> transient dependency chain, but fails to -;; reload cleanly, breaking first-time start-up -(require-package 'seq "2.24") - ;; Load configs for specific features and modes (require-package 'diminish) (maybe-require-package 'scratch) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 8700c3ac38..872127ff94 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -85,6 +85,11 @@ advice for `require-package', to which ARGS are passed." (advice-add 'require-package :around 'sanityinc/note-selected-package) +;; Work around an issue in Emacs 29 where this gets implicitly +;; reinstalled via the rg -> transient dependency chain, but fails to +;; reload cleanly, breaking first-time start-up +(require-package 'seq "2.24") + (when (fboundp 'package--save-selected-packages) (require-package 'seq) (add-hook 'after-init-hook From 577b10541f6de997a6222d58036157dd874da2d1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 2 Nov 2023 17:46:29 +0000 Subject: [PATCH 353/418] Better workaround for seq-25 loading woes in first-time startup --- lisp/init-elpa.el | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 872127ff94..81749ecdc1 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -85,10 +85,18 @@ advice for `require-package', to which ARGS are passed." (advice-add 'require-package :around 'sanityinc/note-selected-package) -;; Work around an issue in Emacs 29 where this gets implicitly + +;; Work around an issue in Emacs 29 where seq gets implicitly ;; reinstalled via the rg -> transient dependency chain, but fails to -;; reload cleanly, breaking first-time start-up -(require-package 'seq "2.24") +;; reload cleanly due to not finding seq-25.el, breaking first-time +;; start-up +(defun sanityinc/reload-previously-loaded-with-load-path-updated (orig pkg-desc) + (let ((load-path (cons (package-desc-dir pkg-desc) load-path))) + (funcall orig pkg-desc))) + +(advice-add 'package--reload-previously-loaded :around + 'sanityinc/reload-previously-loaded-with-load-path-updated) + (when (fboundp 'package--save-selected-packages) (require-package 'seq) From bab418cb1c25e435fb8fafdb7144f8024fc75bc0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 6 Nov 2023 08:03:57 +0000 Subject: [PATCH 354/418] Add very basic config for eat --- init.el | 7 +++++++ lisp/init-eglot.el | 5 ----- lisp/init-terminals.el | 27 +++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 lisp/init-terminals.el diff --git a/init.el b/init.el index e188779ebc..4d7c1b7792 100644 --- a/init.el +++ b/init.el @@ -30,6 +30,12 @@ (add-hook 'emacs-startup-hook (lambda () (setq gc-cons-threshold normal-gc-cons-threshold)))) + +;; Process performance tuning + +(setq read-process-output-max (* 4 1024 1024)) +(setq process-adaptive-read-buffering nil) + ;; Bootstrap config @@ -130,6 +136,7 @@ (require 'init-ledger) (require 'init-lua) +(require 'init-terminals) ;; Extra packages which don't require any configuration diff --git a/lisp/init-eglot.el b/lisp/init-eglot.el index 9cf28b84f0..5b13d68e6a 100644 --- a/lisp/init-eglot.el +++ b/lisp/init-eglot.el @@ -4,15 +4,10 @@ ;;; Code: -;; For Emacs >= 27 -(setq read-process-output-max (* 1024 1024)) - - (when (maybe-require-package 'eglot) (maybe-require-package 'consult-eglot)) - (provide 'init-eglot) ;;; init-eglot.el ends here diff --git a/lisp/init-terminals.el b/lisp/init-terminals.el new file mode 100644 index 0000000000..44fc00a77b --- /dev/null +++ b/lisp/init-terminals.el @@ -0,0 +1,27 @@ +;;; init-terminals.el --- Terminal emulators -*- lexical-binding: t; -*- + +;;; Commentary: + +;;; Code: + +(when (maybe-require-package 'eat) + (defun sanityinc/on-eat-exit (process) + (when (zerop (process-exit-status process)) + (kill-buffer) + (unless (eq (selected-window) (next-window)) + (delete-window)))) + (add-hook 'eat-exit-hook 'sanityinc/on-eat-exit) + + (defcustom sanityinc/eat-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "t") 'eat-other-window) + map) + "Prefix map for commands that create and manipulate eat buffers.") + (fset 'sanityinc/eat-map sanityinc/eat-map) + + (global-set-key (kbd "C-c t") 'sanityinc/eat-map)) + + + +(provide 'init-terminals) +;;; init-terminals.el ends here From 0fec9969d8640564690c234e8e797d57bb28330e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 8 Nov 2023 17:09:14 +0000 Subject: [PATCH 355/418] Preserve default binding of M-w in eat-semi-char-mode --- lisp/init-terminals.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-terminals.el b/lisp/init-terminals.el index 44fc00a77b..e440bf61df 100644 --- a/lisp/init-terminals.el +++ b/lisp/init-terminals.el @@ -12,6 +12,11 @@ (delete-window)))) (add-hook 'eat-exit-hook 'sanityinc/on-eat-exit) + (with-eval-after-load 'eat + (add-to-list 'eat-semi-char-non-bound-keys [?\e ?w]) + (eat-update-semi-char-mode-map) + (eat-reload)) + (defcustom sanityinc/eat-map (let ((map (make-sparse-keymap))) (define-key map (kbd "t") 'eat-other-window) From 3dc9b7bcc2331f6efd3ed35614ddf7601a8b759e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 9 Nov 2023 19:00:03 +0000 Subject: [PATCH 356/418] Link from workarount to corresponding emacs bug --- lisp/init-elpa.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 81749ecdc1..71298e232e 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -90,12 +90,14 @@ advice for `require-package', to which ARGS are passed." ;; reinstalled via the rg -> transient dependency chain, but fails to ;; reload cleanly due to not finding seq-25.el, breaking first-time ;; start-up +;; See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=67025 (defun sanityinc/reload-previously-loaded-with-load-path-updated (orig pkg-desc) (let ((load-path (cons (package-desc-dir pkg-desc) load-path))) (funcall orig pkg-desc))) (advice-add 'package--reload-previously-loaded :around 'sanityinc/reload-previously-loaded-with-load-path-updated) + (when (fboundp 'package--save-selected-packages) From 4685c9e33d5deea268170a46d321ecb4bf26d5a1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 10 Nov 2023 16:00:28 +0000 Subject: [PATCH 357/418] Only apply workaround for "seq" reloading bug in Emacs 29.1 --- lisp/init-elpa.el | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 71298e232e..c5e0820849 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -91,12 +91,13 @@ advice for `require-package', to which ARGS are passed." ;; reload cleanly due to not finding seq-25.el, breaking first-time ;; start-up ;; See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=67025 -(defun sanityinc/reload-previously-loaded-with-load-path-updated (orig pkg-desc) - (let ((load-path (cons (package-desc-dir pkg-desc) load-path))) - (funcall orig pkg-desc))) +(when (string= "29.1" emacs-version) + (defun sanityinc/reload-previously-loaded-with-load-path-updated (orig pkg-desc) + (let ((load-path (cons (package-desc-dir pkg-desc) load-path))) + (funcall orig pkg-desc))) -(advice-add 'package--reload-previously-loaded :around - 'sanityinc/reload-previously-loaded-with-load-path-updated) + (advice-add 'package--reload-previously-loaded :around + 'sanityinc/reload-previously-loaded-with-load-path-updated)) From ba8320177cad2dbdbb07d1ea5fe30e11468de4c6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 22 Nov 2023 08:14:25 +0000 Subject: [PATCH 358/418] Drop psc-ide for purescript - It keeps `company` installed - These days I'd prefer LSP --- lisp/init-purescript.el | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/lisp/init-purescript.el b/lisp/init-purescript.el index 794ecb0ff8..cbe3f7f0c3 100644 --- a/lisp/init-purescript.el +++ b/lisp/init-purescript.el @@ -18,40 +18,6 @@ (reformatter-define purty :program "purty" :lighter " purty")) - (when (maybe-require-package 'psc-ide) - (add-hook 'purescript-mode-hook 'psc-ide-mode) - (add-hook 'psc-ide-mode-hook - (lambda () - (setq-local flycheck-check-syntax-automatically '(save mode-enabled)))) - - (defun psc-ide-foreign-js-after-save-handler () - "Call `psc-ide-rebuild' in any neighbouring purescript file buffer, if `psc-ide-rebuild-on-save' is set. -This is a little magical because it only works if the -corresponding .purs file is open." - (let ((js-path (buffer-file-name))) - (when js-path - (let* ((purs-path (concat (file-name-sans-extension js-path) ".purs")) - (purs-buf (get-file-buffer purs-path))) - (when purs-buf - (with-current-buffer purs-buf - (when psc-ide-mode - (cond - (psc-ide-rebuild-on-save - (message "Triggering rebuild of %s" purs-path) - (psc-ide-rebuild)) - (flycheck-mode - (message "Flychecking %s" purs-path) - (flycheck-buffer)))))))))) - - (define-minor-mode psc-ide-foreign-js-mode - "Rebuild corresponding purescript file." - :init-value nil - :lighter " PursJS" - :global nil - (if psc-ide-foreign-js-mode - (add-hook 'after-save-hook 'psc-ide-foreign-js-after-save-handler nil t) - (remove-hook 'after-save-hook 'psc-ide-foreign-js-after-save-handler t)))) - (when (maybe-require-package 'psci) (add-hook 'purescript-mode-hook 'inferior-psci-mode)) From 5c6f0fa6d0fff1e08e7c725223c6932d0921f694 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 22 Nov 2023 08:15:24 +0000 Subject: [PATCH 359/418] Choose different display-fill-column-indicator-character --- lisp/init-editing-utils.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 7f730d7dca..3c22e7724d 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -92,7 +92,7 @@ (when (boundp 'display-fill-column-indicator) (setq-default indicate-buffer-boundaries 'left) - (setq-default display-fill-column-indicator-character ?\u254e) + (setq-default display-fill-column-indicator-character ?┊) (add-hook 'prog-mode-hook 'display-fill-column-indicator-mode)) From 39f4067641df7de7928d36448af029831a18a647 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 22 Nov 2023 08:16:04 +0000 Subject: [PATCH 360/418] Add "just" support --- init.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/init.el b/init.el index 4d7c1b7792..70bf945820 100644 --- a/init.el +++ b/init.el @@ -118,6 +118,8 @@ (require 'init-terraform) (require 'init-nix) (maybe-require-package 'nginx-mode) +(maybe-require-package 'just-mode) +(maybe-require-package 'justl) (require 'init-paredit) (require 'init-lisp) From d185dd42c966c9c3ffc2f01bcb150750444fc2f8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 22 Nov 2023 08:18:25 +0000 Subject: [PATCH 361/418] Use consult-line for "occur" during isearch --- lisp/init-isearch.el | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lisp/init-isearch.el b/lisp/init-isearch.el index b3316df92b..0c083ebdcd 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -13,10 +13,20 @@ ;; DEL during isearch should edit the search string, not jump back to the previous result (define-key isearch-mode-map [remap isearch-delete-char] 'isearch-del-char) - ;; Activate occur easily inside isearch - (when (fboundp 'isearch-occur) - ;; to match ivy conventions - (define-key isearch-mode-map (kbd "C-c C-o") 'isearch-occur))) + (defun sanityinc/isearch-occur () + "Invoke `consult-line' from isearch." + (interactive) + (let ((query (if isearch-regexp + isearch-string + (regexp-quote isearch-string)))) + (isearch-update-ring isearch-string isearch-regexp) + (let (search-nonincremental-instead) + (ignore-errors (isearch-done t t))) + (consult-line query))) + + (define-key isearch-mode-map (kbd "C-o") 'sanityinc/isearch-occur) + (define-key isearch-mode-map (kbd "C-c C-o") 'sanityinc/isearch-occur)) + ;; Search back/forth for the symbol at point ;; See http://www.emacswiki.org/emacs/SearchAtPoint From 72ac8226965408149cfb8f8e746183b7d832b9f3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 22 Nov 2023 08:21:34 +0000 Subject: [PATCH 362/418] Add ruff-format --- lisp/init-python.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-python.el b/lisp/init-python.el index 85a152cc40..1bc45337b9 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -22,6 +22,8 @@ (flymake-ruff-load))) (add-hook 'python-mode-hook 'sanityinc/flymake-ruff-maybe-enable)) +(maybe-require-package 'ruff-format) + (when (maybe-require-package 'toml-mode) (add-to-list 'auto-mode-alist '("poetry\\.lock\\'" . toml-mode))) From 1cf308dfd9f3f8c3d9eade48f86116ff2d9616f7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 22 Nov 2023 08:21:49 +0000 Subject: [PATCH 363/418] Switch from slime to sly --- init.el | 2 +- lisp/init-slime.el | 34 ---------------------------------- lisp/init-sly.el | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 35 deletions(-) delete mode 100644 lisp/init-slime.el create mode 100644 lisp/init-sly.el diff --git a/init.el b/init.el index 70bf945820..7393bf1f2b 100644 --- a/init.el +++ b/init.el @@ -123,7 +123,7 @@ (require 'init-paredit) (require 'init-lisp) -(require 'init-slime) +(require 'init-sly) (require 'init-clojure) (require 'init-clojure-cider) (require 'init-common-lisp) diff --git a/lisp/init-slime.el b/lisp/init-slime.el deleted file mode 100644 index e7183c3a20..0000000000 --- a/lisp/init-slime.el +++ /dev/null @@ -1,34 +0,0 @@ -;;; init-slime.el --- Slime support for Common Lisp -*- lexical-binding: t -*- -;;; Commentary: -;;; Code: - - - -;;; Lisp buffers - -(with-eval-after-load 'slime - (setq slime-protocol-version 'ignore) - (setq slime-net-coding-system 'utf-8-unix) - (let ((features '(slime-fancy slime-repl slime-fuzzy slime-autodoc))) - (slime-setup features))) - - -;;; REPL - -(defun sanityinc/slime-repl-setup () - "Mode setup function for slime REPL." - (sanityinc/lisp-setup)) - -(with-eval-after-load 'slime-repl - ;; Stop SLIME's REPL from grabbing DEL, which is annoying when backspacing over a '(' - (with-eval-after-load 'paredit - (define-key slime-repl-mode-map (read-kbd-macro paredit-backward-delete-key) nil)) - - ;; Bind TAB to `indent-for-tab-command', as in regular Slime buffers. - (define-key slime-repl-mode-map (kbd "TAB") 'indent-for-tab-command) - - (add-hook 'slime-repl-mode-hook 'sanityinc/slime-repl-setup)) - - -(provide 'init-slime) -;;; init-slime.el ends here diff --git a/lisp/init-sly.el b/lisp/init-sly.el new file mode 100644 index 0000000000..ee9fca4837 --- /dev/null +++ b/lisp/init-sly.el @@ -0,0 +1,46 @@ +;;; init-sly.el --- Sly support for Common Lisp -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +(require-package 'sly) +(require-package 'sly-asdf) +(require-package 'sly-macrostep) +(require-package 'sly-repl-ansi-color) + + +;;; Lisp buffers + +(defun sanityinc/sly-setup () + "Mode setup function for sly lisp buffers." + (set-up-sly-hippie-expand)) + +(with-eval-after-load 'sly + (setq sly-protocol-version 'ignore) + (setq sly-net-coding-system 'utf-8-unix) + (let ((features '(sly-fancy))) + ;; (when (require 'sly-company nil t) + ;; (push 'sly-company features)) + (sly-setup features)) + (add-hook 'sly-mode-hook 'sanityinc/sly-setup)) + + +;;; REPL + +(defun sanityinc/sly-repl-setup () + "Mode setup function for sly REPL." + (sanityinc/lisp-setup) + (set-up-sly-hippie-expand)) + +(with-eval-after-load 'sly-repl + ;; Stop SLY's REPL from grabbing DEL, which is annoying when backspacing over a '(' + (with-eval-after-load 'paredit + (define-key sly-repl-mode-map (read-kbd-macro paredit-backward-delete-key) nil)) + + ;; Bind TAB to `indent-for-tab-command', as in regular Sly buffers. + (define-key sly-repl-mode-map (kbd "TAB") 'indent-for-tab-command) + + (add-hook 'sly-repl-mode-hook 'sanityinc/sly-repl-setup)) + + +(provide 'init-sly) +;;; init-sly.el ends here From f3fbd87593800a1e13c45bf3b4e98d540eba7a74 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 26 Nov 2023 09:36:21 +0000 Subject: [PATCH 364/418] Add key bindings "C-M-[" and "C-M-]" for navigating between diff-hl hunks --- init.el | 1 + lisp/init-uiua.el | 22 ++++++++++++++++++++++ lisp/init-vc.el | 6 +++--- 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 lisp/init-uiua.el diff --git a/init.el b/init.el index 7393bf1f2b..ca10d1ff20 100644 --- a/init.el +++ b/init.el @@ -138,6 +138,7 @@ (require 'init-ledger) (require 'init-lua) +(require 'init-uiua) (require 'init-terminals) ;; Extra packages which don't require any configuration diff --git a/lisp/init-uiua.el b/lisp/init-uiua.el new file mode 100644 index 0000000000..42539c640e --- /dev/null +++ b/lisp/init-uiua.el @@ -0,0 +1,22 @@ +;;; init-uiua.el --- Support for the Uiua programming language -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +(if (maybe-require-package 'uiua-ts-mode) + (progn + ;; TODO: handle duplication w.r.t. nix-ts-mode + (defun sanityinc/set-uiua-ts-auto-mode () + (when (and (fboundp 'treesit-ready-p) + (treesit-ready-p 'uiua t) + (fboundp 'uiua-ts-mode)) + (add-to-list 'auto-mode-alist '("\\.ua\\'" . uiua-ts-mode)))) + (add-hook 'after-init-hook 'sanityinc/set-uiua-ts-auto-mode)) + (maybe-require-package 'uiua-mode)) + +(with-eval-after-load 'eglot + (add-to-list 'eglot-server-programs '((uiua-mode uiua-ts-mode) . ("uiua" "lsp")))) + +(maybe-require-package 'nixpkgs-fmt) + +(provide 'init-uiua) +;;; init-uiua.el ends here diff --git a/lisp/init-vc.el b/lisp/init-vc.el index 8df0cc4933..7417d8cb98 100644 --- a/lisp/init-vc.el +++ b/lisp/init-vc.el @@ -11,9 +11,9 @@ (add-hook 'after-init-hook 'global-diff-hl-mode) (with-eval-after-load 'diff-hl - (define-key diff-hl-mode-map - (kbd " ") - 'diff-hl-diff-goto-hunk))) + (define-key diff-hl-mode-map (kbd " ") 'diff-hl-diff-goto-hunk) + (define-key diff-hl-mode-map (kbd "M-C-]") 'diff-hl-next-hunk) + (define-key diff-hl-mode-map (kbd "M-C-[") 'diff-hl-previous-hunk))) (provide 'init-vc) ;;; init-vc.el ends here From 7f0b8eec0b4f4bea3f56d1c224b5cd22c5e9404b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 30 Nov 2023 16:18:26 +0000 Subject: [PATCH 365/418] Tidy up some treesitter initialisation --- lisp/init-nix.el | 9 ++------- lisp/init-treesitter.el | 19 ++++++++++++++----- lisp/init-uiua.el | 10 ++-------- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 8c6cf01978..4f072eb78f 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -3,13 +3,8 @@ ;;; Code: (if (maybe-require-package 'nix-ts-mode) - (progn - (defun sanityinc/set-nix-ts-auto-mode () - (when (and (fboundp 'treesit-ready-p) - (treesit-ready-p 'nix t) - (fboundp 'nix-ts-mode)) - (add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-ts-mode)))) - (add-hook 'after-init-hook 'sanityinc/set-nix-ts-auto-mode)) + (when (and (fboundp 'treesit-ready-p) (treesit-ready-p 'nix t)) + (add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-ts-mode))) (maybe-require-package 'nix-mode)) (with-eval-after-load 'eglot diff --git a/lisp/init-treesitter.el b/lisp/init-treesitter.el index 7e168fbc8d..d8b57e6380 100644 --- a/lisp/init-treesitter.el +++ b/lisp/init-treesitter.el @@ -16,6 +16,9 @@ (setq treesit-load-name-override-list nil major-mode-remap-alist nil) + +;;; Enable built-in and pre-installed TS modes if the grammars are available + (defun sanityinc/auto-configure-treesitter () "Find and configure installed grammars, remap to matching -ts-modes if present. Return a list of languages seen along the way." @@ -51,13 +54,19 @@ Return a list of languages seen along the way." (sanityinc/auto-configure-treesitter) -;; When there's js-ts-mode, we prefer it to js2-mode -(when-let ((jsmap (alist-get 'js-mode major-mode-remap-alist))) - (add-to-list 'major-mode-remap-alist (cons 'js2-mode jsmap))) + +;;; Support remapping of additional libraries -(when-let ((jsmap (alist-get 'clojure-mode major-mode-remap-alist))) - (add-to-list 'major-mode-remap-alist (cons 'clojurescript-mode 'clojurescript-ts-mode))) +(defun sanityinc/remap-ts-mode (non-ts-mode ts-mode grammar) + "Explicitly remap NON-TS-MODE to TS-MODE if GRAMMAR is available." + (when (and (fboundp 'treesit-ready-p) + (treesit-ready-p grammar t) + (fboundp ts-mode)) + (add-to-list 'major-mode-remap-alist (cons non-ts-mode ts-mode)))) +;; When there's js-ts-mode, we also prefer it to js2-mode +(sanityinc/remap-ts-mode 'js2-mode 'js-ts-mode 'javascript) +(sanityinc/remap-ts-mode 'clojurescript-mode 'clojurescript-ts-mode 'clojure) ;; Default diff --git a/lisp/init-uiua.el b/lisp/init-uiua.el index 42539c640e..678085e623 100644 --- a/lisp/init-uiua.el +++ b/lisp/init-uiua.el @@ -3,14 +3,8 @@ ;;; Code: (if (maybe-require-package 'uiua-ts-mode) - (progn - ;; TODO: handle duplication w.r.t. nix-ts-mode - (defun sanityinc/set-uiua-ts-auto-mode () - (when (and (fboundp 'treesit-ready-p) - (treesit-ready-p 'uiua t) - (fboundp 'uiua-ts-mode)) - (add-to-list 'auto-mode-alist '("\\.ua\\'" . uiua-ts-mode)))) - (add-hook 'after-init-hook 'sanityinc/set-uiua-ts-auto-mode)) + (when (and (fboundp 'treesit-ready-p) (treesit-ready-p 'uiua t)) + (add-to-list 'major-mode-remap-alist '(uiua-mode . uiua-ts-mode))) (maybe-require-package 'uiua-mode)) (with-eval-after-load 'eglot From 93c60ddeecf72513d6aecac760cd778131503743 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 11 Dec 2023 16:31:31 +0000 Subject: [PATCH 366/418] Don't rely on `flymake-ruff-program` too early Fixes #855 --- lisp/init-python.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-python.el b/lisp/init-python.el index 1bc45337b9..c52cd6352d 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -18,7 +18,7 @@ (when (maybe-require-package 'flymake-ruff) (defun sanityinc/flymake-ruff-maybe-enable () - (when (executable-find flymake-ruff-program) + (when (executable-find "ruff") (flymake-ruff-load))) (add-hook 'python-mode-hook 'sanityinc/flymake-ruff-maybe-enable)) From 4ea0b79754c3054e62c5fe6e94319b715a2698ba Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 11 Dec 2023 18:51:24 +0000 Subject: [PATCH 367/418] Also unbind M-. in js-ts-mode (see #850) --- lisp/init-javascript.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 952dc5b207..b73f45f05c 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -60,7 +60,9 @@ (let ((base-mode (if (fboundp 'js-base-mode) 'js-base-mode 'js-mode))) (with-eval-after-load 'js (add-hook (derived-mode-hook-name base-mode) 'sanityinc/enable-xref-js2) - (define-key js-mode-map (kbd "M-.") nil))) + (define-key js-mode-map (kbd "M-.") nil) + (when (boundp 'js-ts-mode-map) + (define-key js-ts-mode-map (kbd "M-.") nil)))) (with-eval-after-load 'js2-mode (define-key js2-mode-map (kbd "M-.") nil))) From cd915dba0e36db81960854912305ccdf586a872e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 14 Dec 2023 08:08:36 +0000 Subject: [PATCH 368/418] Drop faulty reference to set-up-sly-hippie-expand Fixes #856 --- lisp/init-sly.el | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/lisp/init-sly.el b/lisp/init-sly.el index ee9fca4837..f504498c40 100644 --- a/lisp/init-sly.el +++ b/lisp/init-sly.el @@ -10,27 +10,17 @@ ;;; Lisp buffers -(defun sanityinc/sly-setup () - "Mode setup function for sly lisp buffers." - (set-up-sly-hippie-expand)) - (with-eval-after-load 'sly (setq sly-protocol-version 'ignore) (setq sly-net-coding-system 'utf-8-unix) (let ((features '(sly-fancy))) ;; (when (require 'sly-company nil t) ;; (push 'sly-company features)) - (sly-setup features)) - (add-hook 'sly-mode-hook 'sanityinc/sly-setup)) + (sly-setup features))) ;;; REPL -(defun sanityinc/sly-repl-setup () - "Mode setup function for sly REPL." - (sanityinc/lisp-setup) - (set-up-sly-hippie-expand)) - (with-eval-after-load 'sly-repl ;; Stop SLY's REPL from grabbing DEL, which is annoying when backspacing over a '(' (with-eval-after-load 'paredit @@ -39,7 +29,7 @@ ;; Bind TAB to `indent-for-tab-command', as in regular Sly buffers. (define-key sly-repl-mode-map (kbd "TAB") 'indent-for-tab-command) - (add-hook 'sly-repl-mode-hook 'sanityinc/sly-repl-setup)) + (add-hook 'sly-repl-mode-hook 'sanityinc/lisp-setup)) (provide 'init-sly) From c7f85d680c90a0290d69b47c3b037aa33182e8f8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 23 Dec 2023 12:40:00 +0000 Subject: [PATCH 369/418] Enable repeat-mode --- lisp/init-editing-utils.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 3c22e7724d..4c907dccc6 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -140,6 +140,8 @@ ;; Show matching parens (add-hook 'after-init-hook 'show-paren-mode) +(when (fboundp 'repeat-mode) + (add-hook 'after-init-hook 'repeat-mode)) ;;; Handy key bindings From b1ac6a9ea70d70b808788b2744338e95b77beadf Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 23 Dec 2023 12:40:15 +0000 Subject: [PATCH 370/418] Only use M-S-up / M-S-down for moving lines with move-dup --- lisp/init-editing-utils.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 4c907dccc6..ca3d546918 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -191,8 +191,6 @@ ;; use M-S-up and M-S-down, which will work even in lisp modes. (require-package 'move-dup) -(global-set-key [M-up] 'move-dup-move-lines-up) -(global-set-key [M-down] 'move-dup-move-lines-down) (global-set-key [M-S-up] 'move-dup-move-lines-up) (global-set-key [M-S-down] 'move-dup-move-lines-down) From 9cb7f5c5b8c0cc8744e00c221f6a3bc2bb15191b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 23 Dec 2023 12:42:07 +0000 Subject: [PATCH 371/418] Add config for puni --- lisp/init-paredit.el | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index 60572be2d1..4c2712b378 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -41,5 +41,19 @@ (add-hook 'sanityinc/lispy-modes-hook 'enable-paredit-mode) +(when (maybe-require-package 'puni) + ;;(add-hook 'prog-mode-hook 'puni-mode) + (add-hook 'sanityinc/lispy-modes-hook (lambda () (puni-mode -1))) + (with-eval-after-load 'puni + (define-key puni-mode-map (kbd "M-(") 'puni-wrap-round) + (define-key puni-mode-map (kbd "C-(") 'puni-slurp-backward) + (define-key puni-mode-map (kbd "C-)") 'puni-slurp-forward) + (define-key puni-mode-map (kbd "C-}") 'puni-barf-forward) + (define-key puni-mode-map (kbd "C-{") 'puni-barf-backward) + (define-key puni-mode-map (kbd "M-") 'puni-splice-killing-backward) + (define-key puni-mode-map (kbd "C-w") nil))) + + + (provide 'init-paredit) ;;; init-paredit.el ends here From f3815e60a9a652e2ef7cfb9c8cfa914fa7b5cdcc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 23 Dec 2023 14:44:19 +0000 Subject: [PATCH 372/418] Better incantation for adding M-w to eat-semi-char-non-bound-keys --- lisp/init-terminals.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-terminals.el b/lisp/init-terminals.el index e440bf61df..2bf099ea23 100644 --- a/lisp/init-terminals.el +++ b/lisp/init-terminals.el @@ -13,9 +13,9 @@ (add-hook 'eat-exit-hook 'sanityinc/on-eat-exit) (with-eval-after-load 'eat - (add-to-list 'eat-semi-char-non-bound-keys [?\e ?w]) - (eat-update-semi-char-mode-map) - (eat-reload)) + (custom-set-variables + `(eat-semi-char-non-bound-keys + (quote ,(cons [?\e ?w] eat-semi-char-non-bound-keys))))) (defcustom sanityinc/eat-map (let ((map (make-sparse-keymap))) From ac39b979d42effed4ed8b11fa695ec38ccc90e87 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 23 Dec 2023 14:45:10 +0000 Subject: [PATCH 373/418] Simplify uiua config --- lisp/init-uiua.el | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lisp/init-uiua.el b/lisp/init-uiua.el index 678085e623..7181e13430 100644 --- a/lisp/init-uiua.el +++ b/lisp/init-uiua.el @@ -2,10 +2,8 @@ ;;; Commentary: ;;; Code: -(if (maybe-require-package 'uiua-ts-mode) - (when (and (fboundp 'treesit-ready-p) (treesit-ready-p 'uiua t)) - (add-to-list 'major-mode-remap-alist '(uiua-mode . uiua-ts-mode))) - (maybe-require-package 'uiua-mode)) +(or (maybe-require-package 'uiua-ts-mode) + (maybe-require-package 'uiua-mode)) (with-eval-after-load 'eglot (add-to-list 'eglot-server-programs '((uiua-mode uiua-ts-mode) . ("uiua" "lsp")))) From e2ae3cd360b30761d2a9ef800d37e5d0d10ad1a4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 2 Jan 2024 08:32:01 +0000 Subject: [PATCH 374/418] Drop consult-flycheck, since this config uses flymake primarily --- lisp/init-minibuffer.el | 4 +--- lisp/init-treesitter.el | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index 34039b9b27..ea5b356de6 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -40,9 +40,7 @@ (when (maybe-require-package 'embark-consult) (with-eval-after-load 'embark (require 'embark-consult) - (add-hook 'embark-collect-mode-hook 'embark-consult-preview-minor-mode))) - - (maybe-require-package 'consult-flycheck))) + (add-hook 'embark-collect-mode-hook 'embark-consult-preview-minor-mode))))) (when (maybe-require-package 'marginalia) (add-hook 'after-init-hook 'marginalia-mode)) diff --git a/lisp/init-treesitter.el b/lisp/init-treesitter.el index d8b57e6380..a9298b899a 100644 --- a/lisp/init-treesitter.el +++ b/lisp/init-treesitter.el @@ -45,6 +45,7 @@ Return a list of languages seen along the way." (let ((ts-mode-name (intern (concat emacs-lang "-ts-mode"))) (regular-mode-name (intern (concat emacs-lang "-mode")))) (when (fboundp ts-mode-name) + (message "init-treesitter: using %s in place of %s" ts-mode-name regular-mode-name) (add-to-list 'major-mode-remap-alist (cons regular-mode-name ts-mode-name)))) ;; Remember we saw this language so we don't squash its config when we From 45dc1f21cce59d6f5d61364ff56943d42c8b8ba7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 11 Jan 2024 10:13:41 +0000 Subject: [PATCH 375/418] Fix a couple of messy file footers, fixes #857 --- lisp/init-terraform.el | 1 - lisp/init-uniquify.el | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-terraform.el b/lisp/init-terraform.el index edd2efb021..6bc7758058 100644 --- a/lisp/init-terraform.el +++ b/lisp/init-terraform.el @@ -15,4 +15,3 @@ (provide 'init-terraform) ;;; init-terraform.el ends here -;;; init-terraform.el ends here diff --git a/lisp/init-uniquify.el b/lisp/init-uniquify.el index 71fd2706be..eb528e054a 100644 --- a/lisp/init-uniquify.el +++ b/lisp/init-uniquify.el @@ -11,4 +11,5 @@ (setq uniquify-ignore-buffers-re "^\\*") -(provide 'init-uniquify);;; init-uniquify.el ends here +(provide 'init-uniquify) +;;; init-uniquify.el ends here From 4daee431e09e6db5d7bd569a232233f2df439a4f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 25 Jan 2024 11:35:47 +0000 Subject: [PATCH 376/418] Remove defunct macro alias --- lisp/init-utils.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-utils.el b/lisp/init-utils.el index 6b3f2f4307..808b340408 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -2,8 +2,6 @@ ;;; Commentary: ;;; Code: -(define-obsolete-function-alias 'after-load 'with-eval-after-load "") - ;; Handier way to add modes to auto-mode-alist (defun add-auto-mode (mode &rest patterns) From 0b82e281454e8c32757f153d30efb008251a0e8c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 26 Jan 2024 11:27:22 +0000 Subject: [PATCH 377/418] Performance tuning tweaks --- init.el | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/init.el b/init.el index ca10d1ff20..7b69014bc6 100644 --- a/init.el +++ b/init.el @@ -22,13 +22,8 @@ (defconst *is-a-mac* (eq system-type 'darwin)) -;; Adjust garbage collection thresholds during startup, and thereafter - -(let ((normal-gc-cons-threshold (* 20 1024 1024)) - (init-gc-cons-threshold (* 128 1024 1024))) - (setq gc-cons-threshold init-gc-cons-threshold) - (add-hook 'emacs-startup-hook - (lambda () (setq gc-cons-threshold normal-gc-cons-threshold)))) +;; Adjust garbage collection threshold for early startup (see use of gcmh below) +(setq gc-cons-threshold (* 128 1024 1024)) ;; Process performance tuning @@ -47,6 +42,15 @@ (require 'init-elpa) ;; Machinery for installing required packages (require 'init-exec-path) ;; Set up $PATH + +;; General performance tuning +(when (require-package 'gcmh) + (setq gcmh-high-cons-threshold (* 512 1024 1024)) + (add-hook 'after-init-hook 'gcmh-mode) + (with-eval-after-load 'diminish + (diminish 'gcmh-mode))) +(setq jit-lock-defer-time 0) + ;; Allow users to provide an optional "init-preload-local.el" (require 'init-preload-local nil t) From d7e5e9c08f920aec3c0f88502cff887623fcf554 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 26 Jan 2024 11:28:19 +0000 Subject: [PATCH 378/418] Enable package-native-compile --- lisp/init-elpa.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index c5e0820849..3063215a38 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -63,6 +63,7 @@ locate PACKAGE." ;;; Fire up package.el (setq package-enable-at-startup nil) +(setq package-native-compile t) (package-initialize) From 1a01db76eb91841751301b9f6c30237d6adce1a3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 26 Jan 2024 11:50:13 +0000 Subject: [PATCH 379/418] Don't override C-o --- lisp/init-editing-utils.el | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index ca3d546918..0da2227ac9 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -219,37 +219,6 @@ (with-eval-after-load 'whole-line-or-region (diminish 'whole-line-or-region-local-mode)) - - -(defun sanityinc/open-line-with-reindent (n) - "A version of `open-line' which reindents the start and end positions. -If there is a fill prefix and/or a `left-margin', insert them -on the new line if the line would have been blank. -With arg N, insert N newlines." - (interactive "*p") - (let* ((do-fill-prefix (and fill-prefix (bolp))) - (do-left-margin (and (bolp) (> (current-left-margin) 0))) - (loc (point-marker)) - ;; Don't expand an abbrev before point. - (abbrev-mode nil)) - (delete-horizontal-space t) - (newline n) - (indent-according-to-mode) - (when (eolp) - (delete-horizontal-space t)) - (goto-char loc) - (while (> n 0) - (cond ((bolp) - (if do-left-margin (indent-to (current-left-margin))) - (if do-fill-prefix (insert-and-inherit fill-prefix)))) - (forward-line 1) - (setq n (1- n))) - (goto-char loc) - (end-of-line) - (indent-according-to-mode))) - -(global-set-key (kbd "C-o") 'sanityinc/open-line-with-reindent) - ;; M-^ is inconvenient, so also bind M-j From 376071d93de0d6b9b29bded378e042db545a4131 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 26 Jan 2024 11:52:51 +0000 Subject: [PATCH 380/418] Enable goto-address-prog-mode in conf-mode toml-mode is based on conf-mode, so no need to enable the minor mode there too. --- lisp/init-misc.el | 1 + lisp/init-toml.el | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index a212285072..e7f4a4a96c 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -11,6 +11,7 @@ (setq use-short-answers t)) (add-hook 'prog-mode-hook 'goto-address-prog-mode) +(add-hook 'conf-mode-hook 'goto-address-prog-mode) (setq goto-address-mail-face 'link) (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p) diff --git a/lisp/init-toml.el b/lisp/init-toml.el index 3106dcc246..81212846ba 100644 --- a/lisp/init-toml.el +++ b/lisp/init-toml.el @@ -2,8 +2,7 @@ ;;; Commentary: ;;; Code: -(when (maybe-require-package 'toml-mode) - (add-hook 'toml-mode-hook 'goto-address-prog-mode)) +(maybe-require-package 'toml-mode) (provide 'init-toml) From 86c0fb2db3afc9344558d1aace073c5bf82bb745 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 26 Jan 2024 11:53:50 +0000 Subject: [PATCH 381/418] Better formulation of form that sets use-short-answers --- lisp/init-misc.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index e7f4a4a96c..7f9f17e22e 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -6,9 +6,10 @@ ;; Misc config - yet to be placed in separate files (add-auto-mode 'tcl-mode "^Portfile\\'") -(fset 'yes-or-no-p 'y-or-n-p) -(when (boundp 'use-short-answers) - (setq use-short-answers t)) + +(if (boundp 'use-short-answers) + (setq use-short-answers t) + (fset 'yes-or-no-p 'y-or-n-p)) (add-hook 'prog-mode-hook 'goto-address-prog-mode) (add-hook 'conf-mode-hook 'goto-address-prog-mode) From 9bc1af15ca467d524bd337c014132146d5f5c8b1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 30 Jan 2024 10:48:53 +0000 Subject: [PATCH 382/418] Add Emacs 29.2 to CI matrix --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c76b5314bd..7bc215d8ab 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,6 +21,7 @@ jobs: - 28.1 - 28.2 - 29.1 + - 29.2 experimental: [false] include: - emacs_version: snapshot From 674341e29abb2e746cf3fff7e587f0948aedfe87 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 30 Jan 2024 10:59:56 +0000 Subject: [PATCH 383/418] Remove skewer, which is now defunct --- lisp/init-css.el | 7 ------- lisp/init-javascript.el | 8 -------- 2 files changed, 15 deletions(-) diff --git a/lisp/init-css.el b/lisp/init-css.el index c04db14003..8a34ced370 100644 --- a/lisp/init-css.el +++ b/lisp/init-css.el @@ -51,15 +51,8 @@ (unless (fboundp 'less-css-mode) ;; Prefer the scss-mode built into Emacs (require-package 'less-css-mode)) -(when (maybe-require-package 'skewer-less) - (add-hook 'less-css-mode-hook 'skewer-less-mode)) - -;; Skewer CSS -(when (maybe-require-package 'skewer-mode) - (add-hook 'css-mode-hook 'skewer-css-mode)) - ;;; Use eldoc for syntax hints (require-package 'css-eldoc) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index b73f45f05c..6d0e53d107 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -94,14 +94,6 @@ (dolist (hook '(js2-mode-hook js-mode-hook)) (add-hook hook 'inferior-js-keys-mode))) - -;; Alternatively, use skewer-mode - -(when (maybe-require-package 'skewer-mode) - (with-eval-after-load 'skewer-mode - (add-hook 'skewer-mode-hook - (lambda () (inferior-js-keys-mode -1))))) - (when (maybe-require-package 'add-node-modules-path) From 40c02282ab62c6606b0a8857560bf72390948d5b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 30 Jan 2024 11:06:59 +0000 Subject: [PATCH 384/418] Drop coffeescript support --- README.md | 2 +- lisp/init-javascript.el | 10 ---------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/README.md b/README.md index e0b7479802..cd596b0deb 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ in the approximate order of how much I use them, from most to least: * Ruby / Ruby on Rails * SQL * CSS / LESS / SASS / SCSS -* Javascript / Typescript / Coffeescript +* Javascript / Typescript * HTML / HAML / Markdown / Textile / ERB * Common Lisp (with Slime) * Python diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 6d0e53d107..a4e2413958 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -67,16 +67,6 @@ (define-key js2-mode-map (kbd "M-.") nil))) - -;;; Coffeescript - -(when (maybe-require-package 'coffee-mode) - (with-eval-after-load 'coffee-mode - (setq-default coffee-tab-width js-indent-level)) - - (when (fboundp 'coffee-mode) - (add-to-list 'auto-mode-alist '("\\.coffee\\.erb\\'" . coffee-mode)))) - ;; Run and interact with an inferior JS via js-comint.el From be928bf851e8492e646dd45b358a78fdc3be5f56 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 30 Jan 2024 11:07:10 +0000 Subject: [PATCH 385/418] Drop add-node-modules-path: use envrc + direnv instead --- lisp/init-javascript.el | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index a4e2413958..efb678c4d1 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -85,11 +85,5 @@ (add-hook hook 'inferior-js-keys-mode))) - -(when (maybe-require-package 'add-node-modules-path) - (dolist (mode '(typescript-mode js-mode js2-mode coffee-mode)) - (add-hook (derived-mode-hook-name mode) 'add-node-modules-path))) - - (provide 'init-javascript) ;;; init-javascript.el ends here From ff338308afef3e4f86799d2fe79f268ec3ae3744 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 31 Jan 2024 16:10:56 +0000 Subject: [PATCH 386/418] Ignore projectile cache file --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 4f80ddb062..d93ca95c8d 100644 --- a/.gitignore +++ b/.gitignore @@ -57,3 +57,4 @@ site-lisp/package/ /eln-cache/ /projects /forge-*.sqlite +/projectile.cache From 2b60ba70b09428765b2e42304bae17d68d581c94 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 31 Jan 2024 16:13:59 +0000 Subject: [PATCH 387/418] Drop support for Emacs < 27.1 --- .github/workflows/test.yml | 3 --- README.md | 11 ++++------- init.el | 4 ++-- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7bc215d8ab..1a76441ae0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,9 +13,6 @@ jobs: strategy: matrix: emacs_version: - - 26.1 - - 26.2 - - 26.3 - 27.1 - 27.2 - 28.1 diff --git a/README.md b/README.md index cd596b0deb..22a03a559b 100644 --- a/README.md +++ b/README.md @@ -39,13 +39,10 @@ LSP support is provided using `eglot`. Use the latest released Emacs version available to you. The author typically uses the latest stable version. -The config should run on Emacs 26.1 or greater and is designed to -degrade smoothly - see the CI build - but even basic enhancements -like completion may be unavailable if your Emacs is too old. - -Some Windows users might need to follow -[these instructions](http://xn--9dbdkw.se/diary/how_to_enable_GnuTLS_for_Emacs_24_on_Windows/index.en.html) -to get TLS (ie. SSL) support included in their Emacs. +The config should run on Emacs 27.1 or greater and is designed to +degrade smoothly - see the CI build - but many enhancements may be +unavailable if your Emacs is too old, and in general you should try +to use the latest stable Emacs release like I do. ## Other requirements diff --git a/init.el b/init.el index 7b69014bc6..abb8ec2f20 100644 --- a/init.el +++ b/init.el @@ -9,10 +9,10 @@ ;; Produce backtraces when errors occur: can be helpful to diagnose startup issues ;;(setq debug-on-error t) -(let ((minver "26.1")) +(let ((minver "27.1")) (when (version< emacs-version minver) (error "Your Emacs is too old -- this config requires v%s or higher" minver))) -(when (version< emacs-version "27.1") +(when (version< emacs-version "28.1") (message "Your Emacs is old, and some functionality in this config will be disabled. Please upgrade if possible.")) (add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory)) From dd3c9e346c3f53df767b7db34c7a0ab36882d415 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 31 Jan 2024 16:31:11 +0000 Subject: [PATCH 388/418] More conservatively set the upper gcmh threshold --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index abb8ec2f20..8c45744fce 100644 --- a/init.el +++ b/init.el @@ -45,7 +45,7 @@ ;; General performance tuning (when (require-package 'gcmh) - (setq gcmh-high-cons-threshold (* 512 1024 1024)) + (setq gcmh-high-cons-threshold (* 128 1024 1024)) (add-hook 'after-init-hook 'gcmh-mode) (with-eval-after-load 'diminish (diminish 'gcmh-mode))) From af51a95e72807c41f5d5673682cf863b6888574d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 31 Jan 2024 17:29:26 +0000 Subject: [PATCH 389/418] Disable fullframe for ibuffer (fixes #860) --- lisp/init-ibuffer.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index 672dee878f..91823b4c1d 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -6,10 +6,6 @@ ;;; Code: -(require-package 'fullframe) -(with-eval-after-load 'ibuffer - (fullframe ibuffer ibuffer-quit)) - (require-package 'ibuffer-vc) (defun ibuffer-set-up-preferred-filters () From 6c1962a889d1756729a9fe70394ebca161671c90 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 1 Feb 2024 14:21:42 +0000 Subject: [PATCH 390/418] Use display-buffer-alist instead of the fullframe package --- lisp/init-docker.el | 10 +++++----- lisp/init-elpa.el | 4 ---- lisp/init-git.el | 7 +++---- lisp/init-ibuffer.el | 2 ++ lisp/init-utils.el | 8 ++++++++ 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/lisp/init-docker.el b/lisp/init-docker.el index 8a116c5093..99cfcc677d 100644 --- a/lisp/init-docker.el +++ b/lisp/init-docker.el @@ -3,11 +3,11 @@ ;;; Code: (when (maybe-require-package 'docker) - (fullframe docker-images tablist-quit) - (fullframe docker-machines tablist-quit) - (fullframe docker-volumes tablist-quit) - (fullframe docker-networks tablist-quit) - (fullframe docker-containers tablist-quit)) + (sanityinc/fullframe-mode 'docker-image-mode) + (sanityinc/fullframe-mode 'docker-machine-mode) + (sanityinc/fullframe-mode 'docker-volume-mode) + (sanityinc/fullframe-mode 'docker-network-mode) + (sanityinc/fullframe-mode 'docker-container-mode)) (maybe-require-package 'dockerfile-mode) (maybe-require-package 'docker-compose-mode) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 3063215a38..d7901d50be 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -109,10 +109,6 @@ advice for `require-package', to which ARGS are passed." (package--save-selected-packages (seq-uniq (append sanityinc/required-packages package-selected-packages)))))) - -(require-package 'fullframe) -(fullframe list-packages quit-window) - (let ((package-check-signature nil)) (require-package 'gnu-elpa-keyring-update)) diff --git a/lisp/init-git.el b/lisp/init-git.el index fac54186e9..c96f0de587 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -17,6 +17,9 @@ (when (maybe-require-package 'magit) (setq-default magit-diff-refine-hunk 'all) + (sanityinc/fullframe-mode 'magit-status-mode) + (setq-default magit-bury-buffer-function 'magit-restore-window-configuration) + ;; Hint: customize `magit-repository-directories' so that you can use C-u M-F12 to ;; quickly open magit on any one of your projects. (global-set-key [(meta f12)] 'magit-status) @@ -41,10 +44,6 @@ (maybe-require-package 'magit-todos) -(require-package 'fullframe) -(with-eval-after-load 'magit - (fullframe magit-status magit-mode-quit-window)) - (when (maybe-require-package 'git-commit) (add-hook 'git-commit-mode-hook 'goto-address-mode)) diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el index 91823b4c1d..acc2960f5e 100644 --- a/lisp/init-ibuffer.el +++ b/lisp/init-ibuffer.el @@ -17,6 +17,8 @@ (setq-default ibuffer-show-empty-filter-groups nil) +(sanityinc/fullframe-mode 'ibuffer-mode) + (with-eval-after-load 'ibuffer ;; Use human readable Size column instead of original one diff --git a/lisp/init-utils.el b/lisp/init-utils.el index 808b340408..9c93d7665e 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -2,6 +2,14 @@ ;;; Commentary: ;;; Code: +(defmacro sanityinc/fullframe-mode (mode) + "Configure buffers that open in MODE to start out full-frame." + `(add-to-list 'display-buffer-alist + (cons (cons 'major-mode ,mode) + (list 'display-buffer-full-frame)))) + +(sanityinc/fullframe-mode 'package-menu-mode) + ;; Handier way to add modes to auto-mode-alist (defun add-auto-mode (mode &rest patterns) From 00cbf19c8de6e3e88942952852e34231b48baaf0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 1 Feb 2024 14:22:20 +0000 Subject: [PATCH 391/418] Remove defunct workaround for clashing key binding --- lisp/init-git.el | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index c96f0de587..8c1d5e8d3e 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -47,12 +47,6 @@ (when (maybe-require-package 'git-commit) (add-hook 'git-commit-mode-hook 'goto-address-mode)) - -(when *is-a-mac* - (with-eval-after-load 'magit - (add-hook 'magit-mode-hook (lambda () (local-unset-key [(meta h)]))))) - - ;; Convenient binding for vc-git-grep (with-eval-after-load 'vc From 5f26d55544b22944e51feb7acdcbc8931a369142 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 1 Feb 2024 18:03:34 +0000 Subject: [PATCH 392/418] Restore window config like fullframe did, but much more simply --- lisp/init-git.el | 1 - lisp/init-utils.el | 25 +++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index 8c1d5e8d3e..37ca281c49 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -18,7 +18,6 @@ (setq-default magit-diff-refine-hunk 'all) (sanityinc/fullframe-mode 'magit-status-mode) - (setq-default magit-bury-buffer-function 'magit-restore-window-configuration) ;; Hint: customize `magit-repository-directories' so that you can use C-u M-F12 to ;; quickly open magit on any one of your projects. diff --git a/lisp/init-utils.el b/lisp/init-utils.el index 9c93d7665e..6a392cb068 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -2,11 +2,32 @@ ;;; Commentary: ;;; Code: +(defun sanityinc/display-buffer-full-frame (buffer alist) + "If it's not visible, display buffer full-frame, saving the prior window config. +The saved config will be restored when the window is quit later. +BUFFER and ALIST are as for `display-buffer-full-frame'." + (let ((initial-window-configuration (current-window-configuration))) + (or (display-buffer-reuse-window buffer alist) + (let ((full-window (display-buffer-full-frame buffer alist))) + (prog1 + full-window + (set-window-parameter full-window 'sanityinc/previous-config initial-window-configuration)))))) + +(defun sanityinc/maybe-restore-window-configuration (orig &optional kill window) + (let* ((window (or window (selected-window))) + (to-restore (window-parameter window 'sanityinc/previous-config))) + (set-window-parameter window 'sanityinc/previous-config nil) + (funcall orig kill window) + (when to-restore + (set-window-configuration to-restore)))) + +(advice-add 'quit-window :around 'sanityinc/maybe-restore-window-configuration) + (defmacro sanityinc/fullframe-mode (mode) - "Configure buffers that open in MODE to start out full-frame." + "Configure buffers that open in MODE to display in full-frame." `(add-to-list 'display-buffer-alist (cons (cons 'major-mode ,mode) - (list 'display-buffer-full-frame)))) + (list 'sanityinc/display-buffer-full-frame)))) (sanityinc/fullframe-mode 'package-menu-mode) From 125632d66d20b477e9bd3fd34eaf106ba1d747bc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 1 Feb 2024 18:07:49 +0000 Subject: [PATCH 393/418] Remove unused package git-blamed --- lisp/init-git.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index 37ca281c49..4082463e86 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -7,7 +7,6 @@ ;; TODO: link commits from vc-log to magit-show-commit ;; TODO: smerge-mode -(require-package 'git-blamed) (require-package 'git-modes) (when (maybe-require-package 'git-timemachine) (global-set-key (kbd "C-x v t") 'git-timemachine-toggle)) From 0f5934b146a8b6d0ea964cb3fb41f468dff8c18b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 2 Feb 2024 10:02:54 +0000 Subject: [PATCH 394/418] Don't check package signatures during startup test --- test-startup.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test-startup.sh b/test-startup.sh index 3d3d83c329..f4a04231fc 100755 --- a/test-startup.sh +++ b/test-startup.sh @@ -7,7 +7,8 @@ ${EMACS:=emacs} -nw --batch \ (url-show-status nil) (user-emacs-directory default-directory) (user-init-file (expand-file-name "init.el")) - (load-path (delq default-directory load-path))) + (load-path (delq default-directory load-path)) + (package-check-signature nil)) (load-file user-init-file) (run-hooks (quote after-init-hook))))' echo "Startup successful" From ec76d1031850689785217f8ae208b7aa6edca497 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 2 Feb 2024 10:09:56 +0000 Subject: [PATCH 395/418] Better way to change signature setting in startup test --- test-startup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test-startup.sh b/test-startup.sh index f4a04231fc..6c55d91585 100755 --- a/test-startup.sh +++ b/test-startup.sh @@ -7,8 +7,8 @@ ${EMACS:=emacs} -nw --batch \ (url-show-status nil) (user-emacs-directory default-directory) (user-init-file (expand-file-name "init.el")) - (load-path (delq default-directory load-path)) - (package-check-signature nil)) + (load-path (delq default-directory load-path))) + (setq package-check-signature nil) (load-file user-init-file) (run-hooks (quote after-init-hook))))' echo "Startup successful" From 1f70144943304118f829db2237f9b0414beb45f6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 5 Feb 2024 10:44:04 +0000 Subject: [PATCH 396/418] Fix suppression of GCMH modeline lighter --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index 8c45744fce..ecafff20a4 100644 --- a/init.el +++ b/init.el @@ -46,7 +46,7 @@ ;; General performance tuning (when (require-package 'gcmh) (setq gcmh-high-cons-threshold (* 128 1024 1024)) - (add-hook 'after-init-hook 'gcmh-mode) + (add-hook 'after-init-hook 'gcmh) (with-eval-after-load 'diminish (diminish 'gcmh-mode))) (setq jit-lock-defer-time 0) From 592e4558ec5a5bdba137434c3b37b2bb9dfcc3e5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 5 Feb 2024 10:52:17 +0000 Subject: [PATCH 397/418] Actually fix gcmh startup + mode lighter --- init.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/init.el b/init.el index ecafff20a4..707b0b604b 100644 --- a/init.el +++ b/init.el @@ -46,9 +46,10 @@ ;; General performance tuning (when (require-package 'gcmh) (setq gcmh-high-cons-threshold (* 128 1024 1024)) - (add-hook 'after-init-hook 'gcmh) - (with-eval-after-load 'diminish - (diminish 'gcmh-mode))) + (add-hook 'after-init-hook (lambda () + (gcmh-mode) + (diminish 'gcmh-mode)))) + (setq jit-lock-defer-time 0) From 233eb63f35574b011a1ec94927ec0c6ecde2d5af Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 6 Feb 2024 12:14:25 +0000 Subject: [PATCH 398/418] init-common-lisp.el was obsolete, and only init-sly.el is useful now --- init.el | 1 - lisp/init-common-lisp.el | 52 ---------------------------------------- 2 files changed, 53 deletions(-) delete mode 100644 lisp/init-common-lisp.el diff --git a/init.el b/init.el index 707b0b604b..5c5df9fd3b 100644 --- a/init.el +++ b/init.el @@ -131,7 +131,6 @@ (require 'init-sly) (require 'init-clojure) (require 'init-clojure-cider) -(require 'init-common-lisp) (when *spell-check-support-enabled* (require 'init-spelling)) diff --git a/lisp/init-common-lisp.el b/lisp/init-common-lisp.el deleted file mode 100644 index e5390d4577..0000000000 --- a/lisp/init-common-lisp.el +++ /dev/null @@ -1,52 +0,0 @@ -;;; init-common-lisp.el --- Common Lisp support -*- lexical-binding: t -*- -;;; Commentary: -;;; Code: - -;; See http://bc.tech.coop/blog/070927.html -(add-auto-mode 'lisp-mode "\\.cl\\'") -(add-hook 'lisp-mode-hook (lambda () - (unless (featurep 'slime) - (require 'slime) - (normal-mode)))) - -(with-eval-after-load 'slime - (when (executable-find "sbcl") - (add-to-list 'slime-lisp-implementations - '(sbcl ("sbcl") :coding-system utf-8-unix))) - (when (executable-find "lisp") - (add-to-list 'slime-lisp-implementations - '(cmucl ("lisp") :coding-system iso-latin-1-unix))) - (when (executable-find "ccl") - (add-to-list 'slime-lisp-implementations - '(ccl ("ccl") :coding-system utf-8-unix)))) - -;; From http://bc.tech.coop/blog/070515.html -(defun lispdoc () - "Searches lispdoc.com for SYMBOL, which is by default the symbol currently under the curser" - (interactive) - (let* ((word-at-point (word-at-point)) - (symbol-at-point (symbol-at-point)) - (default (symbol-name symbol-at-point)) - (inp (read-from-minibuffer - (if (or word-at-point symbol-at-point) - (concat "Symbol (default " default "): ") - "Symbol (no default): ")))) - (if (and (string= inp "") (not word-at-point) (not - symbol-at-point)) - (message "you didn't enter a symbol!") - (let ((search-type (read-from-minibuffer - "full-text (f) or basic (b) search (default b)? "))) - (browse-url (concat "http://lispdoc.com?q=" - (if (string= inp "") - default - inp) - "&search=" - (if (string-equal search-type "f") - "full+text+search" - "basic+search"))))))) - -(define-key lisp-mode-map (kbd "C-c l") 'lispdoc) - - -(provide 'init-common-lisp) -;;; init-common-lisp.el ends here From f0809496f4a66f91741633a5aec66e52b54f1f75 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 12 Feb 2024 15:00:40 +0000 Subject: [PATCH 399/418] Enable cider in clojure-ts-mode too --- lisp/init-clojure-cider.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-clojure-cider.el b/lisp/init-clojure-cider.el index ac244f3662..db54b7ab21 100644 --- a/lisp/init-clojure-cider.el +++ b/lisp/init-clojure-cider.el @@ -7,6 +7,8 @@ (when (maybe-require-package 'cider) (setq nrepl-popup-stacktraces nil) + (add-hook 'clojure-ts-mode-hook #'cider-mode) + (with-eval-after-load 'cider (add-hook 'cider-repl-mode-hook 'subword-mode) (add-hook 'cider-repl-mode-hook 'paredit-mode)) From 0088f4f7d1ee7b2667ff801b1436f5feac1cc321 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 14 Feb 2024 07:47:10 +0000 Subject: [PATCH 400/418] No need to blank out major-mode-remap-alist before modifying Fixes #861 --- lisp/init-treesitter.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-treesitter.el b/lisp/init-treesitter.el index a9298b899a..04c607a9af 100644 --- a/lisp/init-treesitter.el +++ b/lisp/init-treesitter.el @@ -13,8 +13,6 @@ ;; Note that grammar files from different sources can be differently ;; named and configured, so there could be different results. Some ;; common remappings are included below. -(setq treesit-load-name-override-list nil - major-mode-remap-alist nil) ;;; Enable built-in and pre-installed TS modes if the grammars are available From 0b6820661ffc009b243101d40c690af4afc93fc3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 26 Apr 2024 17:34:17 +0100 Subject: [PATCH 401/418] Remove ruby filename pattern that is already upstream --- lisp/init-ruby.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index 0c2e80ea8a..f7b5dfaaec 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -7,7 +7,7 @@ (add-auto-mode 'ruby-mode "\\.rxml\\'" - "\\.rjs\\'" "\\.irbrc\\'" "\\.pryrc\\'" "\\.builder\\'" "\\.ru\\'" + "\\.rjs\\'" "\\.irbrc\\'" "\\.pryrc\\'" "\\.builder\\'" "\\.gemspec\\'" "Kirkfile\\'") (add-auto-mode 'conf-mode "Gemfile\\.lock\\'") From cea084158a7fd65150a170eed647b35941ab01e8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 26 Apr 2024 17:35:04 +0100 Subject: [PATCH 402/418] Upstream envrc now checks for direnv availability --- lisp/init-direnv.el | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lisp/init-direnv.el b/lisp/init-direnv.el index d35e646cf9..a144f8d4fd 100644 --- a/lisp/init-direnv.el +++ b/lisp/init-direnv.el @@ -3,14 +3,9 @@ ;;; Code: (when (maybe-require-package 'envrc) - (defun sanityinc/maybe-enable-envrc-global-mode () - "Enable `envrc-global-mode' if `direnv' is installed." - (when (executable-find "direnv") - (envrc-global-mode))) - (with-eval-after-load 'envrc (define-key envrc-mode-map (kbd "C-c e") 'envrc-command-map)) - (add-hook 'after-init-hook 'sanityinc/maybe-enable-envrc-global-mode)) + (add-hook 'after-init-hook 'envrc-global-mode)) (provide 'init-direnv) From 40d0898d4025a605dd53b383764316042653feee Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 26 Apr 2024 17:35:56 +0100 Subject: [PATCH 403/418] Add Emacs 29.3 to CI matrix --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1a76441ae0..e24d3fc6e4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: - 28.1 - 28.2 - 29.1 - - 29.2 + - 29.3 experimental: [false] include: - emacs_version: snapshot From adf0e27c95cae4e19e2fee174170bac2ff7e83d3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 26 Apr 2024 17:37:47 +0100 Subject: [PATCH 404/418] README tweaks --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 22a03a559b..5ea934035a 100644 --- a/README.md +++ b/README.md @@ -26,14 +26,19 @@ in the approximate order of how much I use them, from most to least: * PHP * Erlang -In particular, there's a nice config for *autocompletion* with -[corfu](https://github.com/minad/corfu), and +Included is a nice setup for in-buffer autocompletion with +[corfu](https://github.com/minad/corfu), and minibuffer completion using +[vertico](https://github.com/minad/vertico). + `flymake` (re-using backends from [flycheck](http://www.flycheck.org)) is used to immediately highlight syntax errors in Ruby, Python, Javascript, Haskell and a number of other languages. LSP support is provided using `eglot`. +Various popular Emacs tools are included and configured here, such as +`magit`, `docker.el`, `projectile`, `org-mode` etc., but the focus is moderate + ## Supported Emacs versions Use the latest released Emacs version available to you. The author @@ -48,8 +53,7 @@ to use the latest stable Emacs release like I do. To make the most of the programming language-specific support in this config, further programs will likely be required, particularly those -that [flycheck](https://github.com/flycheck/flycheck) uses to provide -on-the-fly syntax checking. +that flycheck or flymake use to provide on-the-fly syntax checking. ## Installation From 217afde609fac3bc728b033a9146e18b7d58952f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 2 Aug 2024 10:35:48 +0100 Subject: [PATCH 405/418] Use nixfmt package --- lisp/init-nix.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 4f072eb78f..05a4b0baf0 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -11,6 +11,7 @@ (add-to-list 'eglot-server-programs '((nix-mode nix-ts-mode) . ("nil")))) (maybe-require-package 'nixpkgs-fmt) +(maybe-require-package 'nixfmt) (provide 'init-nix) ;;; init-nix.el ends here From 6972ba91b0916569202cb1b9255702c5ac9c654d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 2 Aug 2024 10:35:58 +0100 Subject: [PATCH 406/418] Prefer nixd to nil for LSP with Nix code --- lisp/init-nix.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 05a4b0baf0..ef46ba32f9 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -8,7 +8,9 @@ (maybe-require-package 'nix-mode)) (with-eval-after-load 'eglot - (add-to-list 'eglot-server-programs '((nix-mode nix-ts-mode) . ("nil")))) + ;; Prefer nixd to nil, and enable in nix-ts-mode too + (add-to-list 'eglot-server-programs + `((nix-mode nix-ts-mode) . ,(eglot-alternatives '("nixd" "nil"))))) (maybe-require-package 'nixpkgs-fmt) (maybe-require-package 'nixfmt) From 9dcdb024cba173f5dbbefffb7fd30badbbd1602b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 2 Aug 2024 10:39:00 +0100 Subject: [PATCH 407/418] Ensure there's an auto-mode-alist entry for nix-ts-mode --- lisp/init-nix.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index ef46ba32f9..2272f8a662 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -3,8 +3,9 @@ ;;; Code: (if (maybe-require-package 'nix-ts-mode) - (when (and (fboundp 'treesit-ready-p) (treesit-ready-p 'nix t)) - (add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-ts-mode))) + ;; If the TS mode is installed, then the non-TS mode is not, so + ;; nobody will have added an auto-mode-alist entry + (add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-ts-mode)) (maybe-require-package 'nix-mode)) (with-eval-after-load 'eglot From 247d6e1cc534a30a2ceed9413f55a10bb3a53df0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 2 Aug 2024 10:40:30 +0100 Subject: [PATCH 408/418] Use ocaml-ts-mode and enable LSP for it --- lisp/init-ocaml.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-ocaml.el b/lisp/init-ocaml.el index c3bf20b999..35115e95cf 100644 --- a/lisp/init-ocaml.el +++ b/lisp/init-ocaml.el @@ -24,6 +24,11 @@ (define-key tuareg-mode-map (kbd "C-c C-z") 'sanityinc/tuareg-repl-switch) (define-key tuareg-interactive-mode-map (kbd "C-c C-z") 'sanityinc/tuareg-repl-switch-back))) +(when (and (fboundp 'treesit-available-p) (treesit-available-p)) + (require-package 'ocaml-ts-mode) + (with-eval-after-load 'eglot + (add-to-list 'eglot-server-programs '(((ocaml-ts-mode :language-id "ocaml")) "ocamllsp")))) + (when (maybe-require-package 'dune) (maybe-require-package 'dune-format)) From c6916a8f5df5f1f0d694cc2998a98327eb826031 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 4 Sep 2024 10:43:19 +0100 Subject: [PATCH 409/418] git-commit is now part of magit, and shouldn't be installed directly Fixes #864 --- lisp/init-git.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index 4082463e86..0a14da3aa6 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -42,8 +42,7 @@ (maybe-require-package 'magit-todos) -(when (maybe-require-package 'git-commit) - (add-hook 'git-commit-mode-hook 'goto-address-mode)) +(add-hook 'git-commit-mode-hook 'goto-address-mode) ;; Convenient binding for vc-git-grep From 3e376aa0ae100ba6b1c4e6700995c9aa6fc49e7f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 25 Sep 2024 14:42:12 +0100 Subject: [PATCH 410/418] Add init-zig.el --- init.el | 1 + lisp/init-zig.el | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 lisp/init-zig.el diff --git a/init.el b/init.el index 5c5df9fd3b..0b74cc3fc1 100644 --- a/init.el +++ b/init.el @@ -143,6 +143,7 @@ (require 'init-ledger) (require 'init-lua) (require 'init-uiua) +(require 'init-zig) (require 'init-terminals) ;; Extra packages which don't require any configuration diff --git a/lisp/init-zig.el b/lisp/init-zig.el new file mode 100644 index 0000000000..0fa4af72ab --- /dev/null +++ b/lisp/init-zig.el @@ -0,0 +1,15 @@ +;;; init-zig.el --- Support for the Zig language -*- lexical-binding: t -*- +;;; Commentary: +;;; Code: + +(if (and (maybe-require-package 'zig-ts-mode) + (fboundp 'treesit-ready-p) (treesit-ready-p 'zig)) + (progn + (add-to-list 'auto-mode-alist '("\\.\\(zig\\|zon\\)\\'" . zig-ts-mode)) + (with-eval-after-load 'eglot + (add-to-list 'eglot-server-programs '(zig-ts-mode . ("zls"))))) + (require-package 'zig-mode)) + + +(provide 'init-zig) +;;; init-zig.el ends here From e1c7c3c87eaaeb0c4e55cd352c6c3393b612a23f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 25 Sep 2024 14:45:14 +0100 Subject: [PATCH 411/418] Mark MELPA as unsigned --- lisp/init-elpa.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index d7901d50be..e0f7f65630 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -15,7 +15,8 @@ ;;; Standard package repositories -(add-to-list 'package-archives '( "melpa" . "https://melpa.org/packages/") t) +(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) +(add-to-list 'package-unsigned-archives "melpa") ;; Official MELPA Mirror, in case necessary. ;;(add-to-list 'package-archives (cons "melpa-mirror" (concat proto "://www.mirrorservice.org/sites/melpa.org/packages/")) t) From 4add524548e076b19c041f13bd8cf02c6e8e23d4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 25 Sep 2024 14:45:49 +0100 Subject: [PATCH 412/418] Enable line numbers for YAML too --- lisp/init-editing-utils.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 0da2227ac9..378a4b3bb3 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -86,7 +86,9 @@ (when (fboundp 'display-line-numbers-mode) (setq-default display-line-numbers-width 3) - (add-hook 'prog-mode-hook 'display-line-numbers-mode)) + (add-hook 'prog-mode-hook 'display-line-numbers-mode) + (add-hook 'yaml-mode-hook 'display-line-numbers-mode) + (add-hook 'yaml-ts-mode-hook 'display-line-numbers-mode)) From 5c21480f11ca9e4be3e95ba867044222dfc3405e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 25 Sep 2024 16:08:19 +0100 Subject: [PATCH 413/418] Don't enable Corfu in Emacs 28.1, due to strange error there cc @minad ``` Debugger entered--Lisp error: (void-function :group) :group(corfu) byte-code("\301\302N\204\f\0\303\301\302\304#\210\303\301\305\306#\210\303\301\307\310C#\210\311\312\310\313\300!\205#\0\10\310\211%\210\314\315\316\317\320DD\321\322\323\324..." [global-corfu-mode-map global-corfu-mode-hook variable-documentation put "Hook run after entering or leaving `global-corfu-m..." custom-type hook standard-value nil add-minor-mode global-corfu-mode boundp custom-declare-variable global-corfu-modes funcall function #f(compiled-function () #) "Which major modes `corfu-mode' is switched on in.\n..." :type (repeat sexp) :group corfu] 9) global-corfu-mode() ``` --- lisp/init-corfu.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-corfu.el b/lisp/init-corfu.el index 3119df3469..93d07f0a26 100644 --- a/lisp/init-corfu.el +++ b/lisp/init-corfu.el @@ -14,7 +14,7 @@ completion-category-overrides nil) (setq completion-cycle-threshold 4) -(when (maybe-require-package 'corfu) +(when (and (version<= "28.1" emacs-version) (maybe-require-package 'corfu)) (setq-default corfu-auto t) (with-eval-after-load 'eshell (add-hook 'eshell-mode-hook (lambda () (setq-local corfu-auto nil)))) From d40ad687d29f6f02ee89cd2873c2da7f96d38823 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 26 Sep 2024 09:50:31 +0100 Subject: [PATCH 414/418] Fix condition for enabling corfu --- lisp/init-corfu.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-corfu.el b/lisp/init-corfu.el index 93d07f0a26..b127b584a4 100644 --- a/lisp/init-corfu.el +++ b/lisp/init-corfu.el @@ -14,7 +14,7 @@ completion-category-overrides nil) (setq completion-cycle-threshold 4) -(when (and (version<= "28.1" emacs-version) (maybe-require-package 'corfu)) +(when (and (version< "28.1" emacs-version) (maybe-require-package 'corfu)) (setq-default corfu-auto t) (with-eval-after-load 'eshell (add-hook 'eshell-mode-hook (lambda () (setq-local corfu-auto nil)))) From d45c7cce5e751767c5a50af909956f46f861e370 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 3 Nov 2024 09:43:03 +0000 Subject: [PATCH 415/418] Fix use of prefix arg in consult-ripgrep wrapper Fixes #866 Thanks @wangdiqi --- lisp/init-minibuffer.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index ea5b356de6..07da9ba7cb 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -24,8 +24,8 @@ (when (and (executable-find "rg")) (defun sanityinc/consult-ripgrep-at-point (&optional dir initial) - (interactive (list prefix-arg (when-let ((s (symbol-at-point))) - (symbol-name s)))) + (interactive (list current-prefix-arg (when-let ((s (symbol-at-point))) + (symbol-name s)))) (consult-ripgrep dir initial)) (sanityinc/no-consult-preview sanityinc/consult-ripgrep-at-point) (global-set-key (kbd "M-?") 'sanityinc/consult-ripgrep-at-point)) From c12e9afbaf98039f9c5af99d855e4ff7fe9879dc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 6 Nov 2024 14:34:57 +0000 Subject: [PATCH 416/418] Don't keep adding the same keybinding to eat-semi-char-non-bound-keys Fixes #867 --- lisp/init-terminals.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-terminals.el b/lisp/init-terminals.el index 2bf099ea23..a6829179b9 100644 --- a/lisp/init-terminals.el +++ b/lisp/init-terminals.el @@ -15,7 +15,7 @@ (with-eval-after-load 'eat (custom-set-variables `(eat-semi-char-non-bound-keys - (quote ,(cons [?\e ?w] eat-semi-char-non-bound-keys))))) + (quote ,(cons [?\e ?w] (cl-remove [?\e ?w] eat-semi-char-non-bound-keys :test 'equal)))))) (defcustom sanityinc/eat-map (let ((map (make-sparse-keymap))) From 317994e6a4497348752c38ead11c320fd78b170c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 7 Nov 2024 14:11:15 +0000 Subject: [PATCH 417/418] Remove twitter link --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 5ea934035a..485be5bc55 100644 --- a/README.md +++ b/README.md @@ -123,5 +123,3 @@ versions (see "Updates" above). If you still experience problems, go ahead and [💼 LinkedIn profile](https://uk.linkedin.com/in/stevepurcell) [✍ sanityinc.com](http://www.sanityinc.com/) - -[🐦 @sanityinc](https://twitter.com/sanityinc) From 7a725b2e20155b1686830430e56104c449f4ecec Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 21 Nov 2024 14:09:24 +0000 Subject: [PATCH 418/418] Add just-ts-mode --- init.el | 4 ++++ lisp/init-utils.el | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/init.el b/init.el index 0b74cc3fc1..6f93d485e1 100644 --- a/init.el +++ b/init.el @@ -124,6 +124,10 @@ (require 'init-nix) (maybe-require-package 'nginx-mode) (maybe-require-package 'just-mode) +(when (maybe-require-package 'just-ts-mode) + ;; Undo overly-optimistic autoloading, so that things still work in + ;; Emacs 29 without treesitter + (sanityinc/remove-auto-mode 'just-ts-mode)) (maybe-require-package 'justl) (require 'init-paredit) diff --git a/lisp/init-utils.el b/lisp/init-utils.el index 6a392cb068..e5cb5cb839 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -38,6 +38,10 @@ BUFFER and ALIST are as for `display-buffer-full-frame'." (dolist (pattern patterns) (add-to-list 'auto-mode-alist (cons pattern mode)))) +(defun sanityinc/remove-auto-mode (mode) + "Remove entries from `auto-mode-alist' that are for `MODE'." + (setq auto-mode-alist (seq-remove (lambda (x) (eq mode (cdr x))) auto-mode-alist))) + ;; Like diminish, but for major modes (defun sanityinc/set-major-mode-name (name) "Override the major mode NAME in this buffer."