diff --git a/core/core-editor.el b/core/core-editor.el index af65513e0..a577da690 100644 --- a/core/core-editor.el +++ b/core/core-editor.el @@ -80,7 +80,6 @@ enable multiple minor modes for the same regexp.") (add-hook! help-mode 'visual-line-mode) (add-hook! special-mode (setq truncate-lines nil)) -(add-hook! python-mode 'electric-indent-local-mode) (add-hook! change-major-mode-hook (when indent-tabs-mode (whitespace-mode +1))) @@ -108,6 +107,17 @@ enable multiple minor modes for the same regexp.") ;; (global-whitespace-mode 1) ; Show whitespace ;; (global-font-lock-mode t) ; Enable syntax highlighting for older emacs (electric-indent-mode -1) ; on by default +(defvar narf-electric-indent-words '()) +(make-variable-buffer-local 'narf-electric-indent-words) +(setq electric-indent-chars '(?\n ?\^?)) +(defvar narf-electric-indent-p nil) +(push (lambda (c) + (when (eolp) + (save-excursion + (backward-word) + (looking-at-p (concat "\\<" (regexp-opt narf-electric-indent-words)))))) + electric-indent-functions) + (global-auto-revert-mode 1) ; revert buffers for changed files ;; window config undo/redo diff --git a/modules/module-lua.el b/modules/module-lua.el index dec3de552..8847098e4 100644 --- a/modules/module-lua.el +++ b/modules/module-lua.el @@ -9,6 +9,10 @@ (after! company-dict (add-to-list 'company-dict-minor-mode-list 'love-mode)) + (add-hook! lua-mode + (electric-indent-local-mode +1) + (setq narf-electric-indent-words '("else" "end"))) + (defun narf-inf-lua () (lua-start-process "lua" "lua") (pop-to-buffer lua-process-buffer))) diff --git a/modules/module-ruby.el b/modules/module-ruby.el index 67580888d..cde0591fb 100644 --- a/modules/module-ruby.el +++ b/modules/module-ruby.el @@ -16,6 +16,10 @@ ;; Formatting (setq ruby-deep-indent-paren t) + (add-hook! ruby-mode + (electric-indent-local-mode +1) + (setq narf-electric-indent-words '("else" "end" "elseif"))) + ;; Don't interfere with my custom RET behavior (define-key ruby-mode-map [?\n] nil) diff --git a/modules/module-sh.el b/modules/module-sh.el index 679bc0cab..81470c79c 100644 --- a/modules/module-sh.el +++ b/modules/module-sh.el @@ -17,7 +17,9 @@ (define-repl! sh-mode narf/inf-shell) (add-hook! sh-mode 'flycheck-mode) - (add-hook! sh-mode 'electric-indent-local-mode) + (add-hook! sh-mode + (electric-indent-local-mode +1) + (setq narf-electric-indent-words '("else" "elif" "fi" "done"))) (require 'company-shell)