mirror of
https://codeberg.org/scip/dot-emacs.git
synced 2025-12-17 12:30:59 +01:00
fix electric indent, tab indent and smartparens
This commit is contained in:
@@ -122,7 +122,7 @@ Returns t if version changed, nil otherwise."
|
|||||||
;; enable outshine mode
|
;; enable outshine mode
|
||||||
(outshine-hook-function)
|
(outshine-hook-function)
|
||||||
|
|
||||||
(electric-indent-mode t)))
|
(electric-indent-local-mode t)))
|
||||||
|
|
||||||
;; use UP arrow for history in *ielm* as well, just as C-up
|
;; use UP arrow for history in *ielm* as well, just as C-up
|
||||||
(add-hook 'comint-mode-hook
|
(add-hook 'comint-mode-hook
|
||||||
|
|||||||
@@ -30,27 +30,29 @@ Used when enabling smartparens-mode."
|
|||||||
(goto-char beg))))
|
(goto-char beg))))
|
||||||
|
|
||||||
(use-package smartparens
|
(use-package smartparens
|
||||||
:config
|
:config
|
||||||
(require 'smartparens-config)
|
(require 'smartparens-config)
|
||||||
(require 'cl-lib)
|
(require 'cl-lib)
|
||||||
|
|
||||||
;; enable sp in minibuffer as well
|
;; enable sp in minibuffer as well
|
||||||
;; maybe, see: https://github.com/Fuco1/smartparens/issues/33:
|
;; maybe, see: https://github.com/Fuco1/smartparens/issues/33:
|
||||||
;; (sp-local-pair 'minibuffer-inactive-mode "'" nil :actions nil)
|
;; (sp-local-pair 'minibuffer-inactive-mode "'" nil :actions nil)
|
||||||
(setq sp-ignore-modes-list
|
(setq sp-ignore-modes-list
|
||||||
(delete 'minibuffer-inactive-mode sp-ignore-modes-list))
|
(delete 'minibuffer-inactive-mode sp-ignore-modes-list))
|
||||||
|
|
||||||
;; automatically enable where needed
|
;; automatically enable where needed
|
||||||
(add-something-to-mode-hooks
|
(add-something-to-mode-hooks
|
||||||
'(rust emacs-lisp ielm lisp lisp-interaction scheme slime-repl ) 'smartparens-mode)
|
'(rust emacs-lisp ielm lisp elisp lisp-interaction scheme slime-repl ) 'smartparens-mode)
|
||||||
|
|
||||||
;; also in some select prog modes
|
;; also in some select prog modes
|
||||||
(add-something-to-mode-hooks
|
;; (add-something-to-mode-hooks
|
||||||
'(perl ruby c c++ sh makefile config-general yaml go) 'smartparens-mode)
|
;; '(perl ruby c c++ sh makefile config-general yaml go) (smartparens-mode t))
|
||||||
|
;; the above doesn't work anymore, for whatever reasons, so I enable it for all
|
||||||
|
(smartparens-global-mode t)
|
||||||
|
|
||||||
;; via https://ebzzry.io/en/emacs-pairs/:
|
;; via https://ebzzry.io/en/emacs-pairs/:
|
||||||
(defmacro def-pairs (pairs)
|
(defmacro def-pairs (pairs)
|
||||||
"Define functions for pairing. PAIRS is an alist of (NAME . STRING)
|
"Define functions for pairing. PAIRS is an alist of (NAME . STRING)
|
||||||
conses, where NAME is the function name that will be created and
|
conses, where NAME is the function name that will be created and
|
||||||
STRING is a single-character string that marks the opening character.
|
STRING is a single-character string that marks the opening character.
|
||||||
|
|
||||||
@@ -59,81 +61,81 @@ STRING is a single-character string that marks the opening character.
|
|||||||
|
|
||||||
defines the functions WRAP-WITH-PAREN and WRAP-WITH-BRACKET,
|
defines the functions WRAP-WITH-PAREN and WRAP-WITH-BRACKET,
|
||||||
respectively."
|
respectively."
|
||||||
`(progn
|
`(progn
|
||||||
,@(cl-loop for (key . val) in pairs
|
,@(cl-loop for (key . val) in pairs
|
||||||
collect
|
collect
|
||||||
`(defun ,(read (concat
|
`(defun ,(read (concat
|
||||||
"wrap-with-"
|
"wrap-with-"
|
||||||
(prin1-to-string key)
|
(prin1-to-string key)
|
||||||
"s"))
|
"s"))
|
||||||
(&optional arg)
|
(&optional arg)
|
||||||
(interactive "p")
|
(interactive "p")
|
||||||
(sp-wrap-with-pair ,val)))))
|
(sp-wrap-with-pair ,val)))))
|
||||||
|
|
||||||
(def-pairs ((paren . "(")
|
(def-pairs ((paren . "(")
|
||||||
(bracket . "[")
|
(bracket . "[")
|
||||||
(brace . "{")
|
(brace . "{")
|
||||||
(single-quote . "'")
|
(single-quote . "'")
|
||||||
(double-quote . "\"")
|
(double-quote . "\"")
|
||||||
(back-quote . "`")))
|
(back-quote . "`")))
|
||||||
|
|
||||||
;;(add-hook 'smartparens-enabled-hook #'tvd-disable-par-and-pair)
|
;;(add-hook 'smartparens-enabled-hook #'tvd-disable-par-and-pair)
|
||||||
;;(add-hook 'smartparens-enabled-hook #'turn-on-smartparens-strict-mode)
|
;;(add-hook 'smartparens-enabled-hook #'turn-on-smartparens-strict-mode)
|
||||||
|
|
||||||
;; auto wrapping w/o region
|
;; auto wrapping w/o region
|
||||||
(define-key smartparens-mode-map (kbd "C-c (") 'wrap-with-parens)
|
(define-key smartparens-mode-map (kbd "C-c (") 'wrap-with-parens)
|
||||||
(define-key smartparens-mode-map (kbd "C-c [") 'wrap-with-brackets)
|
(define-key smartparens-mode-map (kbd "C-c [") 'wrap-with-brackets)
|
||||||
(define-key smartparens-mode-map (kbd "C-c {") 'wrap-with-braces)
|
(define-key smartparens-mode-map (kbd "C-c {") 'wrap-with-braces)
|
||||||
(define-key smartparens-mode-map (kbd "C-c '") 'wrap-with-single-quotes)
|
(define-key smartparens-mode-map (kbd "C-c '") 'wrap-with-single-quotes)
|
||||||
(define-key smartparens-mode-map (kbd "C-c \"") 'wrap-with-double-quotes)
|
(define-key smartparens-mode-map (kbd "C-c \"") 'wrap-with-double-quotes)
|
||||||
(define-key smartparens-mode-map (kbd "C-c `") 'wrap-with-back-quotes)
|
(define-key smartparens-mode-map (kbd "C-c `") 'wrap-with-back-quotes)
|
||||||
|
|
||||||
;; modification
|
;; modification
|
||||||
(define-key smartparens-mode-map (kbd "C-k") 'sp-kill-hybrid-sexp)
|
(define-key smartparens-mode-map (kbd "C-k") 'sp-kill-hybrid-sexp)
|
||||||
(define-key smartparens-mode-map (kbd "C-<left>") 'sp-forward-slurp-sexp)
|
(define-key smartparens-mode-map (kbd "C-<left>") 'sp-forward-slurp-sexp)
|
||||||
(define-key smartparens-mode-map (kbd "C-<right>") 'sp-forward-barf-sexp)
|
(define-key smartparens-mode-map (kbd "C-<right>") 'sp-forward-barf-sexp)
|
||||||
|
|
||||||
;; movement
|
;; movement
|
||||||
;; Also Check: https://github.com/Fuco1/smartparens/wiki/Working-with-expressions
|
;; Also Check: https://github.com/Fuco1/smartparens/wiki/Working-with-expressions
|
||||||
;; (look for "quick summary for each navigation function")
|
;; (look for "quick summary for each navigation function")
|
||||||
;;
|
;;
|
||||||
;; Jump after the next balanced expression. If inside one and
|
;; Jump after the next balanced expression. If inside one and
|
||||||
;; there is no forward exp., jump after its closing pair.
|
;; there is no forward exp., jump after its closing pair.
|
||||||
(define-key smartparens-mode-map (kbd "C-M-<right>") 'sp-forward-sexp)
|
(define-key smartparens-mode-map (kbd "C-M-<right>") 'sp-forward-sexp)
|
||||||
;; Jump before the previous balanced expression. If inside one
|
;; Jump before the previous balanced expression. If inside one
|
||||||
;; and there is no previous exp., jump before its opening pair.
|
;; and there is no previous exp., jump before its opening pair.
|
||||||
(define-key smartparens-mode-map (kbd "C-M-<left>") 'sp-backward-sexp)
|
(define-key smartparens-mode-map (kbd "C-M-<left>") 'sp-backward-sexp)
|
||||||
;; Jump up one level from the current balanced expression. This
|
;; Jump up one level from the current balanced expression. This
|
||||||
;; means skipping all the enclosed expressions within this and
|
;; means skipping all the enclosed expressions within this and
|
||||||
;; then jumping after the closing pair.
|
;; then jumping after the closing pair.
|
||||||
(define-key smartparens-mode-map (kbd "C-M-<up>") 'sp-up-sexp)
|
(define-key smartparens-mode-map (kbd "C-M-<up>") 'sp-up-sexp)
|
||||||
;; Jump after the opening pair of next balanced expression. This
|
;; Jump after the opening pair of next balanced expression. This
|
||||||
;; effectively descends one level down in the "expression
|
;; effectively descends one level down in the "expression
|
||||||
;; hierarchy". If there is no expression to descend to, jump
|
;; hierarchy". If there is no expression to descend to, jump
|
||||||
;; after current expression's opening pair. This can be used to
|
;; after current expression's opening pair. This can be used to
|
||||||
;; quickly navigate to the beginning of current balanced
|
;; quickly navigate to the beginning of current balanced
|
||||||
;; expression.
|
;; expression.
|
||||||
(define-key smartparens-mode-map (kbd "C-M-<down>") 'sp-down-sexp)
|
(define-key smartparens-mode-map (kbd "C-M-<down>") 'sp-down-sexp)
|
||||||
;; Jump to the beginning of following balanced expression. If
|
;; Jump to the beginning of following balanced expression. If
|
||||||
;; there is no following expression on the current level, jump
|
;; there is no following expression on the current level, jump
|
||||||
;; one level up backward, effectively doing sp-backward-up-sexp.
|
;; one level up backward, effectively doing sp-backward-up-sexp.
|
||||||
(define-key smartparens-mode-map (kbd "C-S-<left>") 'sp-next-sexp)
|
(define-key smartparens-mode-map (kbd "C-S-<left>") 'sp-next-sexp)
|
||||||
;; Jump to the end of the previous balanced expression. If there
|
;; Jump to the end of the previous balanced expression. If there
|
||||||
;; is no previous expression on the current level, jupm one level
|
;; is no previous expression on the current level, jupm one level
|
||||||
;; up forward, effectively doing sp-up-sexp.
|
;; up forward, effectively doing sp-up-sexp.
|
||||||
(define-key smartparens-mode-map (kbd "C-S-<right>") 'sp-previous-sexp)
|
(define-key smartparens-mode-map (kbd "C-S-<right>") 'sp-previous-sexp)
|
||||||
|
|
||||||
;; comment the whole sexp
|
;; comment the whole sexp
|
||||||
(define-key smartparens-mode-map (kbd ";") 'tvd-lisp-comment)
|
(define-key smartparens-mode-map (kbd ";") 'tvd-lisp-comment)
|
||||||
|
|
||||||
;; replace my global setting
|
;; replace my global setting
|
||||||
;; FIXME: fhceck/fix M<up+down>!
|
;; FIXME: fhceck/fix M<up+down>!
|
||||||
(define-key smartparens-mode-map (kbd "M-<right>") 'sp-forward-symbol)
|
(define-key smartparens-mode-map (kbd "M-<right>") 'sp-forward-symbol)
|
||||||
(define-key smartparens-mode-map (kbd "M-<left>") 'sp-backward-symbol)
|
(define-key smartparens-mode-map (kbd "M-<left>") 'sp-backward-symbol)
|
||||||
|
|
||||||
(when (fboundp 'defhydra)
|
(when (fboundp 'defhydra)
|
||||||
(defhydra hydra-smartparens (:hint nil)
|
(defhydra hydra-smartparens (:hint nil)
|
||||||
"
|
"
|
||||||
Sexps [quit with _q_, reach this hydra with 'C-x (']
|
Sexps [quit with _q_, reach this hydra with 'C-x (']
|
||||||
|
|
||||||
^Nav^ ^Barf/Slurp^ ^Depth^
|
^Nav^ ^Barf/Slurp^ ^Depth^
|
||||||
@@ -154,41 +156,41 @@ _k_: kill (C-k) _s_: split _{_: wrap with { }
|
|||||||
^^ _i_: indent defun
|
^^ _i_: indent defun
|
||||||
|
|
||||||
"
|
"
|
||||||
("q" nil)
|
("q" nil)
|
||||||
;; Wrapping
|
;; Wrapping
|
||||||
("(" (lambda (_) (interactive "P") (sp-wrap-with-pair "(")))
|
("(" (lambda (_) (interactive "P") (sp-wrap-with-pair "(")))
|
||||||
("{" (lambda (_) (interactive "P") (sp-wrap-with-pair "{")))
|
("{" (lambda (_) (interactive "P") (sp-wrap-with-pair "{")))
|
||||||
("'" (lambda (_) (interactive "P") (sp-wrap-with-pair "'")))
|
("'" (lambda (_) (interactive "P") (sp-wrap-with-pair "'")))
|
||||||
("\"" (lambda (_) (interactive "P") (sp-wrap-with-pair "\"")))
|
("\"" (lambda (_) (interactive "P") (sp-wrap-with-pair "\"")))
|
||||||
;; Navigation
|
;; Navigation
|
||||||
("f" sp-forward-sexp )
|
("f" sp-forward-sexp )
|
||||||
("b" sp-backward-sexp)
|
("b" sp-backward-sexp)
|
||||||
("u" sp-backward-up-sexp)
|
("u" sp-backward-up-sexp)
|
||||||
("d" sp-down-sexp)
|
("d" sp-down-sexp)
|
||||||
("p" sp-backward-down-sexp)
|
("p" sp-backward-down-sexp)
|
||||||
("n" sp-up-sexp)
|
("n" sp-up-sexp)
|
||||||
;; Kill/copy
|
;; Kill/copy
|
||||||
("w" sp-copy-sexp)
|
("w" sp-copy-sexp)
|
||||||
("k" sp-kill-sexp)
|
("k" sp-kill-sexp)
|
||||||
;; Misc
|
;; Misc
|
||||||
("t" sp-transpose-sexp)
|
("t" sp-transpose-sexp)
|
||||||
("j" sp-join-sexp)
|
("j" sp-join-sexp)
|
||||||
("s" sp-split-sexp)
|
("s" sp-split-sexp)
|
||||||
("c" sp-convolute-sexp)
|
("c" sp-convolute-sexp)
|
||||||
("i" sp-indent-defun)
|
("i" sp-indent-defun)
|
||||||
;; Depth changing
|
;; Depth changing
|
||||||
("R" sp-splice-sexp)
|
("R" sp-splice-sexp)
|
||||||
("r" sp-splice-sexp-killing-around)
|
("r" sp-splice-sexp-killing-around)
|
||||||
("<up>" sp-splice-sexp-killing-backward)
|
("<up>" sp-splice-sexp-killing-backward)
|
||||||
("<down>" sp-splice-sexp-killing-forward)
|
("<down>" sp-splice-sexp-killing-forward)
|
||||||
;; Barfing/slurping
|
;; Barfing/slurping
|
||||||
("<left>" sp-forward-slurp-sexp)
|
("<left>" sp-forward-slurp-sexp)
|
||||||
("<right>" sp-forward-barf-sexp)
|
("<right>" sp-forward-barf-sexp)
|
||||||
("C-<left>" sp-backward-barf-sexp)
|
("C-<left>" sp-backward-barf-sexp)
|
||||||
("C-<right>" sp-backward-slurp-sexp))
|
("C-<right>" sp-backward-slurp-sexp))
|
||||||
|
|
||||||
(define-key smartparens-mode-map (kbd "C-x (") 'hydra-smartparens/body)
|
(define-key smartparens-mode-map (kbd "C-x (") 'hydra-smartparens/body)
|
||||||
))
|
))
|
||||||
|
|
||||||
;;; Parens config goes here as well
|
;;; Parens config goes here as well
|
||||||
|
|
||||||
|
|||||||
@@ -277,3 +277,6 @@ in between will be killed. If INS is non-nil, it will be inserted then."
|
|||||||
|
|
||||||
(advice-add 'iedit-mode :after '(lambda (&rest args) ;; restore previously saved
|
(advice-add 'iedit-mode :after '(lambda (&rest args) ;; restore previously saved
|
||||||
(setq buffer-undo-list tvd-buffer-undo-list))))
|
(setq buffer-undo-list tvd-buffer-undo-list))))
|
||||||
|
|
||||||
|
(add-hook 'text-mode-hook
|
||||||
|
(lambda () (electric-indent-local-mode -1)))
|
||||||
|
|||||||
Reference in New Issue
Block a user