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-let* ((cl (plist-get pair :cl))
|
||||
(op (plist-get pair :op)))
|
||||
(and (not (string-empty-p op))
|
||||
(not (string-empty-p cl))
|
||||
(and (not (string= op ""))
|
||||
(not (string= cl ""))
|
||||
(let ((nbeg (+ (length op) beg))
|
||||
(nend (- end (length cl))))
|
||||
(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'.
|
||||
+ Resorts to `delete-char' if n > 1"
|
||||
(interactive "p\nP")
|
||||
(unless (integerp n)
|
||||
(signal 'wrong-type-argument (list 'integerp n)))
|
||||
(or (integerp n)
|
||||
(signal 'wrong-type-argument (list 'integerp n)))
|
||||
(cond ((and (use-region-p)
|
||||
delete-active-region
|
||||
(= n 1))
|
||||
|
@ -185,26 +185,30 @@ possible, or just one char if that's not possible."
|
|||
(save-excursion
|
||||
(insert-char ?\s (- ocol (current-column)) nil))))
|
||||
;;
|
||||
((and (= n 1) (not (minibufferp)))
|
||||
;; TODO Refactor; abstract with doom-surrounded-p more
|
||||
(let* ((pair (sp-get-thing))
|
||||
(op (plist-get pair :op))
|
||||
(cl (plist-get pair :cl))
|
||||
(beg (plist-get pair :beg))
|
||||
(end (plist-get pair :end)))
|
||||
(cond ((and end beg (= end (+ beg (length op) (length cl))))
|
||||
(sp-backward-delete-char 1))
|
||||
((doom-surrounded-p pair :inline :balanced)
|
||||
(delete-char -1 killflag)
|
||||
(delete-char 1)
|
||||
(when (= (point) (+ (length cl) beg))
|
||||
(sp-backward-delete-char 1)
|
||||
(sp-insert-pair op)))
|
||||
((and (bolp) (doom-surrounded-p pair nil :balanced))
|
||||
(delete-region beg end)
|
||||
(sp-insert-pair op))
|
||||
(t
|
||||
(doom/backward-delete-whitespace-to-column)))))
|
||||
((and (= n 1)
|
||||
(not (minibufferp)))
|
||||
(cond ((and (memq (char-before) (list ?\ ?\t))
|
||||
(save-excursion
|
||||
(and (> (- (skip-chars-backward " \t" (line-beginning-position))) 0)
|
||||
(bolp))))
|
||||
(doom/backward-delete-whitespace-to-column))
|
||||
((let* ((pair (sp-get-thing))
|
||||
(op (plist-get pair :op))
|
||||
(cl (plist-get pair :cl))
|
||||
(beg (plist-get pair :beg))
|
||||
(end (plist-get pair :end)))
|
||||
(cond ((and end beg (= end (+ beg (length op) (length cl))))
|
||||
(sp-backward-delete-char 1))
|
||||
((doom-surrounded-p pair 'inline 'balanced)
|
||||
(delete-char -1 killflag)
|
||||
(delete-char 1)
|
||||
(when (= (point) (+ (length cl) beg))
|
||||
(sp-backward-delete-char 1)
|
||||
(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.
|
||||
(t (delete-char (- n) killflag))))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue