Refactor + slight optimization for backspace #452

This commit is contained in:
Henrik Lissner 2018-03-05 23:12:20 -05:00
parent 88d339f65d
commit 4c535b2643
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -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,7 +165,7 @@ 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)
(or (integerp n)
(signal 'wrong-type-argument (list 'integerp n)))
(cond ((and (use-region-p)
delete-active-region
@ -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))
((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)
((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))
((and (bolp) (doom-surrounded-p pair nil 'balanced))
(delete-region beg end)
(sp-insert-pair op))
(t
(doom/backward-delete-whitespace-to-column)))))
((doom/backward-delete-whitespace-to-column)))))))
;; Otherwise, do simple deletion.
(t (delete-char (- n) killflag))))