diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2024-05-23 11:42:19 +0100 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2024-05-23 12:07:19 +0100 |
commit | e4c9aa114b21d15fe602291fc30c1ce2f4e69bb9 (patch) | |
tree | b8ba96092b8c4f8e678f4b3bbc8b08d6b5c95dac | |
parent | 4cc0e52b24f24d080ebf5d53e93de9b70e2d638c (diff) | |
download | dotfiles-master.tar.gz |
-rw-r--r-- | .emacs.d/init.el | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/.emacs.d/init.el b/.emacs.d/init.el index 8264c693..0416b366 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -1434,8 +1434,16 @@ the non-side windows deleted by `delete-other-windows' will also reappear." (defun spw/clone-indirect-buffer-set-mode () (when (memq this-command '(clone-indirect-buffer clone-indirect-buffer-other-window)) - (require 'files-x) - (when-let* ((mode (read-file-local-variable-mode))) + (let* ((default (and (symbolp major-mode) + (symbol-name major-mode))) + (pred (lambda (sym) + (and (fboundp sym) + (not (memq sym minor-mode-list)) + (let ((name (symbol-name sym))) + (and (string-suffix-p "-mode" name) + (not (string-suffix-p "-minor-mode" name))))))) + (mode (intern (completing-read (format-prompt "Major mode" default) + obarray pred t nil nil default)))) (unless (eq major-mode mode) (funcall mode))))) (add-hook 'clone-indirect-buffer-hook #'spw/clone-indirect-buffer-set-mode) |