(use-feature emacs
:hook
(find-file . infer-indentation-style)
:init
(electric-indent-mode 1)
(setq-default indent-tabs-mode nil)
(defun infer-indentation-style ()
;; if our source file uses tabs, we use tabs, if spaces spaces, and if
;; neither, we use the current indent-tabs-mode
(let ((space-count (how-many "^ " (point-min) (point-max)))
(tab-count (how-many "^ " (point-min) (point-max))))
(if (> space-count tab-count) (setq-local indent-tabs-mode nil))
(if (> tab-count space-count) (setq-local indent-tabs-mode t)))))
(use-feature emacs
:bind
([remap indent-for-tab-command] . smart-tab-jump-out-or-indent)
:defines electric-pair-pairs
:init
(defun smart-tab-jump-out-or-indent (&optional arg)
(interactive "P")
(let ((closings (mapcar #'cdr electric-pair-pairs))
(after (char-after)))
(if (member after closings)
(forward-char 1)
(indent-for-tab-command arg)))))
(use-package dtrt-indent
:custom
(dtrt-indent-verbosity 0)
:commands dtrt-indent-mode
:init
(dtrt-indent-mode t))
난 일단 이렇게 쓰고 있음.
내장된 electric-indent-mode가 탭누르면 자동으로 인덴트 맞춰주는 기능임.
(defun indent-style (n)
(interactive)
;; java/c/c++
(setq-local c-basic-offset n)
;; web development
(setq-local coffee-tab-width n) ; coffeescript
(setq-local javascript-indent-level n) ; javascript-mode
(setq-local js-indent-level n) ; js-mode
(setq-local js2-basic-offset n) ; js2-mode, in latest js2-mode, it's alias of js-indent-level
(setq-local web-mode-markup-indent-offset n) ; web-mode, html tag in html file
(setq-local web-mode-css-indent-offset n) ; web-mode, css in html file
(setq-local web-mode-code-indent-offset n) ; web-mode, js code in html file
(setq-local css-indent-offset n) ; css-mode
)
난 한번에 맞추는 편인데 언어마다 다르게 가능하긴함.
아 그리고 use-feature는 매크로임
;;
;;; straight is `nill' macro
;;
;;;###autoload
(defmacro use-feature (name &rest args)
"Like `use-package', but with `straight-use-package-by-default' disabled."
(declare (indent defun))
`(use-package ,name
:straight nil
,@args))
댓글 0