Rewrote indentation detection

More robust and easier to customize.
This commit is contained in:
Henrik Lissner 2018-07-29 02:54:19 +02:00
parent 088480047c
commit 35e5a47e9f
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
5 changed files with 31 additions and 17 deletions

View file

@ -16,6 +16,10 @@ modes are active and the buffer is read-only.")
indentation settings or not. This should be set by editorconfig if it indentation settings or not. This should be set by editorconfig if it
successfully sets indent_style/indent_size.") successfully sets indent_style/indent_size.")
(defvar doom-detect-indentation-excluded-modes '(fundamental-mode)
"A list of major modes in which indentation should be automatically
detected.")
(setq-default (setq-default
large-file-warning-threshold 30000000 large-file-warning-threshold 30000000
vc-follow-symlinks t vc-follow-symlinks t
@ -185,6 +189,23 @@ savehist file."
(smartparens-global-mode +1)) (smartparens-global-mode +1))
;; Automatic detection of indent settings
(def-package! dtrt-indent
:unless noninteractive
:defer t
:init
(defun doom|detect-indentation ()
(unless (or (not after-init-time)
doom-inhibit-indent-detection
(member (substring (buffer-name) 0 1) '(" " "*"))
(memq major-mode doom-detect-indentation-excluded-modes))
(dtrt-indent-mode +1)))
(add-hook! '(change-major-mode-after-body-hook read-only-mode-hook)
#'doom|detect-indentation)
:config
(setq dtrt-indent-verbosity (if doom-debug-mode 2 0))
(add-to-list 'dtrt-indent-hook-generic-mapping-list '(t tab-width)))
;; Branching undo ;; Branching undo
(def-package! undo-tree (def-package! undo-tree
:after-call (doom-exit-buffer-hook after-find-file) :after-call (doom-exit-buffer-hook after-find-file)
@ -206,22 +227,6 @@ savehist file."
(setq command-log-mode-auto-show t (setq command-log-mode-auto-show t
command-log-mode-open-log-turns-on-mode t) command-log-mode-open-log-turns-on-mode t)
(def-package! dtrt-indent
:unless noninteractive
:defer t
:init
(defun doom|detect-indentation ()
(unless (or doom-inhibit-indent-detection
buffer-read-only
(memq major-mode '(fundamental-mode org-mode))
(not (derived-mode-p 'prog-mode 'text-mode 'conf-mode)))
(require 'dtrt-indent)
(dtrt-indent-mode +1)))
(add-hook 'after-change-major-mode-hook #'doom|detect-indentation)
:config
(setq dtrt-indent-verbosity (if doom-debug-mode 2 0))
(add-to-list 'dtrt-indent-hook-generic-mapping-list '(t tab-width)))
(def-package! expand-region (def-package! expand-region
:commands (er/contract-region er/mark-symbol er/mark-word) :commands (er/contract-region er/mark-symbol er/mark-word)
:config :config

View file

@ -71,6 +71,8 @@ You should use `det-eshell-alias!' to change this.")
eshell-glob-case-insensitive t eshell-glob-case-insensitive t
eshell-error-if-no-glob t) eshell-error-if-no-glob t)
(add-to-list 'doom-detect-indentation-excluded-modes 'eshell-mode nil #'eq)
;; Consider eshell buffers real ;; Consider eshell buffers real
(add-hook 'eshell-mode-hook #'doom|mark-buffer-as-real) (add-hook 'eshell-mode-hook #'doom|mark-buffer-as-real)

View file

@ -8,4 +8,5 @@
(after! term (after! term
(set-env! "SHELL") (set-env! "SHELL")
(add-hook 'term-mode-hook #'doom|mark-buffer-as-real)) (add-hook 'term-mode-hook #'doom|mark-buffer-as-real)
(add-to-list 'doom-detect-indentation-excluded-modes 'term-mode nil #'eq))

View file

@ -41,6 +41,9 @@
("add-hook" "remove-hook") ("add-hook" "remove-hook")
("add-hook!" "remove-hook!"))) ("add-hook!" "remove-hook!")))
;; variable-width indentation is superior in elisp
(add-to-list 'doom-detect-indentation-excluded-modes 'emacs-lisp-mode nil #'eq)
(add-hook! 'emacs-lisp-mode-hook (add-hook! 'emacs-lisp-mode-hook
#'(;; 3rd-party functionality #'(;; 3rd-party functionality
auto-compile-on-save-mode doom|enable-delete-trailing-whitespace auto-compile-on-save-mode doom|enable-delete-trailing-whitespace

View file

@ -191,6 +191,9 @@ unfold to point on startup."
org-preview-latex-image-directory (concat doom-cache-dir "org-latex/") org-preview-latex-image-directory (concat doom-cache-dir "org-latex/")
org-format-latex-options (plist-put org-format-latex-options :scale 1.5)) org-format-latex-options (plist-put org-format-latex-options :scale 1.5))
;; Don't do automatic indent detection in org files
(add-to-list 'doom-detect-indentation-excluded-modes 'org-mode nil #'eq)
;; Previews are usually rendered with light backgrounds, so ensure their ;; Previews are usually rendered with light backgrounds, so ensure their
;; background (and foreground) match the current theme. ;; background (and foreground) match the current theme.
(defun +org|update-latex-preview-background-color () (defun +org|update-latex-preview-background-color ()