emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/evil-nerd-commenter 944fc7417d 031/235: Added comment oper


From: ELPA Syncer
Subject: [nongnu] elpa/evil-nerd-commenter 944fc7417d 031/235: Added comment operator (modelled after delete/change operator).
Date: Thu, 6 Jan 2022 02:59:32 -0500 (EST)

branch: elpa/evil-nerd-commenter
commit 944fc7417dee5476764b45f76bb72fa74ad8b1df
Author: lalopmak <lalop.llmao@gmail.com>
Commit: lalopmak <lalop.llmao@gmail.com>

    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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]