branch: elpa/evil-nerd-commenter
commit 944fc7417dee5476764b45f76bb72fa74ad8b1df
Author: lalopmak <[email protected]>
Commit: lalopmak <[email protected]>
Added comment operator (modelled after delete/change operator).
Takes a motion or text object and comments it. Also yanks to clipboard.
Not assigned to any key yet.
---
evil-nerd-commenter.el | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/evil-nerd-commenter.el b/evil-nerd-commenter.el
index ad24f3a857..42b02c5d12 100644
--- a/evil-nerd-commenter.el
+++ b/evil-nerd-commenter.el
@@ -271,6 +271,33 @@ Paragraphs are separated by empty lines."
))
)
+(evil-define-operator evilnc-comment-operator (beg end type register
yank-handler)
+ "Comments text from BEG to END with TYPE.
+Save in REGISTER or in the kill-ring with YANK-HANDLER."
+ (interactive "<R><x><y>")
+ (unless register
+ (let ((text (filter-buffer-substring beg end)))
+ (unless (string-match-p "\n" text)
+ ;; set the small delete register
+ (evil-set-register ?- text))))
+ (evil-yank beg end type register yank-handler)
+ (cond
+ ((eq type 'block)
+ (evil-apply-on-block #'comment-or-uncomment-region beg end nil))
+ ((and (eq type 'line)
+ (= end (point-max))
+ (or (= beg end)
+ (/= (char-before end) ?\n))
+ (/= beg (point-min))
+ (= (char-before beg) ?\n))
+ (comment-or-uncomment-region (1- beg) end))
+ (t
+ (comment-or-uncomment-region beg end)))
+ ;; place cursor on beginning of line
+ (when (and (evil-called-interactively-p)
+ (eq type 'line))
+ (evil-first-non-blank)))
+
(provide 'evil-nerd-commenter)
;;; evil-nerd-commenter.el ends here