From c3f70206db1ca09261d713d07c4adedf575c7286 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 4 Sep 2016 17:36:23 +1200 Subject: [PATCH 001/790] Enable skewer by default in css and less-css modes --- lisp/init-css.el | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/init-css.el b/lisp/init-css.el index 82ab342b20..bf2c61bcb9 100644 --- a/lisp/init-css.el +++ b/lisp/init-css.el @@ -43,10 +43,15 @@ ;;; LESS (require-package 'less-css-mode) -(when (featurep 'js2-mode) - (require-package 'skewer-less)) +(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) From 0794d2f749a84d33f6c02d97470338ade8cfd30e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 4 Sep 2016 17:36:54 +1200 Subject: [PATCH 002/790] Remove redundant keybinding for hindent --- lisp/init-haskell.el | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index c5297d8145..09c48d5877 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -33,9 +33,7 @@ (setq-default haskell-stylish-on-save t) (when (maybe-require-package 'hindent) - (add-hook 'haskell-mode-hook 'hindent-mode) - (after-load 'haskell-mode - (define-key haskell-mode-map (kbd "M-q") 'hindent-reformat-decl-or-fill))) + (add-hook 'haskell-mode-hook 'hindent-mode)) (maybe-require-package 'hayoo) (after-load 'haskell-mode From e22e51def985f4f30c271f8e46b6ef832dd8fc91 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 4 Sep 2016 17:37:13 +1200 Subject: [PATCH 003/790] Don't change default magit-process-popup-time --- 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 a44399e0a6..bd91670e9d 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -8,9 +8,7 @@ (when (maybe-require-package 'magit) - (setq-default - magit-process-popup-time 10 - magit-diff-refine-hunk t) + (setq-default magit-diff-refine-hunk t) ;; Hint: customize `magit-repo-dirs' so that you can use C-u M-F12 to ;; quickly open magit on any one of your projects. From 941719032d8954e460f1323dd378ebf0609d0f03 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 4 Sep 2016 17:38:00 +1200 Subject: [PATCH 004/790] Rely on autoload for switch-window --- lisp/init-windows.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-windows.el b/lisp/init-windows.el index c5bffc0eb2..c5a419c7b3 100644 --- a/lisp/init-windows.el +++ b/lisp/init-windows.el @@ -7,7 +7,6 @@ ;; Make "C-x o" prompt for a target window when there are more than 2 (require-package 'switch-window) -(require 'switch-window) (setq-default switch-window-shortcut-style 'alphabet) (setq-default switch-window-timeout nil) (global-set-key (kbd "C-x o") 'switch-window) From 57d718c7b612533404a1fa8907ea7aa4dd0a6b0d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 4 Sep 2016 17:39:01 +1200 Subject: [PATCH 005/790] Start winner-mode after init --- 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 c5a419c7b3..e165c2e92e 100644 --- a/lisp/init-windows.el +++ b/lisp/init-windows.el @@ -1,7 +1,7 @@ ;;---------------------------------------------------------------------------- ;; Navigate window layouts with "C-c " and "C-c " ;;---------------------------------------------------------------------------- -(winner-mode 1) +(add-hook 'after-init-hook 'winner-mode) From b47d41586391e2c112d9f1b023224968f2de8c18 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 4 Sep 2016 17:39:43 +1200 Subject: [PATCH 006/790] Add folding with origami-mode --- init.el | 1 + lisp/init-folding.el | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 lisp/init-folding.el diff --git a/init.el b/init.el index 64fd9ba21f..1515bc9e5c 100644 --- a/init.el +++ b/init.el @@ -117,6 +117,7 @@ (require 'init-misc) +(require 'init-folding) (require 'init-dash) (require 'init-ledger) ;; Extra packages which don't require any configuration diff --git a/lisp/init-folding.el b/lisp/init-folding.el new file mode 100644 index 0000000000..51d198af9f --- /dev/null +++ b/lisp/init-folding.el @@ -0,0 +1,8 @@ +(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))) + + +(provide 'init-folding) From 0ad2306a17e62274607a48179209ea0fba61fc5d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 4 Sep 2016 20:02:58 +1200 Subject: [PATCH 007/790] Revert "Update eval-expr package" This reverts commit 9bd1e89582c38dc1dacf17341346af9c4b96b8c0. --- lisp/init-lisp.el | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 2c80297d83..1c68390aa4 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -19,6 +19,8 @@ (eval-region (min (point) (mark)) (max (point) (mark))) (pp-eval-last-sexp prefix))) +(global-set-key [remap eval-expression] 'pp-eval-expression) + (after-load 'lisp-mode (define-key emacs-lisp-mode-map (kbd "C-x C-e") 'sanityinc/eval-last-sexp-or-region)) @@ -32,20 +34,6 @@ (with-current-buffer out-buffer-name (view-mode 1)))) - -;; Enhanced M-: - -(when (maybe-require-package 'eval-expr) - (global-set-key [remap eval-expression] 'eval-expr) - (setq eval-expr-print-function 'pp - eval-expr-print-level 20 - eval-expr-print-length 100) - - (after-load 'eval-expr - (defun eval-expr-minibuffer-setup () - (set-syntax-table emacs-lisp-mode-syntax-table) - (paredit-mode)))) - (defun sanityinc/maybe-set-bundled-elisp-readonly () From 139486bc072d27bf76772c0b10bb63e8ceb5fd99 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 5 Sep 2016 14:34:46 +1200 Subject: [PATCH 008/790] Set projectile-completion-system when using ivy --- init.el | 4 ++-- lisp/init-ivy.el | 3 ++- lisp/init-org.el | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/init.el b/init.el index 1515bc9e5c..6c2aead00b 100644 --- a/init.el +++ b/init.el @@ -63,8 +63,8 @@ (require 'init-recentf) (require 'init-smex) -(require 'init-ido) -;; (require 'init-ivy) +;; (require 'init-ido) +(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 index d134f7af3d..e8f8a27c90 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -1,7 +1,8 @@ (when (maybe-require-package 'ivy) (after-load 'ivy (setq-default ivy-use-virtual-buffers t - ivy-count-format "") + ivy-count-format "" + projectile-completion-system 'ivy) ;; IDO-style directory navigation (define-key ivy-minibuffer-map (kbd "C-j") #'ivy-immediate-done) (define-key ivy-minibuffer-map (kbd "RET") #'ivy-alt-done) diff --git a/lisp/init-org.el b/lisp/init-org.el index c704dbfd13..dc116f907b 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -5,6 +5,8 @@ (maybe-require-package 'grab-mac-link) (require-package 'org-mac-iCal)) +(maybe-require-package 'org-cliplink) + (define-key global-map (kbd "C-c l") 'org-store-link) (define-key global-map (kbd "C-c a") 'org-agenda) From ecf5b3fa169a863d6099c342c0612d8bf2d402ad Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 5 Sep 2016 16:54:26 +1200 Subject: [PATCH 009/790] Note MELPA mirror URL --- lisp/init-elpa.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index fb39c7bc77..bbd68fd580 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -30,6 +30,8 @@ "http://melpa.org/packages/" "https://melpa.org/packages/"))) +;; NOTE: In case of MELPA problems, the official mirror URL is +;; https://www.mirrorservice.org/sites/stable.melpa.org/packages/ ;; If gpg cannot be found, signature checking will fail, so we From ca6879676ba5588e7659589ecd187e25d877ea2d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 7 Sep 2016 17:47:11 +1200 Subject: [PATCH 010/790] Remove initial "^" input from most ivy prompts --- 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 e8f8a27c90..6151540cca 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -2,7 +2,10 @@ (after-load 'ivy (setq-default ivy-use-virtual-buffers t ivy-count-format "" - projectile-completion-system 'ivy) + projectile-completion-system 'ivy + ivy-initial-inputs-alist + '((man . "^") + (woman . "^"))) ;; IDO-style directory navigation (define-key ivy-minibuffer-map (kbd "C-j") #'ivy-immediate-done) (define-key ivy-minibuffer-map (kbd "RET") #'ivy-alt-done) From 5d47f0340b1f91d3c80a78a900e966b878501cbb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 7 Sep 2016 17:51:22 +1200 Subject: [PATCH 011/790] Default company-dabbrev-other-buffers to 'all --- lisp/init-company.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index 2f4eec50a5..3bd9ddce15 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -13,7 +13,8 @@ (diminish 'company-mode "CMP") (define-key company-mode-map (kbd "M-/") 'company-complete) (define-key company-active-map (kbd "M-/") 'company-select-next) - (setq-default company-backends '((company-capf company-dabbrev-code) company-dabbrev))) + (setq-default company-backends '((company-capf company-dabbrev-code) company-dabbrev) + company-dabbrev-other-buffers 'all)) (global-set-key (kbd "M-C-/") 'company-complete) (when (maybe-require-package 'company-quickhelp) (add-hook 'after-init-hook 'company-quickhelp-mode)) From 931a4fa55ddb2ca6f597d7a2a2d9287093fd9a1e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 7 Sep 2016 21:12:15 +1200 Subject: [PATCH 012/790] Hook loading of elisp-mode, not lisp-mode In newer Emacsen, modifying emacs-lisp-mode-map in an after-load block for lisp-mode doesn't work. The new elisp-mode feature is the one to look for. This change probably breaks C-c C-z in older Emacsen. --- 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 1c68390aa4..0c7eff49e1 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -70,7 +70,7 @@ (funcall sanityinc/repl-switch-function sanityinc/repl-original-buffer) (error "No original buffer."))) -(after-load 'lisp-mode +(after-load 'elisp-mode (define-key emacs-lisp-mode-map (kbd "C-c C-z") 'sanityinc/switch-to-ielm)) (after-load 'ielm (define-key ielm-map (kbd "C-c C-z") 'sanityinc/repl-switch-back)) From 1fa1e8206565ee54cc1a9bc86d91ee322308a69b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 7 Sep 2016 21:30:20 +1200 Subject: [PATCH 013/790] Drop unused zap-to-isearch functionality --- lisp/init-isearch.el | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/lisp/init-isearch.el b/lisp/init-isearch.el index 0bac4898b5..c3d1d6db03 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -30,36 +30,6 @@ ;; http://www.emacswiki.org/emacs/ZapToISearch -(defun zap-to-isearch (rbeg rend) - "Kill the region between the mark and the closest portion of -the isearch match string. The behaviour is meant to be analogous -to zap-to-char; let's call it zap-to-isearch. The deleted region -does not include the isearch word. This is meant to be bound only -in isearch mode. The point of this function is that oftentimes -you want to delete some portion of text, one end of which happens -to be an active isearch word. The observation to make is that if -you use isearch a lot to move the cursor around (as you should, -it is much more efficient than using the arrows), it happens a -lot that you could just delete the active region between the mark -and the point, not include the isearch word." - (interactive "r") - (when (not mark-active) - (error "Mark is not active")) - (let* ((isearch-bounds (list isearch-other-end (point))) - (ismin (apply 'min isearch-bounds)) - (ismax (apply 'max isearch-bounds)) - ) - (if (< (mark) ismin) - (kill-region (mark) ismin) - (if (> (mark) ismax) - (kill-region ismax (mark)) - (error "Internal error in isearch kill function."))) - (isearch-exit) - )) - -(define-key isearch-mode-map [(meta z)] 'zap-to-isearch) - - ;; http://www.emacswiki.org/emacs/ZapToISearch (defun isearch-exit-other-end (rbeg rend) "Exit isearch, but at the other end of the search string. From 6481a5906642759cea426de4bbd6785ef632ac70 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 7 Sep 2016 21:31:40 +1200 Subject: [PATCH 014/790] Add namespace to config-local function name --- lisp/init-isearch.el | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lisp/init-isearch.el b/lisp/init-isearch.el index c3d1d6db03..9e22baf14c 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -30,15 +30,14 @@ ;; http://www.emacswiki.org/emacs/ZapToISearch -;; http://www.emacswiki.org/emacs/ZapToISearch -(defun isearch-exit-other-end (rbeg rend) +(defun sanityinc/isearch-exit-other-end (rbeg rend) "Exit isearch, but at the other end of the search string. This is useful when followed by an immediate kill." (interactive "r") (isearch-exit) (goto-char isearch-other-end)) -(define-key isearch-mode-map [(control return)] 'isearch-exit-other-end) +(define-key isearch-mode-map [(control return)] 'sanityinc/isearch-exit-other-end) (provide 'init-isearch) From 6eeadd2ff9b693a578c158945d5340c3a98bba1b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 10 Sep 2016 11:50:25 +1200 Subject: [PATCH 015/790] Add counsel-M-x back into ivy-initial-inputs-alist --- 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 6151540cca..4d7b130f27 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -4,7 +4,8 @@ ivy-count-format "" projectile-completion-system 'ivy ivy-initial-inputs-alist - '((man . "^") + '((counsel-M-x . "^") + (man . "^") (woman . "^"))) ;; IDO-style directory navigation (define-key ivy-minibuffer-map (kbd "C-j") #'ivy-immediate-done) From 47deb74e8b32e323f4e54105d3c187bc0fb59bd5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 11 Sep 2016 13:20:04 +1200 Subject: [PATCH 016/790] Add sanityinc/enable-ivy-flx-matching --- lisp/init-ivy.el | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 4d7b130f27..0beaf87a38 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -13,6 +13,13 @@ (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)))) + (add-hook 'after-init-hook (lambda () (when (bound-and-true-p ido-ubiquitous-mode) From e883c101ca99e824a516c65e84080d35d8657622 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 11 Sep 2016 13:22:59 +1200 Subject: [PATCH 017/790] Add note about ivy vs ido --- init.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/init.el b/init.el index 6c2aead00b..f9864d1f86 100644 --- a/init.el +++ b/init.el @@ -63,6 +63,8 @@ (require 'init-recentf) (require 'init-smex) +;; If you really prefer ido to ivy, change the comments below. I will +;; likely remove the ido config in due course, though. ;; (require 'init-ido) (require 'init-ivy) (require 'init-hippie-expand) From fd5a142318157ee3dc7f4f7d2c70eb9d64357ddf Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 11 Sep 2016 13:23:50 +1200 Subject: [PATCH 018/790] Remove defunct error check --- init.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/init.el b/init.el index f9864d1f86..3638b43f40 100644 --- a/init.el +++ b/init.el @@ -150,8 +150,6 @@ ;;---------------------------------------------------------------------------- ;; Allow users to provide an optional "init-local" containing personal settings ;;---------------------------------------------------------------------------- -(when (file-exists-p (expand-file-name "init-local.el" user-emacs-directory)) - (error "Please move init-local.el to ~/.emacs.d/lisp")) (require 'init-local nil t) From 147e07248d035e5044fa46e7abf6ece4f9fc519d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 28 Sep 2016 07:36:36 +1300 Subject: [PATCH 019/790] Change "C-c c" multiple-cursors bindings to "C-c m" Eliminates clash with org-capture, thanks @creamidea, closes #384. --- lisp/init-editing-utils.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index e8580c92b4..f16d689f1e 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -159,10 +159,10 @@ (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 c r") 'set-rectangular-region-anchor) -(global-set-key (kbd "C-c c c") 'mc/edit-lines) -(global-set-key (kbd "C-c c e") 'mc/edit-ends-of-lines) -(global-set-key (kbd "C-c c a") 'mc/edit-beginnings-of-lines) +(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 From 52f829565ab71c102f6d333baeb6ddb12d3f64e2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 29 Sep 2016 18:44:27 +1300 Subject: [PATCH 020/790] Never change default value of package-check-signature See #383, cc @thepreacher --- lisp/init-elpa.el | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index bbd68fd580..9505a41853 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -33,16 +33,6 @@ ;; NOTE: In case of MELPA problems, the official mirror URL is ;; https://www.mirrorservice.org/sites/stable.melpa.org/packages/ - -;; If gpg cannot be found, signature checking will fail, so we -;; conditionally enable it according to whether gpg is available. We -;; re-run this check once $PATH has been configured -(defun sanityinc/package-maybe-enable-signatures () - (setq package-check-signature (when (executable-find "gpg") 'allow-unsigned))) - -(sanityinc/package-maybe-enable-signatures) -(after-load 'init-exec-path - (sanityinc/package-maybe-enable-signatures)) From 3bc26ebe54c943f97c4547cb0e0899c88f6f0b89 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 17 Oct 2016 18:57:09 +1300 Subject: [PATCH 021/790] Don't assume rinari is installable in Emacs 23 --- lisp/init-rails.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/init-rails.el b/lisp/init-rails.el index 6c4c338abd..6d80498fe8 100644 --- a/lisp/init-rails.el +++ b/lisp/init-rails.el @@ -1,7 +1,7 @@ -(require-package 'rinari) -(after-load 'rinari - (diminish 'rinari-minor-mode "Rin")) -(global-rinari-mode) +(when (maybe-require-package 'rinari) + (after-load 'rinari + (diminish 'rinari-minor-mode "Rin")) + (global-rinari-mode)) (defun update-rails-ctags () (interactive) From 7adf0b798e1833e194c355ae294e36145b00f973 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 22 Oct 2016 23:37:16 +1300 Subject: [PATCH 022/790] Use minver as intended Fixes #389, thanks @loverszhaokai --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index 3638b43f40..f0216baf82 100644 --- a/init.el +++ b/init.el @@ -3,7 +3,7 @@ ;;; a number of other files. (let ((minver "23.3")) - (when (version<= emacs-version "23.1") + (when (version<= emacs-version minver) (error "Your Emacs is too old -- this config requires v%s or higher" minver))) (when (version<= emacs-version "24") (message "Your Emacs is old, and some functionality in this config will be disabled. Please upgrade if possible.")) From 9dee5348c988749a4205a3b487c5fdbdc7c0fc4a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 24 Oct 2016 10:06:56 +1300 Subject: [PATCH 023/790] Handle killed buffers in sanityinc/alert-after-compilation-finish See #388 --- lisp/init-compile.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/init-compile.el b/lisp/init-compile.el index 15aa57db24..c0d177c85c 100644 --- a/lisp/init-compile.el +++ b/lisp/init-compile.el @@ -7,9 +7,10 @@ (defun sanityinc/alert-after-compilation-finish (buf result) "Use `alert' to report compilation RESULT if BUF is hidden." (unless (catch 'is-visible - (walk-windows (lambda (w) - (when (eq (window-buffer w) buf) - (throw 'is-visible t)))) + (when (buffer-live-p buf) + (walk-windows (lambda (w) + (when (eq (window-buffer w) buf) + (throw 'is-visible t))))) nil) (alert (concat "Compilation " result) :buffer buf From 61dacdcba53e3a7bd2120161f7825cd976e64ff6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 24 Oct 2016 15:12:27 +1300 Subject: [PATCH 024/790] Keep more of the startup benchmarking code together --- init.el | 5 ----- lisp/init-benchmarking.el | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/init.el b/init.el index f0216baf82..56d1aee398 100644 --- a/init.el +++ b/init.el @@ -158,11 +158,6 @@ ;;---------------------------------------------------------------------------- (require 'init-locales) -(add-hook 'after-init-hook - (lambda () - (message "init completed in %.2fms" - (sanityinc/time-subtract-millis after-init-time before-init-time)))) - (provide 'init) diff --git a/lisp/init-benchmarking.el b/lisp/init-benchmarking.el index a145f7bff5..c3885dbf0e 100644 --- a/lisp/init-benchmarking.el +++ b/lisp/init-benchmarking.el @@ -18,6 +18,11 @@ LOAD-DURATION is the time taken in milliseconds to load FEATURE.") (cons feature time) t)))))) +(defun sanityinc/show-init-time () + (message "init completed in %.2fms" + (sanityinc/time-subtract-millis after-init-time before-init-time))) + +(add-hook 'after-init-hook 'sanityinc/show-init-time) (provide 'init-benchmarking) From 056722f347573ad67be4c935745eed01fccab6b0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 24 Oct 2016 23:53:17 +1300 Subject: [PATCH 025/790] Don't call alert with a killed buffer Fixes #388 --- lisp/init-compile.el | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lisp/init-compile.el b/lisp/init-compile.el index c0d177c85c..06fcbcc503 100644 --- a/lisp/init-compile.el +++ b/lisp/init-compile.el @@ -6,15 +6,15 @@ (defun sanityinc/alert-after-compilation-finish (buf result) "Use `alert' to report compilation RESULT if BUF is hidden." - (unless (catch 'is-visible - (when (buffer-live-p buf) + (when (buffer-live-p buf) + (unless (catch 'is-visible (walk-windows (lambda (w) (when (eq (window-buffer w) buf) - (throw 'is-visible t))))) - nil) - (alert (concat "Compilation " result) - :buffer buf - :category 'compilation))) + (throw 'is-visible t)))) + nil) + (alert (concat "Compilation " result) + :buffer buf + :category 'compilation)))) (after-load 'compile (add-hook 'compilation-finish-functions From e4fc9eb155ddc5208b98624e56cf7b5acdf308e1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 26 Oct 2016 13:04:11 +1300 Subject: [PATCH 026/790] Do a better job of suppressing ruby-mode's "coding:" comment insertion --- lisp/init-ruby-mode.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-ruby-mode.el b/lisp/init-ruby-mode.el index 0b41113b68..74c8c4883c 100644 --- a/lisp/init-ruby-mode.el +++ b/lisp/init-ruby-mode.el @@ -8,7 +8,9 @@ "\\.gemspec\\'" "Gemfile\\'" "Kirkfile\\'") (add-auto-mode 'conf-mode "Gemfile\\.lock\\'") -(setq ruby-use-encoding-map nil) +(setq-default + ruby-use-encoding-map nil + ruby-insert-encoding-magic-comment nil) (after-load 'ruby-mode (define-key ruby-mode-map (kbd "TAB") 'indent-for-tab-command) From 7123a310be0d8f7836b9a0ba82302359cdd61959 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Nov 2016 19:04:14 +1300 Subject: [PATCH 027/790] git-blame package has been renamed upstream Fixes #392, thanks @chunshuang --- 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 bd91670e9d..8db4bd8c40 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -1,6 +1,6 @@ ;; TODO: link commits from vc-log to magit-show-commit ;; TODO: smerge-mode -(require-package 'git-blame) +(require-package 'git-blamed) (require-package 'gitignore-mode) (require-package 'gitconfig-mode) (require-package 'git-messenger) ;; Though see also vc-annotate's "n" & "p" bindings From c6bbcf1f887b92b727f6c6f26015f89d7b6195f5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Nov 2016 19:09:09 +1300 Subject: [PATCH 028/790] Use modeline flash as a visible bell --- lisp/init-editing-utils.el | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index f16d689f1e..26434fb298 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -34,6 +34,16 @@ (transient-mark-mode t) + ;;; A simple visible bell which works in all terminal types + +(defun sanityinc/flash-mode-line () + (invert-face 'mode-line) + (run-with-timer 0.05 nil 'invert-face 'mode-line)) + +(setq-default + ring-bell-function 'sanityinc/flash-mode-line) + + ;;; Newline behaviour From f49fd76f915f73edd6126a576f0ce0d6a4d01a36 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 3 Nov 2016 21:09:43 +1300 Subject: [PATCH 029/790] Remove frame-restore support in older emacs versions See https://github.com/melpa/melpa/pull/4380 for discussion. --- lisp/init-sessions.el | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index d05b570ba8..254d1c90fe 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -66,12 +66,5 @@ tags-file-name tags-table-list))) -(when (eval-when-compile (and (>= emacs-major-version 24) - (version< emacs-version "24.3.50") - )) - (unless (boundp 'desktop-restore-frames) - (require-package 'frame-restore) - (frame-restore))) - (provide 'init-sessions) From d28c80b16912681e8970e1580b3e682f51d2abf8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 3 Nov 2016 22:43:55 +1300 Subject: [PATCH 030/790] Require diff-hl softly, since it now requires 24.3 --- lisp/init-vc.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-vc.el b/lisp/init-vc.el index 1e0ec3f545..341bf1b4df 100644 --- a/lisp/init-vc.el +++ b/lisp/init-vc.el @@ -1,4 +1,4 @@ -(require-package 'diff-hl) +(maybe-require-package 'diff-hl) (add-hook 'prog-mode-hook 'turn-on-diff-hl-mode) (add-hook 'vc-dir-mode-hook 'turn-on-diff-hl-mode) From 8c9abe047c2a5f5794746cc300b5993db799f8d2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 3 Nov 2016 22:50:39 +1300 Subject: [PATCH 031/790] Enable diff-hl-mode only when available --- lisp/init-vc.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-vc.el b/lisp/init-vc.el index 341bf1b4df..0e8a97a8c5 100644 --- a/lisp/init-vc.el +++ b/lisp/init-vc.el @@ -1,6 +1,6 @@ -(maybe-require-package 'diff-hl) -(add-hook 'prog-mode-hook 'turn-on-diff-hl-mode) -(add-hook 'vc-dir-mode-hook 'turn-on-diff-hl-mode) +(when (maybe-require-package 'diff-hl) + (add-hook 'prog-mode-hook 'turn-on-diff-hl-mode) + (add-hook 'vc-dir-mode-hook 'turn-on-diff-hl-mode)) (maybe-require-package 'browse-at-remote) From e66ff95226868edae46a4c41d466041568944e61 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 6 Nov 2016 16:31:03 +1300 Subject: [PATCH 032/790] Remove unused helper functions --- lisp/init-utils.el | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/lisp/init-utils.el b/lisp/init-utils.el index 0bae031364..f8d4d93490 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -29,19 +29,6 @@ (setq pos (match-end group))) result)) -(defun sanityinc/string-rtrim (str) - "Remove trailing whitespace from `STR'." - (replace-regexp-in-string "[ \t\n]+$" "" str)) - - -;;---------------------------------------------------------------------------- -;; Find the directory containing a given library -;;---------------------------------------------------------------------------- -(autoload 'find-library-name "find-func") -(defun sanityinc/directory-of-library (library-name) - "Return the directory in which the `LIBRARY-NAME' load file is found." - (file-name-as-directory (file-name-directory (find-library-name library-name)))) - ;;---------------------------------------------------------------------------- ;; Delete the current file From d0e3f488d12bafb429710620c3b77ddf5fda83ce Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 6 Nov 2016 16:31:28 +1300 Subject: [PATCH 033/790] Fix checkdoc warning --- 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 0c7eff49e1..1f3aefba46 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -68,7 +68,7 @@ (interactive) (if sanityinc/repl-original-buffer (funcall sanityinc/repl-switch-function sanityinc/repl-original-buffer) - (error "No original buffer."))) + (error "No original buffer"))) (after-load 'elisp-mode (define-key emacs-lisp-mode-map (kbd "C-c C-z") 'sanityinc/switch-to-ielm)) From effd06ad39f73cf84bdfde082d986827547ee00e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 6 Nov 2016 16:33:39 +1300 Subject: [PATCH 034/790] Be clearer when optional packages fail to install --- 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 9505a41853..d48649292b 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -63,7 +63,7 @@ locate PACKAGE." (condition-case err (require-package package min-version no-refresh) (error - (message "Couldn't install package `%s': %S" package err) + (message "Couldn't install optional package `%s': %S" package err) nil))) From 0012d9cb67866c2d86d26943bdd3dfd929afdc4a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 19 Nov 2016 11:28:31 +1300 Subject: [PATCH 035/790] Note about (lack of) support for forked configs --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index a0372533bf..6d0f7a79ab 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,11 @@ you can also create an `~/.emacs.d/lisp/init-preload-local.el` file. If you plan to customize things more extensively, you should probably just fork the repo and hack away at the config to make it your own! +Remember to regularly merge in changes from this repo, so that your +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 From fc914e515b88fc892379c808900a377404d325a8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 24 Nov 2016 18:54:04 +1300 Subject: [PATCH 036/790] Update copyright years --- LICENSE | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index 1c932c6ecd..3fdd239327 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2006-2014, Steve Purcell +Copyright (c) 2006-2016, Steve Purcell All rights reserved. Redistribution and use in source and binary forms, with or without @@ -23,4 +23,4 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, -either expressed or implied, of any organization or project. \ No newline at end of file +either expressed or implied, of any organization or project. From 965d47a2902bbd5ac1f8f6704df6a376924d3549 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 16 Dec 2016 21:18:02 +1300 Subject: [PATCH 037/790] Try harder to disable ido-mode when ivy-mode is enabled See #403 --- 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 0beaf87a38..756875ad08 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -23,7 +23,8 @@ (add-hook 'after-init-hook (lambda () (when (bound-and-true-p ido-ubiquitous-mode) - (ido-ubiquitous-mode -1) + (ido-ubiquitous-mode -1)) + (when (bound-and-true-p ido-mode) (ido-mode -1)) (ivy-mode 1)))) From 38bbef8ad964474930aa3219c81f96852c384767 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 17 Dec 2016 10:50:46 +1300 Subject: [PATCH 038/790] Ensure eldoc is always enabled in haskell-mode --- lisp/init-haskell.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 09c48d5877..dee0981660 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -11,6 +11,7 @@ (when (maybe-require-package 'intero) (after-load 'haskell-mode (add-hook 'haskell-mode-hook 'intero-mode) + (add-hook 'haskell-mode-hook 'eldoc-mode) ) (after-load 'intero (after-load 'flycheck From 5a3f5665283d9d5941cac3cc1b7b72efbffd7ef9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 6 Jan 2017 14:00:14 +1300 Subject: [PATCH 039/790] Add sanityinc/org-agenda-refile-anywhere --- lisp/init-org.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index dc116f907b..16b915187b 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -116,11 +116,17 @@ typical word processor." (setq org-refile-target-verify-function 'sanityinc/verify-refile-target) (defun sanityinc/org-refile-anywhere (&optional goto default-buffer rfloc msg) - "A version of `org-refile' which suppresses `org-refile-target-verify-function'." + "A version of `org-refile' which allows refiling to any subtree." (interactive "P") (let ((org-refile-target-verify-function)) (org-refile goto default-buffer rfloc msg))) +(defun sanityinc/org-agenda-refile-anywhere (&optional goto rfloc no-update) + "A version of `org-agenda-refile' which allows refiling to any subtree." + (interactive "P") + (let ((org-refile-target-verify-function)) + (org-agenda-refile goto rfloc no-update))) + ;; Targets start with the file name - allows creating level 1 tasks ;;(setq org-refile-use-outline-path (quote file)) (setq org-refile-use-outline-path t) From 719d8436c79a25078ee568191ba95097cb54372b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 6 Jan 2017 14:00:48 +1300 Subject: [PATCH 040/790] Drop outdated assumption that ruby-mode might not be a prog-mode --- lisp/init-misc.el | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index 15089a52f4..11c73fdec4 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -4,13 +4,12 @@ (add-auto-mode 'tcl-mode "Portfile\\'") (fset 'yes-or-no-p 'y-or-n-p) -(dolist (hook (if (fboundp 'prog-mode) - '(prog-mode-hook ruby-mode-hook) - '(find-file-hooks))) - (add-hook hook 'goto-address-prog-mode)) -(add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p) +(when (fboundp 'prog-mode) + (add-hook 'prog-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) + (setq-default regex-tool-backend 'perl) (add-auto-mode 'conf-mode "Procfile") From 79cec19df39d6c2abb3c287bcc9efb453b67a201 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 6 Jan 2017 16:53:19 +1300 Subject: [PATCH 041/790] Make git-messenger a soft dependency --- 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 8db4bd8c40..a53152a80c 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -3,7 +3,7 @@ (require-package 'git-blamed) (require-package 'gitignore-mode) (require-package 'gitconfig-mode) -(require-package 'git-messenger) ;; Though see also vc-annotate's "n" & "p" bindings +(maybe-require-package 'git-messenger) ;; Though see also vc-annotate's "n" & "p" bindings (maybe-require-package 'git-timemachine) From e90dd203a203f9a33baa40865f77cd4e11319699 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 6 Jan 2017 17:52:59 +1300 Subject: [PATCH 042/790] Remove duplicated git-messenger dependency --- lisp/init-git.el | 4 ++-- lisp/init-helm.el | 6 ++++++ lisp/init-local.el | 9 +++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 lisp/init-helm.el create mode 100644 lisp/init-local.el diff --git a/lisp/init-git.el b/lisp/init-git.el index a53152a80c..4b61be106e 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -3,7 +3,6 @@ (require-package 'git-blamed) (require-package 'gitignore-mode) (require-package 'gitconfig-mode) -(maybe-require-package 'git-messenger) ;; Though see also vc-annotate's "n" & "p" bindings (maybe-require-package 'git-timemachine) @@ -72,7 +71,8 @@ (compile (concat "git svn " command)))) -(require-package 'git-messenger) +(maybe-require-package 'git-messenger) +;; Though see also vc-annotate's "n" & "p" bindings (global-set-key (kbd "C-x v p") #'git-messenger:popup-message) diff --git a/lisp/init-helm.el b/lisp/init-helm.el new file mode 100644 index 0000000000..5f8e4ec220 --- /dev/null +++ b/lisp/init-helm.el @@ -0,0 +1,6 @@ +(when (maybe-require-package 'helm) + (when (maybe-require-package 'helm-smex) + (global-set-key [remap execute-extended-command] #'helm-smex) + (global-set-key (kbd "M-X") #'helm-smex-major-mode-commands))) + +(provide 'init-helm) diff --git a/lisp/init-local.el b/lisp/init-local.el new file mode 100644 index 0000000000..c00bf0050f --- /dev/null +++ b/lisp/init-local.el @@ -0,0 +1,9 @@ +(setq + magit-repository-directories + '(("~" . 1) + ("~/Projects" . 1) + ("~/Projects/External" . 1)) + exec-path-from-shell-arguments '("-l") + org-default-notes-file "~/Documents/org/inbox.org") + +(provide 'init-local) From 88c190c44b468b1c3063a9a330e608c5521f2205 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 6 Jan 2017 21:42:14 +1300 Subject: [PATCH 043/790] Kill accidentally-added init-helm and init-local files --- lisp/init-helm.el | 6 ------ lisp/init-local.el | 9 --------- 2 files changed, 15 deletions(-) delete mode 100644 lisp/init-helm.el delete mode 100644 lisp/init-local.el diff --git a/lisp/init-helm.el b/lisp/init-helm.el deleted file mode 100644 index 5f8e4ec220..0000000000 --- a/lisp/init-helm.el +++ /dev/null @@ -1,6 +0,0 @@ -(when (maybe-require-package 'helm) - (when (maybe-require-package 'helm-smex) - (global-set-key [remap execute-extended-command] #'helm-smex) - (global-set-key (kbd "M-X") #'helm-smex-major-mode-commands))) - -(provide 'init-helm) diff --git a/lisp/init-local.el b/lisp/init-local.el deleted file mode 100644 index c00bf0050f..0000000000 --- a/lisp/init-local.el +++ /dev/null @@ -1,9 +0,0 @@ -(setq - magit-repository-directories - '(("~" . 1) - ("~/Projects" . 1) - ("~/Projects/External" . 1)) - exec-path-from-shell-arguments '("-l") - org-default-notes-file "~/Documents/org/inbox.org") - -(provide 'init-local) From 4782ff12dc4853fe08f2744e7f149e48981015a5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 13 Feb 2017 20:59:30 +1300 Subject: [PATCH 044/790] On windows, only use https for MELPA if gnutls is available See #318 --- lisp/init-elpa.el | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index d48649292b..bd6d5a5ee5 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -25,10 +25,16 @@ (when (< emacs-major-version 24) (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))) + +(defconst sanityinc/no-ssl (or (< emacs-major-version 24) + (and (memq system-type '(windows-nt ms-dos)) + (not (gnutls-available-p))))) + ;;; Also use Melpa for most packages -(add-to-list 'package-archives `("melpa" . ,(if (< emacs-major-version 24) - "http://melpa.org/packages/" - "https://melpa.org/packages/"))) +(add-to-list 'package-archives + `("melpa" . ,(if sanityinc/no-ssl + "http://melpa.org/packages/" + "https://melpa.org/packages/"))) ;; NOTE: In case of MELPA problems, the official mirror URL is ;; https://www.mirrorservice.org/sites/stable.melpa.org/packages/ From 6cf469a1df988881b02736503f2b7bb665058121 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 24 Mar 2017 20:13:11 +1300 Subject: [PATCH 045/790] Remove note in README about ido --- README.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/README.md b/README.md index 6d0f7a79ab..38339d91e8 100644 --- a/README.md +++ b/README.md @@ -63,16 +63,6 @@ encounter any errors at that stage, try restarting Emacs, and possibly running `M-x package-refresh-contents` before doing so. - -## Important note about `ido` - -This config enables `ido-mode` completion in the minibuffer wherever -possible, which might confuse you when trying to open files using -C-x C-f, e.g. when you want to open a directory to use -`dired` -- if you get stuck, use C-f to drop into the -regular `find-file` prompt. (You might want to customize the -`ido-show-dot-for-dired` variable if this is an issue for you.) - ## Updates Update the config with `git pull`. You'll probably also want/need to update From 1933071bcfc748e15be77526c39acd5968142967 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 24 Mar 2017 20:14:31 +1300 Subject: [PATCH 046/790] Enable ivy-historian if available --- .gitignore | 1 + lisp/init-ivy.el | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index a532b2beef..4bb0e4ace2 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ site-lisp/package/ /viper /projectile-bookmarks.eld /anaconda-mode/ +/.historian diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 756875ad08..137debabb6 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -29,6 +29,10 @@ (ivy-mode 1)))) +(when (maybe-require-package 'ivy-historian) + (add-hook 'after-init-hook (lambda () (ivy-historian-mode t)))) + + (when (maybe-require-package 'counsel) (setq-default counsel-mode-override-describe-bindings t) (when (maybe-require-package 'diminish) From 40bdfa8536e6251e6d81f3a6d6f894193b34f2d5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 24 Mar 2017 20:15:10 +1300 Subject: [PATCH 047/790] Default elm-format-on-save to t if elm-format is installed --- 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 85cac639c1..6073a37999 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -2,7 +2,9 @@ (after-load 'elm-mode (diminish 'elm-indent-mode) (when (executable-find "elm-oracle") - (add-hook 'elm-mode-hook 'elm-oracle-setup-completion))) + (add-hook 'elm-mode-hook 'elm-oracle-setup-completion)) + (when (executable-find "elm-format") + (setq-default elm-format-on-save t))) (when (maybe-require-package 'flycheck-elm) (after-load 'elm-mode (flycheck-elm-setup)))) From de8d00134c3b998ad3cfd7e930a39978713a98e6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 24 Mar 2017 21:07:55 +1300 Subject: [PATCH 048/790] Defer enabling recentf-mode until after-init-hook See https://github.com/purcell/emacs.d/issues/417 --- 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 d778ebd791..95d53ebf50 100644 --- a/lisp/init-recentf.el +++ b/lisp/init-recentf.el @@ -1,4 +1,4 @@ -(recentf-mode 1) +(add-hook 'after-init-hook (lambda () (recentf-mode 1))) (setq-default recentf-max-saved-items 1000 recentf-exclude '("/tmp/" "/ssh:")) From 3f98b024d47f31eb5a729392bf54f2a157aa248e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 25 Mar 2017 09:34:00 +1300 Subject: [PATCH 049/790] Ignore elpa-* subdirs created by test-startup.sh --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 4bb0e4ace2..d7ccc1b3ce 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,4 @@ site-lisp/package/ /projectile-bookmarks.eld /anaconda-mode/ /.historian +/elpa-.* From 6c64f8e0d272550adbfc00baabb118263ca16472 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 25 Mar 2017 10:06:01 +1300 Subject: [PATCH 050/790] Fix gitignore pattern for elpa-* dirs --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d7ccc1b3ce..ea5d759778 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ cookies /ac-comphist.dat \#* /elpa +/elpa-* site-lisp/package/ /swank /.mc-lists.el @@ -44,4 +45,3 @@ site-lisp/package/ /projectile-bookmarks.eld /anaconda-mode/ /.historian -/elpa-.* From 465769374a48b2b48d8e0dc454cc5d660ab522ff Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 25 Mar 2017 10:06:51 +1300 Subject: [PATCH 051/790] Always install packages into an emacs-versioned elpa subdir, e.g. elpa-25.1 See #418 --- lisp/init-elpa.el | 13 +++++++++++++ test-startup.sh | 1 - 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index bd6d5a5ee5..4296893192 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -11,6 +11,19 @@ (require 'package) + +;;; 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))) + (when (file-directory-p package-user-dir) + (message "Default package locations have changed in this config: renaming old package dir %s to %s." + package-user-dir + versioned-package-dir) + (rename-file package-user-dir versioned-package-dir)) + (setq package-user-dir versioned-package-dir)) + + ;;; Standard package repositories diff --git a/test-startup.sh b/test-startup.sh index 13351c2d12..82a2328d89 100755 --- a/test-startup.sh +++ b/test-startup.sh @@ -9,7 +9,6 @@ ${EMACS:=emacs} -nw --batch \ --eval '(let ((debug-on-error t) (url-show-status nil) (user-emacs-directory default-directory) - (package-user-dir (expand-file-name (concat "elpa-" emacs-version))) (user-init-file (expand-file-name "init.el")) (load-path (delq default-directory load-path))) (load-file user-init-file) From 82433de654c5523c363404ba57a39e008ca59dc4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 31 Mar 2017 07:41:40 +1300 Subject: [PATCH 052/790] Add uptimes package --- .gitignore | 1 + init.el | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index ea5d759778..70b9d98390 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ site-lisp/package/ /projectile-bookmarks.eld /anaconda-mode/ /.historian +/.uptimes.el diff --git a/init.el b/init.el index 56d1aee398..363a5211a9 100644 --- a/init.el +++ b/init.el @@ -159,6 +159,10 @@ (require 'init-locales) +(when (maybe-require-package 'uptimes) + (add-hook 'after-init-hook (lambda () (require 'uptimes)))) + + (provide 'init) ;; Local Variables: From 48945607a8c2ad536f72b00f66ac31b61705b17e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 6 Apr 2017 13:39:04 +1200 Subject: [PATCH 053/790] After each org-refile, save all org buffers --- lisp/init-local.el | 12 ++++++++++++ lisp/init-org.el | 4 ++++ 2 files changed, 16 insertions(+) create mode 100644 lisp/init-local.el diff --git a/lisp/init-local.el b/lisp/init-local.el new file mode 100644 index 0000000000..b7f8a4c5cf --- /dev/null +++ b/lisp/init-local.el @@ -0,0 +1,12 @@ +(setq + magit-repository-directories + '(("~" . 1) + ("~/Projects" . 1) + ("~/Projects/External" . 1)) + exec-path-from-shell-arguments '("-l") + org-default-notes-file "~/Documents/org/inbox.org") + + +(require-package 'evil) + +(provide 'init-local) diff --git a/lisp/init-org.el b/lisp/init-org.el index 16b915187b..18f8d68122 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -109,6 +109,10 @@ typical word processor." (after-load 'org-agenda (add-to-list 'org-agenda-after-show-hook 'org-show-entry)) +(defadvice org-refile (after sanityinc/save-all-after-refile activate) + "Save all org buffers after each refile operation." + (org-save-all-org-buffers)) + ;; Exclude DONE state tasks from refile targets (defun sanityinc/verify-refile-target () "Exclude todo keywords with a done state from refile targets." From 87de99bf0c3c4f2bf62ca533cdeffe107322aa73 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 6 Apr 2017 18:59:28 +1200 Subject: [PATCH 054/790] Kill accidentally-added init-local (sorry!) --- lisp/init-local.el | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 lisp/init-local.el diff --git a/lisp/init-local.el b/lisp/init-local.el deleted file mode 100644 index b7f8a4c5cf..0000000000 --- a/lisp/init-local.el +++ /dev/null @@ -1,12 +0,0 @@ -(setq - magit-repository-directories - '(("~" . 1) - ("~/Projects" . 1) - ("~/Projects/External" . 1)) - exec-path-from-shell-arguments '("-l") - org-default-notes-file "~/Documents/org/inbox.org") - - -(require-package 'evil) - -(provide 'init-local) From 0a2c2bdb7ff6ffaa446f8d6ca940d62d4342150f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 6 Apr 2017 18:55:19 +1200 Subject: [PATCH 055/790] regex-tool now requires Emacs 24.x --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index 363a5211a9..505bac6504 100644 --- a/init.el +++ b/init.el @@ -130,7 +130,7 @@ (require-package 'dsvn) (when *is-a-mac* (require-package 'osx-location)) -(require-package 'regex-tool) +(maybe-require-package 'regex-tool) ;;---------------------------------------------------------------------------- ;; Allow access from emacsclient From a7993fd125fcf81055234e27ab0ea16348c03601 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 9 Apr 2017 14:02:49 +1200 Subject: [PATCH 056/790] Drop Emacs 23 support --- .travis.yml | 1 - README.md | 2 +- init.el | 2 +- lisp/init-compat.el | 21 --------------- lisp/init-elpa.el | 23 ++-------------- lisp/init-fci.el | 59 +++++++++++++++++++++--------------------- lisp/init-flyspell.el | 21 +-------------- lisp/init-misc.el | 3 +-- lisp/init-org.el | 8 ++---- lisp/init-site-lisp.el | 9 ------- lisp/init-xterm.el | 18 +------------ site-lisp/README | 3 --- 12 files changed, 38 insertions(+), 132 deletions(-) diff --git a/.travis.yml b/.travis.yml index b3f4a0f4c4..7f9d8c8ee2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,6 @@ before_install: - evm install $EVM_EMACS --use --skip env: - - EVM_EMACS=emacs-23.4-travis - EVM_EMACS=emacs-24.1-travis - EVM_EMACS=emacs-24.2-travis - EVM_EMACS=emacs-24.3-travis diff --git a/README.md b/README.md index 38339d91e8..24b828f030 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ other languages. ## Supported Emacs versions -The config should run on Emacs 23.3 or greater and is designed to +The config should run on Emacs 24.1 or greater and is designed to degrade smoothly - see the Travis build - but note that Emacs 24 and above is required for an increasing number of key packages, including `magit`, `company` and `flycheck`, so to get full you should use the diff --git a/init.el b/init.el index 505bac6504..ca3f1e96df 100644 --- a/init.el +++ b/init.el @@ -2,7 +2,7 @@ ;;; This file bootstraps the configuration, which is divided into ;;; a number of other files. -(let ((minver "23.3")) +(let ((minver "24.1")) (when (version<= emacs-version minver) (error "Your Emacs is too old -- this config requires v%s or higher" minver))) (when (version<= emacs-version "24") diff --git a/lisp/init-compat.el b/lisp/init-compat.el index b3d14ad62a..20539a5a2e 100644 --- a/lisp/init-compat.el +++ b/lisp/init-compat.el @@ -1,15 +1,3 @@ -;;---------------------------------------------------------------------------- -;; Provide a version of Emacs 24's 'string-prefix-p in older emacsen -;;---------------------------------------------------------------------------- -(when (eval-when-compile (< emacs-major-version 24)) - (defun string-prefix-p (str1 str2 &optional ignore-case) - "Return non-nil if STR1 is a prefix of STR2. -If IGNORE-CASE is non-nil, the comparison is done without paying attention -to case differences." - (eq t (compare-strings str1 nil nil - str2 0 (length str1) ignore-case)))) - - ;;---------------------------------------------------------------------------- ;; Allow recent packages to safely pass an arg to 'called-interactively-p ;; in older Emacsen, including 23.1. @@ -22,15 +10,6 @@ to case differences." "Overridden; see `sanityinc/called-interactively-p' for the wrapped function." (sanityinc/called-interactively-p)))) -(when (eval-when-compile (< emacs-major-version 24)) - ;; Help package.el work in older Emacsen, where there's no TRASH arg - ;; for 'delete-directory - (message "Warning: overriding delete-directory to support TRASH argument.") - (fset 'sanityinc/delete-directory (symbol-function 'delete-directory)) - (defun delete-directory (directory &optional recursive trash) - "Overridden: see `sanityinc/delete-directory' for the wrapped function" - (sanityinc/delete-directory directory recursive))) - ;;---------------------------------------------------------------------------- ;; Restore removed var alias, used by ruby-electric-brace and others diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 4296893192..01a352d06e 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -1,16 +1,5 @@ -;;; Find and load the correct package.el - -;; When switching between Emacs 23 and 24, we always use the bundled package.el in Emacs 24 -(let ((package-el-site-lisp-dir - (expand-file-name "site-lisp/package" user-emacs-directory))) - (when (and (file-directory-p package-el-site-lisp-dir) - (> emacs-major-version 23)) - (message "Removing local package.el from load-path to avoid shadowing bundled version") - (setq load-path (remove package-el-site-lisp-dir load-path)))) - (require 'package) - ;;; Install into separate package dirs for each Emacs version, to prevent bytecode incompatibility (let ((versioned-package-dir @@ -27,21 +16,13 @@ ;;; Standard package repositories -(when (< emacs-major-version 24) - ;; Mainly for ruby-mode - (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))) - ;; We include the org repository for completeness, but don't normally ;; use it. (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/")) -(when (< emacs-major-version 24) - (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))) - -(defconst sanityinc/no-ssl (or (< emacs-major-version 24) - (and (memq system-type '(windows-nt ms-dos)) - (not (gnutls-available-p))))) +(defconst sanityinc/no-ssl (and (memq system-type '(windows-nt ms-dos)) + (not (gnutls-available-p)))) ;;; Also use Melpa for most packages (add-to-list 'package-archives diff --git a/lisp/init-fci.el b/lisp/init-fci.el index 9c0c9f6910..f01a4d5cf3 100644 --- a/lisp/init-fci.el +++ b/lisp/init-fci.el @@ -1,39 +1,38 @@ ;; Fill column indicator -(when (eval-when-compile (> emacs-major-version 23)) - (require-package 'fill-column-indicator) - (defun sanityinc/prog-mode-fci-settings () - (turn-on-fci-mode) - (when show-trailing-whitespace - (set (make-local-variable 'whitespace-style) '(face trailing)) - (whitespace-mode 1))) +(require-package 'fill-column-indicator) +(defun sanityinc/prog-mode-fci-settings () + (turn-on-fci-mode) + (when show-trailing-whitespace + (set (make-local-variable 'whitespace-style) '(face trailing)) + (whitespace-mode 1))) - ;;(add-hook 'prog-mode-hook 'sanityinc/prog-mode-fci-settings) +;;(add-hook 'prog-mode-hook 'sanityinc/prog-mode-fci-settings) - (defun sanityinc/fci-enabled-p () - (bound-and-true-p fci-mode)) +(defun sanityinc/fci-enabled-p () + (bound-and-true-p fci-mode)) - (defvar sanityinc/fci-mode-suppressed nil) - (make-variable-buffer-local 'sanityinc/fci-mode-suppressed) +(defvar sanityinc/fci-mode-suppressed nil) +(make-variable-buffer-local 'sanityinc/fci-mode-suppressed) - (defadvice popup-create (before suppress-fci-mode activate) - "Suspend fci-mode while popups are visible" - (let ((fci-enabled (sanityinc/fci-enabled-p))) - (when fci-enabled - (setq sanityinc/fci-mode-suppressed fci-enabled) - (turn-off-fci-mode)))) - (defadvice popup-delete (after restore-fci-mode activate) - "Restore fci-mode when all popups have closed" - (when (and sanityinc/fci-mode-suppressed - (null popup-instances)) - (setq sanityinc/fci-mode-suppressed nil) - (turn-on-fci-mode))) +(defadvice popup-create (before suppress-fci-mode activate) + "Suspend fci-mode while popups are visible" + (let ((fci-enabled (sanityinc/fci-enabled-p))) + (when fci-enabled + (setq sanityinc/fci-mode-suppressed fci-enabled) + (turn-off-fci-mode)))) +(defadvice popup-delete (after restore-fci-mode activate) + "Restore fci-mode when all popups have closed" + (when (and sanityinc/fci-mode-suppressed + (null popup-instances)) + (setq sanityinc/fci-mode-suppressed nil) + (turn-on-fci-mode))) - ;; Regenerate fci-mode line images after switching themes - (defadvice enable-theme (after recompute-fci-face activate) - (dolist (buffer (buffer-list)) - (with-current-buffer buffer - (when (sanityinc/fci-enabled-p) - (turn-on-fci-mode)))))) +;; Regenerate fci-mode line images after switching themes +(defadvice enable-theme (after recompute-fci-face activate) + (dolist (buffer (buffer-list)) + (with-current-buffer buffer + (when (sanityinc/fci-enabled-p) + (turn-on-fci-mode))))) (provide 'init-fci) diff --git a/lisp/init-flyspell.el b/lisp/init-flyspell.el index 80a695c3db..25eb29bc51 100644 --- a/lisp/init-flyspell.el +++ b/lisp/init-flyspell.el @@ -1,26 +1,7 @@ ;;---------------------------------------------------------------------------- ;; Add spell-checking in comments for all programming language modes ;;---------------------------------------------------------------------------- -(if (fboundp 'prog-mode) - (add-hook 'prog-mode-hook 'flyspell-prog-mode) - (dolist (hook '(lisp-mode-hook - emacs-lisp-mode-hook - scheme-mode-hook - clojure-mode-hook - ruby-mode-hook - yaml-mode - python-mode-hook - shell-mode-hook - php-mode-hook - css-mode-hook - haskell-mode-hook - caml-mode-hook - nxml-mode-hook - crontab-mode-hook - perl-mode-hook - tcl-mode-hook - javascript-mode-hook)) - (add-hook hook 'flyspell-prog-mode))) +(add-hook 'prog-mode-hook 'flyspell-prog-mode) (after-load 'flyspell (add-to-list 'flyspell-prog-text-faces 'nxml-text-face)) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index 11c73fdec4..9cc1c4a637 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -4,8 +4,7 @@ (add-auto-mode 'tcl-mode "Portfile\\'") (fset 'yes-or-no-p 'y-or-n-p) -(when (fboundp 'prog-mode) - (add-hook 'prog-mode-hook 'goto-address-prog-mode)) +(add-hook 'prog-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-org.el b/lisp/init-org.el index 18f8d68122..b57aa2cd45 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -1,5 +1,3 @@ -(when (< emacs-major-version 24) - (require-package 'org)) (require-package 'org-fstree) (when *is-a-mac* (maybe-require-package 'grab-mac-link) @@ -69,8 +67,7 @@ typical word processor." (set (make-local-variable 'blink-cursor-interval) 0.6) (set (make-local-variable 'show-trailing-whitespace) nil) (flyspell-mode 1) - (when (fboundp 'visual-line-mode) - (visual-line-mode 1))) + (visual-line-mode 1)) (kill-local-variable 'truncate-lines) (kill-local-variable 'word-wrap) (kill-local-variable 'cursor-type) @@ -78,8 +75,7 @@ typical word processor." (buffer-face-mode -1) ;; (delete-selection-mode -1) (flyspell-mode -1) - (when (fboundp 'visual-line-mode) - (visual-line-mode -1)))) + (visual-line-mode -1))) ;;(add-hook 'org-mode-hook 'buffer-face-mode) diff --git a/lisp/init-site-lisp.el b/lisp/init-site-lisp.el index 81de0a0814..f96475b574 100644 --- a/lisp/init-site-lisp.el +++ b/lisp/init-site-lisp.el @@ -44,13 +44,4 @@ source file under ~/.emacs.d/site-lisp/name/" (and f (string-prefix-p (file-name-as-directory (site-lisp-dir-for name)) f)))) - -;; Download these upstream libs - -(unless (> emacs-major-version 23) - (ensure-lib-from-url - 'package - "http://repo.or.cz/w/emacs.git/blob_plain/ba08b24186711eaeb3748f3d1f23e2c2d9ed0d09:/lisp/emacs-lisp/package.el")) - - (provide 'init-site-lisp) diff --git a/lisp/init-xterm.el b/lisp/init-xterm.el index d8ed6c7e0a..ee5618e8cc 100644 --- a/lisp/init-xterm.el +++ b/lisp/init-xterm.el @@ -1,27 +1,11 @@ (require 'init-frame-hooks) -(defun fix-up-xterm-control-arrows () - (let ((map (if (boundp 'input-decode-map) - input-decode-map - function-key-map))) - (define-key map "\e[1;5A" [C-up]) - (define-key map "\e[1;5B" [C-down]) - (define-key map "\e[1;5C" [C-right]) - (define-key map "\e[1;5D" [C-left]) - (define-key map "\e[5A" [C-up]) - (define-key map "\e[5B" [C-down]) - (define-key map "\e[5C" [C-right]) - (define-key map "\e[5D" [C-left]))) - (global-set-key [mouse-4] (lambda () (interactive) (scroll-down 1))) (global-set-key [mouse-5] (lambda () (interactive) (scroll-up 1))) (defun sanityinc/console-frame-setup () - (when (< emacs-major-version 23) - (fix-up-xterm-control-arrows)) (xterm-mouse-mode 1) ; Mouse in a terminal (Use shift to paste with middle button) - (when (fboundp 'mwheel-install) - (mwheel-install))) + (mwheel-install)) diff --git a/site-lisp/README b/site-lisp/README index 41662772c5..4f84600e2d 100644 --- a/site-lisp/README +++ b/site-lisp/README @@ -1,6 +1,3 @@ This is a place for 3rd party code which isn't available in MELPA or other package repositories. This directory and its immediate subdirectories will be added to load-path at start-up time. - -Notably, in Emacs 23.x, a backported package.el is automatically -downloaded and installed here. \ No newline at end of file From 9460e9a204777f596a9bfaa0217f01e0f8a3710b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 9 Apr 2017 14:04:46 +1200 Subject: [PATCH 057/790] Use command-log-mode rather than mwe-log-commands --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index ca3f1e96df..1b2632ebae 100644 --- a/init.el +++ b/init.el @@ -47,7 +47,7 @@ (require-package 'project-local-variables) (require-package 'diminish) (require-package 'scratch) -(require-package 'mwe-log-commands) +(require-package 'command-log-mode) (require 'init-frame-hooks) (require 'init-xterm) From 27896f8a7fd6a06f4e7c6bbb431bf0b21fb160f8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 9 Apr 2017 14:05:57 +1200 Subject: [PATCH 058/790] Add cmd-to-echo --- lisp/init-compile.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/init-compile.el b/lisp/init-compile.el index 06fcbcc503..fcaede7389 100644 --- a/lisp/init-compile.el +++ b/lisp/init-compile.el @@ -57,4 +57,8 @@ (ansi-color-apply-on-region compilation-filter-start (point-max)))) (add-hook 'compilation-filter-hook 'sanityinc/colourise-compilation-buffer)) + +(maybe-require-package 'cmd-to-echo) + + (provide 'init-compile) From f48c73a7eb74877c06b2e5503b5ab6711f91ee88 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 9 Apr 2017 14:08:38 +1200 Subject: [PATCH 059/790] Warn about possibly-disabled functionality for all Emacs < 24.4 --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index 1b2632ebae..d0bd8f8a0e 100644 --- a/init.el +++ b/init.el @@ -5,7 +5,7 @@ (let ((minver "24.1")) (when (version<= emacs-version minver) (error "Your Emacs is too old -- this config requires v%s or higher" minver))) -(when (version<= emacs-version "24") +(when (version<= emacs-version "24.4") (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 f161043f0bd48de2c98df3b8950ef67f35983916 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 9 Apr 2017 14:12:58 +1200 Subject: [PATCH 060/790] Autoload mwheel-install --- lisp/init-xterm.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-xterm.el b/lisp/init-xterm.el index ee5618e8cc..f401e74025 100644 --- a/lisp/init-xterm.el +++ b/lisp/init-xterm.el @@ -3,6 +3,8 @@ (global-set-key [mouse-4] (lambda () (interactive) (scroll-down 1))) (global-set-key [mouse-5] (lambda () (interactive) (scroll-up 1))) +(autoload 'mwheel-install "mwheel") + (defun sanityinc/console-frame-setup () (xterm-mouse-mode 1) ; Mouse in a terminal (Use shift to paste with middle button) (mwheel-install)) From 7940db01b08862b34888ebe05aabedfac21784d9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 12 Apr 2017 09:09:10 +1200 Subject: [PATCH 061/790] Change default theme to my preferred dark theme See #424 --- lisp/init-themes.el | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lisp/init-themes.el b/lisp/init-themes.el index edbae85740..edbe9c29db 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -2,7 +2,7 @@ (require-package 'color-theme-sanityinc-tomorrow) ;; If you don't customize it, this is the theme you get. -(setq-default custom-enabled-themes '(sanityinc-solarized-light)) +(setq-default custom-enabled-themes '(sanityinc-tomorrow-bright)) ;; Ensure that themes will be applied even if they have not been customized (defun reapply-themes () @@ -21,12 +21,14 @@ (defun light () "Activate a light color theme." (interactive) - (color-theme-sanityinc-solarized-light)) + (setq custom-enabled-themes '(sanityinc-tomorrow-day)) + (reapply-themes)) (defun dark () "Activate a dark color theme." (interactive) - (color-theme-sanityinc-solarized-dark)) + (setq custom-enabled-themes '(sanityinc-tomorrow-bright)) + (reapply-themes)) (provide 'init-themes) From 695d4fcf4b7ab31797857265ae77b23e5baff02f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 12 Apr 2017 09:12:21 +1200 Subject: [PATCH 062/790] Remove unused ido config --- init.el | 3 --- lisp/init-ido.el | 25 ------------------------- 2 files changed, 28 deletions(-) delete mode 100644 lisp/init-ido.el diff --git a/init.el b/init.el index d0bd8f8a0e..dc35db1f6d 100644 --- a/init.el +++ b/init.el @@ -63,9 +63,6 @@ (require 'init-recentf) (require 'init-smex) -;; If you really prefer ido to ivy, change the comments below. I will -;; likely remove the ido config in due course, though. -;; (require 'init-ido) (require 'init-ivy) (require 'init-hippie-expand) (require 'init-company) diff --git a/lisp/init-ido.el b/lisp/init-ido.el deleted file mode 100644 index a15c364739..0000000000 --- a/lisp/init-ido.el +++ /dev/null @@ -1,25 +0,0 @@ -;; Use C-f during file selection to switch to regular find-file -(ido-mode t) -(ido-everywhere t) -(setq ido-enable-flex-matching t) -(setq ido-use-filename-at-point nil) -(setq ido-auto-merge-work-directories-length -1) -(setq ido-use-virtual-buffers t) -(setq-default org-completion-use-ido t) -(setq-default magit-completing-read-function 'magit-ido-completing-read) - -(when (maybe-require-package 'ido-ubiquitous) - (ido-ubiquitous-mode t)) - -(require-package 'idomenu) - -;; Allow the same buffer to be open in different frames -(setq ido-default-buffer-method 'selected-window) - -;; http://www.reddit.com/r/emacs/comments/21a4p9/use_recentf_and_ido_together/cgbprem -(add-hook 'ido-setup-hook (lambda () (define-key ido-completion-map [up] 'previous-history-element))) - - - - -(provide 'init-ido) From 04b00d6e7e31dd68ec5628d08bc41af7dabedaf0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 13 Apr 2017 11:06:12 +1200 Subject: [PATCH 063/790] Mention "M-x customize-themes" explicitly in the README --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 24b828f030..28601323c1 100644 --- a/README.md +++ b/README.md @@ -75,10 +75,11 @@ packages so that they can take effect. Emacs should usually restore your working buffers when you restart due to this configuration's use of the `desktop` and `session` packages. -## Adding your own customization +## Changing themes and adding your own customization -To add your own customization, use M-x customize and/or -create a file `~/.emacs.d/lisp/init-local.el` which looks like this: +To add your own customization, use M-x customize, M-x +customize-themes etc. and/or create a file +`~/.emacs.d/lisp/init-local.el` which looks like this: ```el ... your code here ... From 354cd4ed8205bc304a58b9a77c14a138cd571765 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 19 Apr 2017 14:40:59 +1200 Subject: [PATCH 064/790] Warn when local package.el is found --- lisp/init-elpa.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 01a352d06e..3138d9f560 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -1,5 +1,13 @@ (require 'package) + +(let ((local-package-el (find-library-name "package"))) + (when (string-match-p (concat "^" (regexp-quote user-emacs-directory)) + local-package-el) + (error "Please remove the local package.el, which is no longer supported (%s)" + local-package-el))) + + ;;; Install into separate package dirs for each Emacs version, to prevent bytecode incompatibility (let ((versioned-package-dir From a6e76e0b72652d9124d1911c13621709e0592d1f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 19 Apr 2017 23:28:17 +1200 Subject: [PATCH 065/790] Better warning for when local package.el is present (fixes #428) --- lisp/init-elpa.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 3138d9f560..32e6b1e5ef 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -1,11 +1,11 @@ (require 'package) -(let ((local-package-el (find-library-name "package"))) +(let ((local-package-el (locate-library "package"))) (when (string-match-p (concat "^" (regexp-quote user-emacs-directory)) local-package-el) - (error "Please remove the local package.el, which is no longer supported (%s)" - local-package-el))) + (warn "Please remove the local package.el, which is no longer supported (%s)" + local-package-el))) From 0171dbd58b3ee6840b7654582647b9f77557859a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 24 Apr 2017 13:14:31 +1200 Subject: [PATCH 066/790] Tidy up delete-this-file --- lisp/init-utils.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-utils.el b/lisp/init-utils.el index f8d4d93490..0f517322b3 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -36,7 +36,8 @@ (defun delete-this-file () "Delete the current file, and kill the buffer." (interactive) - (or (buffer-file-name) (error "No file is currently being edited")) + (unless (buffer-file-name) + (error "No file is currently being edited")) (when (yes-or-no-p (format "Really delete '%s'?" (file-name-nondirectory buffer-file-name))) (delete-file (buffer-file-name)) From 8c9f520400f5c52bf6fbefc6d55e4fcfdf9f2000 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 3 May 2017 18:26:36 +1200 Subject: [PATCH 067/790] Explicitly disable menu-bar-mode by default Closes #434 --- lisp/init-gui-frames.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 4198f7ce42..47c914414f 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -31,6 +31,8 @@ (tool-bar-mode -1)) (when (fboundp 'set-scroll-bar-mode) (set-scroll-bar-mode nil)) +(when (fboundp 'menu-bar-mode) + (menu-bar-mode -1)) (let ((no-border '(internal-border-width . 0))) (add-to-list 'default-frame-alist no-border) From 5029a994080512a13012dc6258c2d8373fc15027 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 5 May 2017 09:51:38 +1200 Subject: [PATCH 068/790] Remove now-unused code to disable menu bar in terminal frames only See #434, cc @YuanPres --- lisp/init-gui-frames.el | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 47c914414f..5ffa034482 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -60,11 +60,6 @@ (global-set-key (kbd "M-C-9") (lambda () (interactive) (sanityinc/adjust-opacity nil 2))) (global-set-key (kbd "M-C-0") (lambda () (interactive) (modify-frame-parameters nil `((alpha . 100))))) -(add-hook 'after-make-frame-functions - (lambda (frame) - (with-selected-frame frame - (unless window-system - (set-frame-parameter nil 'menu-bar-lines 0))))) (setq frame-title-format '((:eval (if (buffer-file-name) From cde83ed098213ccd3dadd86eddc6c3b3ec866c0e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 10 May 2017 15:33:03 +1200 Subject: [PATCH 069/790] Don't prefix M-x patterns with ^ when completing with ivy --- lisp/init-ivy.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 137debabb6..71e35b52f4 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -4,8 +4,7 @@ ivy-count-format "" projectile-completion-system 'ivy ivy-initial-inputs-alist - '((counsel-M-x . "^") - (man . "^") + '((man . "^") (woman . "^"))) ;; IDO-style directory navigation (define-key ivy-minibuffer-map (kbd "C-j") #'ivy-immediate-done) From f84ca8d395e2a788f557659ed12c7019b7864bf3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 13 May 2017 10:45:38 +1200 Subject: [PATCH 070/790] Prefer intero-global-mode for enabling intero with haskell This allows customisation of intero-whitelist and intero-blacklist to control which projects actually use intero. --- lisp/init-haskell.el | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index dee0981660..71cc73e1ef 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -10,9 +10,8 @@ (when (maybe-require-package 'intero) (after-load 'haskell-mode - (add-hook 'haskell-mode-hook 'intero-mode) - (add-hook 'haskell-mode-hook 'eldoc-mode) - ) + (intero-global-mode) + (add-hook 'haskell-mode-hook 'eldoc-mode)) (after-load 'intero (after-load 'flycheck (flycheck-add-next-checker 'intero From c1d46ec3837708e79b0ce3a8efebfe2eefe6f4d0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 13 May 2017 11:13:48 +1200 Subject: [PATCH 071/790] Enable flycheck-color-mode-line-mode --- lisp/init-flycheck.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/init-flycheck.el b/lisp/init-flycheck.el index 3d5a398e65..74733557b8 100644 --- a/lisp/init-flycheck.el +++ b/lisp/init-flycheck.el @@ -1,6 +1,9 @@ (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)) + (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) From 820a896f6a2d57af6d860ac36608e441983ee291 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 13 May 2017 12:20:04 +1200 Subject: [PATCH 072/790] Don't let ivy set itself as the completion-in-region function See #439 --- lisp/init-ivy.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 71e35b52f4..7c6efac78d 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -3,6 +3,7 @@ (setq-default ivy-use-virtual-buffers t ivy-count-format "" projectile-completion-system 'ivy + ivy-do-completion-in-region nil ivy-initial-inputs-alist '((man . "^") (woman . "^"))) From 579f6734de78c3630d39069149ea91bb4a0a08ff Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 13 May 2017 13:06:26 +1200 Subject: [PATCH 073/790] Revert "Don't let ivy set itself as the completion-in-region function" This reverts commit 820a896f6a2d57af6d860ac36608e441983ee291. --- lisp/init-ivy.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 7c6efac78d..71e35b52f4 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -3,7 +3,6 @@ (setq-default ivy-use-virtual-buffers t ivy-count-format "" projectile-completion-system 'ivy - ivy-do-completion-in-region nil ivy-initial-inputs-alist '((man . "^") (woman . "^"))) From f43de616b3c180daa1c98022089c1bf6a4128099 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 18 May 2017 22:59:40 +1200 Subject: [PATCH 074/790] Use counsel-ag for M-? --- 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 71e35b52f4..4420147e66 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -37,7 +37,14 @@ (when (maybe-require-package 'diminish) (after-load 'counsel (diminish 'counsel-mode))) - (add-hook 'after-init-hook 'counsel-mode)) + (add-hook 'after-init-hook 'counsel-mode) + + (when (and (executable-find "ag") (maybe-require-package 'projectile)) + (defun sanityinc/counsel-ag-project (initial-input) + "Search using `counsel-ag' from the project root for INITIAL-INPUT." + (interactive (list (thing-at-point 'symbol))) + (counsel-ag initial-input (projectile-project-root))) + (global-set-key (kbd "M-?") 'sanityinc/counsel-ag-project))) ;;(when (maybe-require-package 'swiper) From 7e59719e7d302829502d43d5b78d6447093204c9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 18 May 2017 23:12:09 +1200 Subject: [PATCH 075/790] Soft-require robe --- lisp/init-ruby-mode.el | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lisp/init-ruby-mode.el b/lisp/init-ruby-mode.el index 74c8c4883c..3380a5b8e2 100644 --- a/lisp/init-ruby-mode.el +++ b/lisp/init-ruby-mode.el @@ -49,13 +49,13 @@ ;;; Robe -(require-package 'robe) -(after-load 'ruby-mode - (add-hook 'ruby-mode-hook 'robe-mode)) -(after-load 'company - (dolist (hook '(ruby-mode-hook inf-ruby-mode-hook html-erb-mode-hook haml-mode)) - (add-hook hook - (lambda () (sanityinc/local-push-company-backend 'company-robe))))) +(when (maybe-require-package 'robe) + (after-load 'ruby-mode + (add-hook 'ruby-mode-hook 'robe-mode)) + (after-load 'company + (dolist (hook '(ruby-mode-hook inf-ruby-mode-hook html-erb-mode-hook haml-mode)) + (add-hook hook + (lambda () (sanityinc/local-push-company-backend 'company-robe)))))) From 27143a80a848b3e3ae5ba39d64b8e272e6fcc42d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 19 May 2017 07:40:46 +1200 Subject: [PATCH 076/790] Soft-require ledger-mode, which now need Emacs 24.3 --- lisp/init-ledger.el | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/lisp/init-ledger.el b/lisp/init-ledger.el index 70680005e0..b45f9e6f28 100644 --- a/lisp/init-ledger.el +++ b/lisp/init-ledger.el @@ -1,23 +1,23 @@ -(require-package 'ledger-mode) +(when (maybe-require-package 'ledger-mode) -(add-to-list 'auto-mode-alist '("\\.ledger$" . ledger-mode)) + (add-to-list 'auto-mode-alist '("\\.ledger$" . ledger-mode)) -(when (maybe-require-package 'flycheck-ledger) - (after-load 'flycheck - (after-load 'ledger-mode - (require 'flycheck-ledger)))) + (when (maybe-require-package 'flycheck-ledger) + (after-load 'flycheck + (after-load 'ledger-mode + (require 'flycheck-ledger)))) -(after-load 'ledger-mode - (define-key ledger-mode-map (kbd "RET") 'newline) - (define-key ledger-mode-map (kbd "C-o") 'open-line)) + (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) + (setq ledger-highlight-xact-under-point nil + ledger-use-iso-dates nil) -(after-load 'ledger-mode - (when (memq window-system '(mac ns)) - (exec-path-from-shell-copy-env "LEDGER_FILE"))) + (after-load 'ledger-mode + (when (memq window-system '(mac ns)) + (exec-path-from-shell-copy-env "LEDGER_FILE"))) -(add-hook 'ledger-mode-hook 'goto-address-prog-mode) + (add-hook 'ledger-mode-hook 'goto-address-prog-mode)) (provide 'init-ledger) From 593e9f3f58c070a01cf9b8d17b96a3a10b8ec0c6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 May 2017 18:25:43 +1200 Subject: [PATCH 077/790] In diff-hl mode, make clicking the fringe show the diff --- lisp/init-vc.el | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/init-vc.el b/lisp/init-vc.el index 0e8a97a8c5..674ddc01dc 100644 --- a/lisp/init-vc.el +++ b/lisp/init-vc.el @@ -1,6 +1,11 @@ (when (maybe-require-package 'diff-hl) - (add-hook 'prog-mode-hook 'turn-on-diff-hl-mode) - (add-hook 'vc-dir-mode-hook 'turn-on-diff-hl-mode)) + (add-hook 'prog-mode-hook 'diff-hl-mode) + (add-hook 'vc-dir-mode-hook 'diff-hl-mode) + + (after-load 'diff-hl + (define-key diff-hl-mode-map + (kbd " ") + 'diff-hl-diff-goto-hunk))) (maybe-require-package 'browse-at-remote) From 0d01ad06698a8029704250f5b24e0a5b6afa00f2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 May 2017 18:29:34 +1200 Subject: [PATCH 078/790] Remove unnecessary init-compat.el --- init.el | 1 - lisp/init-compat.el | 21 --------------------- 2 files changed, 22 deletions(-) delete mode 100644 lisp/init-compat.el diff --git a/init.el b/init.el index dc35db1f6d..1db0893dd8 100644 --- a/init.el +++ b/init.el @@ -27,7 +27,6 @@ ;; Bootstrap config ;;---------------------------------------------------------------------------- (setq custom-file (expand-file-name "custom.el" user-emacs-directory)) -(require 'init-compat) (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-compat.el b/lisp/init-compat.el deleted file mode 100644 index 20539a5a2e..0000000000 --- a/lisp/init-compat.el +++ /dev/null @@ -1,21 +0,0 @@ -;;---------------------------------------------------------------------------- -;; Allow recent packages to safely pass an arg to 'called-interactively-p -;; in older Emacsen, including 23.1. -;;---------------------------------------------------------------------------- -(let ((fn (symbol-function 'called-interactively-p))) - (when (and (subrp fn) (zerop (cdr-safe (subr-arity fn)))) - (message "Warning: overriding called-interactively-p to support an argument.") - (fset 'sanityinc/called-interactively-p fn) - (defun called-interactively-p (&optional kind) - "Overridden; see `sanityinc/called-interactively-p' for the wrapped function." - (sanityinc/called-interactively-p)))) - - -;;---------------------------------------------------------------------------- -;; Restore removed var alias, used by ruby-electric-brace and others -;;---------------------------------------------------------------------------- -(unless (boundp 'last-command-char) - (defvaralias 'last-command-char 'last-command-event)) - - -(provide 'init-compat) From 930f16075f984ea700e66c129cdaea43dd576f16 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 May 2017 18:29:50 +1200 Subject: [PATCH 079/790] Ignore network-security.data --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 70b9d98390..39661dc441 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ /url/cache /.emacs.desktop /auto-save-list +/network-security.data /.session /session.* /custom.el From 53c52852a7750253c5832eab8dddc5bff5b52a00 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 May 2017 18:30:11 +1200 Subject: [PATCH 080/790] Ignore rake.cache --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 39661dc441..4d6357ce33 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,4 @@ site-lisp/package/ /anaconda-mode/ /.historian /.uptimes.el +/rake.cache From 628e7655fdcb3205ab90c95b469202a36fff01ca Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 May 2017 18:38:36 +1200 Subject: [PATCH 081/790] Use C-n and C-p to select company candidates, to match ivy keys --- lisp/init-company.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-company.el b/lisp/init-company.el index 3bd9ddce15..3cc3f8a6de 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -13,6 +13,8 @@ (diminish 'company-mode "CMP") (define-key company-mode-map (kbd "M-/") 'company-complete) (define-key company-active-map (kbd "M-/") 'company-select-next) + (define-key company-active-map (kbd "C-n") 'company-select-next) + (define-key company-active-map (kbd "C-p") 'company-select-previous) (setq-default company-backends '((company-capf company-dabbrev-code) company-dabbrev) company-dabbrev-other-buffers 'all)) (global-set-key (kbd "M-C-/") 'company-complete) From f4e836eed4cb2fbacfb9033c73cbdbaf41fc0b5f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 23 May 2017 21:15:36 +1200 Subject: [PATCH 082/790] Force SSL for GNU ELPA (fixes #443) --- lisp/init-elpa.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 32e6b1e5ef..58f1effbb2 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -38,6 +38,10 @@ "http://melpa.org/packages/" "https://melpa.org/packages/"))) +(unless sanityinc/no-ssl + ;; Force SSL for GNU ELPA + (setcdr (assoc "gnu" package-archives) "https://elpa.gnu.org/packages/")) + ;; NOTE: In case of MELPA problems, the official mirror URL is ;; https://www.mirrorservice.org/sites/stable.melpa.org/packages/ From 4b8dac734709d1df25c013a41becdfcf9075c621 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 24 May 2017 21:09:26 +1200 Subject: [PATCH 083/790] Enable SSL for Org package source by default where possible See #443 --- lisp/init-elpa.el | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 58f1effbb2..83f84b4cd7 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -24,13 +24,17 @@ ;;; Standard package repositories +;; Disable SSL for package.el in certain configurations +(defconst sanityinc/no-ssl (and (memq system-type '(windows-nt ms-dos)) + (not (gnutls-available-p)))) + ;; We include the org repository for completeness, but don't normally ;; use it. -(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/")) - +(add-to-list 'package-archives + `("org" . ,(if sanityinc/no-ssl + "http://orgmode.org/elpa/" + "https://orgmode.org/elpa/"))) -(defconst sanityinc/no-ssl (and (memq system-type '(windows-nt ms-dos)) - (not (gnutls-available-p)))) ;;; Also use Melpa for most packages (add-to-list 'package-archives From 559ab570c5babc0db422516cb3d6d51306a1bfe8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 25 May 2017 15:57:11 +1200 Subject: [PATCH 084/790] Revert "Enable SSL for Org package source by default where possible" This reverts commit 4b8dac734709d1df25c013a41becdfcf9075c621. Seems really unreliable, at least in Travis builds. See #443. Sorry @YuanPres. --- lisp/init-elpa.el | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 83f84b4cd7..58f1effbb2 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -24,18 +24,14 @@ ;;; Standard package repositories -;; Disable SSL for package.el in certain configurations -(defconst sanityinc/no-ssl (and (memq system-type '(windows-nt ms-dos)) - (not (gnutls-available-p)))) - ;; We include the org repository for completeness, but don't normally ;; use it. -(add-to-list 'package-archives - `("org" . ,(if sanityinc/no-ssl - "http://orgmode.org/elpa/" - "https://orgmode.org/elpa/"))) +(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/")) +(defconst sanityinc/no-ssl (and (memq system-type '(windows-nt ms-dos)) + (not (gnutls-available-p)))) + ;;; Also use Melpa for most packages (add-to-list 'package-archives `("melpa" . ,(if sanityinc/no-ssl From 9992c30d16efa7bfe2e57e319fc530fb2228959c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 25 May 2017 20:26:18 +1200 Subject: [PATCH 085/790] Add a binding for searching with swiper for the symbol at point --- lisp/init-ivy.el | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 4420147e66..822bac444e 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -47,9 +47,14 @@ (global-set-key (kbd "M-?") 'sanityinc/counsel-ag-project))) -;;(when (maybe-require-package 'swiper) -;; (after-load 'ivy -;; (define-key ivy-mode-map (kbd "C-s") 'swiper))) +(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))) From fb98e41bcb18ead335c35d9cf4aa401539d151c4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 25 May 2017 20:26:47 +1200 Subject: [PATCH 086/790] Use C-c C-o for occur in isearch mode, to match ivy conventions --- 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 9e22baf14c..6796395d3c 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -6,7 +6,7 @@ (global-set-key [remap query-replace] 'anzu-query-replace)) ;; Activate occur easily inside isearch -(define-key isearch-mode-map (kbd "C-o") 'isearch-occur) +(define-key isearch-mode-map (kbd "C-c C-o") 'isearch-occur) ;; to match ivy conventions ;; 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) From b48dd23e2942faf01298bdc846e9a28a2b0fa5ce Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 26 May 2017 15:36:53 +1200 Subject: [PATCH 087/790] Default counsel-ag-project to default-directory if not in a project --- lisp/init-ivy.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 822bac444e..5453b6bb08 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -43,7 +43,9 @@ (defun sanityinc/counsel-ag-project (initial-input) "Search using `counsel-ag' from the project root for INITIAL-INPUT." (interactive (list (thing-at-point 'symbol))) - (counsel-ag initial-input (projectile-project-root))) + (counsel-ag initial-input (condition-case err + (projectile-project-root) + (error default-directory)))) (global-set-key (kbd "M-?") 'sanityinc/counsel-ag-project))) From 85415439595090260b7e6e7daa70e63660edcd26 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 28 May 2017 20:17:34 +1200 Subject: [PATCH 088/790] Prefer lexical-binding to lexical-let --- lisp/init-windows.el | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lisp/init-windows.el b/lisp/init-windows.el index e165c2e92e..46c90f1dd6 100644 --- a/lisp/init-windows.el +++ b/lisp/init-windows.el @@ -1,3 +1,4 @@ +;;; -*- lexical-binding: t -*- ;;---------------------------------------------------------------------------- ;; Navigate window layouts with "C-c " and "C-c " ;;---------------------------------------------------------------------------- @@ -16,15 +17,14 @@ ;; When splitting window, show (other-buffer) in the new window ;;---------------------------------------------------------------------------- (defun split-window-func-with-other-buffer (split-function) - (lexical-let ((s-f split-function)) - (lambda (&optional arg) - "Split this window and switch to the new window unless ARG is provided." - (interactive "P") - (funcall s-f) - (let ((target-window (next-window))) - (set-window-buffer target-window (other-buffer)) - (unless arg - (select-window target-window)))))) + (lambda (&optional arg) + "Split this window and switch to the new window unless ARG is provided." + (interactive "P") + (funcall split-function) + (let ((target-window (next-window))) + (set-window-buffer target-window (other-buffer)) + (unless arg + (select-window target-window))))) (global-set-key (kbd "C-x 2") (split-window-func-with-other-buffer 'split-window-vertically)) (global-set-key (kbd "C-x 3") (split-window-func-with-other-buffer 'split-window-horizontally)) From 5e11091ed76d54440caa6091d70809260ca9e933 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 4 Jun 2017 12:03:11 +0800 Subject: [PATCH 089/790] Try out symbol-overlay in place of highlight-symbol --- lisp/init-editing-utils.el | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 26434fb298..863ac0655e 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -89,18 +89,18 @@ (diminish 'undo-tree-mode) -(require-package 'highlight-symbol) -(dolist (hook '(prog-mode-hook html-mode-hook css-mode-hook)) - (add-hook hook 'highlight-symbol-mode) - (add-hook hook 'highlight-symbol-nav-mode)) -(add-hook 'org-mode-hook 'highlight-symbol-nav-mode) -(after-load 'highlight-symbol - (diminish 'highlight-symbol-mode) - (defadvice highlight-symbol-temp-highlight (around sanityinc/maybe-suppress activate) - "Suppress symbol highlighting while isearching." - (unless (or isearch-mode - (and (boundp 'multiple-cursors-mode) multiple-cursors-mode)) - ad-do-it))) +(when (maybe-require-package 'symbol-overlay) + (dolist (hook '(prog-mode-hook html-mode-hook css-mode-hook)) + (add-hook hook 'symbol-overlay-mode)) + (after-load 'symbol-overlay + (diminish 'symbol-overlay-mode) + (defadvice symbol-overlay-temp-highlight (around sanityinc/maybe-suppress activate) + "Suppress symbol highlighting while isearching." + (unless (or isearch-mode + (and (boundp 'multiple-cursors-mode) multiple-cursors-mode)) + ad-do-it)) + (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 From b667232b7030e04351126f024e9db2b2ab0e4f99 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 5 Jun 2017 11:19:41 +1200 Subject: [PATCH 090/790] Don't bother suppressing symbol-overlay during isearch --- 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 863ac0655e..0f06345340 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -94,11 +94,6 @@ (add-hook hook 'symbol-overlay-mode)) (after-load 'symbol-overlay (diminish 'symbol-overlay-mode) - (defadvice symbol-overlay-temp-highlight (around sanityinc/maybe-suppress activate) - "Suppress symbol highlighting while isearching." - (unless (or isearch-mode - (and (boundp 'multiple-cursors-mode) multiple-cursors-mode)) - ad-do-it)) (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 5fbf7e1f852fe657d9923518c836f55cefb3dbf9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 5 Jun 2017 12:52:25 +1200 Subject: [PATCH 091/790] Make ivy show full path of virtual buffers --- lisp/init-ivy.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 5453b6bb08..0414688b7b 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -1,6 +1,7 @@ (when (maybe-require-package 'ivy) (after-load 'ivy (setq-default ivy-use-virtual-buffers t + ivy-virtual-abbreviate 'fullpath ivy-count-format "" projectile-completion-system 'ivy ivy-initial-inputs-alist From cbb33c4d43df3618908da286ab87e7b29242633c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 6 Jun 2017 15:30:04 +1200 Subject: [PATCH 092/790] Binding C-c C-o in isearch-mode-map requires Emacs 24.3 Otherwise, produces error that C-c is not a prefix key. --- lisp/init-isearch.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-isearch.el b/lisp/init-isearch.el index 6796395d3c..338ab96540 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -6,7 +6,8 @@ (global-set-key [remap query-replace] 'anzu-query-replace)) ;; Activate occur easily inside isearch -(define-key isearch-mode-map (kbd "C-c C-o") 'isearch-occur) ;; to match ivy conventions +(when (maybe-require-package 'emacs "24.3") + (define-key isearch-mode-map (kbd "C-c C-o") 'isearch-occur)) ;; to match ivy conventions ;; 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) From fdcc9f9e46e451c59a522f3fa8b1d1697ff8623b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 8 Jun 2017 23:29:04 +1200 Subject: [PATCH 093/790] Emacs version dependency should be a list rather than a string --- 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 338ab96540..836b87fc13 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -6,7 +6,7 @@ (global-set-key [remap query-replace] 'anzu-query-replace)) ;; Activate occur easily inside isearch -(when (maybe-require-package 'emacs "24.3") +(when (maybe-require-package 'emacs '(24 3)) (define-key isearch-mode-map (kbd "C-c C-o") 'isearch-occur)) ;; to match ivy conventions ;; DEL during isearch should edit the search string, not jump back to the previous result From a5f439f00409ef55ffd21152b4f7db70791fc79e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 9 Jun 2017 09:19:01 +1200 Subject: [PATCH 094/790] When ivy prompt entry is empty, make navigate history --- lisp/init-ivy.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 0414688b7b..ae0486a345 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -10,6 +10,7 @@ ;; IDO-style directory navigation (define-key ivy-minibuffer-map (kbd "C-j") #'ivy-immediate-done) (define-key ivy-minibuffer-map (kbd "RET") #'ivy-alt-done) + (define-key ivy-minibuffer-map (kbd "") #'ivy-previous-line-or-history) (when (maybe-require-package 'diminish) (diminish 'ivy-mode))) From 992c9913bd2cd31fa5097e2619becba29f98daa1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 9 Jun 2017 10:16:28 +1200 Subject: [PATCH 095/790] Ivy binding tweaks --- lisp/init-ivy.el | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index ae0486a345..8bc8b78626 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -7,10 +7,14 @@ ivy-initial-inputs-alist '((man . "^") (woman . "^"))) + ;; IDO-style directory navigation - (define-key ivy-minibuffer-map (kbd "C-j") #'ivy-immediate-done) (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) + (when (maybe-require-package 'diminish) (diminish 'ivy-mode))) @@ -29,11 +33,9 @@ (ido-mode -1)) (ivy-mode 1)))) - (when (maybe-require-package 'ivy-historian) (add-hook 'after-init-hook (lambda () (ivy-historian-mode t)))) - (when (maybe-require-package 'counsel) (setq-default counsel-mode-override-describe-bindings t) (when (maybe-require-package 'diminish) From df7f601904da59eb30de64beff5c53f3060a321d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 10 Jun 2017 15:55:30 +1200 Subject: [PATCH 096/790] Change emacs version bound checks Closes #456. Thanks @YuanPres. --- init.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.el b/init.el index 1db0893dd8..b864279f16 100644 --- a/init.el +++ b/init.el @@ -3,9 +3,9 @@ ;;; a number of other files. (let ((minver "24.1")) - (when (version<= emacs-version minver) + (when (version< emacs-version minver) (error "Your Emacs is too old -- this config requires v%s or higher" minver))) -(when (version<= emacs-version "24.4") +(when (version< emacs-version "24.4") (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 c53f82baf598acc6f3ae38c754f4dcbf47c796e2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 14 Jun 2017 10:46:29 +1200 Subject: [PATCH 097/790] Don't fail in prose-mode if ispell is not installed --- 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 b57aa2cd45..845501beef 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -66,7 +66,7 @@ typical word processor." ;;(delete-selection-mode 1) (set (make-local-variable 'blink-cursor-interval) 0.6) (set (make-local-variable 'show-trailing-whitespace) nil) - (flyspell-mode 1) + (ignore-errors (flyspell-mode 1)) (visual-line-mode 1)) (kill-local-variable 'truncate-lines) (kill-local-variable 'word-wrap) From e703473b66a5c0dcefbc07a2143af7d0a14e4dfc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 17 Jun 2017 15:41:56 +1200 Subject: [PATCH 098/790] Improve item matching in org agenda commands --- lisp/init-org.el | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index 845501beef..73a9f93911 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -185,11 +185,14 @@ typical word processor." (org-agenda-tags-todo-honor-ignore-options t) (org-tags-match-list-sublevels t) (org-agenda-todo-ignore-scheduled 'future))) - (tags-todo "-INBOX/NEXT" + (tags-todo "-INBOX" ((org-agenda-overriding-header "Next Actions") (org-agenda-tags-todo-honor-ignore-options t) (org-agenda-todo-ignore-scheduled 'future) - ;; TODO: skip if a parent is WAITING or HOLD + (org-agenda-skip-function + '(lambda () + (or (org-agenda-skip-subtree-if 'todo '("HOLD" "WAITING")) + (org-agenda-skip-entry-if 'nottodo '("NEXT"))))) (org-tags-match-list-sublevels t) (org-agenda-sorting-strategy '(todo-state-down effort-up category-keep)))) @@ -202,7 +205,6 @@ typical word processor." ((org-agenda-overriding-header "Orphaned Tasks") (org-agenda-tags-todo-honor-ignore-options t) (org-agenda-todo-ignore-scheduled 'future) - ;; TODO: skip if a parent is a project (org-agenda-skip-function '(lambda () (or (org-agenda-skip-subtree-if 'todo '("PROJECT" "HOLD" "WAITING" "DELEGATED")) @@ -222,9 +224,12 @@ typical word processor." (org-agenda-todo-ignore-scheduled 'future) (org-agenda-sorting-strategy '(category-keep)))) - (tags-todo "-INBOX/HOLD" + (tags-todo "-INBOX" ((org-agenda-overriding-header "On Hold") - ;; TODO: skip if a parent is WAITING or HOLD + (org-agenda-skip-function + '(lambda () + (or (org-agenda-skip-subtree-if 'todo '("WAITING")) + (org-agenda-skip-entry-if 'nottodo '("HOLD"))))) (org-tags-match-list-sublevels nil) (org-agenda-sorting-strategy '(category-keep)))) From 3b5e242b9dfcac3bc7feaa1015ce92c2f368e0e8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 17 Jun 2017 15:42:13 +1200 Subject: [PATCH 099/790] Fix comment syntax --- 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 73a9f93911..ca1196f1d3 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -99,7 +99,7 @@ typical word processor." (setq org-refile-use-cache nil) -; Targets include this file and any file contributing to the agenda - up to 5 levels deep +;; 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 From 559ec4e4417a190341cdaa1a50203780f393f489 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 17 Jun 2017 15:43:05 +1200 Subject: [PATCH 100/790] Support quitting with C-c C-k in re-builder --- lisp/init-misc.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index 9cc1c4a637..9e10dd8d9b 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -10,6 +10,9 @@ (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p) (setq-default regex-tool-backend 'perl) +(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)) (add-auto-mode 'conf-mode "Procfile") From 29ab107df44a5c2cc6964c6737fa8c4de744f077 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 17 Jun 2017 15:43:57 +1200 Subject: [PATCH 101/790] Add my list-unicode-display package (Not that I really use it.) --- 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 0f06345340..f37c65a2da 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -5,6 +5,8 @@ (when (eval-when-compile (version< "24.4" emacs-version)) (electric-indent-mode 1)) +(maybe-require-package 'list-unicode-display) + ;;---------------------------------------------------------------------------- ;; Some basic preferences ;;---------------------------------------------------------------------------- From 4f5cad8b463050050e025bf68b337e79d3087477 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 17 Jun 2017 15:44:56 +1200 Subject: [PATCH 102/790] Remove defunct comment about tab-always-indent --- lisp/init-company.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index 3cc3f8a6de..e29fbd5a2a 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -1,7 +1,7 @@ ;; 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) ;; use 't when company is disabled +(setq tab-always-indent 'complete) (add-to-list 'completion-styles 'initials t) ;; Stop completion-at-point from popping up completion buffers so eagerly (setq completion-cycle-threshold 5) From 81a65c1e4a809297c2bd0c275b771a5c4a0d45e0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 27 Jun 2017 13:59:17 +1200 Subject: [PATCH 103/790] Add workaround for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22596 --- lisp/init-sql.el | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 9004b2260b..80ee11603e 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -6,6 +6,15 @@ ;; sql-mode pretty much requires your psql to be uncustomised from stock settings (push "--no-psqlrc" sql-postgres-options)) +(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 8e6b85c1876fe662ca78dba5c24d78a09d2bbde6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 9 Jul 2017 20:30:05 +1200 Subject: [PATCH 104/790] Remove spurious tabs in config files and ensure they don't reappear Closes #465 --- .dir-locals.el | 5 +++++ lisp/init-editing-utils.el | 12 ++++++------ lisp/init-python-mode.el | 2 +- lisp/init-sessions.el | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .dir-locals.el diff --git a/.dir-locals.el b/.dir-locals.el new file mode 100644 index 0000000000..3bcda9266b --- /dev/null +++ b/.dir-locals.el @@ -0,0 +1,5 @@ +;;; Directory Local Variables +;;; For more information see (info "(emacs) Directory Variables") + +((emacs-lisp-mode + (indent-tabs-mode . nil))) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index f37c65a2da..4b10c80100 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -260,10 +260,10 @@ 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)) + (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) @@ -272,8 +272,8 @@ With arg N, insert N newlines." (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)))) + (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) diff --git a/lisp/init-python-mode.el b/lisp/init-python-mode.el index cce97603e8..8aa5b4767f 100644 --- a/lisp/init-python-mode.el +++ b/lisp/init-python-mode.el @@ -1,6 +1,6 @@ (setq auto-mode-alist (append '(("SConstruct\\'" . python-mode) - ("SConscript\\'" . python-mode)) + ("SConscript\\'" . python-mode)) auto-mode-alist)) (require-package 'pip-requirements) diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index 254d1c90fe..e7bdb6b070 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -20,7 +20,7 @@ (sanityinc/time-subtract-millis (current-time) start-time) (when filename - (abbreviate-file-name filename)))))) + (abbreviate-file-name filename)))))) ;;---------------------------------------------------------------------------- ;; Restore histories and registers after saving From 6edcfbdd618bb42212ee60f1a0c5792e73105bc3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 10 Jul 2017 16:55:25 +1200 Subject: [PATCH 105/790] With a prefix arg, make M-? search from the current dir instead --- lisp/init-ivy.el | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 8bc8b78626..6a6f04cebe 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -44,12 +44,20 @@ (add-hook 'after-init-hook 'counsel-mode) (when (and (executable-find "ag") (maybe-require-package 'projectile)) - (defun sanityinc/counsel-ag-project (initial-input) - "Search using `counsel-ag' from the project root for INITIAL-INPUT." - (interactive (list (thing-at-point 'symbol))) - (counsel-ag initial-input (condition-case err - (projectile-project-root) - (error default-directory)))) + (defun sanityinc/counsel-ag-project (initial-input &optional use-current-dir) + "Search using `counsel-ag' 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 (thing-at-point 'symbol) + current-prefix-arg)) + (let ((current-prefix-arg) + (dir (if use-current-dir + default-directory + (condition-case err + (projectile-project-root) + (error default-directory))))) + (counsel-ag initial-input dir))) (global-set-key (kbd "M-?") 'sanityinc/counsel-ag-project))) From 2188228807f59fe121a35c1c96d70edef0e77ca3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 16 Jul 2017 12:46:04 +1200 Subject: [PATCH 106/790] Flip newly-created scripts into the detected major mode --- lisp/init-misc.el | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index 9e10dd8d9b..eb7761b086 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -8,6 +8,18 @@ (setq goto-address-mail-face 'link) (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p) +(add-hook 'after-save-hook 'sanityinc/set-mode-for-new-scripts) + +(defun sanityinc/set-mode-for-new-scripts () + "Invoke `normal-mode' if this file is a script and in `fundamental-mode'." + (and + (eq major-mode 'fundamental-mode) + (>= (buffer-size) 2) + (save-restriction + (widen) + (string= "#!" (buffer-substring (point-min) (+ 2 (point-min))))) + (normal-mode))) + (setq-default regex-tool-backend 'perl) (after-load 're-builder From 3476bb4c296d439fdd3593a7bf75e5a6466c576b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 16 Jul 2017 14:32:41 +1200 Subject: [PATCH 107/790] Remove defunct highlight-symbol tweaks for ruby-mode See #467 --- lisp/init-ruby-mode.el | 9 --------- 1 file changed, 9 deletions(-) diff --git a/lisp/init-ruby-mode.el b/lisp/init-ruby-mode.el index 3380a5b8e2..4093b843c1 100644 --- a/lisp/init-ruby-mode.el +++ b/lisp/init-ruby-mode.el @@ -58,15 +58,6 @@ (lambda () (sanityinc/local-push-company-backend 'company-robe)))))) - -;; Customise highlight-symbol to not highlight do/end/class/def etc. -(defun sanityinc/suppress-ruby-mode-keyword-highlights () - "Suppress highlight-symbol for do/end etc." - (set (make-local-variable 'highlight-symbol-ignore-list) - (list (concat "\\_<" (regexp-opt '("do" "end")) "\\_>")))) -(add-hook 'ruby-mode-hook 'sanityinc/suppress-ruby-mode-keyword-highlights) - - ;;; ri support (require-package 'yari) From 6f8c52ea5ffe1fa0169b08f2f180a6c7048ef607 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 16 Jul 2017 16:23:49 +1200 Subject: [PATCH 108/790] Add command for explaining PostgreSQL queries in a format suitable for PEV See http://tatiyants.com/pev/ --- lisp/init-sql.el | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 80ee11603e..5dc029bba3 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -48,6 +48,68 @@ Fix for the above hasn't been released as of Emacs 25.2." (add-hook 'sql-interactive-mode-hook 'sanityinc/font-lock-everything-in-sql-interactive-mode) + +(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/. + +When the prefix argument COPY is non-nil, do not display the +resulting JSON, but instead copy it to the kill ring. + +If the region is not active, uses the current paragraph, as per +`sql-send-paragraph'. + +Connection information is taken from the special sql-* variables +set in the current buffer, so you will usually want to start a +SQLi session first, or otherwise set `sql-database' etc." + (interactive "rP") + (unless (eq sql-product 'postgres) + (user-error "This command is for PostgreSQL only")) + (unless (use-region-p) + (setq beg (save-excursion + (backward-paragraph) + (point)) + end (save-excursion + (forward-paragraph) + (point)))) + (let ((query (buffer-substring-no-properties beg end))) + (with-current-buffer (if (sql-buffer-live-p sql-buffer) + sql-buffer + (current-buffer)) + (let* ((process-environment + (append (list (concat "PGDATABASE=" sql-database) + (concat "PGHOST=" sql-server) + (concat "PGUSER=" sql-user)) + process-environment)) + (out-buffer (get-buffer-create "*sql-explain-json*")) + (args (list "--no-psqlrc" + "-qAt" + "-w" ; Never prompt for password + "-E" + "-c" (concat "EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON) " query ";") + )) + (err-file (make-temp-file "sql-explain-json"))) + (with-current-buffer out-buffer + (delete-region (point-min) (point-max))) + (let ((retcode (apply 'call-process sql-postgres-program nil (list out-buffer err-file) nil args))) + (if (zerop retcode) + (with-current-buffer out-buffer + (json-mode) + (if copy + (progn + (kill-ring-save (buffer-substring-no-properties (point-min) (point-max))) + (message "EXPLAIN output copied to kill-ring.")) + (display-buffer (current-buffer)))) + (display-buffer (with-current-buffer (get-buffer-create "*sql-explain-errors*") + (insert-file-contents err-file nil nil nil t) + (current-buffer))) + (error "Explain failed"))))))) + + + + + (after-load 'page-break-lines (push 'sql-mode page-break-lines-modes)) From a1208b17909ed80aa0a86efd32b9ffaa7214dcc4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 16 Jul 2017 16:37:52 +1200 Subject: [PATCH 109/790] Tidy up sql explain command --- lisp/init-sql.el | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 5dc029bba3..9fa1328cdb 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -67,12 +67,8 @@ SQLi session first, or otherwise set `sql-database' etc." (unless (eq sql-product 'postgres) (user-error "This command is for PostgreSQL only")) (unless (use-region-p) - (setq beg (save-excursion - (backward-paragraph) - (point)) - end (save-excursion - (forward-paragraph) - (point)))) + (setq beg (save-excursion (backward-paragraph) (point)) + end (save-excursion (forward-paragraph) (point)))) (let ((query (buffer-substring-no-properties beg end))) (with-current-buffer (if (sql-buffer-live-p sql-buffer) sql-buffer @@ -82,7 +78,6 @@ SQLi session first, or otherwise set `sql-database' etc." (concat "PGHOST=" sql-server) (concat "PGUSER=" sql-user)) process-environment)) - (out-buffer (get-buffer-create "*sql-explain-json*")) (args (list "--no-psqlrc" "-qAt" "-w" ; Never prompt for password @@ -90,21 +85,23 @@ SQLi session first, or otherwise set `sql-database' etc." "-c" (concat "EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON) " query ";") )) (err-file (make-temp-file "sql-explain-json"))) - (with-current-buffer out-buffer - (delete-region (point-min) (point-max))) - (let ((retcode (apply 'call-process sql-postgres-program nil (list out-buffer err-file) nil args))) - (if (zerop retcode) - (with-current-buffer out-buffer - (json-mode) - (if copy - (progn - (kill-ring-save (buffer-substring-no-properties (point-min) (point-max))) - (message "EXPLAIN output copied to kill-ring.")) - (display-buffer (current-buffer)))) - (display-buffer (with-current-buffer (get-buffer-create "*sql-explain-errors*") - (insert-file-contents err-file nil nil nil t) - (current-buffer))) - (error "Explain failed"))))))) + (with-current-buffer (get-buffer-create "*sql-explain-json*") + (setq buffer-read-only nil) + (delete-region (point-min) (point-max)) + (let ((retcode (apply 'call-process sql-postgres-program nil (list (current-buffer) err-file) nil args))) + (if (zerop retcode) + (progn + (json-mode) + (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)))) + (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)) + (user-error "EXPLAIN failed"))))))))) From b40c2bb1240d1debce3451c632931b5d5d8b33e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=94=E4=BB=99=E7=81=B5=E6=A2=A6?= Date: Mon, 17 Jul 2017 10:16:34 +0800 Subject: [PATCH 110/790] Make Directory Local Variables conform to standard specifications --- lisp/.dir-locals.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/.dir-locals.el b/lisp/.dir-locals.el index 9639f386e0..3e3da00136 100644 --- a/lisp/.dir-locals.el +++ b/lisp/.dir-locals.el @@ -1 +1,5 @@ -((emacs-lisp-mode . ((no-byte-compile t)))) +;;; Directory Local Variables +;;; For more information see (info "(emacs) Directory Variables") + +((emacs-lisp-mode + (no-byte-compile . t))) From 7993780fd3d3c6858ff8e6401274463c46c4db3c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Aug 2017 13:33:05 +1200 Subject: [PATCH 111/790] Don't override completion-cycle-threshold Closes #472 --- lisp/init-company.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index e29fbd5a2a..ba2fe1f2ea 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -3,9 +3,6 @@ (setq tab-always-indent 'complete) (add-to-list 'completion-styles 'initials t) -;; Stop completion-at-point from popping up completion buffers so eagerly -(setq completion-cycle-threshold 5) - (when (maybe-require-package 'company) (add-hook 'after-init-hook 'global-company-mode) From 9405420c7270e1d87b9870f96bed7d3459daaec8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 2 Aug 2017 13:38:54 +1200 Subject: [PATCH 112/790] Bind C-; to avy-goto-char-timer instead of avy-goto-word-or-subword-1 --- 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 4b10c80100..4a8ff6ad8b 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -157,7 +157,7 @@ (global-set-key (kbd "C-x C-.") 'pop-global-mark) (when (maybe-require-package 'avy) - (global-set-key (kbd "C-;") 'avy-goto-word-or-subword-1)) + (global-set-key (kbd "C-;") 'avy-goto-char-timer)) (require-package 'multiple-cursors) ;; multiple-cursors From 2ae1b66dcb845bea84d9943d4bf44bd5f117f7ac Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 8 Aug 2017 12:14:40 +1200 Subject: [PATCH 113/790] Remove indicate-empty-lines This had no effect in recent Emacsen, where default-indicate-empty-lines is used instead. I've survived happily without it for a while now. Closes #475 --- lisp/init-gui-frames.el | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 5ffa034482..54b530cff4 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -18,12 +18,6 @@ (setq inhibit-startup-echo-area-message t) -;;---------------------------------------------------------------------------- -;; Show a marker in the left fringe for lines not in the buffer -;;---------------------------------------------------------------------------- -(setq indicate-empty-lines t) - - ;;---------------------------------------------------------------------------- ;; Window size and features ;;---------------------------------------------------------------------------- From ecf17becbdb3d6e50b62938ff4ec5dfba3c915ff Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 8 Aug 2017 12:27:39 +1200 Subject: [PATCH 114/790] Disable flyspell's binding of C-; if enabled (fixes #476) --- lisp/init-flyspell.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-flyspell.el b/lisp/init-flyspell.el index 25eb29bc51..4c64393e1c 100644 --- a/lisp/init-flyspell.el +++ b/lisp/init-flyspell.el @@ -4,6 +4,7 @@ (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)) From f536acf0448c018b7bcc0fe32fa6f2168318a683 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 9 Aug 2017 16:12:13 +1200 Subject: [PATCH 115/790] Change projectile modeline lighter and use non-aliased mode name --- lisp/init-projectile.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index 3e48c4bc50..5d6a0be34a 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -1,5 +1,5 @@ (when (maybe-require-package 'projectile) - (add-hook 'after-init-hook 'projectile-global-mode) + (add-hook 'after-init-hook 'projectile-mode) ;; The following code means you get a menu if you hit "C-c p" and wait (after-load 'guide-key @@ -11,8 +11,8 @@ projectile-mode-line '(:eval (if (file-remote-p default-directory) - " Pr" - (format " Pr[%s]" (projectile-project-name))))))) + " Proj" + (format " Proj[%s]" (projectile-project-name))))))) (provide 'init-projectile) From 4a9b122c618648a60f929a61a6cd273a70cd1139 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 9 Aug 2017 19:00:07 +1200 Subject: [PATCH 116/790] Drop rinari for Rails work: projectile-rails is sufficient --- lisp/init-rails.el | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lisp/init-rails.el b/lisp/init-rails.el index 6d80498fe8..4b02d20ee5 100644 --- a/lisp/init-rails.el +++ b/lisp/init-rails.el @@ -1,13 +1,3 @@ -(when (maybe-require-package 'rinari) - (after-load 'rinari - (diminish 'rinari-minor-mode "Rin")) - (global-rinari-mode)) - -(defun update-rails-ctags () - (interactive) - (let ((default-directory (or (rinari-root) default-directory))) - (shell-command (concat "ctags -a -e -f " rinari-tags-file-name " --tag-relative -R app lib vendor test")))) - (when (maybe-require-package 'projectile-rails) (after-load 'projectile (add-hook 'projectile-mode-hook 'projectile-rails-on) From 1e6f2081998d3466cf0ab6d81bd64a288a67b877 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 10 Aug 2017 17:39:01 +1200 Subject: [PATCH 117/790] Enable writeroom-mode in prose-mode Previously I would often use the two together, but I never use prose-mode without writeroom-mode, so let's make the former enable and disable the latter. --- lisp/init-org.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index ca1196f1d3..3b875f37a6 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -49,6 +49,8 @@ +(require-package 'writeroom-mode) + (define-minor-mode prose-mode "Set up a buffer for prose editing. This enables or modifies a number of settings so that the @@ -57,6 +59,7 @@ typical word processor." nil " Prose" nil (if prose-mode (progn + (writeroom-mode 1) (setq truncate-lines nil) (setq word-wrap t) (setq cursor-type 'bar) @@ -75,7 +78,8 @@ typical word processor." (buffer-face-mode -1) ;; (delete-selection-mode -1) (flyspell-mode -1) - (visual-line-mode -1))) + (visual-line-mode -1) + (writeroom-mode 0))) ;;(add-hook 'org-mode-hook 'buffer-face-mode) From 7df90638758393f192a0bef992d0b86ac491bbcc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 10 Aug 2017 18:12:07 +1200 Subject: [PATCH 118/790] org-fstree now requires newer Emacs versions, so make it a soft-dependency --- 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 3b875f37a6..59985ff14c 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -1,4 +1,4 @@ -(require-package 'org-fstree) +(maybe-require-package 'org-fstree) (when *is-a-mac* (maybe-require-package 'grab-mac-link) (require-package 'org-mac-iCal)) From 70a6a8af3854a20650eaed503024d6d83f68213b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 11 Aug 2017 12:03:37 +1200 Subject: [PATCH 119/790] Autoload vc-git-root function (fixes #478) --- lisp/init-git.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-git.el b/lisp/init-git.el index 4b61be106e..f034046798 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -62,6 +62,8 @@ "^ \\([a-z\\-]+\\) +" (shell-command-to-string "git svn help") 1)))) +(autoload 'vc-git-root "vc-git") + (defun git-svn (dir command) "Run a git svn subcommand in DIR." (interactive (list (read-directory-name "Directory: ") From 95c5531d72b9cb1a52d8db2523a7dcfbf6c177ba Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 11 Aug 2017 12:36:37 +1200 Subject: [PATCH 120/790] Add "C-x v" bindings via vc-prefix-map --- lisp/init-git.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/init-git.el b/lisp/init-git.el index f034046798..e9daa4aca3 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -34,7 +34,8 @@ ;; Convenient binding for vc-git-grep -(global-set-key (kbd "C-x v f") 'vc-git-grep) +(after-load 'vc + (define-key vc-prefix-map (kbd "f") 'vc-git-grep)) @@ -75,7 +76,8 @@ (maybe-require-package 'git-messenger) ;; Though see also vc-annotate's "n" & "p" bindings -(global-set-key (kbd "C-x v p") #'git-messenger:popup-message) +(after-load 'vc + (define-key vc-prefix-map (kbd "p") #'git-messenger:popup-message)) (provide 'init-git) From ab7d4ec2b668799854150005ee6706f7a6c56bca Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 11 Aug 2017 12:36:56 +1200 Subject: [PATCH 121/790] Show detail in git-messenger popups --- lisp/init-git.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-git.el b/lisp/init-git.el index e9daa4aca3..e3a040ceae 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -77,6 +77,7 @@ (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)) From 5826fca63296d060d2b1a52ff9bc8166606db7cd Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Aug 2017 14:37:48 +1200 Subject: [PATCH 122/790] Drop hl-sexp --- lisp/init-lisp.el | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 1f3aefba46..34fc0867c1 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -99,18 +99,7 @@ ;; ---------------------------------------------------------------------------- (setq load-prefer-newer t) -;; ---------------------------------------------------------------------------- -;; Highlight current sexp -;; ---------------------------------------------------------------------------- - -(require-package 'hl-sexp) - -;; Prevent flickery behaviour due to hl-sexp-mode unhighlighting before each command -(after-load 'hl-sexp - (defadvice hl-sexp-mode (after unflicker (&optional turn-on) activate) - (when turn-on - (remove-hook 'pre-command-hook #'hl-sexp-unhighlight)))) - + (require-package 'immortal-scratch) (add-hook 'after-init-hook 'immortal-scratch-mode) From a163ed9d1e6084895ee6e7412f06fdbb6993a14a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Aug 2017 14:38:14 +1200 Subject: [PATCH 123/790] Prefer my M-? binding to intero's --- lisp/init-haskell.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 71cc73e1ef..6aa8dfc863 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -13,6 +13,8 @@ (intero-global-mode) (add-hook 'haskell-mode-hook 'eldoc-mode)) (after-load 'intero + ;; Don't clobber counsel-ag binding + (define-key intero-mode-map (kbd "M-?") nil) (after-load 'flycheck (flycheck-add-next-checker 'intero '(warning . haskell-hlint))))) From 5443feaaddb107ca1415d9d69b72081a927d54bc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 13 Aug 2017 20:57:19 +1200 Subject: [PATCH 124/790] Handle when writeroom-mode is unavailable (in Emacs <= 24.3) --- lisp/init-org.el | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index 59985ff14c..3859424661 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -49,7 +49,7 @@ -(require-package 'writeroom-mode) +(maybe-require-package 'writeroom-mode) (define-minor-mode prose-mode "Set up a buffer for prose editing. @@ -59,7 +59,8 @@ typical word processor." nil " Prose" nil (if prose-mode (progn - (writeroom-mode 1) + (when (fboundp 'writeroom-mode) + (writeroom-mode 1)) (setq truncate-lines nil) (setq word-wrap t) (setq cursor-type 'bar) @@ -79,7 +80,8 @@ typical word processor." ;; (delete-selection-mode -1) (flyspell-mode -1) (visual-line-mode -1) - (writeroom-mode 0))) + (when (fboundp 'writeroom-mode) + (writeroom-mode 0)))) ;;(add-hook 'org-mode-hook 'buffer-face-mode) From 53305b7837b1d87a6e5c00a992b27f156acb01eb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 16 Aug 2017 11:43:56 +1200 Subject: [PATCH 125/790] Add typescript-mode --- lisp/init-javascript.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 8e871b2383..0b47c65deb 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -1,6 +1,7 @@ (maybe-require-package 'json-mode) (maybe-require-package 'js2-mode) (maybe-require-package 'coffee-mode) +(maybe-require-package 'typescript-mode) (defcustom preferred-javascript-mode (first (remove-if-not #'fboundp '(js2-mode js-mode))) From 65aff10861a70935ce55fc0fc350c0dd26e2368b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 16 Aug 2017 23:08:47 +1200 Subject: [PATCH 126/790] Remove defunct comment --- lisp/init-javascript.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 0b47c65deb..02a6e1cf73 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -50,7 +50,6 @@ (add-to-list 'interpreter-mode-alist (cons "node" preferred-javascript-mode)) -;; Javascript nests {} and () a lot, so I find this helpful (when (and (executable-find "ag") (maybe-require-package 'xref-js2)) From 1e089c5df98e762bbb83a2b0353654ed6a2db34c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 16 Aug 2017 23:09:05 +1200 Subject: [PATCH 127/790] Drop indent-guide, which I really don't use --- 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 4a8ff6ad8b..949f21b0a1 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -67,13 +67,6 @@ -(when (maybe-require-package 'indent-guide) - (add-hook 'prog-mode-hook 'indent-guide-mode) - (after-load 'indent-guide - (diminish 'indent-guide-mode))) - - - (require-package 'nlinum) From aeb38a8be8af852068fe169fff763e6d304769a9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 17 Aug 2017 08:58:23 +1200 Subject: [PATCH 128/790] Add prettier-js --- lisp/init-javascript.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 02a6e1cf73..cdd0985c5e 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -2,6 +2,7 @@ (maybe-require-package 'js2-mode) (maybe-require-package 'coffee-mode) (maybe-require-package 'typescript-mode) +(maybe-require-package 'prettier-js) (defcustom preferred-javascript-mode (first (remove-if-not #'fboundp '(js2-mode js-mode))) From 7369d567b551984ff6a4049483423448ac87f163 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 17 Aug 2017 08:58:43 +1200 Subject: [PATCH 129/790] Add add-node-modules-path --- lisp/init-javascript.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index cdd0985c5e..c733bfad05 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -101,4 +101,12 @@ (lambda () (inferior-js-keys-mode -1))))) + +(when (maybe-require-package 'add-node-modules-path) + (after-load 'typescript-mode + (add-hook 'typescript-mode-hook 'add-node-modules-path)) + (after-load 'js2-mode + (add-hook 'js2-mode-hook 'add-node-modules-path))) + + (provide 'init-javascript) From b7fab2359ddc16528551ae9e6c9fbe45d123b0b7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 18 Aug 2017 18:06:41 +1200 Subject: [PATCH 130/790] Disable crontab support, due to removal from MELPA See https://github.com/melpa/melpa/commit/c3366117f3399660509f62849a88dc8be56a1fef --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index b864279f16..5cc2ce3f58 100644 --- a/init.el +++ b/init.el @@ -82,7 +82,7 @@ (require 'init-projectile) (require 'init-compile) -(require 'init-crontab) +;;(require 'init-crontab) (require 'init-textile) (require 'init-markdown) (require 'init-csv) From 9ec2013e377a7135c47417ef99720f5b368f04c1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 20 Aug 2017 12:37:01 +1200 Subject: [PATCH 131/790] Remove lively.el, which has been removed from MELPA upstream Closes #481 --- lisp/init-lisp.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 34fc0867c1..b8d16d956f 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -3,8 +3,6 @@ (add-hook hook 'turn-on-elisp-slime-nav-mode)) (add-hook 'emacs-lisp-mode-hook (lambda () (setq mode-name "ELisp"))) -(require-package 'lively) - (setq-default initial-scratch-message (concat ";; Happy hacking, " user-login-name " - Emacs ♥ you!\n\n")) From 7fe013c6bf56f18a336e96b003d54a9282be9aec Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 20 Aug 2017 21:55:47 +1200 Subject: [PATCH 132/790] Remove code in ivy config that disables ido Closes #484 --- lisp/init-ivy.el | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 6a6f04cebe..a506964872 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -23,15 +23,7 @@ (interactive) (require-package 'flx) (setq-default ivy-re-builders-alist - '((t . ivy--regex-fuzzy)))) - - (add-hook 'after-init-hook - (lambda () - (when (bound-and-true-p ido-ubiquitous-mode) - (ido-ubiquitous-mode -1)) - (when (bound-and-true-p ido-mode) - (ido-mode -1)) - (ivy-mode 1)))) + '((t . ivy--regex-fuzzy))))) (when (maybe-require-package 'ivy-historian) (add-hook 'after-init-hook (lambda () (ivy-historian-mode t)))) From ae11b1848c0d9718ec0c2ca8ccd57234bc0a8258 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 20 Aug 2017 21:56:13 +1200 Subject: [PATCH 133/790] Add more guide-key sequences for projectile-rails --- lisp/init-rails.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-rails.el b/lisp/init-rails.el index 4b02d20ee5..c01c675ef5 100644 --- a/lisp/init-rails.el +++ b/lisp/init-rails.el @@ -2,7 +2,9 @@ (after-load 'projectile (add-hook 'projectile-mode-hook 'projectile-rails-on) (after-load 'guide-key - (add-to-list 'guide-key/guide-key-sequence "C-c r")))) + (add-to-list 'guide-key/guide-key-sequence "C-c r") + (add-to-list 'guide-key/guide-key-sequence "C-c r !") + (add-to-list 'guide-key/guide-key-sequence "C-c r g")))) (provide 'init-rails) From c0b36ccd87f660cde1b6caa692a3195a24c3ce3c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 21 Aug 2017 13:56:03 +1200 Subject: [PATCH 134/790] Add toml-mode --- init.el | 1 + 1 file changed, 1 insertion(+) diff --git a/init.el b/init.el index 5cc2ce3f58..0e43c056ba 100644 --- a/init.el +++ b/init.el @@ -101,6 +101,7 @@ (require 'init-ruby-mode) (require 'init-rails) (require 'init-sql) +(require-package 'toml-mode) (require 'init-paredit) (require 'init-lisp) From b12de7499de3a04cc4b6768ca0eddae622d54434 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 22 Aug 2017 11:45:47 +1200 Subject: [PATCH 135/790] Soft-require toml-mode --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index 0e43c056ba..0bd05a94a4 100644 --- a/init.el +++ b/init.el @@ -101,7 +101,7 @@ (require 'init-ruby-mode) (require 'init-rails) (require 'init-sql) -(require-package 'toml-mode) +(maybe-require-package 'toml-mode) (require 'init-paredit) (require 'init-lisp) From 473faea6191d2ff1711fed418cd774d0fb726701 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 22 Aug 2017 11:46:05 +1200 Subject: [PATCH 136/790] Require terraform-mode --- init.el | 1 + 1 file changed, 1 insertion(+) diff --git a/init.el b/init.el index 0bd05a94a4..35ffdd30e6 100644 --- a/init.el +++ b/init.el @@ -102,6 +102,7 @@ (require 'init-rails) (require 'init-sql) (maybe-require-package 'toml-mode) +(maybe-require-package 'terraform-mode) (require 'init-paredit) (require 'init-lisp) From fae0b8483817baf56ccdaa0cb0f736d850763159 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 22 Aug 2017 11:46:19 +1200 Subject: [PATCH 137/790] Add docker tools --- init.el | 1 + lisp/init-docker.el | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 lisp/init-docker.el diff --git a/init.el b/init.el index 35ffdd30e6..1a1fd8a1ad 100644 --- a/init.el +++ b/init.el @@ -102,6 +102,7 @@ (require 'init-rails) (require 'init-sql) (maybe-require-package 'toml-mode) +(require 'init-docker) (maybe-require-package 'terraform-mode) (require 'init-paredit) diff --git a/lisp/init-docker.el b/lisp/init-docker.el new file mode 100644 index 0000000000..4224ea3edd --- /dev/null +++ b/lisp/init-docker.el @@ -0,0 +1,5 @@ +(maybe-require-package 'docker) +(maybe-require-package 'dockerfile-mode) + + +(provide 'init-docker) From 70dfcb9975fd302a3bb7b4a5629f3be7c2e4a24f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 22 Aug 2017 11:46:54 +1200 Subject: [PATCH 138/790] Add basic rust config --- init.el | 1 + lisp/init-local.el | 6 ++++++ lisp/init-rust.el | 7 +++++++ 3 files changed, 14 insertions(+) create mode 100644 lisp/init-local.el create mode 100644 lisp/init-rust.el diff --git a/init.el b/init.el index 1a1fd8a1ad..fa85abedf6 100644 --- a/init.el +++ b/init.el @@ -101,6 +101,7 @@ (require 'init-ruby-mode) (require 'init-rails) (require 'init-sql) +(require 'init-rust) (maybe-require-package 'toml-mode) (require 'init-docker) (maybe-require-package 'terraform-mode) diff --git a/lisp/init-local.el b/lisp/init-local.el new file mode 100644 index 0000000000..f5eaa72342 --- /dev/null +++ b/lisp/init-local.el @@ -0,0 +1,6 @@ +(setq magit-repository-directories '(("~/Projects" . 1) ("~/Projects/External" . 1)) + org-default-notes-file "~/Documents/org/inbox.org" + org-directory "~/Documents/org" + exec-path-from-shell-arguments '("-i")) + +(provide 'init-local) diff --git a/lisp/init-rust.el b/lisp/init-rust.el new file mode 100644 index 0000000000..3256a8bdc4 --- /dev/null +++ b/lisp/init-rust.el @@ -0,0 +1,7 @@ +(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))) + + +(provide 'init-rust) From e8d706e388939bb0ad120c3d56fb137ac7b84ba0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 23 Aug 2017 13:22:07 +1200 Subject: [PATCH 139/790] Default elm-format-on-save to t --- lisp/init-elm.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-elm.el b/lisp/init-elm.el index 6073a37999..463e45fd33 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -1,4 +1,5 @@ (when (maybe-require-package 'elm-mode) + (setq-default elm-format-on-save t) (after-load 'elm-mode (diminish 'elm-indent-mode) (when (executable-find "elm-oracle") From 154fd43949a719217b4855c398d978d021c1e66b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 24 Aug 2017 09:52:38 +1200 Subject: [PATCH 140/790] Treat .md.html as markdown rather than html, to support markdeep --- lisp/init-markdown.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-markdown.el b/lisp/init-markdown.el index abd1c92a5d..001d49e95f 100644 --- a/lisp/init-markdown.el +++ b/lisp/init-markdown.el @@ -1,4 +1,5 @@ (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))) From 5463ef6abbb91be2bb35b7e9b5ff6b8f10566c42 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 24 Aug 2017 17:37:50 +1200 Subject: [PATCH 141/790] Move toml and yaml config to top-level init- files, and enable goto-address-prog-mode --- init.el | 3 ++- lisp/init-ruby-mode.el | 7 ------- lisp/init-toml.el | 5 +++++ lisp/init-yaml.el | 6 ++++++ 4 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 lisp/init-toml.el create mode 100644 lisp/init-yaml.el diff --git a/init.el b/init.el index fa85abedf6..59cac646f1 100644 --- a/init.el +++ b/init.el @@ -102,7 +102,8 @@ (require 'init-rails) (require 'init-sql) (require 'init-rust) -(maybe-require-package 'toml-mode) +(require 'init-toml) +(require 'init-yaml) (require 'init-docker) (maybe-require-package 'terraform-mode) diff --git a/lisp/init-ruby-mode.el b/lisp/init-ruby-mode.el index 4093b843c1..cac37cd165 100644 --- a/lisp/init-ruby-mode.el +++ b/lisp/init-ruby-mode.el @@ -70,13 +70,6 @@ (require-package 'bundler) - -;;; YAML - -(when (maybe-require-package 'yaml-mode) - (add-auto-mode 'yaml-mode "\\.yml\\.erb\\'")) - - ;;; ERB (require-package 'mmm-mode) diff --git a/lisp/init-toml.el b/lisp/init-toml.el new file mode 100644 index 0000000000..d5989dcd5c --- /dev/null +++ b/lisp/init-toml.el @@ -0,0 +1,5 @@ +(when (maybe-require-package 'toml-mode) + (add-hook 'toml-mode-hook 'goto-address-prog-mode)) + + +(provide 'init-toml) diff --git a/lisp/init-yaml.el b/lisp/init-yaml.el new file mode 100644 index 0000000000..3578142b34 --- /dev/null +++ b/lisp/init-yaml.el @@ -0,0 +1,6 @@ +(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) From 393fe510795c4d2cfb958f2863a0ec93431979d7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 24 Aug 2017 17:38:38 +1200 Subject: [PATCH 142/790] Mark up variable name in comment --- 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 3859424661..96b57bb32e 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -93,7 +93,7 @@ typical word processor." (global-set-key (kbd "C-c c") 'org-capture) (setq org-capture-templates - `(("t" "todo" entry (file "") ; "" => org-default-notes-file + `(("t" "todo" entry (file "") ; "" => `org-default-notes-file' "* NEXT %?\n%U\n" :clock-resume t) ("n" "note" entry (file "") "* %? :NOTE:\n%U\n%a\n" :clock-resume t) From 71a29ccd835d14cc6c96b5f61ba8364edb357b09 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 24 Aug 2017 17:38:48 +1200 Subject: [PATCH 143/790] Add guide-key prefix for artist-mode bindings --- 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 949f21b0a1..bf3e74d650 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -299,7 +299,7 @@ With arg N, insert N newlines." (require-package 'guide-key) -(setq guide-key/guide-key-sequence '("C-x" "C-c" "C-x 4" "C-x 5" "C-c ;" "C-c ; f" "C-c ' f" "C-x n" "C-x C-r" "C-x r" "M-s" "C-h")) +(setq guide-key/guide-key-sequence '("C-x" "C-c" "C-x 4" "C-x 5" "C-c ;" "C-c ; f" "C-c ' f" "C-x n" "C-x C-r" "C-x r" "M-s" "C-h" "C-c C-a")) (add-hook 'after-init-hook (lambda () (guide-key-mode 1) From 50f6e108363435a389391de85f02a36091a2202b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 24 Aug 2017 21:38:06 +1200 Subject: [PATCH 144/790] Remove accidentally-committed init-local.el --- lisp/init-local.el | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 lisp/init-local.el diff --git a/lisp/init-local.el b/lisp/init-local.el deleted file mode 100644 index f5eaa72342..0000000000 --- a/lisp/init-local.el +++ /dev/null @@ -1,6 +0,0 @@ -(setq magit-repository-directories '(("~/Projects" . 1) ("~/Projects/External" . 1)) - org-default-notes-file "~/Documents/org/inbox.org" - org-directory "~/Documents/org" - exec-path-from-shell-arguments '("-i")) - -(provide 'init-local) From 528ca470c6258101ebc6e69fd0092d8384122112 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 24 Aug 2017 22:50:00 +1200 Subject: [PATCH 145/790] Enable rainbow-mode in help-mode --- 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 b8d16d956f..aac2b873aa 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -245,7 +245,8 @@ (add-hook 'emacs-lisp-mode-hook 'sanityinc/run-theme-mode-hooks-if-theme t) (when (maybe-require-package 'rainbow-mode) - (add-hook 'sanityinc/theme-mode-hook 'rainbow-mode)) + (add-hook 'sanityinc/theme-mode-hook 'rainbow-mode) + (add-hook 'help-mode-hook 'rainbow-mode)) (when (maybe-require-package 'aggressive-indent) ;; Can be prohibitively slow with very long forms From dd841563b56f021069b973a9d311cf285dec1165 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 27 Aug 2017 17:17:00 +1200 Subject: [PATCH 146/790] Remove defunct comment --- lisp/init-fonts.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-fonts.el b/lisp/init-fonts.el index b5f0498360..6d41a8a1ce 100644 --- a/lisp/init-fonts.el +++ b/lisp/init-fonts.el @@ -1,6 +1,3 @@ -;;; Character sets - - ;;; Changing font sizes (require-package 'default-text-scale) From 52bd914f2b935e490b315d83850726c41038c781 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 27 Aug 2017 17:17:06 +1200 Subject: [PATCH 147/790] Use new global default-text-scale-mode --- lisp/init-fonts.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-fonts.el b/lisp/init-fonts.el index 6d41a8a1ce..1a94558111 100644 --- a/lisp/init-fonts.el +++ b/lisp/init-fonts.el @@ -1,8 +1,7 @@ ;;; Changing font sizes (require-package 'default-text-scale) -(global-set-key (kbd "C-M-=") 'default-text-scale-increase) -(global-set-key (kbd "C-M--") 'default-text-scale-decrease) +(add-hook 'after-init-hook 'default-text-scale-mode) (defun sanityinc/maybe-adjust-visual-fill-column () From 6d9439b74153f91f614bba48b734a43e8cacf57e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 27 Aug 2017 17:18:24 +1200 Subject: [PATCH 148/790] Keep gc-cons-threshold increased even after start-up --- init.el | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/init.el b/init.el index 59cac646f1..653a6e74bb 100644 --- a/init.el +++ b/init.el @@ -1,3 +1,4 @@ +;; -*- lexical-binding: t -*- ;;; This file bootstraps the configuration, which is divided into ;;; a number of other files. @@ -15,13 +16,13 @@ (defconst *is-a-mac* (eq system-type 'darwin)) ;;---------------------------------------------------------------------------- -;; Temporarily reduce garbage collection during startup +;; Adjust garbage collection thresholds during startup, and thereafter ;;---------------------------------------------------------------------------- -(defconst sanityinc/initial-gc-cons-threshold gc-cons-threshold - "Initial value of `gc-cons-threshold' at start-up time.") -(setq gc-cons-threshold (* 128 1024 1024)) -(add-hook 'after-init-hook - (lambda () (setq gc-cons-threshold sanityinc/initial-gc-cons-threshold))) +(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 'after-init-hook + (lambda () (setq gc-cons-threshold normal-gc-cons-threshold)))) ;;---------------------------------------------------------------------------- ;; Bootstrap config From 4eeb2763de1df230b1975cb390bdc0fb64f2b4a8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 27 Aug 2017 19:57:27 +1200 Subject: [PATCH 149/790] Don't install nlinum in Emacs 26, where there's display-line-numbers-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 bf3e74d650..ae5131d0e8 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -67,7 +67,8 @@ -(require-package 'nlinum) +(unless (fboundp 'display-line-numbers-mode) + (require-package 'nlinum)) (when (require-package 'rainbow-delimiters) From 2452041f8fe57cccb174779d167893168b3e7444 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 2 Sep 2017 18:31:16 +1200 Subject: [PATCH 150/790] Provide a tabulated-list view of require times --- lisp/init-benchmarking.el | 46 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/lisp/init-benchmarking.el b/lisp/init-benchmarking.el index c3885dbf0e..7fecb7e58c 100644 --- a/lisp/init-benchmarking.el +++ b/lisp/init-benchmarking.el @@ -3,7 +3,7 @@ (defvar sanityinc/require-times nil - "A list of (FEATURE . LOAD-DURATION). + "A list of (FEATURE LOAD-START-TIME LOAD-DURATION). LOAD-DURATION is the time taken in milliseconds to load FEATURE.") (defadvice require (around sanityinc/build-require-times (feature &optional filename noerror) activate) @@ -15,9 +15,51 @@ LOAD-DURATION is the time taken in milliseconds to load FEATURE.") (when (and (not already-loaded) (memq feature features)) (let ((time (sanityinc/time-subtract-millis (current-time) require-start-time))) (add-to-list 'sanityinc/require-times - (cons feature time) + (list feature require-start-time time) t)))))) + +(define-derived-mode sanityinc/require-times-mode tabulated-list-mode "Require-Times" + "Show times taken to `require' packages." + (setq tabulated-list-format + [("Start time (ms)" 20 sanityinc/require-times-sort-by-start-time-pred) + ("Feature" 30 t) + ("Time (ms)" 12 sanityinc/require-times-sort-by-load-time-pred)]) + (setq tabulated-list-sort-key (cons "Start time (ms)" nil)) + ;; (setq tabulated-list-padding 2) + (setq tabulated-list-entries #'sanityinc/require-times-tabulated-list-entries) + (tabulated-list-init-header) + (tablist-minor-mode)) + +(defun sanityinc/require-times-sort-by-start-time-pred (entry1 entry2) + (< (string-to-number (elt (nth 1 entry1) 0)) + (string-to-number (elt (nth 1 entry2) 0)))) + +(defun sanityinc/require-times-sort-by-load-time-pred (entry1 entry2) + (> (string-to-number (elt (nth 1 entry1) 2)) + (string-to-number (elt (nth 1 entry2) 2)))) + +(defun sanityinc/require-times-tabulated-list-entries () + (cl-loop for (feature start-time millis) in sanityinc/require-times + with order = 0 + do (incf order) + collect (list order + (vector + (format "%.3f" (sanityinc/time-subtract-millis start-time before-init-time)) + (symbol-name feature) + (format "%.3f" millis))))) + +(defun sanityinc/require-times () + "Show a tabular view of how long various libraries took to load." + (interactive) + (with-current-buffer (get-buffer-create "*Require Times*") + (sanityinc/require-times-mode) + (tabulated-list-revert) + (display-buffer (current-buffer)))) + + + + (defun sanityinc/show-init-time () (message "init completed in %.2fms" (sanityinc/time-subtract-millis after-init-time before-init-time))) From d277fea13dfdd8a9053b2262d5407325fb9ce02d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 4 Sep 2017 10:28:10 +1200 Subject: [PATCH 151/790] Add docker-compose-mode --- lisp/init-docker.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-docker.el b/lisp/init-docker.el index 4224ea3edd..b138cd9073 100644 --- a/lisp/init-docker.el +++ b/lisp/init-docker.el @@ -1,5 +1,6 @@ (maybe-require-package 'docker) (maybe-require-package 'dockerfile-mode) +(maybe-require-package 'docker-compose-mode) (provide 'init-docker) From 74504dd6e46c240a2a621133a9265078b1aa4eed Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 4 Sep 2017 15:19:39 +1200 Subject: [PATCH 152/790] Add ob-plantuml support for diagramming in org --- .gitignore | 1 + lisp/init-org.el | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/.gitignore b/.gitignore index 4d6357ce33..475528e8a0 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,4 @@ site-lisp/package/ /.historian /.uptimes.el /rake.cache +/plantuml.jar diff --git a/lisp/init-org.el b/lisp/init-org.el index 96b57bb32e..05f4c60c71 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -47,6 +47,15 @@ (unless (file-exists-p org-ditaa-jar-path) (sanityinc/grab-ditaa url jar-name))))) +(after-load 'ob-plantuml + (let ((jar-name "plantuml.jar") + (url "https://phoenixnap.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)))) + + + (maybe-require-package 'writeroom-mode) @@ -368,6 +377,7 @@ typical word processor." (ledger . t) (ocaml . nil) (octave . t) + (plantuml . t) (python . t) (ruby . t) (screen . nil) From 82a058a4dde20afe9b144d8378f4363d5086f952 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 5 Sep 2017 13:57:41 +1200 Subject: [PATCH 153/790] Remove fci (fill-column-indicator) --- init.el | 1 - lisp/init-fci.el | 38 -------------------------------------- 2 files changed, 39 deletions(-) delete mode 100644 lisp/init-fci.el diff --git a/init.el b/init.el index 653a6e74bb..1cdec11789 100644 --- a/init.el +++ b/init.el @@ -73,7 +73,6 @@ (require 'init-editing-utils) (require 'init-whitespace) -(require 'init-fci) (require 'init-vc) (require 'init-darcs) diff --git a/lisp/init-fci.el b/lisp/init-fci.el deleted file mode 100644 index f01a4d5cf3..0000000000 --- a/lisp/init-fci.el +++ /dev/null @@ -1,38 +0,0 @@ -;; Fill column indicator -(require-package 'fill-column-indicator) -(defun sanityinc/prog-mode-fci-settings () - (turn-on-fci-mode) - (when show-trailing-whitespace - (set (make-local-variable 'whitespace-style) '(face trailing)) - (whitespace-mode 1))) - -;;(add-hook 'prog-mode-hook 'sanityinc/prog-mode-fci-settings) - -(defun sanityinc/fci-enabled-p () - (bound-and-true-p fci-mode)) - -(defvar sanityinc/fci-mode-suppressed nil) -(make-variable-buffer-local 'sanityinc/fci-mode-suppressed) - -(defadvice popup-create (before suppress-fci-mode activate) - "Suspend fci-mode while popups are visible" - (let ((fci-enabled (sanityinc/fci-enabled-p))) - (when fci-enabled - (setq sanityinc/fci-mode-suppressed fci-enabled) - (turn-off-fci-mode)))) -(defadvice popup-delete (after restore-fci-mode activate) - "Restore fci-mode when all popups have closed" - (when (and sanityinc/fci-mode-suppressed - (null popup-instances)) - (setq sanityinc/fci-mode-suppressed nil) - (turn-on-fci-mode))) - -;; Regenerate fci-mode line images after switching themes -(defadvice enable-theme (after recompute-fci-face activate) - (dolist (buffer (buffer-list)) - (with-current-buffer buffer - (when (sanityinc/fci-enabled-p) - (turn-on-fci-mode))))) - - -(provide 'init-fci) From 18b838e0a1a0f25d4c6ebe8aa73ed653eff19216 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 5 Sep 2017 17:26:38 +1200 Subject: [PATCH 154/790] Enabled company-tooltip-align-annotations by default See #491 --- lisp/init-company.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index ba2fe1f2ea..f46beee7aa 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -13,7 +13,8 @@ (define-key company-active-map (kbd "C-n") 'company-select-next) (define-key company-active-map (kbd "C-p") 'company-select-previous) (setq-default company-backends '((company-capf company-dabbrev-code) company-dabbrev) - company-dabbrev-other-buffers 'all)) + 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)) From 5c222c744e3471290edd2b60f075f05c703b84a4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 6 Sep 2017 09:59:11 +1200 Subject: [PATCH 155/790] Properly enable projectile-rails alongside projectile --- lisp/init-rails.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-rails.el b/lisp/init-rails.el index c01c675ef5..7310c11956 100644 --- a/lisp/init-rails.el +++ b/lisp/init-rails.el @@ -1,6 +1,7 @@ (when (maybe-require-package 'projectile-rails) + (add-hook 'projectile-mode-hook + (lambda () (projectile-rails-global-mode projectile-mode))) (after-load 'projectile - (add-hook 'projectile-mode-hook 'projectile-rails-on) (after-load 'guide-key (add-to-list 'guide-key/guide-key-sequence "C-c r") (add-to-list 'guide-key/guide-key-sequence "C-c r !") From 1f3f5da0a7d4c62ed57d0645b235a84c1f6fd9e9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 7 Sep 2017 09:09:59 +1200 Subject: [PATCH 156/790] Drop defunct TAB binding in ruby-mode --- lisp/init-ruby-mode.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-ruby-mode.el b/lisp/init-ruby-mode.el index cac37cd165..4dc0204c09 100644 --- a/lisp/init-ruby-mode.el +++ b/lisp/init-ruby-mode.el @@ -13,8 +13,6 @@ ruby-insert-encoding-magic-comment nil) (after-load 'ruby-mode - (define-key ruby-mode-map (kbd "TAB") 'indent-for-tab-command) - ;; Stupidly the non-bundled ruby-mode isn't a derived mode of ;; prog-mode: we run the latter's hooks anyway in that case. (add-hook 'ruby-mode-hook From 18c6a6dffea2d4835fa638a04744ed007b1d127e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 7 Sep 2017 09:10:16 +1200 Subject: [PATCH 157/790] "node" is a better choice than "js" for inferior-js-program-command --- 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 c733bfad05..f4871aa7a6 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -75,7 +75,7 @@ ;; --------------------------------------------------------------------------- (when (maybe-require-package 'js-comint) - (setq inferior-js-program-command "js") + (setq inferior-js-program-command "node") (defvar inferior-js-minor-mode-map (make-sparse-keymap)) (define-key inferior-js-minor-mode-map "\C-x\C-e" 'js-send-last-sexp) From 2f0805d41dd7f1abd3fd21a0a56ecc21408140f6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 8 Sep 2017 20:20:33 +1200 Subject: [PATCH 158/790] Use ripgrep for M-? if available, and fall back to ag, pt, ack --- lisp/init-haskell.el | 2 +- lisp/init-ivy.el | 34 +++++++++++++++++++++------------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 6aa8dfc863..5b4992bee8 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -13,7 +13,7 @@ (intero-global-mode) (add-hook 'haskell-mode-hook 'eldoc-mode)) (after-load 'intero - ;; Don't clobber counsel-ag binding + ;; Don't clobber sanityinc/counsel-search-project binding (define-key intero-mode-map (kbd "M-?") nil) (after-load 'flycheck (flycheck-add-next-checker 'intero diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index a506964872..f82fa94258 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -1,3 +1,4 @@ +;;; -*- lexical-binding: t -*- (when (maybe-require-package 'ivy) (after-load 'ivy (setq-default ivy-use-virtual-buffers t @@ -35,22 +36,29 @@ (diminish 'counsel-mode))) (add-hook 'after-init-hook 'counsel-mode) - (when (and (executable-find "ag") (maybe-require-package 'projectile)) - (defun sanityinc/counsel-ag-project (initial-input &optional use-current-dir) - "Search using `counsel-ag' from the project root for INITIAL-INPUT. + (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-ag' 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 (thing-at-point 'symbol) - current-prefix-arg)) - (let ((current-prefix-arg) - (dir (if use-current-dir - default-directory - (condition-case err - (projectile-project-root) - (error default-directory))))) - (counsel-ag initial-input dir))) - (global-set-key (kbd "M-?") 'sanityinc/counsel-ag-project))) + (interactive (list (thing-at-point 'symbol) + 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))))) + (global-set-key (kbd "M-?") 'sanityinc/counsel-search-project))) (when (maybe-require-package 'swiper) From f3dbbc57f4e0da6fb12fd3511f5fbf8c7dcb69c6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 8 Sep 2017 20:25:34 +1200 Subject: [PATCH 159/790] Install rg.el if "rg" is available --- lisp/init-grep.el | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lisp/init-grep.el b/lisp/init-grep.el index 86b09f7a68..838ec358ea 100644 --- a/lisp/init-grep.el +++ b/lisp/init-grep.el @@ -4,11 +4,15 @@ (when *is-a-mac* (setq-default locate-command "mdfind")) -(when (executable-find "ag") - (require-package 'ag) +(when (and (executable-find "ag") + (maybe-require-package 'ag)) (require-package 'wgrep-ag) (setq-default ag-highlight-search t) (global-set-key (kbd "M-?") 'ag-project)) +(when (and (executable-find "rg") + (maybe-require-package 'rg)) + (global-set-key (kbd "M-?") 'rg-project)) + (provide 'init-grep) From 12298bf0f7e147072134cb28361c4b96480d1b4c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 8 Sep 2017 21:49:44 +1200 Subject: [PATCH 160/790] Update copyright years --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 3fdd239327..c52ae92191 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2006-2016, Steve Purcell +Copyright (c) 2006-2017, Steve Purcell All rights reserved. Redistribution and use in source and binary forms, with or without From 2c5d553cd68aaf532e87e459083a3727f9306eba Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 8 Sep 2017 22:31:29 +1200 Subject: [PATCH 161/790] Use the same sourceforge mirror for both plantuml.jar and ditaa.jar --- 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 05f4c60c71..0be9167d1c 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -49,7 +49,7 @@ (after-load 'ob-plantuml (let ((jar-name "plantuml.jar") - (url "https://phoenixnap.dl.sourceforge.net/project/plantuml/plantuml.jar")) + (url "https://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)))) From 261e70af95357b8240c10055f122e1467c9b8672 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 9 Sep 2017 15:05:09 +1200 Subject: [PATCH 162/790] Make sure ivy-mode is enabled --- 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 f82fa94258..b9ee7b4692 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -17,7 +17,8 @@ (define-key ivy-minibuffer-map (kbd "") #'ivy-previous-line-or-history) (when (maybe-require-package 'diminish) - (diminish 'ivy-mode))) + (diminish 'ivy-mode)) + (add-hook 'after-init-hook 'ivy-mode)) (defun sanityinc/enable-ivy-flx-matching () "Make `ivy' matching work more like IDO." From e37cd51bf836b7616bacc1cbd71475532f48e954 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 9 Sep 2017 17:14:25 +1200 Subject: [PATCH 163/790] Add Patreon badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 28601323c1..66361ed6f1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ [![Build Status](https://travis-ci.org/purcell/emacs.d.png?branch=master)](https://travis-ci.org/purcell/emacs.d) +[![Support me](https://www.patreon.com/sanityinc)](https://img.shields.io/badge/Support%20Me-💗-ff69b4.svg) # A reasonable Emacs config From 57e70bbf5b07f4ee9b23a2031605f45c31e8c146 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 9 Sep 2017 17:18:48 +1200 Subject: [PATCH 164/790] Escape unicode character in patreon badge URL --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 66361ed6f1..d3ca2e46f5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Build Status](https://travis-ci.org/purcell/emacs.d.png?branch=master)](https://travis-ci.org/purcell/emacs.d) -[![Support me](https://www.patreon.com/sanityinc)](https://img.shields.io/badge/Support%20Me-💗-ff69b4.svg) +[![Support me](https://www.patreon.com/sanityinc)](https://img.shields.io/badge/Support%20Me-%F0%9F%92%97-ff69b4.svg) # A reasonable Emacs config From b21dd7c162206629792deed4dcfe0a21bd731e0b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 9 Sep 2017 17:24:05 +1200 Subject: [PATCH 165/790] Use HTML for Patreon badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d3ca2e46f5..9e62d7d040 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Build Status](https://travis-ci.org/purcell/emacs.d.png?branch=master)](https://travis-ci.org/purcell/emacs.d) -[![Support me](https://www.patreon.com/sanityinc)](https://img.shields.io/badge/Support%20Me-%F0%9F%92%97-ff69b4.svg) +Support me # A reasonable Emacs config From 0cbfed37c21e3bd4755eaeeb7354057e01ddc229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=94=E4=BB=99=E7=81=B5=E6=A2=A6?= Date: Sun, 10 Sep 2017 09:29:37 +0800 Subject: [PATCH 166/790] Improved "Make sure ivy-mode is enabled" --- lisp/init-ivy.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index b9ee7b4692..5acd675f1a 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -1,5 +1,6 @@ ;;; -*- lexical-binding: t -*- (when (maybe-require-package 'ivy) + (add-hook 'after-init-hook 'ivy-mode) (after-load 'ivy (setq-default ivy-use-virtual-buffers t ivy-virtual-abbreviate 'fullpath @@ -17,8 +18,7 @@ (define-key ivy-minibuffer-map (kbd "") #'ivy-previous-line-or-history) (when (maybe-require-package 'diminish) - (diminish 'ivy-mode)) - (add-hook 'after-init-hook 'ivy-mode)) + (diminish 'ivy-mode))) (defun sanityinc/enable-ivy-flx-matching () "Make `ivy' matching work more like IDO." From 3c1ce6892db5b838636a49b0f7c37d348a45f87f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 17 Sep 2017 09:40:17 +1200 Subject: [PATCH 167/790] Remove org-mac-iCal --- lisp/init-org.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index 0be9167d1c..68c4afc28f 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -1,7 +1,6 @@ (maybe-require-package 'org-fstree) (when *is-a-mac* - (maybe-require-package 'grab-mac-link) - (require-package 'org-mac-iCal)) + (maybe-require-package 'grab-mac-link)) (maybe-require-package 'org-cliplink) From a72007fb5a5c44907ed5697e48068134c3aa4277 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 17 Sep 2017 12:45:20 +1200 Subject: [PATCH 168/790] Replace coderwall link with patreon link and fix twitter link --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9e62d7d040..1b6c96b0e3 100644 --- a/README.md +++ b/README.md @@ -114,10 +114,10 @@ versions (see "Updates" above). If you still experience problems, go ahead and
-[![](http://api.coderwall.com/purcell/endorsecount.png)](http://coderwall.com/purcell) +[Support this project and my other Open Source work](https://www.patreon.com/sanityinc) [![](http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png)](http://uk.linkedin.com/in/stevepurcell) [sanityinc.com](http://www.sanityinc.com/) -[@sanityinc](https://twitter.com/) +[@sanityinc](https://twitter.com/sanityinc) From 50140e0145460b806e15b88b6de505c78d28725b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 17 Sep 2017 12:46:14 +1200 Subject: [PATCH 169/790] Fix name of magit variable in comment hint --- 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 e3a040ceae..4cdc181d51 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -9,7 +9,7 @@ (when (maybe-require-package 'magit) (setq-default magit-diff-refine-hunk t) - ;; Hint: customize `magit-repo-dirs' so that you can use C-u M-F12 to + ;; 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) (global-set-key (kbd "C-x g") 'magit-status) From f52e7d9d2254cc757d3e1f09029c2fa866c75982 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 18 Sep 2017 10:15:35 +1200 Subject: [PATCH 170/790] Enable MMM for erb+yaml --- lisp/init-ruby-mode.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-ruby-mode.el b/lisp/init-ruby-mode.el index 4dc0204c09..f26053c746 100644 --- a/lisp/init-ruby-mode.el +++ b/lisp/init-ruby-mode.el @@ -93,7 +93,9 @@ (add-auto-mode 'html-erb-mode "\\.rhtml\\'" "\\.html\\.erb\\'") (add-to-list 'auto-mode-alist '("\\.jst\\.ejs\\'" . html-erb-mode)) + (mmm-add-mode-ext-class 'yaml-mode "\\.yaml\\(\\.erb\\)?\\'" 'erb) +(sanityinc/set-up-mode-for-erb 'yaml-mode) (dolist (mode (list 'js-mode 'js2-mode 'js3-mode)) (mmm-add-mode-ext-class mode "\\.js\\.erb\\'" 'erb)) From 3a8e68ba5b7e6b367db46af59d9beea27db25352 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 18 Sep 2017 11:00:53 +1200 Subject: [PATCH 171/790] Refresh diff-hl after magit commits --- lisp/init-vc.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-vc.el b/lisp/init-vc.el index 674ddc01dc..0d10cb5d88 100644 --- a/lisp/init-vc.el +++ b/lisp/init-vc.el @@ -1,6 +1,7 @@ (when (maybe-require-package 'diff-hl) (add-hook 'prog-mode-hook 'diff-hl-mode) (add-hook 'vc-dir-mode-hook 'diff-hl-mode) + (add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh) (after-load 'diff-hl (define-key diff-hl-mode-map From d9bd7914fcc820430bb27d1283338883f4253534 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 19 Sep 2017 19:57:03 +1200 Subject: [PATCH 172/790] Don't enable haskell-stylish-on-save by default --- lisp/init-haskell.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 5b4992bee8..7a8170752f 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -32,8 +32,6 @@ (add-hook 'haskell-mode-hook 'haskell-auto-insert-module-template) -(setq-default haskell-stylish-on-save t) - (when (maybe-require-package 'hindent) (add-hook 'haskell-mode-hook 'hindent-mode)) From d295f14420f9b18e2ac4d5b98925670e6859ca72 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 19 Sep 2017 19:59:55 +1200 Subject: [PATCH 173/790] Drop hayoo package --- lisp/init-haskell.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 7a8170752f..11868ca380 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -35,7 +35,6 @@ (when (maybe-require-package 'hindent) (add-hook 'haskell-mode-hook 'hindent-mode)) -(maybe-require-package 'hayoo) (after-load 'haskell-mode (define-key haskell-mode-map (kbd "C-c h") 'hoogle) (define-key haskell-mode-map (kbd "C-o") 'open-line)) From 727eb0fd6e8a69229392837d6b291c9e636f93a4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 25 Sep 2017 16:13:33 +1300 Subject: [PATCH 174/790] Add a little init-http.el --- init.el | 1 + lisp/init-http.el | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 lisp/init-http.el diff --git a/init.el b/init.el index 1cdec11789..b717bfdbfb 100644 --- a/init.el +++ b/init.el @@ -94,6 +94,7 @@ (require 'init-html) (require 'init-css) (require 'init-haml) +(require 'init-http) (require 'init-python-mode) (unless (version<= emacs-version "24.3") (require 'init-haskell)) diff --git a/lisp/init-http.el b/lisp/init-http.el new file mode 100644 index 0000000000..f5f4d0a08a --- /dev/null +++ b/lisp/init-http.el @@ -0,0 +1,10 @@ +(maybe-require-package 'httprepl) +(when (maybe-require-package 'restclient) + (defun sanityinc/restclient () + (interactive) + (with-current-buffer (get-buffer-create "*restclient*") + (restclient-mode) + (pop-to-buffer (current-buffer))))) + + +(provide 'init-http) From 76f29c035c4a5b41360f6cb86607f53728604b2e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 25 Sep 2017 16:31:48 +1300 Subject: [PATCH 175/790] Remove cruft from init-haskell.el --- lisp/init-haskell.el | 9 --------- 1 file changed, 9 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 11868ca380..1bd258d059 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -1,8 +1,3 @@ -;; TODO: https://wunki.org/posts/2014-05-17-haskell-packages-development.html -;; https://github.com/chrisdone/chrisdone-emacs/blob/master/config/haskell.el -;; TODO: ghci-ng -;; TODO: don't pop up *Warnings* if haskell-stylish-on-save fails -;; TODO: purescript-mode (require-package 'haskell-mode) @@ -44,9 +39,5 @@ (push 'haskell-mode page-break-lines-modes)) -(after-load 'haskell - (define-key interactive-haskell-mode-map (kbd "M-N") 'haskell-goto-next-error) - (define-key interactive-haskell-mode-map (kbd "M-P") 'haskell-goto-prev-error)) - (provide 'init-haskell) From 5bd2c733c7cbcd16ec93edf5b7db72953b404036 Mon Sep 17 00:00:00 2001 From: Kieran Trezona-le Comte Date: Tue, 26 Sep 2017 21:41:45 +1300 Subject: [PATCH 176/790] Resolve global keymap clash between dash-at-point & md/duplicate-up Change the keybinding of md/duplicate-up in the global keymap from `C-c D` to `C-c u`, because dash-at-point is also bound globally to `C-c D`. `C-c u` was chosen as a mnemonic from 'up'. --- 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 ae5131d0e8..f062ed4290 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -201,7 +201,7 @@ (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 D") 'md/duplicate-up) +(global-set-key (kbd "C-c u") 'md/duplicate-up) ;;---------------------------------------------------------------------------- ;; Fix backward-up-list to understand quotes, see http://bit.ly/h7mdIL From 0b625b27f20c05fb23c80229eb9a74c7214d1485 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 27 Sep 2017 15:27:53 +1300 Subject: [PATCH 177/790] Add a simple major mode for Brewfiles --- lisp/init-ruby-mode.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/init-ruby-mode.el b/lisp/init-ruby-mode.el index f26053c746..cb6e3be150 100644 --- a/lisp/init-ruby-mode.el +++ b/lisp/init-ruby-mode.el @@ -27,6 +27,12 @@ (require-package 'rspec-mode) + +(define-derived-mode brewfile-mode ruby-mode "Brewfile" + "A major mode for Brewfiles, used by homebrew-bundle on MacOS.") + +(add-auto-mode 'brewfile-mode "Brewfile\\'") + ;;; Inferior ruby (require-package 'inf-ruby) From a1d1cce6fb1112ed5784a38e6bde6bd1ab090be7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 29 Sep 2017 10:53:48 +1300 Subject: [PATCH 178/790] Add a binding for `intero-restart' in cabal mode --- lisp/init-haskell.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 1bd258d059..0cf902585e 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -7,6 +7,8 @@ (after-load 'haskell-mode (intero-global-mode) (add-hook 'haskell-mode-hook 'eldoc-mode)) + (after-load 'haskell-cabal + (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) From 7ee213d709b8994b612a5ed117502e7dbe2a841a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 30 Sep 2017 17:51:08 +1300 Subject: [PATCH 179/790] Drop dired+ and use diredfl for enhanced font-locking --- lisp/init-dired.el | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 828664a3d0..5e67937d0f 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -1,18 +1,16 @@ -(require-package 'dired+) (require-package 'dired-sort) -(setq-default diredp-hide-details-initially-flag nil - dired-dwim-target t) +(setq-default dired-dwim-target t) ;; Prefer g-prefixed coreutils version of standard utilities when available (let ((gls (executable-find "gls"))) (when gls (setq insert-directory-program gls))) +(when (maybe-require-package 'diredfl) + (add-hook 'dired-mode-hook 'diredfl-mode)) + (after-load 'dired - (require 'dired+) (require 'dired-sort) - (when (fboundp 'global-dired-hide-details-mode) - (global-dired-hide-details-mode -1)) (setq dired-recursive-deletes 'top) (define-key dired-mode-map [mouse-2] 'dired-find-file) (add-hook 'dired-mode-hook From 4d6d16ad257ec8fa8b2dab309c82322c37c948a0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 1 Oct 2017 15:30:58 +1300 Subject: [PATCH 180/790] Use diredfl global mode --- lisp/init-dired.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 5e67937d0f..3ca1cf1f5f 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -7,7 +7,7 @@ (when gls (setq insert-directory-program gls))) (when (maybe-require-package 'diredfl) - (add-hook 'dired-mode-hook 'diredfl-mode)) + (diredfl-global-mode)) (after-load 'dired (require 'dired-sort) From 0bf722fb2b5061a0e5ced098775042ff29432c93 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 6 Oct 2017 19:21:47 +1300 Subject: [PATCH 181/790] Remove redshank (fixes #498) --- lisp/init-lisp.el | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index aac2b873aa..fb1083a0c3 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -122,10 +122,6 @@ ;; ---------------------------------------------------------------------------- ;; Enable desired features for all lisp modes ;; ---------------------------------------------------------------------------- -(require-package 'redshank) -(after-load 'redshank - (diminish 'redshank-mode)) - (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)) @@ -137,7 +133,6 @@ (defvar sanityinc/lispy-modes-hook '(enable-paredit-mode turn-on-eldoc-mode - redshank-mode sanityinc/disable-indent-guide sanityinc/enable-check-parens-on-save) "Hook run in all Lisp modes.") From 6ac1e919d57e0d4ed2ee4df34736b00add62b37d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 6 Oct 2017 20:16:38 +1300 Subject: [PATCH 182/790] Soft-require ipretty --- lisp/init-lisp.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index fb1083a0c3..0e207240b9 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -22,8 +22,8 @@ (after-load 'lisp-mode (define-key emacs-lisp-mode-map (kbd "C-x C-e") 'sanityinc/eval-last-sexp-or-region)) -(require-package 'ipretty) -(ipretty-mode 1) +(when (maybe-require-package 'ipretty) + (ipretty-mode 1)) (defadvice pp-display-expression (after sanityinc/make-read-only (expression out-buffer-name) activate) From 7e038d35f28773daafe148573a57ee4089af8d88 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 6 Oct 2017 20:26:17 +1300 Subject: [PATCH 183/790] Add more build versions, and cache evm & packages --- .travis.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7f9d8c8ee2..bd3905d1af 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,20 @@ language: ruby +cache: + directories: + - elpa-24.1 + - elpa-24.2 + - elpa-24.3 + - elpa-24.4 + - elpa-24.5 + - elpa-25.1 + - elpa-25.2 + - elpa-25.3 + - $HOME/.evm + before_install: - - git clone https://github.com/rejeep/evm.git $HOME/.evm + - (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 @@ -13,6 +24,9 @@ env: - EVM_EMACS=emacs-24.3-travis - 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-git-snapshot-travis matrix: From ea606c034d68c04afe14903686dc2bc5ad7452d0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 6 Oct 2017 20:31:27 +1300 Subject: [PATCH 184/790] Wait - caching packages in the build is a bad idea --- .travis.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index bd3905d1af..770bdf817c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,14 +2,6 @@ language: ruby cache: directories: - - elpa-24.1 - - elpa-24.2 - - elpa-24.3 - - elpa-24.4 - - elpa-24.5 - - elpa-25.1 - - elpa-25.2 - - elpa-25.3 - $HOME/.evm before_install: From c1634bb59b3424eb3ff39dea6a71084a6e832e67 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 6 Oct 2017 20:32:14 +1300 Subject: [PATCH 185/790] Skip build of Emacs git snapshot version --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 770bdf817c..3484678a41 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,7 @@ env: - EVM_EMACS=emacs-25.1-travis - EVM_EMACS=emacs-25.2-travis - EVM_EMACS=emacs-25.3-travis - - EVM_EMACS=emacs-git-snapshot-travis + #- EVM_EMACS=emacs-git-snapshot-travis matrix: allow_failures: From 8a70209d6b9f9cc414f7afda94e0061c8ebef34e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 7 Oct 2017 10:16:41 +1300 Subject: [PATCH 186/790] Require at least Emacs 24.3 --- .travis.yml | 4 ---- README.md | 10 +++++----- init.el | 12 +++++------- lisp/init-editing-utils.el | 6 ++---- 4 files changed, 12 insertions(+), 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3484678a41..656884f31b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,8 +11,6 @@ before_install: - evm install $EVM_EMACS --use --skip env: - - EVM_EMACS=emacs-24.1-travis - - EVM_EMACS=emacs-24.2-travis - EVM_EMACS=emacs-24.3-travis - EVM_EMACS=emacs-24.4-travis - EVM_EMACS=emacs-24.5-travis @@ -23,8 +21,6 @@ env: matrix: allow_failures: - - env: EVM_EMACS=emacs-24.1-travis - - env: EVM_EMACS=emacs-24.2-travis - env: EVM_EMACS=emacs-git-snapshot-travis script: diff --git a/README.md b/README.md index 1b6c96b0e3..fc30c1dd4d 100644 --- a/README.md +++ b/README.md @@ -32,11 +32,11 @@ other languages. ## Supported Emacs versions -The config should run on Emacs 24.1 or greater and is designed to -degrade smoothly - see the Travis build - but note that Emacs 24 and -above is required for an increasing number of key packages, including -`magit`, `company` and `flycheck`, so to get full you should use the -latest Emacs version available to you. +The config should run on Emacs 24.3 or greater and is designed to +degrade smoothly - see the Travis build - but note that Emacs 24.5 and +above is required for an increasing number of key packages, so to get +full functionality you should use the latest Emacs version available +to you. 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) diff --git a/init.el b/init.el index b717bfdbfb..f7169f2c03 100644 --- a/init.el +++ b/init.el @@ -3,10 +3,10 @@ ;;; This file bootstraps the configuration, which is divided into ;;; a number of other files. -(let ((minver "24.1")) +(let ((minver "24.3")) (when (version< emacs-version minver) (error "Your Emacs is too old -- this config requires v%s or higher" minver))) -(when (version< emacs-version "24.4") +(when (version< emacs-version "24.5") (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)) @@ -96,8 +96,7 @@ (require 'init-haml) (require 'init-http) (require 'init-python-mode) -(unless (version<= emacs-version "24.3") - (require 'init-haskell)) +(require 'init-haskell) (require 'init-elm) (require 'init-ruby-mode) (require 'init-rails) @@ -111,9 +110,8 @@ (require 'init-paredit) (require 'init-lisp) (require 'init-slime) -(unless (version<= emacs-version "24.2") - (require 'init-clojure) - (require 'init-clojure-cider)) +(require 'init-clojure) +(require 'init-clojure-cider) (require 'init-common-lisp) (when *spell-check-support-enabled* diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index f062ed4290..cc12078a5a 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -60,10 +60,8 @@ -(when (eval-when-compile (string< "24.3.1" emacs-version)) - ;; https://github.com/purcell/emacs.d/issues/138 - (after-load 'subword - (diminish 'subword-mode))) +(after-load 'subword + (diminish 'subword-mode)) From fb584118b63fd8ab769c7594ce2f0848f0a7bbb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=94=E4=BB=99=E7=81=B5=E6=A2=A6?= Date: Sat, 7 Oct 2017 09:14:58 +0800 Subject: [PATCH 187/790] Remove defunct config for vc-darcs --- lisp/init-darcs.el | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lisp/init-darcs.el b/lisp/init-darcs.el index 5cf8930637..3be3c2def5 100644 --- a/lisp/init-darcs.el +++ b/lisp/init-darcs.el @@ -7,12 +7,6 @@ (autoload 'vc-darcs-find-file-hook "vc-darcs") (add-hook 'find-file-hooks 'vc-darcs-find-file-hook) -(after-load 'vc-darcs - ;; This variable was removed in an Emacs 25.x snapshot, but vc-darcs - ;; hasn't been fixed accordingly - (unless (boundp 'vc-disable-async-diff) - (setq vc-disable-async-diff nil))) - (setq darcsum-whatsnew-switches "-l") (provide 'init-darcs) From 3c0dd1660501cb57e0ba2e8d77f5cdd22ec6028a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 7 Oct 2017 15:02:36 +1300 Subject: [PATCH 188/790] Enable beacon --- lisp/init-editing-utils.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index cc12078a5a..6d9253ea00 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -45,6 +45,12 @@ (setq-default ring-bell-function 'sanityinc/flash-mode-line) + + +(when (maybe-require-package 'beacon) + (setq-default beacon-lighter "") + (beacon-mode)) + ;;; Newline behaviour From 174d4888f5146f89951176817c411122a9a0a9d9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 8 Oct 2017 16:23:14 +1300 Subject: [PATCH 189/790] Use fullframe for the various docker list commands --- lisp/init-docker.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/init-docker.el b/lisp/init-docker.el index b138cd9073..046887e297 100644 --- a/lisp/init-docker.el +++ b/lisp/init-docker.el @@ -1,4 +1,9 @@ -(maybe-require-package 'docker) +(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)) (maybe-require-package 'dockerfile-mode) (maybe-require-package 'docker-compose-mode) From 3600302fce5b7754c7a5c402a4cbe46ca5c4eb08 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 9 Oct 2017 20:29:07 +1300 Subject: [PATCH 190/790] Don't set inhibit-start-up-echo-area-message Closes #500 --- lisp/init-gui-frames.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 54b530cff4..f0581f0499 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -15,7 +15,6 @@ (setq use-file-dialog nil) (setq use-dialog-box nil) (setq inhibit-startup-screen t) -(setq inhibit-startup-echo-area-message t) ;;---------------------------------------------------------------------------- From ee2eab9692c5b4b1dc55c3bbf17ec01ccb17df8b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 9 Oct 2017 20:29:36 +1300 Subject: [PATCH 191/790] Use restclient-mode for .rest files --- lisp/init-http.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-http.el b/lisp/init-http.el index f5f4d0a08a..738dd96e30 100644 --- a/lisp/init-http.el +++ b/lisp/init-http.el @@ -1,5 +1,7 @@ (maybe-require-package 'httprepl) (when (maybe-require-package 'restclient) + (add-auto-mode 'restclient-mode "\\.rest\\'") + (defun sanityinc/restclient () (interactive) (with-current-buffer (get-buffer-create "*restclient*") From 7fb9056a4ce74773be1edbaac156e69c051b8d95 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 9 Oct 2017 20:30:16 +1300 Subject: [PATCH 192/790] Provide C-c C-p in dired-mode to match the binding in grep-mode --- lisp/init-dired.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 3ca1cf1f5f..6d37fec83a 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -13,6 +13,7 @@ (require 'dired-sort) (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) (add-hook 'dired-mode-hook (lambda () (guide-key/add-local-guide-key-sequence "%")))) From b594d3b097a1a37c2142c251e87b0bb6d9a8ce33 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 9 Oct 2017 20:32:53 +1300 Subject: [PATCH 193/790] Defer various global minor modes until after-init-hook --- lisp/init-dired.el | 3 ++- lisp/init-editing-utils.el | 39 +++++++++++++++++++------------------- lisp/init-isearch.el | 2 +- lisp/init-recentf.el | 2 +- lisp/init-sessions.el | 2 +- lisp/init-whitespace.el | 2 +- 6 files changed, 26 insertions(+), 24 deletions(-) diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 6d37fec83a..93f9062afb 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -7,7 +7,8 @@ (when gls (setq insert-directory-program gls))) (when (maybe-require-package 'diredfl) - (diredfl-global-mode)) + (after-load 'dired + (diredfl-global-mode))) (after-load 'dired (require 'dired-sort) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 6d9253ea00..ab25087189 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -1,9 +1,9 @@ (require-package 'unfill) (when (fboundp 'electric-pair-mode) - (electric-pair-mode)) + (add-hook 'after-init-hook 'electric-pair-mode)) (when (eval-when-compile (version< "24.4" emacs-version)) - (electric-indent-mode 1)) + (add-hook 'after-init-hook 'electric-indent-mode)) (maybe-require-package 'list-unicode-display) @@ -29,11 +29,11 @@ truncate-lines nil truncate-partial-width-windows nil) -(global-auto-revert-mode) +(add-hook 'after-init-hook 'global-auto-revert-mode) (setq global-auto-revert-non-file-buffers t auto-revert-verbose nil) -(transient-mark-mode t) +(add-hook 'after-init-hook 'transient-mark-mode) ;;; A simple visible bell which works in all terminal types @@ -49,7 +49,7 @@ (when (maybe-require-package 'beacon) (setq-default beacon-lighter "") - (beacon-mode)) + (add-hook 'after-init-hook 'beacon-mode)) @@ -81,12 +81,13 @@ (when (fboundp 'global-prettify-symbols-mode) - (global-prettify-symbols-mode)) + (add-hook 'after-init-hook 'global-prettify-symbols-mode)) (require-package 'undo-tree) -(global-undo-tree-mode) -(diminish 'undo-tree-mode) +(add-hook 'after-init-hook 'global-undo-tree-mode) +(after-load 'undo-tree + (diminish 'undo-tree-mode)) (when (maybe-require-package 'symbol-overlay) @@ -126,7 +127,7 @@ ;;---------------------------------------------------------------------------- ;; Show matching parens ;;---------------------------------------------------------------------------- -(show-paren-mode 1) +(add-hook 'after-init-hook 'show-paren-mode) ;;---------------------------------------------------------------------------- ;; Expand region @@ -190,8 +191,9 @@ ;; Page break lines ;;---------------------------------------------------------------------------- (require-package 'page-break-lines) -(global-page-break-lines-mode) -(diminish 'page-break-lines-mode) +(add-hook 'after-init-hook 'global-page-break-lines-mode) +(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, @@ -226,9 +228,9 @@ ;; Cut/copy the current line if no region is active ;;---------------------------------------------------------------------------- (require-package 'whole-line-or-region) -(whole-line-or-region-mode t) -(diminish 'whole-line-or-region-mode) -(make-variable-buffer-local 'whole-line-or-region-mode) +(add-hook 'after-init-hook 'whole-line-or-region-mode) +(after-load 'whole-line-or-region + (diminish 'whole-line-or-region-mode)) (defun suspend-mode-during-cua-rect-selection (mode-name) "Add an advice to suspend `MODE-NAME' while selecting a CUA rectangle." @@ -300,15 +302,14 @@ With arg N, insert N newlines." (require-package 'highlight-escape-sequences) -(hes-mode) +(add-hook 'after-init-hook 'hes-mode) (require-package 'guide-key) (setq guide-key/guide-key-sequence '("C-x" "C-c" "C-x 4" "C-x 5" "C-c ;" "C-c ; f" "C-c ' f" "C-x n" "C-x C-r" "C-x r" "M-s" "C-h" "C-c C-a")) -(add-hook 'after-init-hook - (lambda () - (guide-key-mode 1) - (diminish 'guide-key-mode))) +(add-hook 'after-init-hook 'guide-key-mode) +(after-load 'guide-key + (diminish 'guide-key-mode)) (provide 'init-editing-utils) diff --git a/lisp/init-isearch.el b/lisp/init-isearch.el index 836b87fc13..188066c1b0 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -1,6 +1,6 @@ ;; Show number of matches while searching (when (maybe-require-package 'anzu) - (global-anzu-mode t) + (add-hook 'after-init-hook 'global-anzu-mode) (setq anzu-mode-lighter "") (global-set-key [remap query-replace-regexp] 'anzu-query-replace-regexp) (global-set-key [remap query-replace] 'anzu-query-replace)) diff --git a/lisp/init-recentf.el b/lisp/init-recentf.el index 95d53ebf50..dfd78512dd 100644 --- a/lisp/init-recentf.el +++ b/lisp/init-recentf.el @@ -1,4 +1,4 @@ -(add-hook 'after-init-hook (lambda () (recentf-mode 1))) +(add-hook 'after-init-hook 'recentf-mode) (setq-default recentf-max-saved-items 1000 recentf-exclude '("/tmp/" "/ssh:")) diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index e7bdb6b070..d154fb2e48 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -26,7 +26,7 @@ ;; Restore histories and registers after saving ;;---------------------------------------------------------------------------- (setq-default history-length 1000) -(savehist-mode t) +(add-hook 'after-init-hook 'savehist-mode) (require-package 'session) diff --git a/lisp/init-whitespace.el b/lisp/init-whitespace.el index d0df5c5251..371261e147 100644 --- a/lisp/init-whitespace.el +++ b/lisp/init-whitespace.el @@ -20,7 +20,7 @@ (require-package 'whitespace-cleanup-mode) -(global-whitespace-cleanup-mode t) +(add-hook 'after-init-hook 'global-whitespace-cleanup-mode) (global-set-key [remap just-one-space] 'cycle-spacing) From 2bbffff0a00c2d7c2d0ed7c67aba7daecc2bbaa0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 9 Oct 2017 20:34:35 +1300 Subject: [PATCH 194/790] Defer more global minor modes --- lisp/init-lisp.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 0e207240b9..ceb948d9db 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -23,7 +23,7 @@ (define-key emacs-lisp-mode-map (kbd "C-x C-e") 'sanityinc/eval-last-sexp-or-region)) (when (maybe-require-package 'ipretty) - (ipretty-mode 1)) + (add-hook 'after-init-hook 'ipretty-mode)) (defadvice pp-display-expression (after sanityinc/make-read-only (expression out-buffer-name) activate) @@ -89,8 +89,8 @@ ;; Automatic byte compilation ;; ---------------------------------------------------------------------------- (when (maybe-require-package 'auto-compile) - (auto-compile-on-save-mode 1) - (auto-compile-on-load-mode 1)) + (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 @@ -170,7 +170,7 @@ (add-hook 'eval-expression-minibuffer-setup-hook #'eldoc-mode) (require-package 'eldoc-eval) (require 'eldoc-eval) - (eldoc-in-minibuffer-mode 1)) + (add-hook 'after-init-hook 'eldoc-in-minibuffer-mode)) (add-to-list 'auto-mode-alist '("\\.emacs-project\\'" . emacs-lisp-mode)) (add-to-list 'auto-mode-alist '("archive-contents\\'" . emacs-lisp-mode)) From 3ba677fd1da5c8e58fd07bb302aec601810135b2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 14 Oct 2017 15:43:16 +1300 Subject: [PATCH 195/790] Load flycheck-clojure only after loading cider Fixes #502, thanks @picong --- lisp/init-clojure-cider.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/init-clojure-cider.el b/lisp/init-clojure-cider.el index 6e1f4d7315..e152d8a71b 100644 --- a/lisp/init-clojure-cider.el +++ b/lisp/init-clojure-cider.el @@ -13,8 +13,9 @@ (require-package 'flycheck-clojure) (after-load 'clojure-mode - (after-load 'flycheck - (flycheck-clojure-setup)))) + (after-load 'cider + (after-load 'flycheck + (flycheck-clojure-setup))))) (provide 'init-clojure-cider) From 7daf7f8617fa801de3dac4afe50bb58ff7e3bfcd Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 15 Oct 2017 10:32:01 +1300 Subject: [PATCH 196/790] Reduce default beacon width --- 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 ab25087189..a04c5c8fc0 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -49,6 +49,7 @@ (when (maybe-require-package 'beacon) (setq-default beacon-lighter "") + (setq-default beacon-size 5) (add-hook 'after-init-hook 'beacon-mode)) From 52009a1b96ab5dc41d65d863b761159afea539d7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 20 Oct 2017 07:59:08 +1300 Subject: [PATCH 197/790] Use http rather than https for plantuml download: fixes #503 --- 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 68c4afc28f..e1d5bc0989 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -48,7 +48,7 @@ (after-load 'ob-plantuml (let ((jar-name "plantuml.jar") - (url "https://jaist.dl.sourceforge.net/project/plantuml/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)))) From d626317dfa3c5db35472a6768524000a797c3153 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 20 Oct 2017 21:09:27 +1300 Subject: [PATCH 198/790] Soft-require page-break-lines-mode, which now requires Emacs 24.4 --- lisp/init-editing-utils.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index a04c5c8fc0..fc4eca0bfb 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -191,10 +191,10 @@ ;;---------------------------------------------------------------------------- ;; Page break lines ;;---------------------------------------------------------------------------- -(require-package 'page-break-lines) -(add-hook 'after-init-hook 'global-page-break-lines-mode) -(after-load 'page-break-lines - (diminish 'page-break-lines-mode)) +(when (maybe-require-package 'page-break-lines) + (add-hook 'after-init-hook 'global-page-break-lines-mode) + (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, From 12755e44a1965ef7bb78efc386a7b86e72cd521d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 25 Oct 2017 16:07:50 +1300 Subject: [PATCH 199/790] sanityinc/pop-to-sqli-buffer: detect when sql-buffer is dead --- 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 9fa1328cdb..aad388a915 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -18,7 +18,7 @@ Fix for the above hasn't been released as of Emacs 25.2." (defun sanityinc/pop-to-sqli-buffer () "Switch to the corresponding sqli buffer." (interactive) - (if sql-buffer + (if (and sql-buffer (buffer-live-p sql-buffer)) (progn (pop-to-buffer sql-buffer) (goto-char (point-max))) From 83525d66fa195901e8881a62ffb485d212a39bed Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 27 Oct 2017 21:01:32 +1300 Subject: [PATCH 200/790] Enable yard-mode in ruby-mode Closes #509, thanks @jsirex --- lisp/init-ruby-mode.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/init-ruby-mode.el b/lisp/init-ruby-mode.el index cb6e3be150..50194171a9 100644 --- a/lisp/init-ruby-mode.el +++ b/lisp/init-ruby-mode.el @@ -74,6 +74,12 @@ (require-package 'bundler) + +(when (maybe-require-package 'yard-mode) + (add-hook 'ruby-mode-hook 'yard-mode) + (after-load 'yard-mode + (diminish 'yard-mode))) + ;;; ERB (require-package 'mmm-mode) From b1b1e8d99852afd0c332a8b64f9ff67e1c217ee9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 11 Nov 2017 15:31:20 +1300 Subject: [PATCH 201/790] More safely add local company backend --- lisp/init-company.el | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index f46beee7aa..990eb8ca12 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -21,9 +21,8 @@ (defun sanityinc/local-push-company-backend (backend) "Add BACKEND to a buffer-local version of `company-backends'." - (set (make-local-variable 'company-backends) - (append (list backend) company-backends)))) - + (make-local-variable 'company-backends) + (push backend company-backends))) ;; Suspend page-break-lines-mode while company menu is active ;; (see https://github.com/company-mode/company-mode/issues/416) From 10712c8b3047044821acefbfe6e4985f0ecab93a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 11 Nov 2017 18:18:42 +1300 Subject: [PATCH 202/790] Use company instead of completion-at-point in elm-mode --- lisp/init-elm.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-elm.el b/lisp/init-elm.el index 463e45fd33..7c649928bf 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -2,8 +2,8 @@ (setq-default elm-format-on-save t) (after-load 'elm-mode (diminish 'elm-indent-mode) - (when (executable-find "elm-oracle") - (add-hook 'elm-mode-hook 'elm-oracle-setup-completion)) + (add-hook 'elm-mode-hook + (lambda () (sanityinc/local-push-company-backend 'company-elm))) (when (executable-find "elm-format") (setq-default elm-format-on-save t))) (when (maybe-require-package 'flycheck-elm) From c1b23cbd7854c7042fcea772280870909d6b29de Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 11 Nov 2017 18:19:06 +1300 Subject: [PATCH 203/790] Require and enable dynamic-spaces-global-mode --- 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 fc4eca0bfb..40f751d317 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -36,6 +36,9 @@ (add-hook 'after-init-hook 'transient-mark-mode) +(when (maybe-require-package 'dynamic-spaces) + (dynamic-spaces-global-mode)) + ;;; A simple visible bell which works in all terminal types (defun sanityinc/flash-mode-line () From 102c6d2ad4b7ffa3a70813586d0363704309894f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 11 Nov 2017 18:19:52 +1300 Subject: [PATCH 204/790] Remove defunct autoload for mwheel-install --- lisp/init-xterm.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-xterm.el b/lisp/init-xterm.el index f401e74025..ee5618e8cc 100644 --- a/lisp/init-xterm.el +++ b/lisp/init-xterm.el @@ -3,8 +3,6 @@ (global-set-key [mouse-4] (lambda () (interactive) (scroll-down 1))) (global-set-key [mouse-5] (lambda () (interactive) (scroll-up 1))) -(autoload 'mwheel-install "mwheel") - (defun sanityinc/console-frame-setup () (xterm-mouse-mode 1) ; Mouse in a terminal (Use shift to paste with middle button) (mwheel-install)) From d4367e5305279b4bf887677877dfea09c3fa258a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 11 Nov 2017 19:12:53 +1300 Subject: [PATCH 205/790] Restore autoload for mwheel-install, which was needed after all This reverts commit 102c6d2ad4b7ffa3a70813586d0363704309894f. --- lisp/init-xterm.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-xterm.el b/lisp/init-xterm.el index ee5618e8cc..f401e74025 100644 --- a/lisp/init-xterm.el +++ b/lisp/init-xterm.el @@ -3,6 +3,8 @@ (global-set-key [mouse-4] (lambda () (interactive) (scroll-down 1))) (global-set-key [mouse-5] (lambda () (interactive) (scroll-up 1))) +(autoload 'mwheel-install "mwheel") + (defun sanityinc/console-frame-setup () (xterm-mouse-mode 1) ; Mouse in a terminal (Use shift to paste with middle button) (mwheel-install)) From a8481a2179ba2c38e51c28504a04713dd33b1fa2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 14 Nov 2017 21:18:04 +1300 Subject: [PATCH 206/790] No longer rename old "elpa" dirs to versioned ones Fixes #515 --- lisp/init-elpa.el | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 58f1effbb2..1bcd41b954 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -13,11 +13,6 @@ (let ((versioned-package-dir (expand-file-name (format "elpa-%s.%s" emacs-major-version emacs-minor-version) user-emacs-directory))) - (when (file-directory-p package-user-dir) - (message "Default package locations have changed in this config: renaming old package dir %s to %s." - package-user-dir - versioned-package-dir) - (rename-file package-user-dir versioned-package-dir)) (setq package-user-dir versioned-package-dir)) From ba7d2a1c0baeef981f2f4bff1bab8f3d14d5b559 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 19 Nov 2017 13:46:53 +1300 Subject: [PATCH 207/790] Set coding system for session save files Fixes #516 --- lisp/init-sessions.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index d154fb2e48..7df93d6214 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -32,6 +32,8 @@ (setq session-save-file (expand-file-name ".session" user-emacs-directory)) (setq session-name-disable-regexp "\\(?:\\`'/tmp\\|\\.git/[A-Z_]+\\'\\)") +(setq session-save-file-coding-system 'utf-8) + (add-hook 'after-init-hook 'session-initialize) ;; save a bunch of variables to the desktop file From 979b4c97f6f134a122d3c74f1e3cf036a6963a3f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 29 Nov 2017 09:46:53 +1300 Subject: [PATCH 208/790] Disable ivy-magic-tilde by default --- lisp/init-ivy.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 5acd675f1a..77e7b7543b 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -6,6 +6,7 @@ ivy-virtual-abbreviate 'fullpath ivy-count-format "" projectile-completion-system 'ivy + ivy-magic-tilde nil ivy-initial-inputs-alist '((man . "^") (woman . "^"))) From 173fe13b62ad5ef612757201c1a7a7c7473a1a3e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 29 Nov 2017 09:47:24 +1300 Subject: [PATCH 209/790] Add dhall-mode --- lisp/init-haskell.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 0cf902585e..9974e186d1 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -40,6 +40,8 @@ (after-load 'page-break-lines (push 'haskell-mode page-break-lines-modes)) + +(maybe-require-package 'dhall-mode) (provide 'init-haskell) From 7b397f8c79722154fa8a1eb122314cf3ded397c7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 29 Nov 2017 17:34:30 +1300 Subject: [PATCH 210/790] For now, don't highlight trailing whitespace in dhall-mode --- lisp/init-haskell.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 9974e186d1..b251928f68 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -41,7 +41,8 @@ (push 'haskell-mode page-break-lines-modes)) -(maybe-require-package 'dhall-mode) +(when (maybe-require-package 'dhall-mode) + (add-hook 'dhall-mode-hook 'sanityinc/no-trailing-whitespace)) (provide 'init-haskell) From 37fd2596ee3bb173a01211eeeb122e10ff9ef779 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 29 Nov 2017 17:34:59 +1300 Subject: [PATCH 211/790] Don't override default company-backends --- 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 990eb8ca12..289cd77ccb 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -12,8 +12,7 @@ (define-key company-active-map (kbd "M-/") 'company-select-next) (define-key company-active-map (kbd "C-n") 'company-select-next) (define-key company-active-map (kbd "C-p") 'company-select-previous) - (setq-default company-backends '((company-capf company-dabbrev-code) company-dabbrev) - company-dabbrev-other-buffers 'all + (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) From 4e487d4ef2ab39875d96fd413fca3b075faf9612 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 29 Nov 2017 17:35:11 +1300 Subject: [PATCH 212/790] Add dotenv-mode --- init.el | 1 + 1 file changed, 1 insertion(+) diff --git a/init.el b/init.el index f7169f2c03..792861e746 100644 --- a/init.el +++ b/init.el @@ -131,6 +131,7 @@ (when *is-a-mac* (require-package 'osx-location)) (maybe-require-package 'regex-tool) +(maybe-require-package 'dotenv-mode) ;;---------------------------------------------------------------------------- ;; Allow access from emacsclient From 60dc74976ac1a21db8fc9e6bf9949a075d9c01fd Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 11 Dec 2017 11:26:34 +1300 Subject: [PATCH 213/790] Default hindent-extra-args to nil Works around an upstream bug for which I've submitted a patch. --- lisp/init-haskell.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index b251928f68..e97d2f2595 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -30,7 +30,8 @@ (add-hook 'haskell-mode-hook 'haskell-auto-insert-module-template) (when (maybe-require-package 'hindent) - (add-hook 'haskell-mode-hook 'hindent-mode)) + (add-hook 'haskell-mode-hook 'hindent-mode) + (setq-default hindent-extra-args nil)) (after-load 'haskell-mode (define-key haskell-mode-map (kbd "C-c h") 'hoogle) From 566e97268df75f056227be5ae9b00d75a0828834 Mon Sep 17 00:00:00 2001 From: Yauhen Artsiukhou Date: Mon, 11 Dec 2017 16:00:18 +0300 Subject: [PATCH 214/790] Add company-terraform for terraform mode --- init.el | 2 +- lisp/init-terraform.el | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 lisp/init-terraform.el diff --git a/init.el b/init.el index 792861e746..18dfde6bfb 100644 --- a/init.el +++ b/init.el @@ -105,7 +105,7 @@ (require 'init-toml) (require 'init-yaml) (require 'init-docker) -(maybe-require-package 'terraform-mode) +(require 'init-terraform) (require 'init-paredit) (require 'init-lisp) diff --git a/lisp/init-terraform.el b/lisp/init-terraform.el new file mode 100644 index 0000000000..d93f16314a --- /dev/null +++ b/lisp/init-terraform.el @@ -0,0 +1,9 @@ +;;; Terraform + +(when (maybe-require-package 'terraform-mode) + (when (maybe-require-package 'company-terraform) + (after-load 'terraform-mode + (company-terraform-init)))) + +(provide 'init-terraform) +;;; init-terraform.el ends here From 661c4feacba8643509f6516fc8084c902fedf807 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 23 Dec 2017 21:58:34 +1300 Subject: [PATCH 215/790] Remove workaround for hindent bug --- 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 e97d2f2595..b251928f68 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -30,8 +30,7 @@ (add-hook 'haskell-mode-hook 'haskell-auto-insert-module-template) (when (maybe-require-package 'hindent) - (add-hook 'haskell-mode-hook 'hindent-mode) - (setq-default hindent-extra-args nil)) + (add-hook 'haskell-mode-hook 'hindent-mode)) (after-load 'haskell-mode (define-key haskell-mode-map (kbd "C-c h") 'hoogle) From f3b61d1d96d6e011686f70eb84f28d50c2cf2894 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 23 Dec 2017 21:59:04 +1300 Subject: [PATCH 216/790] Add ivy-xref --- lisp/init-ivy.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 77e7b7543b..e2a4e6e5ae 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -73,5 +73,8 @@ instead." (define-key ivy-mode-map (kbd "M-s /") 'sanityinc/swiper-at-point))) +(when (maybe-require-package 'ivy-xref) + (setq xref-show-xrefs-function 'ivy-xref-show-xrefs)) + (provide 'init-ivy) From 29fe120cb2005f889dce40df60919d89ea9e3bd7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 28 Dec 2017 15:08:49 +1300 Subject: [PATCH 217/790] Add (but don't enable) disable-mouse --- 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 40f751d317..abda7dae93 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -315,5 +315,8 @@ With arg N, insert N newlines." (after-load 'guide-key (diminish 'guide-key-mode)) + +(require-package 'disable-mouse) + (provide 'init-editing-utils) From 86adc49d280633d2e83e52e1e9c302ecbeac3666 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 28 Dec 2017 15:09:47 +1300 Subject: [PATCH 218/790] Set ivy-dynamic-exhibit-delay-ms --- lisp/init-ivy.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index e2a4e6e5ae..fcc52d7ab9 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -7,6 +7,7 @@ ivy-count-format "" projectile-completion-system 'ivy ivy-magic-tilde nil + ivy-dynamic-exhibit-delay-ms 150 ivy-initial-inputs-alist '((man . "^") (woman . "^"))) From 785d754292b8bc8cfa6e30c120018da5aa98e1c8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 29 Dec 2017 11:32:40 +1300 Subject: [PATCH 219/790] Revert "Add (but don't enable) disable-mouse" This reverts commit 29fe120cb2005f889dce40df60919d89ea9e3bd7. --- lisp/init-editing-utils.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index abda7dae93..40f751d317 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -315,8 +315,5 @@ With arg N, insert N newlines." (after-load 'guide-key (diminish 'guide-key-mode)) - -(require-package 'disable-mouse) - (provide 'init-editing-utils) From 731d890b53f53aca3aa60f1d24575019c20f6076 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 29 Dec 2017 12:22:35 +1300 Subject: [PATCH 220/790] Add dimmer package --- lisp/init-themes.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-themes.el b/lisp/init-themes.el index edbe9c29db..4bb8827f4f 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -31,4 +31,7 @@ (reapply-themes)) +(maybe-require-package 'dimmer) + + (provide 'init-themes) From 37532516475d13531dd287d6b11ea4bc03ecfcbc Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 29 Dec 2017 18:51:47 +1300 Subject: [PATCH 221/790] Add simple purescript config --- init.el | 1 + lisp/init-purescript.el | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 lisp/init-purescript.el diff --git a/init.el b/init.el index 18dfde6bfb..906399f49f 100644 --- a/init.el +++ b/init.el @@ -98,6 +98,7 @@ (require 'init-python-mode) (require 'init-haskell) (require 'init-elm) +(require 'init-purescript) (require 'init-ruby-mode) (require 'init-rails) (require 'init-sql) diff --git a/lisp/init-purescript.el b/lisp/init-purescript.el new file mode 100644 index 0000000000..100e772bd5 --- /dev/null +++ b/lisp/init-purescript.el @@ -0,0 +1,10 @@ +(when (maybe-require-package 'purescript-mode) + (when (maybe-require-package 'psc-ide) + (add-hook 'purescript-mode-hook + (lambda () + (psc-ide-mode) + (company-mode) + (flycheck-mode) + (turn-on-purescript-indentation))))) + +(provide 'init-purescript) From f2751a07085a08818978e9feefec62f5216b21c4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 1 Jan 2018 16:09:57 +1300 Subject: [PATCH 222/790] Initialise package.el with code like that now in the MELPA README --- lisp/init-elpa.el | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 1bcd41b954..1e37fd411a 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -19,29 +19,24 @@ ;;; 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) + (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/")))) + ;; We include the org repository for completeness, but don't normally ;; use it. (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/")) -(defconst sanityinc/no-ssl (and (memq system-type '(windows-nt ms-dos)) - (not (gnutls-available-p)))) - -;;; Also use Melpa for most packages -(add-to-list 'package-archives - `("melpa" . ,(if sanityinc/no-ssl - "http://melpa.org/packages/" - "https://melpa.org/packages/"))) - -(unless sanityinc/no-ssl - ;; Force SSL for GNU ELPA - (setcdr (assoc "gnu" package-archives) "https://elpa.gnu.org/packages/")) - -;; NOTE: In case of MELPA problems, the official mirror URL is -;; https://www.mirrorservice.org/sites/stable.melpa.org/packages/ - - - ;;; On-demand installation of packages From 4f1b9696714f83a272f82e753240345fa0f152d5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 1 Jan 2018 16:10:28 +1300 Subject: [PATCH 223/790] Remove warning about old copies of the backported package.el --- lisp/init-elpa.el | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 1e37fd411a..0a331818e8 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -1,13 +1,5 @@ (require 'package) - -(let ((local-package-el (locate-library "package"))) - (when (string-match-p (concat "^" (regexp-quote user-emacs-directory)) - local-package-el) - (warn "Please remove the local package.el, which is no longer supported (%s)" - local-package-el))) - - ;;; Install into separate package dirs for each Emacs version, to prevent bytecode incompatibility (let ((versioned-package-dir From 2b95e42bdca5a483552b14acf3801ae74dea7231 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 1 Jan 2018 16:13:44 +1300 Subject: [PATCH 224/790] Hide menu bar more selectively due to OS X quirks --- lisp/init-gui-frames.el | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index f0581f0499..7559bc1191 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -24,8 +24,18 @@ (tool-bar-mode -1)) (when (fboundp 'set-scroll-bar-mode) (set-scroll-bar-mode nil)) -(when (fboundp 'menu-bar-mode) - (menu-bar-mode -1)) + +;; 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) + (set-frame-parameter frame 'menu-bar-lines + (if (display-graphic-p frame) + 1 0)))) + (when (fboundp 'menu-bar-mode) + (menu-bar-mode -1))) (let ((no-border '(internal-border-width . 0))) (add-to-list 'default-frame-alist no-border) From a669a55b8ee8b5d26a3ac2b23074c615828c80a3 Mon Sep 17 00:00:00 2001 From: fd3kyt Date: Mon, 1 Jan 2018 14:46:09 +0800 Subject: [PATCH 225/790] remove sanityinc/remove-empty-drawer-on-clock-out --- lisp/init-org.el | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index e1d5bc0989..5730f9375b 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -304,18 +304,6 @@ typical word processor." -;; Remove empty LOGBOOK drawers on clock out -(defun sanityinc/remove-empty-drawer-on-clock-out () - (interactive) - (save-excursion - (beginning-of-line 0) - (org-remove-empty-drawer-at "LOGBOOK" (point)))) - -(after-load 'org-clock - (add-hook 'org-clock-out-hook 'sanityinc/remove-empty-drawer-on-clock-out 'append)) - - - ;; TODO: warn about inconsistent items, e.g. TODO inside non-PROJECT ;; TODO: nested projects! From 754608c7c59595f75abf6563709da82e81b5a98b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 3 Jan 2018 09:52:38 +1300 Subject: [PATCH 226/790] Enable pixel-scroll-mode when available --- lisp/init-gui-frames.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 7559bc1191..2655162690 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -37,6 +37,9 @@ (when (fboundp 'menu-bar-mode) (menu-bar-mode -1))) +(when (fboundp 'pixel-scroll-mode) + (pixel-scroll-mode 1)) + (let ((no-border '(internal-border-width . 0))) (add-to-list 'default-frame-alist no-border) (add-to-list 'initial-frame-alist no-border)) From 49c6de25a3cdc142dff718468d3c3038094fdac5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 3 Jan 2018 21:29:39 +1300 Subject: [PATCH 227/790] More safely determine major mode hook names Fixes #530 --- lisp/init-ruby-mode.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-ruby-mode.el b/lisp/init-ruby-mode.el index 50194171a9..032019484a 100644 --- a/lisp/init-ruby-mode.el +++ b/lisp/init-ruby-mode.el @@ -57,7 +57,7 @@ (after-load 'ruby-mode (add-hook 'ruby-mode-hook 'robe-mode)) (after-load 'company - (dolist (hook '(ruby-mode-hook inf-ruby-mode-hook html-erb-mode-hook haml-mode)) + (dolist (hook (mapcar 'derived-mode-hook-name '(ruby-mode inf-ruby-mode html-erb-mode haml-mode))) (add-hook hook (lambda () (sanityinc/local-push-company-backend 'company-robe)))))) From 083c17479c628eecf9ebd7758ed7d47bbe0eec46 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 4 Jan 2018 10:13:02 +1300 Subject: [PATCH 228/790] Increase line-spacing when in prose-mode --- lisp/init-org.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-org.el b/lisp/init-org.el index 5730f9375b..df5412de0a 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -78,12 +78,14 @@ typical word processor." ;;(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) (ignore-errors (flyspell-mode 1)) (visual-line-mode 1)) (kill-local-variable 'truncate-lines) (kill-local-variable 'word-wrap) (kill-local-variable 'cursor-type) (kill-local-variable 'show-trailing-whitespace) + (kill-local-variable 'line-spacing) (buffer-face-mode -1) ;; (delete-selection-mode -1) (flyspell-mode -1) From d14d468e03f85407dff0579e770b4b72d8b05552 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 4 Jan 2018 15:41:45 +1300 Subject: [PATCH 229/790] Easy way to open very large file at point --- lisp/init-editing-utils.el | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 40f751d317..74e503303b 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -39,7 +39,20 @@ (when (maybe-require-package 'dynamic-spaces) (dynamic-spaces-global-mode)) + ;;; A simple visible bell which works in all terminal types +;; Huge files + +(require-package 'vlf) + +(defun ffap-vlf () + "Find file at point with VLF." + (interactive) + (let ((file (ffap-file-at-point))) + (unless (file-exists-p file) + (error "File does not exist: %s" file)) + (vlf file))) + (defun sanityinc/flash-mode-line () (invert-face 'mode-line) From 6b20c10948f8b54ede177d08811cfca2a6194978 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 4 Jan 2018 15:44:47 +1300 Subject: [PATCH 230/790] Use extracted mode-line-bell package --- lisp/init-editing-utils.el | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 74e503303b..a89afbb776 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -54,12 +54,10 @@ (vlf file))) -(defun sanityinc/flash-mode-line () - (invert-face 'mode-line) - (run-with-timer 0.05 nil 'invert-face 'mode-line)) -(setq-default - ring-bell-function 'sanityinc/flash-mode-line) + +(require-package 'mode-line-bell) +(add-hook 'after-init-hook 'mode-line-bell-mode) From a8a8c41bd6225bb0a70a739ec53c5d2dc8760b06 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 16 Jan 2018 07:58:25 +1300 Subject: [PATCH 231/790] Remove inconsistent -mode suffix from init-ruby and init-python files Fixes #534 --- init.el | 4 ++-- lisp/init-html.el | 2 +- lisp/{init-python-mode.el => init-python.el} | 2 +- lisp/{init-ruby-mode.el => init-ruby.el} | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename lisp/{init-python-mode.el => init-python.el} (95%) rename lisp/{init-ruby-mode.el => init-ruby.el} (99%) diff --git a/init.el b/init.el index 906399f49f..bd7cabdfcb 100644 --- a/init.el +++ b/init.el @@ -95,11 +95,11 @@ (require 'init-css) (require 'init-haml) (require 'init-http) -(require 'init-python-mode) +(require 'init-python) (require 'init-haskell) (require 'init-elm) (require 'init-purescript) -(require 'init-ruby-mode) +(require 'init-ruby) (require 'init-rails) (require 'init-sql) (require 'init-rust) diff --git a/lisp/init-html.el b/lisp/init-html.el index 047a3fc580..3b3017e66e 100644 --- a/lisp/init-html.el +++ b/lisp/init-html.el @@ -8,6 +8,6 @@ (add-auto-mode 'html-mode "\\.\\(jsp\\|tmpl\\)\\'") -;; Note: ERB is configured in init-ruby-mode +;; Note: ERB is configured in init-ruby (provide 'init-html) diff --git a/lisp/init-python-mode.el b/lisp/init-python.el similarity index 95% rename from lisp/init-python-mode.el rename to lisp/init-python.el index 8aa5b4767f..a37cdb952c 100644 --- a/lisp/init-python-mode.el +++ b/lisp/init-python.el @@ -15,4 +15,4 @@ (lambda () (sanityinc/local-push-company-backend 'company-anaconda)))))) -(provide 'init-python-mode) +(provide 'init-python) diff --git a/lisp/init-ruby-mode.el b/lisp/init-ruby.el similarity index 99% rename from lisp/init-ruby-mode.el rename to lisp/init-ruby.el index 032019484a..677fe5bf0b 100644 --- a/lisp/init-ruby-mode.el +++ b/lisp/init-ruby.el @@ -136,4 +136,4 @@ -(provide 'init-ruby-mode) +(provide 'init-ruby) From 47a49a2492dcf924fafec60e33b4945adb6af72d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 18 Jan 2018 12:17:05 +1300 Subject: [PATCH 232/790] Add some nix packages --- init.el | 1 + lisp/init-nix.el | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 lisp/init-nix.el diff --git a/init.el b/init.el index bd7cabdfcb..5ae2514c0c 100644 --- a/init.el +++ b/init.el @@ -107,6 +107,7 @@ (require 'init-yaml) (require 'init-docker) (require 'init-terraform) +(require 'init-nix) (require 'init-paredit) (require 'init-lisp) diff --git a/lisp/init-nix.el b/lisp/init-nix.el new file mode 100644 index 0000000000..7ee65b1e6c --- /dev/null +++ b/lisp/init-nix.el @@ -0,0 +1,12 @@ +(maybe-require-package 'nix-mode) +(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 + (add-to-list 'company-backends 'company-nixos-options)))) + + + +(provide 'init-nix) From 1c7122f4ece28b7ae5bba3a721d8c72f1e642435 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 18 Jan 2018 12:17:18 +1300 Subject: [PATCH 233/790] Add nginx-mode --- init.el | 1 + 1 file changed, 1 insertion(+) diff --git a/init.el b/init.el index 5ae2514c0c..8ecacc06f6 100644 --- a/init.el +++ b/init.el @@ -108,6 +108,7 @@ (require 'init-docker) (require 'init-terraform) (require 'init-nix) +(maybe-require-package 'nginx-mode) (require 'init-paredit) (require 'init-lisp) From 0eeb4869e47ed3cf8176f2a11126ca98c2e36a9b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 25 Jan 2018 20:23:41 +1300 Subject: [PATCH 234/790] Drop project-local-variables package Fixes #540 --- init.el | 7 +++++-- lisp/init-misc.el | 1 + lisp/init-nxml.el | 2 -- lisp/init-org.el | 1 + lisp/init-sql.el | 3 ++- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/init.el b/init.el index 8ecacc06f6..1141e22a06 100644 --- a/init.el +++ b/init.el @@ -1,4 +1,5 @@ ;; -*- lexical-binding: t -*- +(setq debug-on-error t) ;;; This file bootstraps the configuration, which is divided into ;;; a number of other files. @@ -44,7 +45,6 @@ ;;---------------------------------------------------------------------------- (require-package 'wgrep) -(require-package 'project-local-variables) (require-package 'diminish) (require-package 'scratch) (require-package 'command-log-mode) @@ -64,6 +64,7 @@ (require 'init-recentf) (require 'init-smex) (require 'init-ivy) +;;(require 'init-helm) (require 'init-hippie-expand) (require 'init-company) (require 'init-windows) @@ -124,6 +125,9 @@ (require 'init-folding) (require 'init-dash) + +;;(require 'init-twitter) +;; (require 'init-mu) (require 'init-ledger) ;; Extra packages which don't require any configuration @@ -143,7 +147,6 @@ (unless (server-running-p) (server-start)) - ;;---------------------------------------------------------------------------- ;; Variables configured via the interactive 'customize' interface ;;---------------------------------------------------------------------------- diff --git a/lisp/init-misc.el b/lisp/init-misc.el index eb7761b086..2fd9cb119f 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -7,6 +7,7 @@ (add-hook 'prog-mode-hook 'goto-address-prog-mode) (setq goto-address-mail-face 'link) +;; TODO: publish this as "newscript" package or similar, providing global minor mode (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p) (add-hook 'after-save-hook 'sanityinc/set-mode-for-new-scripts) diff --git a/lisp/init-nxml.el b/lisp/init-nxml.el index 45d73685e8..c12b8fb068 100644 --- a/lisp/init-nxml.el +++ b/lisp/init-nxml.el @@ -7,8 +7,6 @@ "\\'")) (setq magic-mode-alist (cons '("<\\?xml " . nxml-mode) magic-mode-alist)) (fset 'xml-mode 'nxml-mode) -(add-hook 'nxml-mode-hook (lambda () - (set (make-local-variable 'ido-use-filename-at-point) nil))) (setq nxml-slash-auto-complete-flag t) diff --git a/lisp/init-org.el b/lisp/init-org.el index df5412de0a..64130c35c0 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -22,6 +22,7 @@ ;; 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 diff --git a/lisp/init-sql.el b/lisp/init-sql.el index aad388a915..84499d8ec3 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." (add-hook 'sql-interactive-mode-hook 'sanityinc/font-lock-everything-in-sql-interactive-mode) - +;; Package ideas: +;; - PEV (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 From 61f38e40694f8c7eaa1652c86b1addb0f993c5d1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 25 Jan 2018 20:25:00 +1300 Subject: [PATCH 235/790] Drop tidy package See #540 --- lisp/init-nxml.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/init-nxml.el b/lisp/init-nxml.el index c12b8fb068..1b5cf0fe07 100644 --- a/lisp/init-nxml.el +++ b/lisp/init-nxml.el @@ -33,8 +33,6 @@ indentation rules." ;;---------------------------------------------------------------------------- ;; Integration with tidy for html + xml ;;---------------------------------------------------------------------------- -(require-package 'tidy) -(add-hook 'nxml-mode-hook (lambda () (tidy-build-menu nxml-mode-map))) (defun sanityinc/tidy-buffer-xml (beg end) "Run \"tidy -xml\" on the region from BEG to END, or whole buffer." From 738879ae7c3f72d7245408ca6ea7eb23c3c12256 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 25 Jan 2018 20:25:56 +1300 Subject: [PATCH 236/790] Drop dired-sort package See #540 --- lisp/init-dired.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 93f9062afb..60038d53c2 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -1,5 +1,3 @@ -(require-package 'dired-sort) - (setq-default dired-dwim-target t) ;; Prefer g-prefixed coreutils version of standard utilities when available @@ -11,7 +9,6 @@ (diredfl-global-mode))) (after-load 'dired - (require 'dired-sort) (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) From 34d931f04b4b5b767125018b469c48eec48a0b81 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 25 Jan 2018 20:26:28 +1300 Subject: [PATCH 237/790] Drop csv-nav package See #540 --- lisp/init-csv.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-csv.el b/lisp/init-csv.el index 4a9eb36791..f4ab0bb7ee 100644 --- a/lisp/init-csv.el +++ b/lisp/init-csv.el @@ -1,5 +1,4 @@ (require-package 'csv-mode) -(require-package 'csv-nav) (add-auto-mode 'csv-mode "\\.[Cc][Ss][Vv]\\'") From 9e596c70af444e29abe3547721feb5b76a824afb Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 25 Jan 2018 20:27:00 +1300 Subject: [PATCH 238/790] Drop auto-mode-alist entry for ledger-mode, now added upstream --- lisp/init-ledger.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-ledger.el b/lisp/init-ledger.el index b45f9e6f28..1b32c5c90f 100644 --- a/lisp/init-ledger.el +++ b/lisp/init-ledger.el @@ -1,7 +1,4 @@ (when (maybe-require-package 'ledger-mode) - - (add-to-list 'auto-mode-alist '("\\.ledger$" . ledger-mode)) - (when (maybe-require-package 'flycheck-ledger) (after-load 'flycheck (after-load 'ledger-mode From 342baea11838ba7f22ccee43e8b267048b8e6962 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 25 Jan 2018 20:35:11 +1300 Subject: [PATCH 239/790] Remove another use of the tidy package See #540 --- lisp/init-html.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-html.el b/lisp/init-html.el index 3b3017e66e..2360c52b1a 100644 --- a/lisp/init-html.el +++ b/lisp/init-html.el @@ -1,6 +1,3 @@ -(require-package 'tidy) -(add-hook 'html-mode-hook (lambda () (tidy-build-menu html-mode-map))) - (require-package 'tagedit) (after-load 'sgml-mode (tagedit-add-paredit-like-keybindings) From 938b9464d8f15b55e29abfe685202cdcc3682cc2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 27 Jan 2018 13:05:18 +1300 Subject: [PATCH 240/790] Patch broken nix completion backend (see #538) --- lisp/init-nix.el | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 7ee65b1e6c..91a9a46327 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -5,6 +5,13 @@ (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 + (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)))))) + (add-to-list 'company-backends 'company-nixos-options)))) From 1ae3332b3d3778f351cd1edb3a83bf3085e54df9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 27 Jan 2018 13:28:01 +1300 Subject: [PATCH 241/790] Fix workaround for company / page-break-lines clash Fixes #501 --- lisp/init-company.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index 289cd77ccb..f1f4b1fcef 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -26,7 +26,7 @@ ;; 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-mode + (after-load 'page-break-lines (defvar sanityinc/page-break-lines-on-p nil) (make-variable-buffer-local 'sanityinc/page-break-lines-on-p) From 7554c07b235e5a293135564b3a1de5e34fa7fcf2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 27 Jan 2018 13:28:31 +1300 Subject: [PATCH 242/790] Fix comment position relative to line break --- lisp/init-editing-utils.el | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index a89afbb776..2bdf03f6ec 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -40,7 +40,7 @@ (dynamic-spaces-global-mode)) - ;;; A simple visible bell which works in all terminal types + ;; Huge files (require-package 'vlf) @@ -53,9 +53,8 @@ (error "File does not exist: %s" file)) (vlf file))) - - +;;; A simple visible bell which works in all terminal types (require-package 'mode-line-bell) (add-hook 'after-init-hook 'mode-line-bell-mode) From 0c7d2cb3ddd336e02a17b28f6ac6afd44beaa0e6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 27 Jan 2018 13:32:57 +1300 Subject: [PATCH 243/790] Setting default-input-method on OS X is a waste of time See #320 --- lisp/init-osx-keys.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-osx-keys.el b/lisp/init-osx-keys.el index 9cea45056f..d598390196 100644 --- a/lisp/init-osx-keys.el +++ b/lisp/init-osx-keys.el @@ -1,7 +1,6 @@ (when *is-a-mac* (setq mac-command-modifier 'meta) (setq mac-option-modifier 'none) - (setq-default default-input-method "MacOSX") ;; Make mouse wheel / trackpad scrolling less jerky (setq mouse-wheel-scroll-amount '(1 ((shift) . 5) From 6d7d1350b9c51560fa12491be902d217d2541b87 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 27 Jan 2018 15:04:42 +1300 Subject: [PATCH 244/790] Move `uptimes` earlier in init.el --- init.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/init.el b/init.el index 1141e22a06..c4a178dbdc 100644 --- a/init.el +++ b/init.el @@ -140,6 +140,10 @@ (maybe-require-package 'regex-tool) (maybe-require-package 'dotenv-mode) +(when (maybe-require-package 'uptimes) + (add-hook 'after-init-hook (lambda () (require 'uptimes)))) + + ;;---------------------------------------------------------------------------- ;; Allow access from emacsclient ;;---------------------------------------------------------------------------- @@ -166,8 +170,6 @@ (require 'init-locales) -(when (maybe-require-package 'uptimes) - (add-hook 'after-init-hook (lambda () (require 'uptimes)))) (provide 'init) From 29d5f3c1aeb959c3e024bcdbc9fd18f951e2ea11 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 27 Jan 2018 15:04:56 +1300 Subject: [PATCH 245/790] Place loading of init-local after init-locales, to allow overrides See #320 --- init.el | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/init.el b/init.el index c4a178dbdc..3baf3ab35e 100644 --- a/init.el +++ b/init.el @@ -159,16 +159,15 @@ ;;---------------------------------------------------------------------------- -;; Allow users to provide an optional "init-local" containing personal settings +;; Locales (setting them earlier in this file doesn't work in X) ;;---------------------------------------------------------------------------- -(require 'init-local nil t) +(require 'init-locales) ;;---------------------------------------------------------------------------- -;; Locales (setting them earlier in this file doesn't work in X) +;; Allow users to provide an optional "init-local" containing personal settings ;;---------------------------------------------------------------------------- -(require 'init-locales) - +(require 'init-local nil t) From a77712d132a9118537431c972a50c773409d341a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 27 Jan 2018 15:21:03 +1300 Subject: [PATCH 246/790] Store up to 200 past uptimes, not only 10 --- init.el | 1 + 1 file changed, 1 insertion(+) diff --git a/init.el b/init.el index 3baf3ab35e..f2eb6f2ae2 100644 --- a/init.el +++ b/init.el @@ -141,6 +141,7 @@ (maybe-require-package 'dotenv-mode) (when (maybe-require-package 'uptimes) + (setq-default uptimes-keep-count 200) (add-hook 'after-init-hook (lambda () (require 'uptimes)))) From a71f5af94f392369574ef64e6d3025dc53c3891a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 31 Jan 2018 19:48:36 +1300 Subject: [PATCH 247/790] Disable nix config for now (see #542) Waiting for merge of travisbhartwell/nix-emacs#39 and travisbhartwell/nix-emacs#46. --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index f2eb6f2ae2..60106c9642 100644 --- a/init.el +++ b/init.el @@ -108,7 +108,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 775807a26ac88e9616b9f96747dfd6c8779f8db0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 1 Feb 2018 13:12:05 +1300 Subject: [PATCH 248/790] Replace github-issues and magit-gh-pulls with magithub --- .gitignore | 1 + lisp/init-github.el | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 475528e8a0..15d5de4173 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ site-lisp/package/ /.uptimes.el /rake.cache /plantuml.jar +/magithub diff --git a/lisp/init-github.el b/lisp/init-github.el index b1fbf113bc..e9a221ba4f 100644 --- a/lisp/init-github.el +++ b/lisp/init-github.el @@ -5,9 +5,7 @@ (add-hook 'prog-mode-hook 'bug-reference-prog-mode) (maybe-require-package 'github-clone) -(maybe-require-package 'github-issues) -(maybe-require-package 'magit-gh-pulls) - +(maybe-require-package 'magithub) (provide 'init-github) From 9946473be597c977788dc945732a1195ffde1cbf Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 2 Feb 2018 17:00:20 +1300 Subject: [PATCH 249/790] Add a completion function for issues in github commit messages --- lisp/init-github.el | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/lisp/init-github.el b/lisp/init-github.el index e9a221ba4f..67a2919ec9 100644 --- a/lisp/init-github.el +++ b/lisp/init-github.el @@ -5,7 +5,37 @@ (add-hook 'prog-mode-hook 'bug-reference-prog-mode) (maybe-require-package 'github-clone) -(maybe-require-package 'magithub) +(when (maybe-require-package 'magithub) + (defun magithub-issues-completion-at-point () + (when (magithub-enabled-p) + (when (looking-back "#\\([0-9]*\\)") + (let ((start (match-beginning 1)) + (end (match-end 0)) + (prefix (match-string 1)) + completions) + (dolist (i (magithub--issue-list)) + (let-alist i + (let ((n (number-to-string .number))) + (when (string-prefix-p prefix n) + (set-text-properties 0 (length n) (list :issue i) n) + (push n completions))))) + (list start end completions + :exclusive 'no + :company-docsig (lambda (c) + (let-alist (get-text-property 0 :issue c) + .title)) + :company-location (lambda (c) + (magithub-issue-browse (get-text-property 0 :issue c))) + :annotation-function (lambda (c) + (let-alist (get-text-property 0 :issue c) + .title)) + :company-doc-buffer (lambda (c) + (save-window-excursion + (magithub-issue-visit (get-text-property 0 :issue c)))) + ))))) + + (add-hook 'git-commit-setup-hook + (lambda () (add-to-list 'completion-at-point-functions 'magithub-issues-completion-at-point)))) (provide 'init-github) From 55af5c68c153d1c66f2c4b8e55fbb58aeac00ea2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 4 Feb 2018 21:02:50 +1300 Subject: [PATCH 250/790] Remove magithub completion, which is now directly in magithub See https://github.com/vermiculus/magithub/pull/263 --- lisp/init-github.el | 32 +------------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/lisp/init-github.el b/lisp/init-github.el index 67a2919ec9..e9a221ba4f 100644 --- a/lisp/init-github.el +++ b/lisp/init-github.el @@ -5,37 +5,7 @@ (add-hook 'prog-mode-hook 'bug-reference-prog-mode) (maybe-require-package 'github-clone) -(when (maybe-require-package 'magithub) - (defun magithub-issues-completion-at-point () - (when (magithub-enabled-p) - (when (looking-back "#\\([0-9]*\\)") - (let ((start (match-beginning 1)) - (end (match-end 0)) - (prefix (match-string 1)) - completions) - (dolist (i (magithub--issue-list)) - (let-alist i - (let ((n (number-to-string .number))) - (when (string-prefix-p prefix n) - (set-text-properties 0 (length n) (list :issue i) n) - (push n completions))))) - (list start end completions - :exclusive 'no - :company-docsig (lambda (c) - (let-alist (get-text-property 0 :issue c) - .title)) - :company-location (lambda (c) - (magithub-issue-browse (get-text-property 0 :issue c))) - :annotation-function (lambda (c) - (let-alist (get-text-property 0 :issue c) - .title)) - :company-doc-buffer (lambda (c) - (save-window-excursion - (magithub-issue-visit (get-text-property 0 :issue c)))) - ))))) - - (add-hook 'git-commit-setup-hook - (lambda () (add-to-list 'completion-at-point-functions 'magithub-issues-completion-at-point)))) +(maybe-require-package 'magithub) (provide 'init-github) From 76e2147b4e0c4e7e33e72ba189f48894f4b24283 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 8 Feb 2018 09:25:08 +1300 Subject: [PATCH 251/790] Enable dimmer-mode by default --- 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 4bb8827f4f..f3fcbaabce 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -31,7 +31,9 @@ (reapply-themes)) -(maybe-require-package 'dimmer) +(when (maybe-require-package 'dimmer) + (setq-default dimmer-fraction 0.1) + (add-hook 'after-init-hook 'dimmer-mode)) (provide 'init-themes) From 6788bb41dae3e44d58839b12b4e335854920d079 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 20 Feb 2018 09:18:36 +1300 Subject: [PATCH 252/790] Handle the prompt pattern for the 1password command-line interface --- lisp/init-misc.el | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index 2fd9cb119f..4e84aa040f 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -22,6 +22,15 @@ (normal-mode))) +;; Handle the prompt pattern for the 1password command-line interface +(after-load 'comint + (setq comint-password-prompt-regexp + (concat + comint-password-prompt-regexp + "\\|^Please enter your password for user .*?:\\s *\\'"))) + + + (setq-default regex-tool-backend 'perl) (after-load 're-builder ;; Support a slightly more idiomatic quit binding in re-builder From 70df4197cd1184f45b7c5ca35616b949e56c142f Mon Sep 17 00:00:00 2001 From: David Corking Date: Mon, 26 Feb 2018 11:00:47 +0000 Subject: [PATCH 253/790] Configure flycheck-rust package --- lisp/init-rust.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-rust.el b/lisp/init-rust.el index 3256a8bdc4..bf35e60720 100644 --- a/lisp/init-rust.el +++ b/lisp/init-rust.el @@ -3,5 +3,7 @@ (add-hook 'rust-mode-hook #'racer-mode) (add-hook 'racer-mode-hook #'eldoc-mode))) +(when (maybe-require-package 'flycheck-rust) + (add-hook 'flycheck-mode-hook #'flycheck-rust-setup)) (provide 'init-rust) From 5221aa6d95f429484a5263bca6b1966f69f2df9f Mon Sep 17 00:00:00 2001 From: David Corking Date: Mon, 26 Feb 2018 14:42:59 +0000 Subject: [PATCH 254/790] Add rust racer autocompletion with company --- lisp/init-rust.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-rust.el b/lisp/init-rust.el index bf35e60720..0565195602 100644 --- a/lisp/init-rust.el +++ b/lisp/init-rust.el @@ -1,7 +1,9 @@ (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 'racer-mode-hook #'eldoc-mode)) + (when (maybe-require-package 'company) + (add-hook 'racer-mode-hook #'company-mode))) (when (maybe-require-package 'flycheck-rust) (add-hook 'flycheck-mode-hook #'flycheck-rust-setup)) From 7f49929800a0244eab0384a1abb769491e46f04e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 1 Mar 2018 09:42:33 +1300 Subject: [PATCH 255/790] Enable diff-hl globally, not just in prog-mode --- lisp/init-vc.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-vc.el b/lisp/init-vc.el index 0d10cb5d88..7601d947f7 100644 --- a/lisp/init-vc.el +++ b/lisp/init-vc.el @@ -1,7 +1,6 @@ (when (maybe-require-package 'diff-hl) - (add-hook 'prog-mode-hook 'diff-hl-mode) - (add-hook 'vc-dir-mode-hook 'diff-hl-mode) (add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh) + (add-hook 'after-init-hook 'global-diff-hl-mode) (after-load 'diff-hl (define-key diff-hl-mode-map From cc12371d6927173a8a85e6382cd0ab2665ffef15 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 1 Mar 2018 09:43:02 +1300 Subject: [PATCH 256/790] Don't electric-pair in prose-mode --- lisp/init-org.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-org.el b/lisp/init-org.el index 64130c35c0..d3fb9ee848 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -80,6 +80,7 @@ typical word processor." (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) (ignore-errors (flyspell-mode 1)) (visual-line-mode 1)) (kill-local-variable 'truncate-lines) @@ -87,6 +88,7 @@ typical word processor." (kill-local-variable 'cursor-type) (kill-local-variable 'show-trailing-whitespace) (kill-local-variable 'line-spacing) + (kill-local-variable 'electric-pair-mode) (buffer-face-mode -1) ;; (delete-selection-mode -1) (flyspell-mode -1) From b754e70d2307a90ec6afce35992ac7e025654b5f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 1 Mar 2018 09:44:36 +1300 Subject: [PATCH 257/790] Drop use of dynamic-spaces --- lisp/init-editing-utils.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 2bdf03f6ec..d0e5e8ae73 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -36,10 +36,6 @@ (add-hook 'after-init-hook 'transient-mark-mode) -(when (maybe-require-package 'dynamic-spaces) - (dynamic-spaces-global-mode)) - - ;; Huge files From e2e21caab281574700e55013283744ec2bf1b6c7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 1 Mar 2018 09:45:06 +1300 Subject: [PATCH 258/790] Note that sanityinc/sql-explain-region-as-json is blocking --- lisp/init-sql.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 84499d8ec3..1efc56e525 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -63,7 +63,9 @@ If the region is not active, uses the current paragraph, as per Connection information is taken from the special sql-* variables set in the current buffer, so you will usually want to start a -SQLi session first, or otherwise set `sql-database' etc." +SQLi session first, or otherwise set `sql-database' etc. + +This command currently blocks the UI, sorry." (interactive "rP") (unless (eq sql-product 'postgres) (user-error "This command is for PostgreSQL only")) From 48ce625a170a585b8d86b30d979a901a783a0426 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 10 Mar 2018 10:52:51 +1300 Subject: [PATCH 259/790] Disable tagedit's M-? binding to avoid shadowing mine Fixes #550 --- lisp/init-html.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-html.el b/lisp/init-html.el index 2360c52b1a..c81c85c40c 100644 --- a/lisp/init-html.el +++ b/lisp/init-html.el @@ -3,6 +3,9 @@ (tagedit-add-paredit-like-keybindings) (add-hook 'sgml-mode-hook (lambda () (tagedit-mode 1)))) +(after-load 'tagedit + (define-key tagedit-mode-map (kbd "M-?") nil)) + (add-auto-mode 'html-mode "\\.\\(jsp\\|tmpl\\)\\'") ;; Note: ERB is configured in init-ruby From fbd9c893e017c9b9a617a7ce0786afcdd5b964b3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 11 Mar 2018 13:56:21 +1300 Subject: [PATCH 260/790] Add daemons package --- init.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/init.el b/init.el index 60106c9642..2e621ef424 100644 --- a/init.el +++ b/init.el @@ -137,6 +137,8 @@ (require-package 'dsvn) (when *is-a-mac* (require-package 'osx-location)) +(unless (eq system-type 'windows-nt) + (maybe-require-package 'daemons)) (maybe-require-package 'regex-tool) (maybe-require-package 'dotenv-mode) From 815ceec88f621a20194da2126e88aae32c7c72f2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 11 Mar 2018 14:13:32 +1300 Subject: [PATCH 261/790] Better override M-? in tagedit-mode (see #550) --- lisp/init-html.el | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lisp/init-html.el b/lisp/init-html.el index c81c85c40c..2d2fdbc74c 100644 --- a/lisp/init-html.el +++ b/lisp/init-html.el @@ -1,11 +1,9 @@ (require-package 'tagedit) (after-load 'sgml-mode (tagedit-add-paredit-like-keybindings) + (define-key tagedit-mode-map (kbd "M-?") nil) (add-hook 'sgml-mode-hook (lambda () (tagedit-mode 1)))) -(after-load 'tagedit - (define-key tagedit-mode-map (kbd "M-?") nil)) - (add-auto-mode 'html-mode "\\.\\(jsp\\|tmpl\\)\\'") ;; Note: ERB is configured in init-ruby From 39ac083d1586207d49c06fa622e4e776de6c6a5d Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 11 Mar 2018 14:22:37 +1300 Subject: [PATCH 262/790] Bind M-/ to company-other-backend in company-active-map See #546 --- lisp/init-company.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index f1f4b1fcef..492848bcad 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -9,7 +9,7 @@ (after-load 'company (diminish 'company-mode "CMP") (define-key company-mode-map (kbd "M-/") 'company-complete) - (define-key company-active-map (kbd "M-/") 'company-select-next) + (define-key company-ac (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) (setq-default company-dabbrev-other-buffers 'all From 89da23f1354f89a546574995bdf12c7fd53c5f07 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 11 Mar 2018 16:00:48 +1300 Subject: [PATCH 263/790] Fix mangled keymap name --- lisp/init-company.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index 492848bcad..e4cc7f261c 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -9,7 +9,7 @@ (after-load 'company (diminish 'company-mode "CMP") (define-key company-mode-map (kbd "M-/") 'company-complete) - (define-key company-ac (kbd "M-/") 'company-other-backend) + (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) (setq-default company-dabbrev-other-buffers 'all From 9a1d2a065a6cdc97bb3267e861c76ca5da034d63 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 13 Mar 2018 11:05:23 +1300 Subject: [PATCH 264/790] Better versions of split-window-{horizontally,vertically}-instead --- lisp/init-windows.el | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lisp/init-windows.el b/lisp/init-windows.el index 46c90f1dd6..5623b3c502 100644 --- a/lisp/init-windows.el +++ b/lisp/init-windows.el @@ -43,16 +43,22 @@ ;; 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) - (save-excursion + (let ((other-buffer (and (next-window) (window-buffer (next-window))))) (delete-other-windows) - (funcall (split-window-func-with-other-buffer 'split-window-horizontally)))) + (split-window-horizontally) + (when other-buffer + (set-window-buffer (next-window) other-buffer)))) (defun split-window-vertically-instead () + "Kill any other windows and re-split such that the current window is on the left half of the frame." (interactive) - (save-excursion + (let ((other-buffer (and (next-window) (window-buffer (next-window))))) (delete-other-windows) - (funcall (split-window-func-with-other-buffer 'split-window-vertically)))) + (split-window-vertically) + (when other-buffer + (set-window-buffer (next-window) other-buffer)))) (global-set-key (kbd "C-x |") 'split-window-horizontally-instead) (global-set-key (kbd "C-x _") 'split-window-vertically-instead) From a544cdaacab7f0c76a217a40f43c948db41550f9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 13 Mar 2018 11:06:15 +1300 Subject: [PATCH 265/790] Make isearch-yank-symbol more concise --- lisp/init-isearch.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-isearch.el b/lisp/init-isearch.el index 188066c1b0..42695ca204 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -17,11 +17,11 @@ (defun isearch-yank-symbol () "*Put symbol at current point into search string." (interactive) - (let ((sym (symbol-at-point))) + (let ((sym (thing-at-point 'symbol))) (if sym (progn (setq isearch-regexp t - isearch-string (concat "\\_<" (regexp-quote (symbol-name sym)) "\\_>") + isearch-string (concat "\\_<" (regexp-quote sym) "\\_>") isearch-message (mapconcat 'isearch-text-char-description isearch-string "") isearch-yank-flag t)) (ding))) From 112da9ba442e950ddeab4eeb151e754bca13df2f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 15 Mar 2018 17:18:24 +1300 Subject: [PATCH 266/790] Suppress errors when hindent--before-save fails --- lisp/init-haskell.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index b251928f68..2229c9b408 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -30,7 +30,14 @@ (add-hook 'haskell-mode-hook 'haskell-auto-insert-module-template) (when (maybe-require-package 'hindent) - (add-hook 'haskell-mode-hook 'hindent-mode)) + (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)))) (after-load 'haskell-mode (define-key haskell-mode-map (kbd "C-c h") 'hoogle) From dc88e83fb6842fd6cc8a0d3c4ed87c4758de5c51 Mon Sep 17 00:00:00 2001 From: re-mx Date: Thu, 15 Mar 2018 20:08:51 +0800 Subject: [PATCH 267/790] Add company-php for PHP auto-complete --- lisp/init-php.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/init-php.el b/lisp/init-php.el index a9534615ed..5e39167726 100644 --- a/lisp/init-php.el +++ b/lisp/init-php.el @@ -1,4 +1,9 @@ (when (maybe-require-package 'php-mode) - (maybe-require-package 'smarty-mode)) + (maybe-require-package 'smarty-mode) + + (when (maybe-require-package 'company-php) + (after-load 'company + (add-hook 'php-mode-hook + (lambda () (sanityinc/local-push-company-backend 'company-ac-php-backend)))))) (provide 'init-php) From 00b1cded17e1703dff9b659391e409f0293ab600 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 18 Mar 2018 15:25:40 +1300 Subject: [PATCH 268/790] Perform rust flycheck setup later --- lisp/init-rust.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-rust.el b/lisp/init-rust.el index 0565195602..1cc4f9eb08 100644 --- a/lisp/init-rust.el +++ b/lisp/init-rust.el @@ -6,6 +6,7 @@ (add-hook 'racer-mode-hook #'company-mode))) (when (maybe-require-package 'flycheck-rust) - (add-hook 'flycheck-mode-hook #'flycheck-rust-setup)) + (after-load 'rust-mode + (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))) (provide 'init-rust) From 5c3dccc3914e0063212fa81e677e30dd09d2f99f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Mar 2018 10:08:21 +1300 Subject: [PATCH 269/790] Tidier regex-tool config --- init.el | 1 - lisp/init-misc.el | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/init.el b/init.el index 2e621ef424..0d5c7cd96a 100644 --- a/init.el +++ b/init.el @@ -139,7 +139,6 @@ (require-package 'osx-location)) (unless (eq system-type 'windows-nt) (maybe-require-package 'daemons)) -(maybe-require-package 'regex-tool) (maybe-require-package 'dotenv-mode) (when (maybe-require-package 'uptimes) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index 4e84aa040f..faac8dfa60 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -31,7 +31,9 @@ -(setq-default regex-tool-backend 'perl) +(when (maybe-require-package 'regex-tool) + (setq-default regex-tool-backend 'perl)) + (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)) From 3e0ca7471083bfa7a507cefc9d1f1886604f8d51 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 19 Mar 2018 10:08:35 +1300 Subject: [PATCH 270/790] Stricter auto-mode-alist patterns --- lisp/init-misc.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index faac8dfa60..14af301456 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -1,7 +1,7 @@ ;;---------------------------------------------------------------------------- ;; Misc config - yet to be placed in separate files ;;---------------------------------------------------------------------------- -(add-auto-mode 'tcl-mode "Portfile\\'") +(add-auto-mode 'tcl-mode "^Portfile\\'") (fset 'yes-or-no-p 'y-or-n-p) (add-hook 'prog-mode-hook 'goto-address-prog-mode) @@ -38,7 +38,7 @@ ;; Support a slightly more idiomatic quit binding in re-builder (define-key reb-mode-map (kbd "C-c C-k") 'reb-quit)) -(add-auto-mode 'conf-mode "Procfile") +(add-auto-mode 'conf-mode "^Procfile\\'") (provide 'init-misc) From e09a1af1199adfe3879e9e41c0075517a7d8550a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 13 Mar 2018 19:52:28 +1300 Subject: [PATCH 271/790] Better docstring for sanityinc/counsel-search-project Closes #555 --- lisp/init-ivy.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index fcc52d7ab9..696391840e 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -48,7 +48,7 @@ ((executable-find "ack") 'counsel-ack)))) (when search-function (defun sanityinc/counsel-search-project (initial-input &optional use-current-dir) - "Search using `counsel-ag' from the project root for INITIAL-INPUT. + "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." From bedd5f69d492f891d8bef247d877ee6baa5d4ec7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 26 Mar 2018 22:32:16 +1300 Subject: [PATCH 272/790] Defer loading of some isearch config --- lisp/init-isearch.el | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lisp/init-isearch.el b/lisp/init-isearch.el index 42695ca204..62feb1aa43 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -6,11 +6,13 @@ (global-set-key [remap query-replace] 'anzu-query-replace)) ;; Activate occur easily inside isearch -(when (maybe-require-package 'emacs '(24 3)) - (define-key isearch-mode-map (kbd "C-c C-o") 'isearch-occur)) ;; to match ivy conventions +(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) -;; 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) + (when (fboundp 'isearch-occur) + ;; to match ivy conventions + (define-key isearch-mode-map (kbd "C-c C-o") 'isearch-occur))) ;; Search back/forth for the symbol at point ;; See http://www.emacswiki.org/emacs/SearchAtPoint From cd7116bfded77198478f407add9f4b8b889f5143 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 28 Mar 2018 21:52:26 +1300 Subject: [PATCH 273/790] Drop org-fstree Closes #563 --- lisp/init-org.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index d3fb9ee848..110c1fd5dc 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -1,4 +1,3 @@ -(maybe-require-package 'org-fstree) (when *is-a-mac* (maybe-require-package 'grab-mac-link)) From f1eb10a63c7ff782572d6cb6aa7b43483085531b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 31 Mar 2018 12:29:54 +1300 Subject: [PATCH 274/790] Explicitly prefer the built-in scss and less modes when available See #565 --- lisp/init-css.el | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lisp/init-css.el b/lisp/init-css.el index bf2c61bcb9..bfbf941e54 100644 --- a/lisp/init-css.el +++ b/lisp/init-css.el @@ -36,13 +36,17 @@ ;;; SASS and SCSS (require-package 'sass-mode) -(require-package 'scss-mode) +(unless (fboundp 'scss-mode) + ;; Prefer the scss-mode built into Emacs + (require-package 'scss-mode)) (setq-default scss-compile-at-save nil) ;;; LESS -(require-package 'less-css-mode) +(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)) From 9bd4985359131dcc64d44b456229e2237f4ff356 Mon Sep 17 00:00:00 2001 From: re-mx Date: Sat, 31 Mar 2018 11:51:27 +0800 Subject: [PATCH 275/790] Improve erlang config --- lisp/init-erlang.el | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lisp/init-erlang.el b/lisp/init-erlang.el index 02f2ef4bc1..ed149e493d 100644 --- a/lisp/init-erlang.el +++ b/lisp/init-erlang.el @@ -1,7 +1,4 @@ -(ignore-errors - (require-package 'erlang)) - -(when (package-installed-p 'erlang) +(when (maybe-require-package 'erlang) (require 'erlang-start)) From 97700a818f10be0cf10bb45fcdea67b471bb4f05 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 7 Apr 2018 17:27:28 +1200 Subject: [PATCH 276/790] Enable symbol-overlay in conf-mode and yaml-mode too Fixes #569, thanks @masolino --- 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 d0e5e8ae73..3e8eb91b60 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -101,7 +101,7 @@ (when (maybe-require-package 'symbol-overlay) - (dolist (hook '(prog-mode-hook html-mode-hook css-mode-hook)) + (dolist (hook '(prog-mode-hook html-mode-hook css-mode-hook yaml-mode-hook conf-mode-hook)) (add-hook hook 'symbol-overlay-mode)) (after-load 'symbol-overlay (diminish 'symbol-overlay-mode) From 70f8899cd49ecb614df1c0a8da662cc8e8ae8327 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 7 Apr 2018 17:29:21 +1200 Subject: [PATCH 277/790] Bind M-i to symbol-overlay-put when symbol-overlay is active See #569 --- 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 3e8eb91b60..2b901be320 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -105,6 +105,7 @@ (add-hook hook 'symbol-overlay-mode)) (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-n") 'symbol-overlay-jump-next) (define-key symbol-overlay-mode-map (kbd "M-p") 'symbol-overlay-jump-prev))) From 80011b68b7ad78039096ac269c3a2c79fde35bfa Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 7 Apr 2018 17:33:22 +1200 Subject: [PATCH 278/790] Add note in init-windows.el to reduce confusion Closes #568 --- lisp/init-windows.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-windows.el b/lisp/init-windows.el index 5623b3c502..9c42fa2854 100644 --- a/lisp/init-windows.el +++ b/lisp/init-windows.el @@ -1,4 +1,9 @@ ;;; -*- lexical-binding: t -*- + +;; 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. + ;;---------------------------------------------------------------------------- ;; Navigate window layouts with "C-c " and "C-c " ;;---------------------------------------------------------------------------- From e238ac30f49dadab3dfd6e0b672dd25a3dd7892f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 11 Apr 2018 08:50:40 +1200 Subject: [PATCH 279/790] Update and clarify supported language list --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index fc30c1dd4d..a48d34f35c 100644 --- a/README.md +++ b/README.md @@ -5,24 +5,25 @@ This is my emacs configuration tree, continually used and tweaked since 2000, and it may be a good starting point for other Emacs -users, especially those who are web developers. These days it's +users, especially web developers. These days it's somewhat geared towards OS X, but it is known to also work on Linux and Windows. Emacs itself comes with support for many programming languages. This -config adds improved defaults and extended support for the following: +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 * Ruby / Ruby on Rails * CSS / LESS / SASS / SCSS -* HAML / Markdown / Textile / ERB -* Clojure (with Cider and nRepl) -* Javascript / Coffeescript +* Javascript / Typescript / Coffeescript +* HTML / HAML / Markdown / Textile / ERB +* Rust * Python +* Clojure (with Cider and nRepl) +* Common Lisp (with Slime) * PHP -* Haskell -* Elm * Erlang -* Common Lisp (with Slime) In particular, there's a nice config for *autocompletion* with [company](https://company-mode.github.io/), and From 9957499cc9c274ceaa3848bf66d4544b389fa732 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 16 Apr 2018 10:47:20 +1200 Subject: [PATCH 280/790] Work around bug in uptimes.el --- init.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/init.el b/init.el index 0d5c7cd96a..5e2ab3c387 100644 --- a/init.el +++ b/init.el @@ -143,6 +143,10 @@ (when (maybe-require-package 'uptimes) (setq-default uptimes-keep-count 200) + ;; Temporary workaround for https://github.com/davep/uptimes.el/pull/4 + (defadvice uptimes-save (around unlimit-print-length activate) + (let (print-length) + ad-do-it)) (add-hook 'after-init-hook (lambda () (require 'uptimes)))) From 0fa7e692f3cddfa2e606d4446786a5163dbb6798 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 17 Apr 2018 11:43:46 +1200 Subject: [PATCH 281/790] Remove workaround for uptimes issue --- init.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/init.el b/init.el index 5e2ab3c387..0d5c7cd96a 100644 --- a/init.el +++ b/init.el @@ -143,10 +143,6 @@ (when (maybe-require-package 'uptimes) (setq-default uptimes-keep-count 200) - ;; Temporary workaround for https://github.com/davep/uptimes.el/pull/4 - (defadvice uptimes-save (around unlimit-print-length activate) - (let (print-length) - ad-do-it)) (add-hook 'after-init-hook (lambda () (require 'uptimes)))) From 1d946dfa41d65e7a5bf76c9256a7fbcc5274c83c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 19 Apr 2018 19:49:05 +1200 Subject: [PATCH 282/790] Diminish more minor modes that are always enabled --- lisp/init-editing-utils.el | 4 +++- lisp/init-whitespace.el | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 2b901be320..b7ea389274 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -32,6 +32,8 @@ (add-hook 'after-init-hook 'global-auto-revert-mode) (setq global-auto-revert-non-file-buffers t auto-revert-verbose nil) +(after-load 'autorevert + (diminish 'auto-revert-mode)) (add-hook 'after-init-hook 'transient-mark-mode) @@ -241,7 +243,7 @@ (require-package 'whole-line-or-region) (add-hook 'after-init-hook 'whole-line-or-region-mode) (after-load 'whole-line-or-region - (diminish 'whole-line-or-region-mode)) + (diminish 'whole-line-or-region-local-mode)) (defun suspend-mode-during-cua-rect-selection (mode-name) "Add an advice to suspend `MODE-NAME' while selecting a CUA rectangle." diff --git a/lisp/init-whitespace.el b/lisp/init-whitespace.el index 371261e147..ae6ed2637c 100644 --- a/lisp/init-whitespace.el +++ b/lisp/init-whitespace.el @@ -21,6 +21,8 @@ (require-package 'whitespace-cleanup-mode) (add-hook 'after-init-hook 'global-whitespace-cleanup-mode) +(after-load 'whitespace-cleanup-mode + (diminish 'whitespace-cleanup-mode)) (global-set-key [remap just-one-space] 'cycle-spacing) From 98e965dc59e60a6fb191c83216b347bf407a20e8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 21 Apr 2018 12:43:49 +1200 Subject: [PATCH 283/790] Fix mismatched variable name in xml-related command Fixes #574 --- lisp/init-nxml.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-nxml.el b/lisp/init-nxml.el index 1b5cf0fe07..f2755511a9 100644 --- a/lisp/init-nxml.el +++ b/lisp/init-nxml.el @@ -21,14 +21,14 @@ indentation rules." (setq beg (point-min) end (point-max))) ;; Use markers because our changes will move END - (setq beg (set-marker (make-marker) begin) + (setq beg (set-marker (make-marker) beg) end (set-marker (make-marker) end)) (save-excursion (goto-char beg) (while (search-forward-regexp "\>[ \\t]*\<" end t) (backward-char) (insert "\n")) (nxml-mode) - (indent-region begin end))) + (indent-region beg end))) ;;---------------------------------------------------------------------------- ;; Integration with tidy for html + xml From 1c6eb88d0a03eb6569d127b65dcfa0a23c85c4a6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 28 Apr 2018 18:43:47 +1200 Subject: [PATCH 284/790] Enable guide-key for all key combos, to avoid needing to list them --- lisp/init-dired.el | 4 +--- lisp/init-editing-utils.el | 2 +- lisp/init-projectile.el | 4 ---- lisp/init-rails.el | 7 +------ 4 files changed, 3 insertions(+), 14 deletions(-) diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 60038d53c2..6a0232d8f5 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -11,9 +11,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) - (add-hook 'dired-mode-hook - (lambda () (guide-key/add-local-guide-key-sequence "%")))) + (define-key dired-mode-map (kbd "C-c C-p") 'wdired-change-to-wdired-mode)) (when (maybe-require-package 'diff-hl) (after-load 'dired diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index b7ea389274..6bf97d62e2 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -319,7 +319,7 @@ With arg N, insert N newlines." (require-package 'guide-key) -(setq guide-key/guide-key-sequence '("C-x" "C-c" "C-x 4" "C-x 5" "C-c ;" "C-c ; f" "C-c ' f" "C-x n" "C-x C-r" "C-x r" "M-s" "C-h" "C-c C-a")) +(setq guide-key/guide-key-sequence t) (add-hook 'after-init-hook 'guide-key-mode) (after-load 'guide-key (diminish 'guide-key-mode)) diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index 5d6a0be34a..5fc9c35d4a 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -1,10 +1,6 @@ (when (maybe-require-package 'projectile) (add-hook 'after-init-hook 'projectile-mode) - ;; The following code means you get a menu if you hit "C-c p" and wait - (after-load 'guide-key - (add-to-list 'guide-key/guide-key-sequence "C-c p")) - ;; Shorter modeline (after-load 'projectile (setq-default diff --git a/lisp/init-rails.el b/lisp/init-rails.el index 7310c11956..82018a9aa2 100644 --- a/lisp/init-rails.el +++ b/lisp/init-rails.el @@ -1,11 +1,6 @@ (when (maybe-require-package 'projectile-rails) (add-hook 'projectile-mode-hook - (lambda () (projectile-rails-global-mode projectile-mode))) - (after-load 'projectile - (after-load 'guide-key - (add-to-list 'guide-key/guide-key-sequence "C-c r") - (add-to-list 'guide-key/guide-key-sequence "C-c r !") - (add-to-list 'guide-key/guide-key-sequence "C-c r g")))) + (lambda () (projectile-rails-global-mode projectile-mode)))) (provide 'init-rails) From 9d22750c911442242d5f37d519c826335e27a286 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 3 May 2018 17:30:51 +1200 Subject: [PATCH 285/790] Drop sql-indent, which is really more trouble than it's worth --- lisp/init-sql.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 1efc56e525..20bdc9e0e1 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -1,7 +1,3 @@ -(require-package 'sql-indent) -(after-load 'sql - (require 'sql-indent)) - (after-load 'sql ;; sql-mode pretty much requires your psql to be uncustomised from stock settings (push "--no-psqlrc" sql-postgres-options)) From 32770f266ec5fc78a0b1bf2a63266a34c2b3f723 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 4 May 2018 08:54:17 +1200 Subject: [PATCH 286/790] In Haskell-related buffers, use Stack's path for executables --- lisp/init-haskell.el | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 2229c9b408..49cbe0faa3 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -47,9 +47,31 @@ (after-load 'page-break-lines (push 'haskell-mode page-break-lines-modes)) + + +(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")) + (setq-local + exec-path (parse-colon-path + (replace-regexp-in-string "[\r\n]+\\'" "" + (shell-command-to-string "stack path --bin-path"))))) + (kill-local-variable 'exec-path))) + +(add-hook 'haskell-mode-hook 'stack-exec-path-mode) + + (when (maybe-require-package 'dhall-mode) - (add-hook 'dhall-mode-hook 'sanityinc/no-trailing-whitespace)) + (add-hook 'dhall-mode-hook 'sanityinc/no-trailing-whitespace) + (add-hook 'dhall-mode-hook 'stack-exec-path-mode)) + + (provide 'init-haskell) From 180fc3876f353ec2d0096b1af8fa9c35eaf5098b Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 21 May 2018 13:19:43 +1200 Subject: [PATCH 287/790] Enable subword-mode for Haskell and Cabal --- lisp/init-haskell.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 49cbe0faa3..37a6175018 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -6,8 +6,10 @@ (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 From 5568f76ac972300d7eb50aa4d90c8547f6719ba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20W=2E=20V=2E=20Tran-J=C3=B8rgensen?= Date: Fri, 1 Jun 2018 17:51:56 +0200 Subject: [PATCH 288/790] Test against Emacs 26.1 --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 656884f31b..bfcb6e4f50 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ env: - 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: From bf1ad73d7c9363aa148876f4dec157992b171397 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 6 Jun 2018 17:36:52 +1200 Subject: [PATCH 289/790] Add command to reformat SQL using sqlformat --- lisp/init-sql.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 20bdc9e0e1..972953e2c2 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -43,6 +43,11 @@ Fix for the above hasn't been released as of Emacs 25.2." (sql-product-font-lock nil nil))) (add-hook 'sql-interactive-mode-hook 'sanityinc/font-lock-everything-in-sql-interactive-mode) +(defun sanityinc/sqlformat (beg end) + "Reformat SQL in region from BEG to END using the \"sqlformat\" program. +Install the Python \"sqlparse\" package to get \"sqlformat\"." + (interactive "r") + (shell-command-on-region beg end "sqlformat -r -" nil t "*sqlformat-errors*" t)) ;; Package ideas: ;; - PEV From ba9ddd5adabba21263a319027634dd4dfbc771f4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 7 Jun 2018 08:50:34 +1200 Subject: [PATCH 290/790] Apply sqlformat on the current statement if region not given --- lisp/init-sql.el | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 972953e2c2..93bca769af 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -45,10 +45,23 @@ Fix for the above hasn't been released as of Emacs 25.2." (defun sanityinc/sqlformat (beg end) "Reformat SQL in region from BEG to END using the \"sqlformat\" program. -Install the Python \"sqlparse\" package to get \"sqlformat\"." +If no region is active, the current statement (paragraph) is reformatted. +Install the \"sqlparse\" (Python) package to get \"sqlformat\"." (interactive "r") + (unless (use-region-p) + (setq beg (save-excursion + (backward-paragraph) + (skip-syntax-forward " >") + (point)) + end (save-excursion + (forward-paragraph) + (skip-syntax-backward " >") + (point)))) (shell-command-on-region beg end "sqlformat -r -" nil t "*sqlformat-errors*" t)) +(after-load 'sql + (define-key sql-mode-map (kbd "C-c C-f") 'sanityinc/sqlformat)) + ;; Package ideas: ;; - PEV (defun sanityinc/sql-explain-region-as-json (beg end &optional copy) From f669c469300ae05e3f522b9c1cd14bdce8bc1da4 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 15 Jun 2018 11:52:21 +1200 Subject: [PATCH 291/790] Add dash-at-point config for sql-mode --- lisp/init-sql.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 93bca769af..268519eca8 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -121,7 +121,10 @@ This command currently blocks the UI, sorry." (user-error "EXPLAIN failed"))))))))) - +;; Submitted upstream as https://github.com/stanaka/dash-at-point/pull/28 +(after-load 'sql + (after-load 'dash-at-point + (add-to-list 'dash-at-point-mode-alist '(sql-mode . "psql,mysql,sqlite,postgis")))) (after-load 'page-break-lines From 5cd8e3e2be02575ff125a2257880fcfe3042ff87 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 27 Jun 2018 16:53:44 +1200 Subject: [PATCH 292/790] Fix buggy advice for shell-command-on-region This messed up the SQL-reformatting command in init-sql. --- lisp/init-compile.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-compile.el b/lisp/init-compile.el index fcaede7389..a9c7be622f 100644 --- a/lisp/init-compile.el +++ b/lisp/init-compile.el @@ -42,10 +42,10 @@ (defadvice shell-command-on-region (after sanityinc/shell-command-in-view-mode - (start end command &optional output-buffer &rest other-args) + (start end command &optional output-buffer replace &rest other-args) activate) "Put \"*Shell Command Output*\" buffers into view-mode." - (unless output-buffer + (unless (or output-buffer replace) (with-current-buffer "*Shell Command Output*" (view-mode 1)))) From dad4c120aa03c0352965bbdd001891465b4e80aa Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 27 Jun 2018 16:54:19 +1200 Subject: [PATCH 293/790] Now preferring slightly more dimming via "dimmer" --- lisp/init-themes.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-themes.el b/lisp/init-themes.el index f3fcbaabce..dcd88fc2fe 100644 --- a/lisp/init-themes.el +++ b/lisp/init-themes.el @@ -32,7 +32,7 @@ (when (maybe-require-package 'dimmer) - (setq-default dimmer-fraction 0.1) + (setq-default dimmer-fraction 0.15) (add-hook 'after-init-hook 'dimmer-mode)) From a1cfcc1a7dc043453f3ce08a5618649a62f3664c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 5 Jul 2018 14:33:07 +1200 Subject: [PATCH 294/790] Include Stack's local install root in stack-exec-path-mode path --- lisp/init-haskell.el | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lisp/init-haskell.el b/lisp/init-haskell.el index 37a6175018..430ba43852 100644 --- a/lisp/init-haskell.el +++ b/lisp/init-haskell.el @@ -60,9 +60,15 @@ (when (and (executable-find "stack") (locate-dominating-file default-directory "stack.yaml")) (setq-local - exec-path (parse-colon-path - (replace-regexp-in-string "[\r\n]+\\'" "" - (shell-command-to-string "stack path --bin-path"))))) + 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))) (add-hook 'haskell-mode-hook 'stack-exec-path-mode) From 2ba7d10edb1fdf22231181fb9088efe9927755b0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 10 Jul 2018 09:12:54 +1200 Subject: [PATCH 295/790] Re-align Org Agenda tags when window layout changes --- lisp/init-org.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-org.el b/lisp/init-org.el index 110c1fd5dc..5ad60ee713 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -54,6 +54,11 @@ (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 + (lambda () (add-hook 'window-configuration-change-hook 'org-agenda-align-tags nil t)))) + From 27e9cbc5675683993b32668f9cf44757811a2132 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 9 Aug 2018 11:18:39 +1200 Subject: [PATCH 296/790] Use magit-todos --- lisp/init-git.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/init-git.el b/lisp/init-git.el index 4cdc181d51..1e22393663 100644 --- a/lisp/init-git.el +++ b/lisp/init-git.el @@ -19,6 +19,10 @@ (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))) + (require-package 'fullframe) (after-load 'magit (fullframe magit-status magit-mode-quit-window)) From 08d296f6566f5eb5cd3347e6a59aa1a92c92b798 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 9 Aug 2018 11:19:04 +1200 Subject: [PATCH 297/790] Use deadgrep package when "rg" is available --- lisp/init-grep.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-grep.el b/lisp/init-grep.el index 838ec358ea..d7eada73ed 100644 --- a/lisp/init-grep.el +++ b/lisp/init-grep.el @@ -12,6 +12,7 @@ (when (and (executable-find "rg") (maybe-require-package 'rg)) + (maybe-require-package 'deadgrep) (global-set-key (kbd "M-?") 'rg-project)) From e452e413a32f221c92c7e77d711d1e06d8fe64f3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 12 Aug 2018 16:36:35 +1200 Subject: [PATCH 298/790] Bind C-c C-p as projectile prefix by default (closes #598) --- lisp/init-projectile.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index 5fc9c35d4a..391ac38200 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -1,6 +1,8 @@ (when (maybe-require-package 'projectile) (add-hook 'after-init-hook 'projectile-mode) + (setq projectile-keymap-prefix (kbd "C-c C-p")) + ;; Shorter modeline (after-load 'projectile (setq-default From ff4a58f8fa91d3c5ff1e68805c230acb6a1edc67 Mon Sep 17 00:00:00 2001 From: re-mx Date: Sun, 12 Aug 2018 13:50:34 +0800 Subject: [PATCH 299/790] Use define-key instead of outdated projectile-keymap-prefix --- lisp/init-projectile.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index 391ac38200..e708693ab5 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -1,10 +1,10 @@ (when (maybe-require-package 'projectile) (add-hook 'after-init-hook 'projectile-mode) - (setq projectile-keymap-prefix (kbd "C-c C-p")) - - ;; Shorter modeline (after-load 'projectile + (define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map) + + ;; Shorter modeline (setq-default projectile-mode-line '(:eval From d8b7592940bbd11ffd4aa41cb74d85e06c33bfb2 Mon Sep 17 00:00:00 2001 From: re-mx Date: Mon, 27 Aug 2018 21:19:04 +0800 Subject: [PATCH 300/790] Drop defunct js2-basic-offset setting Because it is an alias for js-indent-level --- lisp/init-javascript.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index f4871aa7a6..66e407c7f1 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -25,8 +25,7 @@ ;; js2-mode ;; Change some defaults: customize them to override -(setq-default js2-basic-offset 2 - js2-bounce-indent-p nil) +(setq-default js2-bounce-indent-p nil) (after-load 'js2-mode ;; Disable js2 mode's syntax error highlighting by default... (setq-default js2-mode-show-parse-errors nil From 5f701f899545ed6bf99c1f3c431681a2caef53c6 Mon Sep 17 00:00:00 2001 From: re-mx Date: Mon, 27 Aug 2018 21:31:23 +0800 Subject: [PATCH 301/790] Remove duplicate code --- lisp/init-javascript.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index 66e407c7f1..473642b495 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -40,8 +40,7 @@ (add-hook 'js2-mode-hook (lambda () (setq mode-name "JS2"))) - (after-load 'js2-mode - (js2-imenu-extras-setup))) + (js2-imenu-extras-setup)) ;; js-mode (setq-default js-indent-level preferred-javascript-indent-level) From ec642be4ab82c18f8f0a287a9435d01bd8d06733 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 28 Aug 2018 14:17:52 +1200 Subject: [PATCH 302/790] Choose non-clashing binding for resetting frame opacity to 100 --- lisp/init-gui-frames.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 2655162690..c91c66a636 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -64,7 +64,7 @@ ;; TODO: use seethru package instead? (global-set-key (kbd "M-C-8") (lambda () (interactive) (sanityinc/adjust-opacity nil -2))) (global-set-key (kbd "M-C-9") (lambda () (interactive) (sanityinc/adjust-opacity nil 2))) -(global-set-key (kbd "M-C-0") (lambda () (interactive) (modify-frame-parameters nil `((alpha . 100))))) +(global-set-key (kbd "M-C-7") (lambda () (interactive) (modify-frame-parameters nil `((alpha . 100))))) (setq frame-title-format From 3636cd10542c42f7eaff77ddeecbedbbe3d995c1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 29 Aug 2018 09:48:30 +1200 Subject: [PATCH 303/790] Handle when tablist-minor-mode is unavailable (fixes #604) --- lisp/init-benchmarking.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/init-benchmarking.el b/lisp/init-benchmarking.el index 7fecb7e58c..34b5b33a50 100644 --- a/lisp/init-benchmarking.el +++ b/lisp/init-benchmarking.el @@ -29,7 +29,8 @@ LOAD-DURATION is the time taken in milliseconds to load FEATURE.") ;; (setq tabulated-list-padding 2) (setq tabulated-list-entries #'sanityinc/require-times-tabulated-list-entries) (tabulated-list-init-header) - (tablist-minor-mode)) + (when (fboundp 'tablist-minor-mode) + (tablist-minor-mode))) (defun sanityinc/require-times-sort-by-start-time-pred (entry1 entry2) (< (string-to-number (elt (nth 1 entry1) 0)) From 34dfdd34f8e4ecf0db508639fec2c7aa579595ca Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 29 Aug 2018 11:01:53 +1200 Subject: [PATCH 304/790] Ensure require-package adds packages to package-selected-packages See #603 --- lisp/init-elpa.el | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 0a331818e8..42ac3476c3 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -32,21 +32,22 @@ ;;; On-demand installation of packages +(defvar sanityinc/required-packages nil) + (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 re-downloaded in order to locate PACKAGE." - (if (package-installed-p package min-version) - t - (if (or (assoc package package-archive-contents) no-refresh) - (if (boundp 'package-selected-packages) - ;; Record this as a package the user installed explicitly - (package-install package nil) - (package-install package)) - (progn - (package-refresh-contents) - (require-package package min-version t))))) - + (let ((available + (or (package-installed-p package min-version) + (if (or (assoc package package-archive-contents) no-refresh) + (package-install package) + (progn + (package-refresh-contents) + (require-package package min-version t)))))) + (prog1 available + (when (and available (boundp 'package-selected-packages)) + (add-to-list 'sanityinc/required-packages package))))) (defun maybe-require-package (package &optional min-version no-refresh) "Try to install PACKAGE, and return non-nil if successful. @@ -66,6 +67,14 @@ locate PACKAGE." (setq package-enable-at-startup nil) (package-initialize) +;; package.el updates the saved version of package-selected-packages correctly only +;; after custom-file has been loaded, which is a bug. We work around this by adding +;; the required packages to package-selected-packages after startup is complete. +(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)))))) (require-package 'fullframe) From a18ac4cd28a2f168d722d4bde1d352981ef9b744 Mon Sep 17 00:00:00 2001 From: re-mx Date: Wed, 29 Aug 2018 15:40:43 +0800 Subject: [PATCH 305/790] Set gc-cons-threshold to normal-gc-cons-threshold in emacs-startup-hook --- init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.el b/init.el index 0d5c7cd96a..5744a27e1c 100644 --- a/init.el +++ b/init.el @@ -22,7 +22,7 @@ (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 'after-init-hook + (add-hook 'emacs-startup-hook (lambda () (setq gc-cons-threshold normal-gc-cons-threshold)))) ;;---------------------------------------------------------------------------- From 407269e8a563a189ee3d37f4eaa1c661c601d4bd Mon Sep 17 00:00:00 2001 From: re-mx Date: Fri, 31 Aug 2018 19:00:31 +0800 Subject: [PATCH 306/790] Remove duplicate org-archive-mark-done setting --- lisp/init-org.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-org.el b/lisp/init-org.el index 5ad60ee713..dc72f90ad0 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -9,7 +9,6 @@ ;; Various preferences (setq org-log-done t org-edit-timestamp-down-means-later t - org-archive-mark-done nil org-hide-emphasis-markers t org-catch-invisible-edits 'show org-export-coding-system 'utf-8 From ca5b5ccc81a91d78f9c12a450fb53d5166ab84c2 Mon Sep 17 00:00:00 2001 From: re-mx Date: Fri, 7 Sep 2018 21:14:25 +0800 Subject: [PATCH 307/790] Kill all local variables when disable prose-mode --- lisp/init-org.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-org.el b/lisp/init-org.el index dc72f90ad0..d3d7f0d1b6 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -89,6 +89,7 @@ typical word processor." (kill-local-variable 'truncate-lines) (kill-local-variable 'word-wrap) (kill-local-variable 'cursor-type) + (kill-local-variable 'blink-cursor-interval) (kill-local-variable 'show-trailing-whitespace) (kill-local-variable 'line-spacing) (kill-local-variable 'electric-pair-mode) From b636cc2fea81ff0eeca71759203a3346bf3abdd1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 11 Sep 2018 09:56:03 +1200 Subject: [PATCH 308/790] Add elm-test --- lisp/init-elm.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-elm.el b/lisp/init-elm.el index 7c649928bf..ddb8621d96 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -6,6 +6,7 @@ (lambda () (sanityinc/local-push-company-backend 'company-elm))) (when (executable-find "elm-format") (setq-default elm-format-on-save t))) + (maybe-require-package 'elm-test) (when (maybe-require-package 'flycheck-elm) (after-load 'elm-mode (flycheck-elm-setup)))) From 26f40295fc2322a2eb4e3680b4d4d85652ecee2e Mon Sep 17 00:00:00 2001 From: re-mx Date: Tue, 11 Sep 2018 07:10:20 +0800 Subject: [PATCH 309/790] Remove defunct sanityinc/disable-indent-guide --- lisp/init-lisp.el | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index ceb948d9db..fda4af561f 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -126,14 +126,9 @@ "Run `check-parens' when the current buffer is saved." (add-hook 'after-save-hook #'check-parens nil t)) -(defun sanityinc/disable-indent-guide () - (when (bound-and-true-p indent-guide-mode) - (indent-guide-mode -1))) - (defvar sanityinc/lispy-modes-hook '(enable-paredit-mode turn-on-eldoc-mode - sanityinc/disable-indent-guide sanityinc/enable-check-parens-on-save) "Hook run in all Lisp modes.") From 11b345bd4d338dc73befc3964ebb9c1a493eb7eb Mon Sep 17 00:00:00 2001 From: re-mx Date: Wed, 12 Sep 2018 07:03:29 +0800 Subject: [PATCH 310/790] Use elm-test-runner instead of elm-test --- lisp/init-elm.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-elm.el b/lisp/init-elm.el index ddb8621d96..5f123779db 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -6,7 +6,7 @@ (lambda () (sanityinc/local-push-company-backend 'company-elm))) (when (executable-find "elm-format") (setq-default elm-format-on-save t))) - (maybe-require-package 'elm-test) + (maybe-require-package 'elm-test-runner) (when (maybe-require-package 'flycheck-elm) (after-load 'elm-mode (flycheck-elm-setup)))) From 56b46b503afc2338d4488c22be7915b716d6419d Mon Sep 17 00:00:00 2001 From: czom Date: Sat, 15 Sep 2018 17:33:25 +0800 Subject: [PATCH 311/790] Update init-css.el It should be css-tag. --- lisp/init-css.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-css.el b/lisp/init-css.el index bfbf941e54..682e2bf826 100644 --- a/lisp/init-css.el +++ b/lisp/init-css.el @@ -14,14 +14,14 @@ :face mmm-code-submode-face :front "]*>[ \t\n]*\\(//\\)?[ \t\n]*" - :insert ((?j js-tag nil @ "" @))) (css :submode css-mode :face mmm-code-submode-face :front "]*>[ \t]*\n?" :back "[ \t]*" - :insert ((?j js-tag nil @ "" @))) (css-inline :submode css-mode From c434f7acc3a01bad875fce65a3975f6e6567513b Mon Sep 17 00:00:00 2001 From: czom Date: Sat, 15 Sep 2018 17:36:41 +0800 Subject: [PATCH 312/790] Update init-css.el --- lisp/init-css.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/init-css.el b/lisp/init-css.el index 682e2bf826..eaeab7317c 100644 --- a/lisp/init-css.el +++ b/lisp/init-css.el @@ -14,14 +14,14 @@ :face mmm-code-submode-face :front "]*>[ \t\n]*\\(//\\)?[ \t\n]*" - :insert ((?j css-tag nil @ "" @))) (css :submode css-mode :face mmm-code-submode-face :front "]*>[ \t]*\n?" :back "[ \t]*" - :insert ((?j css-tag nil @ "" @))) (css-inline :submode css-mode From 8e8c4430219c30456aab4d212c6f77f1654e3e2c Mon Sep 17 00:00:00 2001 From: re-mx Date: Tue, 18 Sep 2018 08:17:23 +0800 Subject: [PATCH 313/790] Improve message for sanityinc/grab-ditaa --- 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 d3d7f0d1b6..23c8b5d251 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -24,7 +24,7 @@ (defun sanityinc/grab-ditaa (url jar-name) "Download URL and extract JAR-NAME as `org-ditaa-jar-path'." ;; TODO: handle errors - (message "Grabbing " jar-name " for org.") + (message "Grabbing %s for org." jar-name) (let ((zip-temp (make-temp-name "emacs-ditaa"))) (unwind-protect (progn From a9844cb7b649f3c16d1772ede711a180fe441333 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 19 Sep 2018 15:24:49 +1200 Subject: [PATCH 314/790] Use node_modules/.bin path for executables in purescript-mode --- lisp/init-purescript.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/init-purescript.el b/lisp/init-purescript.el index 100e772bd5..2df4178819 100644 --- a/lisp/init-purescript.el +++ b/lisp/init-purescript.el @@ -5,6 +5,9 @@ (psc-ide-mode) (company-mode) (flycheck-mode) - (turn-on-purescript-indentation))))) + (turn-on-purescript-indentation)))) + (when (maybe-require-package 'add-node-modules-path) + (after-load 'purescript-mode + (add-hook 'purescript-mode-hook 'add-node-modules-path)))) (provide 'init-purescript) From 486dcbbe70cf5d77da40b191658d11a53ce37620 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 25 Sep 2018 09:55:23 +1200 Subject: [PATCH 315/790] Add psci support for purescript --- lisp/init-purescript.el | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lisp/init-purescript.el b/lisp/init-purescript.el index 2df4178819..b984532583 100644 --- a/lisp/init-purescript.el +++ b/lisp/init-purescript.el @@ -6,8 +6,17 @@ (company-mode) (flycheck-mode) (turn-on-purescript-indentation)))) + + (when (maybe-require-package 'psci) + (add-hook 'purescript-mode-hook 'inferior-psci-mode)) + (when (maybe-require-package 'add-node-modules-path) (after-load 'purescript-mode - (add-hook 'purescript-mode-hook 'add-node-modules-path)))) + (add-hook 'purescript-mode-hook 'add-node-modules-path)) + (after-load 'psci + (advice-add 'psci :around (lambda (oldfun &rest args) + (let ((psci/purs-path (or (executable-find "purs") + psci/purs-path))) + (apply oldfun args))))))) (provide 'init-purescript) From 82c02163e9cafe55ddf610e3756306bcfd8ff0b5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 25 Sep 2018 09:56:13 +1200 Subject: [PATCH 316/790] Use ibuffer-projectile --- lisp/init-projectile.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index e708693ab5..6636aa50b1 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -10,7 +10,9 @@ '(:eval (if (file-remote-p default-directory) " Proj" - (format " Proj[%s]" (projectile-project-name))))))) + (format " Proj[%s]" (projectile-project-name)))))) + + (maybe-require-package 'ibuffer-projectile)) (provide 'init-projectile) From cd7252c02b333d99b4e70f4a5fa852b2a42cdb71 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 25 Sep 2018 10:48:11 +1200 Subject: [PATCH 317/790] Set shorter projectile mode lighter more idiomatically Closes #620 --- lisp/init-projectile.el | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index 6636aa50b1..b846c5e471 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -5,12 +5,7 @@ (define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map) ;; Shorter modeline - (setq-default - projectile-mode-line - '(:eval - (if (file-remote-p default-directory) - " Proj" - (format " Proj[%s]" (projectile-project-name)))))) + (setq-default projectile-mode-line-lighter " Proj")) (maybe-require-package 'ibuffer-projectile)) From 49fd555ed9e25e437916166783c7d5a1778c1372 Mon Sep 17 00:00:00 2001 From: re-mx Date: Tue, 25 Sep 2018 15:26:42 +0800 Subject: [PATCH 318/790] Set shorter projectile modeline correctly --- lisp/init-projectile.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/init-projectile.el b/lisp/init-projectile.el index b846c5e471..2781da571c 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -1,11 +1,11 @@ (when (maybe-require-package 'projectile) (add-hook 'after-init-hook 'projectile-mode) - (after-load 'projectile - (define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map) + ;; Shorter modeline + (setq-default projectile-mode-line-lighter " Proj") - ;; Shorter modeline - (setq-default projectile-mode-line-lighter " Proj")) + (after-load 'projectile + (define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map)) (maybe-require-package 'ibuffer-projectile)) From acdac9f48a33e5c9742f7f9a3a212308a2944ec4 Mon Sep 17 00:00:00 2001 From: re-mx Date: Sat, 29 Sep 2018 11:26:48 +0800 Subject: [PATCH 319/790] Use projectile-mode-line-prefix to set projectile mode line projectile-mode-line-lighter is obsolete --- 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 2781da571c..b523e14025 100644 --- a/lisp/init-projectile.el +++ b/lisp/init-projectile.el @@ -2,7 +2,7 @@ (add-hook 'after-init-hook 'projectile-mode) ;; Shorter modeline - (setq-default projectile-mode-line-lighter " Proj") + (setq-default projectile-mode-line-prefix " Proj") (after-load 'projectile (define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map)) From cdb22f6213858a30d8e0622a31ece41264e19f29 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 25 Sep 2018 18:57:13 +1200 Subject: [PATCH 320/790] Discontinue use of undo-tree --- 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 6bf97d62e2..48d4da82df 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -95,12 +95,6 @@ (when (fboundp 'global-prettify-symbols-mode) (add-hook 'after-init-hook 'global-prettify-symbols-mode)) - -(require-package 'undo-tree) -(add-hook 'after-init-hook 'global-undo-tree-mode) -(after-load 'undo-tree - (diminish 'undo-tree-mode)) - (when (maybe-require-package 'symbol-overlay) (dolist (hook '(prog-mode-hook html-mode-hook css-mode-hook yaml-mode-hook conf-mode-hook)) From d041f6bf56fac29912fce424765471803fde5f81 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 1 Oct 2018 11:24:14 +1300 Subject: [PATCH 321/790] Move package-selected-packages workaround to an advice --- lisp/init-elpa.el | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 42ac3476c3..895ce96a24 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -38,16 +38,12 @@ "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." - (let ((available - (or (package-installed-p package min-version) - (if (or (assoc package package-archive-contents) no-refresh) - (package-install package) - (progn - (package-refresh-contents) - (require-package package min-version t)))))) - (prog1 available - (when (and available (boundp 'package-selected-packages)) - (add-to-list 'sanityinc/required-packages package))))) + (or (package-installed-p package min-version) + (if (or no-refresh (assoc package package-archive-contents)) + (package-install package) + (progn + (package-refresh-contents) + (require-package package min-version t))))) (defun maybe-require-package (package &optional min-version no-refresh) "Try to install PACKAGE, and return non-nil if successful. @@ -67,9 +63,20 @@ locate PACKAGE." (setq package-enable-at-startup nil) (package-initialize) + ;; package.el updates the saved version of package-selected-packages correctly only ;; after custom-file has been loaded, which is a bug. We work around this by adding ;; the required packages to package-selected-packages after startup is complete. + +(defun sanityinc/note-selected-package (oldfun package &rest args) + "If OLDFUN reports PACKAGE was successfully installed, note it in `sanityinc/required-packages'." + (let ((available (apply oldfun package args))) + (prog1 available + (when (and available (boundp 'package-selected-packages)) + (add-to-list 'sanityinc/required-packages package))))) + +(advice-add 'require-package :around 'sanityinc/note-selected-package) + (when (fboundp 'package--save-selected-packages) (require-package 'seq) (add-hook 'after-init-hook From 85b5ba63faf508ae1b7d1d2b72e8c75c9ba0811e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 1 Oct 2018 11:28:01 +1300 Subject: [PATCH 322/790] Require at least 24.4 --- .travis.yml | 1 - README.md | 10 +++++----- init.el | 4 ++-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index bfcb6e4f50..f45be1dd90 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,6 @@ before_install: - evm install $EVM_EMACS --use --skip env: - - EVM_EMACS=emacs-24.3-travis - EVM_EMACS=emacs-24.4-travis - EVM_EMACS=emacs-24.5-travis - EVM_EMACS=emacs-25.1-travis diff --git a/README.md b/README.md index a48d34f35c..057916fc40 100644 --- a/README.md +++ b/README.md @@ -33,11 +33,11 @@ other languages. ## Supported Emacs versions -The config should run on Emacs 24.3 or greater and is designed to -degrade smoothly - see the Travis build - but note that Emacs 24.5 and -above is required for an increasing number of key packages, so to get -full functionality you should use the latest Emacs version available -to you. +The config should run on Emacs 24.4 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 +available to you. 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) diff --git a/init.el b/init.el index 5744a27e1c..0dd0560970 100644 --- a/init.el +++ b/init.el @@ -4,10 +4,10 @@ ;;; This file bootstraps the configuration, which is divided into ;;; a number of other files. -(let ((minver "24.3")) +(let ((minver "24.4")) (when (version< emacs-version minver) (error "Your Emacs is too old -- this config requires v%s or higher" minver))) -(when (version< emacs-version "24.5") +(when (version< emacs-version "25.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 2e26e23c287eb2a05283506d8bb00f6e13108aaa Mon Sep 17 00:00:00 2001 From: re-mx Date: Mon, 1 Oct 2018 19:37:11 +0800 Subject: [PATCH 323/790] Use defvar-local to define buffer-local variables --- lisp/init-company.el | 3 +-- lisp/init-lisp.el | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index e4cc7f261c..206e2218d6 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -27,8 +27,7 @@ ;; (see https://github.com/company-mode/company-mode/issues/416) (after-load 'company (after-load 'page-break-lines - (defvar sanityinc/page-break-lines-on-p nil) - (make-variable-buffer-local 'sanityinc/page-break-lines-on-p) + (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)) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index fda4af561f..b5b27488c4 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -47,9 +47,8 @@ ;; Use C-c C-z to toggle between elisp files and an ielm session ;; I might generalise this to ruby etc., or even just adopt the repl-toggle package. -(defvar sanityinc/repl-original-buffer nil +(defvar-local sanityinc/repl-original-buffer nil "Buffer from which we jumped to this REPL.") -(make-variable-buffer-local 'sanityinc/repl-original-buffer) (defvar sanityinc/repl-switch-function 'switch-to-buffer-other-window) From 97e0111d9c07bbaf9cc95bdb2cc96d8368a2e90f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 8 Oct 2018 09:20:06 +1300 Subject: [PATCH 324/790] Tidy up code for suspending certain modes while selecting CUA rectangles Fixes #626 --- lisp/init-editing-utils.el | 39 ++++++++++++++++++++++---------------- lisp/init-paredit.el | 2 +- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 48d4da82df..6c8f684eb4 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -1,3 +1,4 @@ +;; -*- lexical-binding: t -*- (require-package 'unfill) (when (fboundp 'electric-pair-mode) @@ -239,23 +240,29 @@ (after-load 'whole-line-or-region (diminish 'whole-line-or-region-local-mode)) -(defun suspend-mode-during-cua-rect-selection (mode-name) + +;; 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." - (let ((flagvar (intern (format "%s-was-active-before-cua-rectangle" mode-name))) - (advice-name (intern (format "suspend-%s" mode-name)))) - (eval-after-load 'cua-rect - `(progn - (defvar ,flagvar nil) - (make-variable-buffer-local ',flagvar) - (defadvice cua--activate-rectangle (after ,advice-name activate) - (setq ,flagvar (and (boundp ',mode-name) ,mode-name)) - (when ,flagvar - (,mode-name 0))) - (defadvice cua--deactivate-rectangle (after ,advice-name activate) - (when ,flagvar - (,mode-name 1))))))) - -(suspend-mode-during-cua-rect-selection 'whole-line-or-region-mode) + (eval-after-load 'cua-rect + (advice-add 'cua--activate-rectangle :after + (lambda (&rest _) + (when (bound-and-true-p mode-name) + (push mode-name sanityinc/suspended-modes-during-cua-rect) + (funcall mode-name 0)))))) + +(sanityinc/suspend-mode-during-cua-rect-selection 'whole-line-or-region-local-mode) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index 80134e77d1..b67eff1b5b 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -18,7 +18,7 @@ ;; Compatibility with other modes -(suspend-mode-during-cua-rect-selection 'paredit-mode) +(sanityinc/suspend-mode-during-cua-rect-selection 'paredit-mode) ;; Use paredit in the minibuffer From 7e55075cc15dd3b4f1c21ca187d83cc28e2e253e Mon Sep 17 00:00:00 2001 From: re-mx Date: Wed, 10 Oct 2018 09:31:04 +0800 Subject: [PATCH 325/790] No longer ignore ac-comphist.dat This configuration doesn't use "auto-complete" now --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 15d5de4173..0830f2d5ea 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,6 @@ CVS /.org-id-locations cookies /newsticker -/ac-comphist.dat \#* /elpa /elpa-* From 6372ce979c2ca4135bb66ca566d3faf9294e84ab Mon Sep 17 00:00:00 2001 From: re-mx Date: Wed, 10 Oct 2018 09:46:50 +0800 Subject: [PATCH 326/790] No longer ignore anything-c-adaptive-history This configuration does not currently use anything --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0830f2d5ea..cae05a7f97 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,6 @@ CVS .*.lock /tramp /TODO -/anything-c-adaptive-history /.org-id-locations cookies /newsticker From 29343e08664d9a24a678121110d7ceb773a6f318 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 11 Oct 2018 21:09:51 +1300 Subject: [PATCH 327/790] Only default elm-format-on-save to t if executable is found at startup Closes #630 --- lisp/init-elm.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-elm.el b/lisp/init-elm.el index 5f123779db..65df4ce82f 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -1,5 +1,4 @@ (when (maybe-require-package 'elm-mode) - (setq-default elm-format-on-save t) (after-load 'elm-mode (diminish 'elm-indent-mode) (add-hook 'elm-mode-hook From 3c51fbaa25bad28d406e16a898751512ed471030 Mon Sep 17 00:00:00 2001 From: re-mx Date: Sat, 13 Oct 2018 08:33:11 +0800 Subject: [PATCH 328/790] Rename "sanityinc/disable-js2-checks-if-flycheck-active" to "sanityinc/enable-js2-checks-if-flycheck-inactive" --- 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 473642b495..a2eb084490 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -32,11 +32,11 @@ js2-mode-show-strict-warnings nil) ;; ... but enable it if flycheck can't handle javascript (autoload 'flycheck-get-checker-for-buffer "flycheck") - (defun sanityinc/disable-js2-checks-if-flycheck-active () + (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))) - (add-hook 'js2-mode-hook 'sanityinc/disable-js2-checks-if-flycheck-active) + (add-hook 'js2-mode-hook 'sanityinc/enable-js2-checks-if-flycheck-inactive) (add-hook 'js2-mode-hook (lambda () (setq mode-name "JS2"))) From f0f5f2ef295215c889d321b07a04bb4e9e378f1f Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 14 Oct 2018 14:32:47 +1300 Subject: [PATCH 329/790] Move var definition closer to where it's used --- 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 895ce96a24..facb67737f 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -32,7 +32,6 @@ ;;; On-demand installation of packages -(defvar sanityinc/required-packages nil) (defun require-package (package &optional min-version no-refresh) "Install given PACKAGE, optionally requiring MIN-VERSION. @@ -68,6 +67,8 @@ locate PACKAGE." ;; after custom-file has been loaded, which is a bug. We work around this by adding ;; the required packages to package-selected-packages after startup is complete. +(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'." (let ((available (apply oldfun package args))) From 531f4befc785309fc84ee92f0a4d38d01adc26ba Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 14 Oct 2018 14:33:28 +1300 Subject: [PATCH 330/790] Correctly fail if requested package version can't be installed Closes #634 --- lisp/init-elpa.el | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index facb67737f..947bd5b733 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -32,17 +32,21 @@ ;;; 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 re-downloaded in order to locate PACKAGE." (or (package-installed-p package min-version) - (if (or no-refresh (assoc package package-archive-contents)) - (package-install package) - (progn - (package-refresh-contents) - (require-package package min-version t))))) + (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) + (package-install package) + (if no-refresh + (error "No version of %s >= %S is available" package min-version) + (package-refresh-contents) + (require-package package min-version t)))))) (defun maybe-require-package (package &optional min-version no-refresh) "Try to install PACKAGE, and return non-nil if successful. @@ -89,9 +93,6 @@ locate PACKAGE." (fullframe list-packages quit-window) -(require-package 'cl-lib) -(require 'cl-lib) - (defun sanityinc/set-tabulated-list-column-width (col-name width) "Set any column with name COL-NAME to the given WIDTH." (when (> width (length col-name)) From 5c1d123d5f4cc06b8eafd5963c2f29ed8d0ae667 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 15 Oct 2018 16:57:24 +1300 Subject: [PATCH 331/790] Diminish rainbow-delimiters-mode --- 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 6c8f684eb4..14e40317c3 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -89,7 +89,9 @@ (when (require-package 'rainbow-delimiters) - (add-hook 'prog-mode-hook 'rainbow-delimiters-mode)) + (add-hook 'prog-mode-hook 'rainbow-delimiters-mode) + (after-load 'rainbow-delimiters + (diminish 'rainbow-delimiters-mode))) From 9a1b45e3978b0c52111ff54aa17979ebf52e1c0a Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 16 Oct 2018 10:49:06 +1300 Subject: [PATCH 332/790] Diminish rainbow-mode, not rainbow-delimiters-mode --- lisp/init-editing-utils.el | 4 +--- lisp/init-lisp.el | 4 +++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el index 14e40317c3..6c8f684eb4 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -89,9 +89,7 @@ (when (require-package 'rainbow-delimiters) - (add-hook 'prog-mode-hook 'rainbow-delimiters-mode) - (after-load 'rainbow-delimiters - (diminish 'rainbow-delimiters-mode))) + (add-hook 'prog-mode-hook 'rainbow-delimiters-mode)) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index b5b27488c4..d54decd816 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -235,7 +235,9 @@ (when (maybe-require-package 'rainbow-mode) (add-hook 'sanityinc/theme-mode-hook 'rainbow-mode) - (add-hook 'help-mode-hook 'rainbow-mode)) + (add-hook 'help-mode-hook 'rainbow-mode) + (after-load 'rainbow-mode + (diminish 'rainbow-mode))) (when (maybe-require-package 'aggressive-indent) ;; Can be prohibitively slow with very long forms From 7d306e98855b305c803e5aaeec424b1c85c8e464 Mon Sep 17 00:00:00 2001 From: re-mx Date: Tue, 16 Oct 2018 11:36:18 +0800 Subject: [PATCH 333/790] Remove non-existing hippie-expand item for elisp my/try-complete-lisp-symbol-without-namespace has been removed --- lisp/init-lisp.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index d54decd816..8e8f040c68 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -80,8 +80,7 @@ "Locally set `hippie-expand' completion functions for use with Emacs Lisp." (make-local-variable 'hippie-expand-try-functions-list) (add-to-list 'hippie-expand-try-functions-list 'try-complete-lisp-symbol t) - (add-to-list 'hippie-expand-try-functions-list 'try-complete-lisp-symbol-partially t) - (add-to-list 'hippie-expand-try-functions-list 'my/try-complete-lisp-symbol-without-namespace t)) + (add-to-list 'hippie-expand-try-functions-list 'try-complete-lisp-symbol-partially t)) ;; ---------------------------------------------------------------------------- From 60e7b63a60291a777d769668c2b158abbae4b424 Mon Sep 17 00:00:00 2001 From: re-mx Date: Fri, 19 Oct 2018 18:56:18 +0800 Subject: [PATCH 334/790] Unset key "M-s" for tagedit to avoid conflicting with Emacs default bindings --- lisp/init-html.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-html.el b/lisp/init-html.el index 2d2fdbc74c..4c1db82b80 100644 --- a/lisp/init-html.el +++ b/lisp/init-html.el @@ -2,6 +2,7 @@ (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) (add-hook 'sgml-mode-hook (lambda () (tagedit-mode 1)))) (add-auto-mode 'html-mode "\\.\\(jsp\\|tmpl\\)\\'") From 0727614bf32c06d3b2109fe0a174e1efde235c82 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 15:11:02 +1300 Subject: [PATCH 335/790] Nicer footer links --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 057916fc40..50e8e2380b 100644 --- a/README.md +++ b/README.md @@ -115,10 +115,11 @@ versions (see "Updates" above). If you still experience problems, go ahead and
-[Support this project and my other Open Source work](https://www.patreon.com/sanityinc) -[![](http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png)](http://uk.linkedin.com/in/stevepurcell) +[💝 Support this project and my other Open Source work](https://www.patreon.com/sanityinc) -[sanityinc.com](http://www.sanityinc.com/) +[💼 LinkedIn profile](https://uk.linkedin.com/in/stevepurcell) -[@sanityinc](https://twitter.com/sanityinc) +[✍ sanityinc.com](http://www.sanityinc.com/) + +[🐦 @sanityinc](https://twitter.com/sanityinc) From 798e8caaef8c9994d209d5daf784ca213a5e2962 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 15:11:44 +1300 Subject: [PATCH 336/790] Extract sqlformat code to a new "sqlformat" package, and use that instead --- lisp/init-sql.el | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 268519eca8..c30b9b2131 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -43,24 +43,9 @@ Fix for the above hasn't been released as of Emacs 25.2." (sql-product-font-lock nil nil))) (add-hook 'sql-interactive-mode-hook 'sanityinc/font-lock-everything-in-sql-interactive-mode) -(defun sanityinc/sqlformat (beg end) - "Reformat SQL in region from BEG to END using the \"sqlformat\" program. -If no region is active, the current statement (paragraph) is reformatted. -Install the \"sqlparse\" (Python) package to get \"sqlformat\"." - (interactive "r") - (unless (use-region-p) - (setq beg (save-excursion - (backward-paragraph) - (skip-syntax-forward " >") - (point)) - end (save-excursion - (forward-paragraph) - (skip-syntax-backward " >") - (point)))) - (shell-command-on-region beg end "sqlformat -r -" nil t "*sqlformat-errors*" t)) -(after-load 'sql - (define-key sql-mode-map (kbd "C-c C-f") 'sanityinc/sqlformat)) +(require-package 'sqlformat) +(add-hook 'sql-mode-hook 'sqlformat-mode) ;; Package ideas: ;; - PEV From e528a31fae03ed05ad7d47d877c373ce3e799f28 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 15:12:07 +1300 Subject: [PATCH 337/790] Add sqlup-mode --- lisp/init-sql.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lisp/init-sql.el b/lisp/init-sql.el index c30b9b2131..39eab276d8 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -47,6 +47,9 @@ Fix for the above hasn't been released as of Emacs 25.2." (require-package 'sqlformat) (add-hook 'sql-mode-hook 'sqlformat-mode) +(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 b4e90e0008a16afafd69ea52e1054a10303308ec Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 15:19:31 +1300 Subject: [PATCH 338/790] visual-fill-column workaround seems unnecessary now --- lisp/init-fonts.el | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/lisp/init-fonts.el b/lisp/init-fonts.el index 1a94558111..a0b93d46ce 100644 --- a/lisp/init-fonts.el +++ b/lisp/init-fonts.el @@ -4,17 +4,4 @@ (add-hook 'after-init-hook 'default-text-scale-mode) -(defun sanityinc/maybe-adjust-visual-fill-column () - "Readjust visual fill column when the global font size is modified. -This is helpful for writeroom-mode, in particular." - ;; TODO: submit as patch - (if visual-fill-column-mode - (add-hook 'after-setting-font-hook 'visual-fill-column--adjust-window nil t) - (remove-hook 'after-setting-font-hook 'visual-fill-column--adjust-window t))) - -(add-hook 'visual-fill-column-mode-hook - 'sanityinc/maybe-adjust-visual-fill-column) - - - (provide 'init-fonts) From f43cf308f54dfd8d2f9f09f53fdb5bd495b28d65 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 15:21:02 +1300 Subject: [PATCH 339/790] Move remaining init-fonts.el content to init-gui-frames.el --- init.el | 1 - lisp/init-fonts.el | 7 ------- lisp/init-gui-frames.el | 7 +++++++ 3 files changed, 7 insertions(+), 8 deletions(-) delete mode 100644 lisp/init-fonts.el diff --git a/init.el b/init.el index 0dd0560970..14da17aa3c 100644 --- a/init.el +++ b/init.el @@ -69,7 +69,6 @@ (require 'init-company) (require 'init-windows) (require 'init-sessions) -(require 'init-fonts) (require 'init-mmm) (require 'init-editing-utils) diff --git a/lisp/init-fonts.el b/lisp/init-fonts.el deleted file mode 100644 index a0b93d46ce..0000000000 --- a/lisp/init-fonts.el +++ /dev/null @@ -1,7 +0,0 @@ -;;; Changing font sizes - -(require-package 'default-text-scale) -(add-hook 'after-init-hook 'default-text-scale-mode) - - -(provide 'init-fonts) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index c91c66a636..f670d4e921 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -78,6 +78,13 @@ (lambda () (setq line-spacing 0))) + +;; Change global font size easily + +(require-package 'default-text-scale) +(add-hook 'after-init-hook 'default-text-scale-mode) + + (require-package 'disable-mouse) From 71045816d420b345bc74de1d8467e1179b8c0fa8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 15:42:36 +1300 Subject: [PATCH 340/790] css-mode is now a prog-mode --- lisp/init-paredit.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-paredit.el b/lisp/init-paredit.el index b67eff1b5b..b046061ee3 100644 --- a/lisp/init-paredit.el +++ b/lisp/init-paredit.el @@ -46,6 +46,5 @@ (after-load 'paredit-everywhere (define-key paredit-everywhere-mode-map (kbd "M-s") nil)) (add-hook 'prog-mode-hook 'paredit-everywhere-mode) -(add-hook 'css-mode-hook 'paredit-everywhere-mode) (provide 'init-paredit) From 92a75218252b41aa719837752c0896b5c255236e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 15:45:31 +1300 Subject: [PATCH 341/790] Use info-colors package --- lisp/init-misc.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index 14af301456..1421ff8348 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -22,6 +22,11 @@ (normal-mode))) +(when (maybe-require-package 'info-colors) + (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 (setq comint-password-prompt-regexp From 25bd8d0e469d215c514963896e321dbc1db53f7e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 15:45:54 +1300 Subject: [PATCH 342/790] Remove defunct TODO --- lisp/init-misc.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/init-misc.el b/lisp/init-misc.el index 1421ff8348..21c094ed1e 100644 --- a/lisp/init-misc.el +++ b/lisp/init-misc.el @@ -7,7 +7,6 @@ (add-hook 'prog-mode-hook 'goto-address-prog-mode) (setq goto-address-mail-face 'link) -;; TODO: publish this as "newscript" package or similar, providing global minor mode (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p) (add-hook 'after-save-hook 'sanityinc/set-mode-for-new-scripts) From e6001800343094880ccee6a8e4cf836f51779cc2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 15:46:05 +1300 Subject: [PATCH 343/790] Diminish company-mode completely --- lisp/init-company.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index 206e2218d6..fdbf76a598 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -7,7 +7,7 @@ (when (maybe-require-package 'company) (add-hook 'after-init-hook 'global-company-mode) (after-load 'company - (diminish 'company-mode "CMP") + (diminish 'company-mode) (define-key company-mode-map (kbd "M-/") 'company-complete) (define-key company-active-map (kbd "M-/") 'company-other-backend) (define-key company-active-map (kbd "C-n") 'company-select-next) From e034eb62fd3b00cdab8d4362c309fadf5dc4943e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 17:02:23 +1300 Subject: [PATCH 344/790] Defer server-start until after-init --- init.el | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/init.el b/init.el index 14da17aa3c..e58252e85a 100644 --- a/init.el +++ b/init.el @@ -148,9 +148,11 @@ ;;---------------------------------------------------------------------------- ;; Allow access from emacsclient ;;---------------------------------------------------------------------------- -(require 'server) -(unless (server-running-p) - (server-start)) +(add-hook 'after-init-hook + (lambda () + (require 'server) + (unless (server-running-p) + (server-start)))) ;;---------------------------------------------------------------------------- ;; Variables configured via the interactive 'customize' interface From 6b169e0e73ec93f31d05cd15426657afc0525dbe Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 20:48:17 +1300 Subject: [PATCH 345/790] Update all defadvice to use new-style advice instead --- lisp/init-benchmarking.el | 6 ++++-- lisp/init-compile.el | 17 +++++++++-------- lisp/init-lisp.el | 17 +++++++++-------- lisp/init-org.el | 4 +--- lisp/init-sessions.el | 23 ++++++++++++----------- lisp/init-sql.el | 5 ++--- 6 files changed, 37 insertions(+), 35 deletions(-) diff --git a/lisp/init-benchmarking.el b/lisp/init-benchmarking.el index 34b5b33a50..117df51e1f 100644 --- a/lisp/init-benchmarking.el +++ b/lisp/init-benchmarking.el @@ -6,18 +6,20 @@ "A list of (FEATURE LOAD-START-TIME LOAD-DURATION). LOAD-DURATION is the time taken in milliseconds to load FEATURE.") -(defadvice require (around sanityinc/build-require-times (feature &optional filename noerror) activate) +(defun sanityinc/require-times-wrapper (orig feature &rest args) "Note in `sanityinc/require-times' the time taken to require each feature." (let* ((already-loaded (memq feature features)) (require-start-time (and (not already-loaded) (current-time)))) (prog1 - ad-do-it + (apply orig feature args) (when (and (not already-loaded) (memq feature features)) (let ((time (sanityinc/time-subtract-millis (current-time) require-start-time))) (add-to-list 'sanityinc/require-times (list feature require-start-time time) t)))))) +(advice-add 'require :around 'sanityinc/require-times-wrapper) + (define-derived-mode sanityinc/require-times-mode tabulated-list-mode "Require-Times" "Show times taken to `require' packages." diff --git a/lisp/init-compile.el b/lisp/init-compile.el index a9c7be622f..79c974dbaa 100644 --- a/lisp/init-compile.el +++ b/lisp/init-compile.el @@ -24,30 +24,31 @@ "The last buffer in which compilation took place.") (after-load 'compile - (defadvice compilation-start (after sanityinc/save-compilation-buffer activate) + (defun sanityinc/save-compilation-buffer () "Save the compilation buffer to find it later." (setq sanityinc/last-compilation-buffer next-error-last-buffer)) + (advice-add 'compilation-start :after 'sanityinc/save-compilation-buffer) - (defadvice recompile (around sanityinc/find-prev-compilation (&optional edit-command) activate) + (defun sanityinc/find-prev-compilation (orig &rest args) "Find the previous compilation buffer, if present, and recompile there." (if (and (null edit-command) (not (derived-mode-p 'compilation-mode)) sanityinc/last-compilation-buffer (buffer-live-p (get-buffer sanityinc/last-compilation-buffer))) (with-current-buffer sanityinc/last-compilation-buffer - ad-do-it) - ad-do-it))) + (apply orig args)) + (apply orig args))) + (advice-add 'recompile :around 'sanityinc/find-prev-compilation)) (global-set-key [f6] 'recompile) -(defadvice shell-command-on-region - (after sanityinc/shell-command-in-view-mode - (start end command &optional output-buffer replace &rest other-args) - activate) + +(defun sanityinc/shell-command-in-view-mode (start end command &optional output-buffer replace &rest other-args) "Put \"*Shell Command Output*\" buffers into view-mode." (unless (or output-buffer replace) (with-current-buffer "*Shell Command Output*" (view-mode 1)))) +(advice-add 'shell-command-on-region :after 'sanityinc/shell-command-in-view-mode) (after-load 'compile diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 8e8f040c68..8a6e84729b 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -26,15 +26,16 @@ (add-hook 'after-init-hook 'ipretty-mode)) -(defadvice pp-display-expression (after sanityinc/make-read-only (expression out-buffer-name) activate) +(defun sanityinc/make-read-only (expression out-buffer-name) "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 (view-mode 1)))) +(advice-add 'pp-display-expression :after 'sanityinc/make-read-only) -(defun sanityinc/maybe-set-bundled-elisp-readonly () +(defun sanityinc/maybe-set-bundled-elisp-readonly (&rest _) "If this elisp appears to be part of Emacs, then disallow editing." (when (and (buffer-file-name) (string-match-p "\\.el\\.gz\\'" (buffer-file-name))) @@ -188,7 +189,7 @@ (defvar sanityinc/vc-reverting nil "Whether or not VC or Magit is currently reverting buffers.") -(defadvice revert-buffer (after sanityinc/maybe-remove-elc activate) +(defun sanityinc/maybe-remove-elc (&rest _) "If reverting from VC, delete any .elc file that will now be out of sync." (when sanityinc/vc-reverting (when (and (eq 'emacs-lisp-mode major-mode) @@ -198,13 +199,13 @@ (when (file-exists-p elc) (message "Removing out-of-sync elc file %s" (file-name-nondirectory elc)) (delete-file elc)))))) +(advice-add 'revert-buffer :after 'sanityinc/maybe-remove-elc) -(defadvice magit-revert-buffers (around sanityinc/reverting activate) +(defun sanityinc/reverting (orig &rest args) (let ((sanityinc/vc-reverting t)) - ad-do-it)) -(defadvice vc-revert-buffer-internal (around sanityinc/reverting activate) - (let ((sanityinc/vc-reverting t)) - ad-do-it)) + (apply orig args))) +(advice-add 'magit-revert-buffers :around 'sanityinc/reverting) +(advice-add 'vc-revert-buffer-internal :around 'sanityinc/reverting) diff --git a/lisp/init-org.el b/lisp/init-org.el index 23c8b5d251..f29489a24b 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -128,9 +128,7 @@ typical word processor." (after-load 'org-agenda (add-to-list 'org-agenda-after-show-hook 'org-show-entry)) -(defadvice org-refile (after sanityinc/save-all-after-refile activate) - "Save all org buffers after each refile operation." - (org-save-all-org-buffers)) +(advice-add 'org-refile :after (lambda (&rest _) (org-save-all-org-buffers))) ;; Exclude DONE state tasks from refile targets (defun sanityinc/verify-refile-target () diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index 7df93d6214..0735dcc847 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -3,24 +3,25 @@ desktop-auto-save-timeout 600) (desktop-save-mode 1) -(defadvice desktop-read (around time-restore activate) - (let ((start-time (current-time))) - (prog1 - ad-do-it - (message "Desktop restored in %.2fms" - (sanityinc/time-subtract-millis (current-time) - start-time))))) +(defun sanityinc/desktop-time-restore (orig &rest args) + (let ((start-time (current-time))) + (prog1 + (apply orig args) + (message "Desktop restored in %.2fms" + (sanityinc/time-subtract-millis (current-time) + start-time))))) +(advice-add 'desktop-read :around 'sanityinc/desktop-time-restore) -(defadvice desktop-create-buffer (around time-create activate) - (let ((start-time (current-time)) - (filename (ad-get-arg 1))) +(defun sanityinc/desktop-time-buffer-create (orig ver filename &rest args) + (let ((start-time (current-time))) (prog1 - ad-do-it + (apply orig ver filename args) (message "Desktop: %.2fms to restore %s" (sanityinc/time-subtract-millis (current-time) start-time) (when filename (abbreviate-file-name filename)))))) +(advice-add 'desktop-create-buffer :around 'sanityinc/desktop-time-buffer-create) ;;---------------------------------------------------------------------------- ;; Restore histories and registers after saving diff --git a/lisp/init-sql.el b/lisp/init-sql.el index 39eab276d8..fd64a46e74 100644 --- a/lisp/init-sql.el +++ b/lisp/init-sql.el @@ -25,14 +25,13 @@ 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-z") 'sanityinc/pop-to-sqli-buffer) (when (package-installed-p 'dash-at-point) - (defun sanityinc/maybe-set-dash-db-docset () + (defun sanityinc/maybe-set-dash-db-docset (&rest _) (when (eq sql-product 'postgres) (set (make-local-variable '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) - (defadvice sql-set-product (after set-dash-docset activate) - (sanityinc/maybe-set-dash-db-docset)))) + (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)) From dcf55880f0cfd55b9df2ea86b8054387e272e476 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 20:48:49 +1300 Subject: [PATCH 346/790] Defer flycheck-package load until elisp-mode is loaded --- 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 8a6e84729b..86ac1c1ae4 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -252,7 +252,8 @@ (when (maybe-require-package 'flycheck) (require-package 'flycheck-package) (after-load 'flycheck - (flycheck-package-setup))) + (after-load 'elisp-mode + (flycheck-package-setup)))) From c01ca45ff5a3c4d6312e7d85e5c1fea2f42f95c2 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 20:49:24 +1300 Subject: [PATCH 347/790] Run exec-path-from-shell in strict mode, requiring optimal shell config This speeds up startup time, because it saves exec-path-from-shell from running a shell process twice. See the exec-path-from-shell docs for more info. --- lisp/init-exec-path.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/init-exec-path.el b/lisp/init-exec-path.el index 763c5291c4..a02d0c3a8b 100644 --- a/lisp/init-exec-path.el +++ b/lisp/init-exec-path.el @@ -6,6 +6,7 @@ (when (memq window-system '(mac ns x)) + (setq-default exec-path-from-shell-arguments nil) (exec-path-from-shell-initialize)) (provide 'init-exec-path) From c2e11444f4c8b792bcd8aa6524c62c5b585b5d7e Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 20 Oct 2018 20:54:02 +1300 Subject: [PATCH 348/790] Disable the eclim and semantic company backends by default --- lisp/init-company.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-company.el b/lisp/init-company.el index fdbf76a598..b7797e42dd 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -7,6 +7,8 @@ (when (maybe-require-package 'company) (add-hook 'after-init-hook 'global-company-mode) (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-active-map (kbd "M-/") 'company-other-backend) From 46f83a652ad40147c7c698fe1d3955ea25bcbfb9 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 21 Oct 2018 13:37:50 +1300 Subject: [PATCH 349/790] Don't modify company-backends buffer-locally --- lisp/init-company.el | 7 +------ lisp/init-elm.el | 4 ++-- lisp/init-php.el | 3 +-- lisp/init-python.el | 4 ++-- lisp/init-ruby.el | 7 +++---- 5 files changed, 9 insertions(+), 16 deletions(-) diff --git a/lisp/init-company.el b/lisp/init-company.el index b7797e42dd..1b1949db31 100644 --- a/lisp/init-company.el +++ b/lisp/init-company.el @@ -18,12 +18,7 @@ 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)) - - (defun sanityinc/local-push-company-backend (backend) - "Add BACKEND to a buffer-local version of `company-backends'." - (make-local-variable 'company-backends) - (push backend company-backends))) + (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) diff --git a/lisp/init-elm.el b/lisp/init-elm.el index 65df4ce82f..79659e1820 100644 --- a/lisp/init-elm.el +++ b/lisp/init-elm.el @@ -1,8 +1,8 @@ (when (maybe-require-package 'elm-mode) (after-load 'elm-mode (diminish 'elm-indent-mode) - (add-hook 'elm-mode-hook - (lambda () (sanityinc/local-push-company-backend 'company-elm))) + (after-load 'company + (push 'company-elm company-backends)) (when (executable-find "elm-format") (setq-default elm-format-on-save t))) (maybe-require-package 'elm-test-runner) diff --git a/lisp/init-php.el b/lisp/init-php.el index 5e39167726..cffb62f0d7 100644 --- a/lisp/init-php.el +++ b/lisp/init-php.el @@ -3,7 +3,6 @@ (when (maybe-require-package 'company-php) (after-load 'company - (add-hook 'php-mode-hook - (lambda () (sanityinc/local-push-company-backend 'company-ac-php-backend)))))) + (push 'company-ac-php-backend company-backends)))) (provide 'init-php) diff --git a/lisp/init-python.el b/lisp/init-python.el index a37cdb952c..9d93bcf930 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -11,8 +11,8 @@ (add-hook 'python-mode-hook 'anaconda-eldoc-mode)) (when (maybe-require-package 'company-anaconda) (after-load 'company - (add-hook 'python-mode-hook - (lambda () (sanityinc/local-push-company-backend 'company-anaconda)))))) + (after-load 'python + (push 'company-anaconda company-backends))))) (provide 'init-python) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index 677fe5bf0b..e717ad07bf 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -56,10 +56,9 @@ (when (maybe-require-package 'robe) (after-load 'ruby-mode (add-hook 'ruby-mode-hook 'robe-mode)) - (after-load 'company - (dolist (hook (mapcar 'derived-mode-hook-name '(ruby-mode inf-ruby-mode html-erb-mode haml-mode))) - (add-hook hook - (lambda () (sanityinc/local-push-company-backend 'company-robe)))))) + (after-load 'robe + (after-load 'company + (push 'company-robe company-backends)))) From 2701170d57e7e79f61fc2ebecf4cdfef512c1fd1 Mon Sep 17 00:00:00 2001 From: re-mx Date: Sun, 21 Oct 2018 09:36:31 +0800 Subject: [PATCH 350/790] Fix wrong number of arguments for sanityinc/save-compilation-buffer --- lisp/init-compile.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-compile.el b/lisp/init-compile.el index 79c974dbaa..7ccce244bc 100644 --- a/lisp/init-compile.el +++ b/lisp/init-compile.el @@ -24,7 +24,7 @@ "The last buffer in which compilation took place.") (after-load 'compile - (defun sanityinc/save-compilation-buffer () + (defun sanityinc/save-compilation-buffer (&rest _) "Save the compilation buffer to find it later." (setq sanityinc/last-compilation-buffer next-error-last-buffer)) (advice-add 'compilation-start :after 'sanityinc/save-compilation-buffer) From f716a631859fd230e9cd859c0960737b4fdb45e3 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 21 Oct 2018 17:16:13 +1300 Subject: [PATCH 351/790] Set MacOS transparent titlebar background automatically --- lisp/init-gui-frames.el | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index f670d4e921..156c3fd8cb 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -67,6 +67,19 @@ (global-set-key (kbd "M-C-7") (lambda () (interactive) (modify-frame-parameters nil `((alpha . 100))))) +(when *is-a-mac* + (defun sanityinc/set-frame-ns-appearance (frame) + (let ((mode (frame-parameter frame 'background-mode))) + (modify-frame-parameters frame `((ns-transparent-titlebar . t) (ns-appearance . ,mode))))) + + (defun sanityinc/set-ns-appearance (&rest _) + (mapc 'sanityinc/set-frame-ns-appearance (frame-list))) + (add-hook 'after-init-hook 'sanityinc/set-ns-appearance) + (add-hook 'after-make-frame-functions 'sanityinc/set-frame-ns-appearance) + (advice-add 'load-theme :after 'sanityinc/set-ns-appearance) + (advice-add 'enable-theme :after 'sanityinc/set-ns-appearance)) + + (setq frame-title-format '((:eval (if (buffer-file-name) (abbreviate-file-name (buffer-file-name)) From d2ff65040d46d4a5e223b80b9bdeffa557deb9ad Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 21 Oct 2018 17:44:11 +1300 Subject: [PATCH 352/790] Extracted code into ns-auto-titlebar package, so use that instead --- lisp/init-gui-frames.el | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index 156c3fd8cb..b3df0c5d41 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -68,16 +68,8 @@ (when *is-a-mac* - (defun sanityinc/set-frame-ns-appearance (frame) - (let ((mode (frame-parameter frame 'background-mode))) - (modify-frame-parameters frame `((ns-transparent-titlebar . t) (ns-appearance . ,mode))))) - - (defun sanityinc/set-ns-appearance (&rest _) - (mapc 'sanityinc/set-frame-ns-appearance (frame-list))) - (add-hook 'after-init-hook 'sanityinc/set-ns-appearance) - (add-hook 'after-make-frame-functions 'sanityinc/set-frame-ns-appearance) - (advice-add 'load-theme :after 'sanityinc/set-ns-appearance) - (advice-add 'enable-theme :after 'sanityinc/set-ns-appearance)) + (when (maybe-require-package 'ns-auto-titlebar) + (ns-auto-titlebar-mode))) (setq frame-title-format From 8292779b53b45cba181b2f5cbc74c5dd191d9bd6 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 21 Oct 2018 19:11:26 +1300 Subject: [PATCH 353/790] Prefer not to enable pixel-scroll-mode by default --- lisp/init-gui-frames.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-gui-frames.el b/lisp/init-gui-frames.el index b3df0c5d41..4640f3da84 100644 --- a/lisp/init-gui-frames.el +++ b/lisp/init-gui-frames.el @@ -37,9 +37,6 @@ (when (fboundp 'menu-bar-mode) (menu-bar-mode -1))) -(when (fboundp 'pixel-scroll-mode) - (pixel-scroll-mode 1)) - (let ((no-border '(internal-border-width . 0))) (add-to-list 'default-frame-alist no-border) (add-to-list 'initial-frame-alist no-border)) From cfb20db7780ad8f7df68970a0d3ce60818b3b336 Mon Sep 17 00:00:00 2001 From: re-mx Date: Sun, 21 Oct 2018 14:34:42 +0800 Subject: [PATCH 354/790] Drop more unnecessary css-mode-hook references See https://github.com/purcell/emacs.d/commit/71045816d420b345bc74de1d8467e1179b8c0fa8 --- 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 6c8f684eb4..cbfe186006 100644 --- a/lisp/init-editing-utils.el +++ b/lisp/init-editing-utils.el @@ -98,7 +98,7 @@ (when (maybe-require-package 'symbol-overlay) - (dolist (hook '(prog-mode-hook html-mode-hook css-mode-hook yaml-mode-hook conf-mode-hook)) + (dolist (hook '(prog-mode-hook html-mode-hook yaml-mode-hook conf-mode-hook)) (add-hook hook 'symbol-overlay-mode)) (after-load 'symbol-overlay (diminish 'symbol-overlay-mode) From d818a9c0df91141fe6b4535caaef56fc49362139 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Thu, 25 Oct 2018 10:01:02 +1300 Subject: [PATCH 355/790] Remove spurious function glob arguments Fixes #643 --- 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 86ac1c1ae4..5cfbdf45e4 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -35,7 +35,7 @@ -(defun sanityinc/maybe-set-bundled-elisp-readonly (&rest _) +(defun sanityinc/maybe-set-bundled-elisp-readonly () "If this elisp appears to be part of Emacs, then disallow editing." (when (and (buffer-file-name) (string-match-p "\\.el\\.gz\\'" (buffer-file-name))) From 01053ceef2d0fbd54953f232cafab977be0de19a Mon Sep 17 00:00:00 2001 From: re-mx Date: Thu, 25 Oct 2018 13:13:35 +0800 Subject: [PATCH 356/790] Update ivy-initial-inputs-alist settings Set the ivy-initial-inputs-alist for "man" correctly --- lisp/init-ivy.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 696391840e..d0d89c16e3 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -9,7 +9,7 @@ ivy-magic-tilde nil ivy-dynamic-exhibit-delay-ms 150 ivy-initial-inputs-alist - '((man . "^") + '((Man-completion-table . "^") (woman . "^"))) ;; IDO-style directory navigation From 435ecd0e7cb0707ee7b717a9ea69c3ed0b5f3d06 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sun, 28 Oct 2018 16:50:46 +1300 Subject: [PATCH 357/790] Update copyright year, remove para not part of Simplified BSD licence --- LICENSE | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/LICENSE b/LICENSE index c52ae92191..edaae7aec4 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2006-2017, Steve Purcell +Copyright (c) 2006-2018, Steve Purcell All rights reserved. Redistribution and use in source and binary forms, with or without @@ -20,7 +20,3 @@ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation are those -of the authors and should not be interpreted as representing official policies, -either expressed or implied, of any organization or project. From d2be076240a0f1c6753901dbdff66e0dfe83a3b0 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 29 Oct 2018 14:09:24 +1300 Subject: [PATCH 358/790] Remove unused org repository: GNU ELPA should have those packages --- lisp/init-elpa.el | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index 947bd5b733..c004084ebc 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -24,11 +24,6 @@ ;; Force SSL for GNU ELPA (setcdr (assoc "gnu" package-archives) "https://elpa.gnu.org/packages/")))) -;; We include the org repository for completeness, but don't normally -;; use it. -(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/")) - - ;;; On-demand installation of packages From c458b692b0c5a7bdeb788d1c9b6f0408c90ea701 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 2 Nov 2018 15:19:46 +1300 Subject: [PATCH 359/790] Don't disable aggressive-indent-mode when editing themes There are no longer obvious performance issues with this. --- lisp/init-lisp.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 5cfbdf45e4..8de2e3f5fe 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -239,10 +239,6 @@ (after-load 'rainbow-mode (diminish 'rainbow-mode))) -(when (maybe-require-package 'aggressive-indent) - ;; Can be prohibitively slow with very long forms - (add-to-list 'sanityinc/theme-mode-hook (lambda () (aggressive-indent-mode -1)) t)) - (when (maybe-require-package 'highlight-quoted) From 7583cc7cf9e53231ac5247bd3f8f36732a649cd1 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 2 Nov 2018 15:23:58 +1300 Subject: [PATCH 360/790] Less code for enabling rainbow-mode when editing emacs themes --- lisp/init-lisp.el | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/lisp/init-lisp.el b/lisp/init-lisp.el index 8de2e3f5fe..f833dac880 100644 --- a/lisp/init-lisp.el +++ b/lisp/init-lisp.el @@ -222,19 +222,11 @@ ;; Extras for theme editing - -(defvar sanityinc/theme-mode-hook nil - "Hook triggered when editing a theme file.") - -(defun sanityinc/run-theme-mode-hooks-if-theme () - "Run `sanityinc/theme-mode-hook' if this appears to a theme." - (when (string-match "\\(color-theme-\\|-theme\\.el\\)" (buffer-name)) - (run-hooks 'sanityinc/theme-mode-hook))) - -(add-hook 'emacs-lisp-mode-hook 'sanityinc/run-theme-mode-hooks-if-theme t) - (when (maybe-require-package 'rainbow-mode) - (add-hook 'sanityinc/theme-mode-hook 'rainbow-mode) + (defun sanityinc/enable-rainbow-mode-if-theme () + (when (and (buffer-file-name) (string-match-p "\\(color-theme-\\|-theme\\.el\\)" (buffer-file-name))) + (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 (diminish 'rainbow-mode))) From c27073766c02c194cbc2a595a8579c24082edbea Mon Sep 17 00:00:00 2001 From: re-mx Date: Fri, 2 Nov 2018 21:53:21 +0800 Subject: [PATCH 361/790] Use lambda function instead of sanityinc/ensure-mmm-erb-loaded --- lisp/init-ruby.el | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index e717ad07bf..863dd0b4cb 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -82,13 +82,11 @@ ;;; ERB (require-package 'mmm-mode) -(defun sanityinc/ensure-mmm-erb-loaded () - (require 'mmm-erb)) (require 'derived) (defun sanityinc/set-up-mode-for-erb (mode) - (add-hook (derived-mode-hook-name mode) 'sanityinc/ensure-mmm-erb-loaded) + (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))) From 8a4d18f457dbf4789272120a930f7cc6aba3dcaa Mon Sep 17 00:00:00 2001 From: re-mx Date: Tue, 6 Nov 2018 18:01:01 +0800 Subject: [PATCH 362/790] Use js-comint-program-command instead of inferior-js-program-command --- 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 a2eb084490..ce9e357f8b 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -73,7 +73,7 @@ ;; --------------------------------------------------------------------------- (when (maybe-require-package 'js-comint) - (setq inferior-js-program-command "node") + (setq js-comint-program-command "node") (defvar inferior-js-minor-mode-map (make-sparse-keymap)) (define-key inferior-js-minor-mode-map "\C-x\C-e" 'js-send-last-sexp) From 362dfa600cf0bd7671aad7c104a0e0e9166403f6 Mon Sep 17 00:00:00 2001 From: re-mx Date: Tue, 6 Nov 2018 18:02:16 +0800 Subject: [PATCH 363/790] Drop defunct keybindings --- lisp/init-javascript.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/init-javascript.el b/lisp/init-javascript.el index ce9e357f8b..3cc1629963 100644 --- a/lisp/init-javascript.el +++ b/lisp/init-javascript.el @@ -77,10 +77,7 @@ (defvar inferior-js-minor-mode-map (make-sparse-keymap)) (define-key inferior-js-minor-mode-map "\C-x\C-e" 'js-send-last-sexp) - (define-key inferior-js-minor-mode-map "\C-\M-x" 'js-send-last-sexp-and-go) (define-key inferior-js-minor-mode-map "\C-cb" 'js-send-buffer) - (define-key inferior-js-minor-mode-map "\C-c\C-b" 'js-send-buffer-and-go) - (define-key inferior-js-minor-mode-map "\C-cl" 'js-load-file-and-go) (define-minor-mode inferior-js-keys-mode "Bindings for communicating with an inferior js interpreter." From a5b01456bd1881fbc04f879a34420b1ef07f5049 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 2 Nov 2018 15:42:05 +1300 Subject: [PATCH 364/790] Remove unnecessary lambda wrapper --- lisp/init-ivy.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index d0d89c16e3..7858b5ae3b 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -30,7 +30,7 @@ '((t . ivy--regex-fuzzy))))) (when (maybe-require-package 'ivy-historian) - (add-hook 'after-init-hook (lambda () (ivy-historian-mode t)))) + (add-hook 'after-init-hook 'ivy-historian-mode)) (when (maybe-require-package 'counsel) (setq-default counsel-mode-override-describe-bindings t) From 49298e7b4ffc6f17c8923fe6d3ce0f64085ea353 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 7 Nov 2018 09:35:20 +1300 Subject: [PATCH 365/790] Fix broken advice for recompilation --- lisp/init-compile.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/init-compile.el b/lisp/init-compile.el index 7ccce244bc..85a76f0b4a 100644 --- a/lisp/init-compile.el +++ b/lisp/init-compile.el @@ -29,15 +29,15 @@ (setq sanityinc/last-compilation-buffer next-error-last-buffer)) (advice-add 'compilation-start :after 'sanityinc/save-compilation-buffer) - (defun sanityinc/find-prev-compilation (orig &rest args) + (defun sanityinc/find-prev-compilation (orig &optional edit-command) "Find the previous compilation buffer, if present, and recompile there." (if (and (null edit-command) (not (derived-mode-p 'compilation-mode)) sanityinc/last-compilation-buffer (buffer-live-p (get-buffer sanityinc/last-compilation-buffer))) (with-current-buffer sanityinc/last-compilation-buffer - (apply orig args)) - (apply orig args))) + (funcall orig edit-command)) + (funcall orig edit-command))) (advice-add 'recompile :around 'sanityinc/find-prev-compilation)) (global-set-key [f6] 'recompile) From 84026be22626e2142784be3aad3e92cdca54b89c Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Fri, 9 Nov 2018 09:17:54 +1300 Subject: [PATCH 366/790] Show more results in counsel-ag & co. --- lisp/init-ivy.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/init-ivy.el b/lisp/init-ivy.el index 7858b5ae3b..c8e9416845 100644 --- a/lisp/init-ivy.el +++ b/lisp/init-ivy.el @@ -61,6 +61,8 @@ instead." (projectile-project-root) (error default-directory))))) (funcall search-function initial-input dir))))) + (after-load 'ivy + (add-to-list 'ivy-height-alist (cons 'counsel-ag 20))) (global-set-key (kbd "M-?") 'sanityinc/counsel-search-project))) From 138b603ed840e068720bdc7baec3ee493a4939b5 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 21 Nov 2018 13:28:32 +1300 Subject: [PATCH 367/790] More safely work around upstream bug in company-nixos-options https://github.com/travisbhartwell/nix-emacs/pull/46 --- lisp/init-nix.el | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lisp/init-nix.el b/lisp/init-nix.el index 91a9a46327..017c930920 100644 --- a/lisp/init-nix.el +++ b/lisp/init-nix.el @@ -7,10 +7,11 @@ (after-load 'company ;; Patch pending https://github.com/travisbhartwell/nix-emacs/pull/46 - (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)))))) + (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))))))) (add-to-list 'company-backends 'company-nixos-options)))) From 033ef041c2e57dc69ac8a4febbc493fac58b11df Mon Sep 17 00:00:00 2001 From: re-mx Date: Sat, 24 Nov 2018 17:33:37 +0800 Subject: [PATCH 368/790] Drop unnecessary "append" in desktop-globals-to-save setting --- lisp/init-sessions.el | 56 +++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/lisp/init-sessions.el b/lisp/init-sessions.el index 0735dcc847..4a6142d37d 100644 --- a/lisp/init-sessions.el +++ b/lisp/init-sessions.el @@ -40,34 +40,34 @@ ;; save a bunch of variables to the desktop file ;; for lists specify the len of the maximal saved data also (setq desktop-globals-to-save - (append '((comint-input-ring . 50) - (compile-history . 30) - desktop-missing-file-warning - (dired-regexp-history . 20) - (extended-command-history . 30) - (face-name-history . 20) - (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) - (org-clock-history . 50) - (org-refile-history . 50) - (org-tags-history . 50) - (query-replace-history . 60) - (read-expression-history . 60) - (regexp-history . 60) - (regexp-search-ring . 20) - register-alist - (search-ring . 20) - (shell-command-history . 50) - tags-file-name - tags-table-list))) + '((comint-input-ring . 50) + (compile-history . 30) + desktop-missing-file-warning + (dired-regexp-history . 20) + (extended-command-history . 30) + (face-name-history . 20) + (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) + (org-clock-history . 50) + (org-refile-history . 50) + (org-tags-history . 50) + (query-replace-history . 60) + (read-expression-history . 60) + (regexp-history . 60) + (regexp-search-ring . 20) + register-alist + (search-ring . 20) + (shell-command-history . 50) + tags-file-name + tags-table-list)) (provide 'init-sessions) From 23aede3cb0ce4db1439f4c63338b0188201ae3ff Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 26 Nov 2018 13:47:43 +1300 Subject: [PATCH 369/790] Remove unnecessary region params Fixes #656 --- lisp/init-isearch.el | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lisp/init-isearch.el b/lisp/init-isearch.el index 62feb1aa43..291219aedf 100644 --- a/lisp/init-isearch.el +++ b/lisp/init-isearch.el @@ -32,11 +32,10 @@ (define-key isearch-mode-map "\C-\M-w" 'isearch-yank-symbol) -;; http://www.emacswiki.org/emacs/ZapToISearch -(defun sanityinc/isearch-exit-other-end (rbeg rend) +(defun sanityinc/isearch-exit-other-end () "Exit isearch, but at the other end of the search string. This is useful when followed by an immediate kill." - (interactive "r") + (interactive) (isearch-exit) (goto-char isearch-other-end)) From 27e806d98b9db6ec33bfa0a2a298bb6bb4278e97 Mon Sep 17 00:00:00 2001 From: re-mx Date: Mon, 26 Nov 2018 19:26:29 +0800 Subject: [PATCH 370/790] Remove defunct workaround for ruby-mode --- lisp/init-ruby.el | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lisp/init-ruby.el b/lisp/init-ruby.el index 863dd0b4cb..efcf591331 100644 --- a/lisp/init-ruby.el +++ b/lisp/init-ruby.el @@ -12,14 +12,6 @@ ruby-use-encoding-map nil ruby-insert-encoding-magic-comment nil) -(after-load 'ruby-mode - ;; Stupidly the non-bundled ruby-mode isn't a derived mode of - ;; prog-mode: we run the latter's hooks anyway in that case. - (add-hook 'ruby-mode-hook - (lambda () - (unless (derived-mode-p 'prog-mode) - (run-hooks 'prog-mode-hook))))) - (add-hook 'ruby-mode-hook 'subword-mode) (after-load 'page-break-lines From f4f1608a267783eb6cf40da9b5c3091cde6550ee Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Wed, 28 Nov 2018 13:47:27 +1300 Subject: [PATCH 371/790] 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 372/790] 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 373/790] 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 374/790] 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 375/790] 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 376/790] 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 377/790] 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 378/790] 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 379/790] 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 380/790] 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 381/790] 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 382/790] 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 383/790] 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 384/790] 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 385/790] 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 386/790] 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 387/790] 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 388/790] 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 389/790] 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 390/790] 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 391/790] 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 392/790] 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 393/790] 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 394/790] 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 395/790] 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 396/790] 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 397/790] 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 398/790] 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 399/790] 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 400/790] 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 401/790] 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 402/790] 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 403/790] 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 404/790] 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 405/790] 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 406/790] 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 407/790] 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 408/790] 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 409/790] 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 410/790] 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 411/790] 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 412/790] 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 413/790] 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 414/790] 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 415/790] 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 416/790] 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 417/790] 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 418/790] 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 419/790] 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 420/790] 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 421/790] 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 422/790] 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 423/790] 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 424/790] 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 425/790] 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 426/790] 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 427/790] 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 428/790] 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 429/790] 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 430/790] 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 431/790] 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 432/790] "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 433/790] 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 434/790] 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 435/790] 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 436/790] 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 437/790] 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 438/790] 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 439/790] 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 440/790] 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 441/790] 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 442/790] 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 443/790] 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 444/790] 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 445/790] 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 446/790] 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 447/790] 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 448/790] 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 449/790] 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 450/790] 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 451/790] 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 452/790] 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 453/790] 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 454/790] 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 455/790] 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 456/790] 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 457/790] 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 458/790] 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 459/790] 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 460/790] 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 461/790] 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 462/790] 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 463/790] 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 464/790] 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 465/790] 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 466/790] 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 467/790] 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 468/790] 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 469/790] 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 470/790] 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 471/790] 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 472/790] 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 473/790] 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 474/790] 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 475/790] 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 476/790] 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 477/790] 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 478/790] 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 479/790] 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 480/790] 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 481/790] 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 482/790] 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 483/790] 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 484/790] 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 485/790] 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 486/790] 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 487/790] 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 488/790] 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 489/790] 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 490/790] 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 491/790] 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 492/790] 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 493/790] 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 494/790] 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 495/790] 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 496/790] 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 497/790] 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 498/790] 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 499/790] 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 500/790] 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 501/790] 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 502/790] 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 503/790] 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 504/790] 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 505/790] 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 506/790] 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 507/790] 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 508/790] 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 509/790] 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 510/790] 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 511/790] 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 512/790] 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 513/790] 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 514/790] 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 515/790] 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 516/790] 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 517/790] 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 518/790] 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 519/790] 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 520/790] 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 521/790] 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 522/790] 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 523/790] 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 524/790] 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 525/790] 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 526/790] 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 527/790] 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 528/790] 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 529/790] 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 530/790] 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 531/790] 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 532/790] 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 533/790] 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 534/790] 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 535/790] 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 536/790] 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 537/790] 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 538/790] 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 539/790] 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 540/790] 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 541/790] 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 542/790] 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 543/790] 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 544/790] 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 545/790] 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 546/790] 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 547/790] 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 548/790] 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 549/790] 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 550/790] 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 551/790] 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 552/790] 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 553/790] 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 554/790] 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 555/790] 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 556/790] 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 557/790] 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 558/790] 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 559/790] 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 560/790] 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 561/790] 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 562/790] 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 563/790] 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 564/790] 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 565/790] 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 566/790] 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 567/790] 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 568/790] 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 569/790] 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 570/790] 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 571/790] 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 572/790] 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 573/790] 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 574/790] 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 575/790] 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 576/790] 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 577/790] 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 578/790] 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 579/790] 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 580/790] 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 581/790] 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 582/790] 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 583/790] 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 584/790] 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 585/790] 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 586/790] 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 587/790] 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 588/790] 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 589/790] 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 590/790] 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 591/790] 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 592/790] 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 593/790] 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 594/790] 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 595/790] 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 596/790] 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 597/790] 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 598/790] 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 599/790] 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 600/790] 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 601/790] 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 602/790] 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 603/790] 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 604/790] 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 605/790] 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 606/790] 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 607/790] 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 608/790] 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 609/790] 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 610/790] 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 611/790] 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 612/790] 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 613/790] 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 614/790] 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 615/790] 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 616/790] 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 617/790] 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 618/790] 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 619/790] 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 620/790] 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 621/790] 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 622/790] 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 623/790] 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 624/790] 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 625/790] 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 626/790] 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 627/790] 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 628/790] 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 629/790] 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 630/790] 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 631/790] 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 632/790] $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 633/790] 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 634/790] 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 635/790] 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 636/790] 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 637/790] 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 638/790] 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 639/790] 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 640/790] 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 641/790] 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 642/790] 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 643/790] 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 644/790] 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 645/790] 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 646/790] 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 647/790] 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 648/790] 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 649/790] 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 650/790] 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 651/790] 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 652/790] 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 653/790] 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 654/790] 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 655/790] 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 656/790] 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 657/790] 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 658/790] 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 659/790] 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 660/790] 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 661/790] 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 662/790] [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 663/790] 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 664/790] 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 665/790] 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 666/790] 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 667/790] 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 668/790] 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 669/790] 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 670/790] 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 671/790] 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 672/790] 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 673/790] 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 674/790] 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 675/790] 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 676/790] 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 677/790] 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 678/790] 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 679/790] 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 680/790] 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 681/790] 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 682/790] 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 683/790] 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 684/790] 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 685/790] 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 686/790] 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 687/790] 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 688/790] 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 689/790] 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 690/790] 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 691/790] 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 692/790] 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 693/790] 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 694/790] 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 695/790] 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 696/790] 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 697/790] 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 698/790] 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 699/790] 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 700/790] 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 701/790] 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 702/790] 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 703/790] 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 704/790] 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 705/790] 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 706/790] 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 707/790] 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 708/790] 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 709/790] 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 710/790] 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 711/790] 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 712/790] 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 713/790] 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 714/790] 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 715/790] 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 716/790] 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 717/790] 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 718/790] 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 719/790] 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 720/790] 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 721/790] 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 722/790] 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 723/790] 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 724/790] 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 725/790] 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 726/790] 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 727/790] 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 728/790] 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 729/790] 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 730/790] 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 731/790] 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 732/790] 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 733/790] 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 734/790] 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 735/790] 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 736/790] 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 737/790] 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 738/790] 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 739/790] 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 740/790] 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 741/790] 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 742/790] 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 743/790] 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 744/790] 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 745/790] 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 746/790] 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 747/790] 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 748/790] 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 749/790] 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 750/790] 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 751/790] 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 752/790] 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 753/790] 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 754/790] 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 755/790] 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 756/790] 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 757/790] 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 758/790] 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 759/790] 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 760/790] 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 761/790] 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 762/790] 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 763/790] 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 764/790] 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 765/790] 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 766/790] 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 767/790] 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 768/790] 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 769/790] 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 770/790] 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 771/790] 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 772/790] 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 773/790] 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 774/790] 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 775/790] 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 776/790] 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 777/790] 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 778/790] 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 779/790] 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 780/790] 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 781/790] 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 782/790] 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 783/790] 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 784/790] 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 785/790] 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 786/790] 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 787/790] 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 788/790] 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." From c54d2162638bb7b2df849f4c4c617386185c73a8 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Tue, 18 Feb 2025 17:04:54 +0000 Subject: [PATCH 789/790] Remove outdated embark-consult integration (fixes #871) --- lisp/init-minibuffer.el | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lisp/init-minibuffer.el b/lisp/init-minibuffer.el index 07da9ba7cb..9081ea355f 100644 --- a/lisp/init-minibuffer.el +++ b/lisp/init-minibuffer.el @@ -35,12 +35,7 @@ (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) - (add-hook 'embark-collect-mode-hook 'embark-consult-preview-minor-mode))))) + (maybe-require-package 'embark-consult))) (when (maybe-require-package 'marginalia) (add-hook 'after-init-hook 'marginalia-mode)) From 66c912812fb53b0089c3e898fbba70ee22e5dcad Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Mon, 24 Feb 2025 17:26:27 +0000 Subject: [PATCH 790/790] Include Emacs 29.4 and 30.1 in the CI matrix --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e24d3fc6e4..efc86c8131 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,6 +19,8 @@ jobs: - 28.2 - 29.1 - 29.3 + - 29.4 + - 30.1 experimental: [false] include: - emacs_version: snapshot