Refactor + slight optimization for backspace #452
This commit is contained in:
parent
88d339f65d
commit
4c535b2643
1 changed files with 28 additions and 24 deletions
|
@ -16,8 +16,8 @@ lines, above and below, with only whitespace in between."
|
||||||
(when (and (> pt beg) (< pt end))
|
(when (and (> pt beg) (< pt end))
|
||||||
(when-let* ((cl (plist-get pair :cl))
|
(when-let* ((cl (plist-get pair :cl))
|
||||||
(op (plist-get pair :op)))
|
(op (plist-get pair :op)))
|
||||||
(and (not (string-empty-p op))
|
(and (not (string= op ""))
|
||||||
(not (string-empty-p cl))
|
(not (string= cl ""))
|
||||||
(let ((nbeg (+ (length op) beg))
|
(let ((nbeg (+ (length op) beg))
|
||||||
(nend (- end (length cl))))
|
(nend (- end (length cl))))
|
||||||
(let ((content (buffer-substring-no-properties nbeg nend)))
|
(let ((content (buffer-substring-no-properties nbeg nend)))
|
||||||
|
@ -165,8 +165,8 @@ possible, or just one char if that's not possible."
|
||||||
+ Otherwise, resort to `doom/backward-delete-whitespace-to-column'.
|
+ Otherwise, resort to `doom/backward-delete-whitespace-to-column'.
|
||||||
+ Resorts to `delete-char' if n > 1"
|
+ Resorts to `delete-char' if n > 1"
|
||||||
(interactive "p\nP")
|
(interactive "p\nP")
|
||||||
(unless (integerp n)
|
(or (integerp n)
|
||||||
(signal 'wrong-type-argument (list 'integerp n)))
|
(signal 'wrong-type-argument (list 'integerp n)))
|
||||||
(cond ((and (use-region-p)
|
(cond ((and (use-region-p)
|
||||||
delete-active-region
|
delete-active-region
|
||||||
(= n 1))
|
(= n 1))
|
||||||
|
@ -185,26 +185,30 @@ possible, or just one char if that's not possible."
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(insert-char ?\s (- ocol (current-column)) nil))))
|
(insert-char ?\s (- ocol (current-column)) nil))))
|
||||||
;;
|
;;
|
||||||
((and (= n 1) (not (minibufferp)))
|
((and (= n 1)
|
||||||
;; TODO Refactor; abstract with doom-surrounded-p more
|
(not (minibufferp)))
|
||||||
(let* ((pair (sp-get-thing))
|
(cond ((and (memq (char-before) (list ?\ ?\t))
|
||||||
(op (plist-get pair :op))
|
(save-excursion
|
||||||
(cl (plist-get pair :cl))
|
(and (> (- (skip-chars-backward " \t" (line-beginning-position))) 0)
|
||||||
(beg (plist-get pair :beg))
|
(bolp))))
|
||||||
(end (plist-get pair :end)))
|
(doom/backward-delete-whitespace-to-column))
|
||||||
(cond ((and end beg (= end (+ beg (length op) (length cl))))
|
((let* ((pair (sp-get-thing))
|
||||||
(sp-backward-delete-char 1))
|
(op (plist-get pair :op))
|
||||||
((doom-surrounded-p pair :inline :balanced)
|
(cl (plist-get pair :cl))
|
||||||
(delete-char -1 killflag)
|
(beg (plist-get pair :beg))
|
||||||
(delete-char 1)
|
(end (plist-get pair :end)))
|
||||||
(when (= (point) (+ (length cl) beg))
|
(cond ((and end beg (= end (+ beg (length op) (length cl))))
|
||||||
(sp-backward-delete-char 1)
|
(sp-backward-delete-char 1))
|
||||||
(sp-insert-pair op)))
|
((doom-surrounded-p pair 'inline 'balanced)
|
||||||
((and (bolp) (doom-surrounded-p pair nil :balanced))
|
(delete-char -1 killflag)
|
||||||
(delete-region beg end)
|
(delete-char 1)
|
||||||
(sp-insert-pair op))
|
(when (= (point) (+ (length cl) beg))
|
||||||
(t
|
(sp-backward-delete-char 1)
|
||||||
(doom/backward-delete-whitespace-to-column)))))
|
(sp-insert-pair op)))
|
||||||
|
((and (bolp) (doom-surrounded-p pair nil 'balanced))
|
||||||
|
(delete-region beg end)
|
||||||
|
(sp-insert-pair op))
|
||||||
|
((doom/backward-delete-whitespace-to-column)))))))
|
||||||
;; Otherwise, do simple deletion.
|
;; Otherwise, do simple deletion.
|
||||||
(t (delete-char (- n) killflag))))
|
(t (delete-char (- n) killflag))))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue