branch: elpa/evil-nerd-commenter
commit 237040205e0c0dc8b367b5ee6d4095e95aa7703c
Author: lalopmak <[email protected]>
Commit: lalopmak <[email protected]>

    Made definition of evilnc-comment-operator a callable function, 
evilnc-define-comment-operator.  Only does anything if 'evil-define-operator 
bound and 'evilnc-comment-operator isn't.
    
    It gets called when evilnc first gets loaded, when user calls it, and when 
user calls evilnc-default-hotkeys.
---
 evil-nerd-commenter.el | 67 ++++++++++++++++++++++++++++----------------------
 1 file changed, 38 insertions(+), 29 deletions(-)

diff --git a/evil-nerd-commenter.el b/evil-nerd-commenter.el
index 450b670e57..8744c24118 100644
--- a/evil-nerd-commenter.el
+++ b/evil-nerd-commenter.el
@@ -262,38 +262,47 @@ Paragraphs are separated by empty lines."
   (global-set-key (kbd "C-c c") 'evilnc-copy-and-comment-lines)
   (global-set-key (kbd "C-c p") 'evilnc-comment-or-uncomment-paragraphs)
   (eval-after-load 'evil
-    '(when (fboundp 'evilnc-comment-operator)
-       (define-key evil-normal-state-map "," 'evilnc-comment-operator)
-       (define-key evil-visual-state-map "," 'evilnc-comment-operator))))
+    '(progn (evilnc-define-comment-operator)
+            (define-key evil-normal-state-map "," 'evilnc-comment-operator)
+            (define-key evil-visual-state-map "," 'evilnc-comment-operator))))
 
-(when (fboundp 'evil-define-operator)
-  (evil-define-operator evilnc-comment-operator (beg end type register 
yank-handler)
-    "Comments text from BEG to END with TYPE.
+(defun evilnc-define-comment-operator ()
+  "Attempts to define the comment operator evilnc-comment-operator.  
+
+Will only work if 'evil-define-operator is defined and 
'evilnc-comment-operator is not."
+  (interactive)
+  (when (and (fboundp 'evil-define-operator)
+             (not (fboundp 'evilnc-comment-operator)))
+    (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))))
+      (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)))))
 
+;; Attemps to define the operator on first load.
+;; Will only work if evil has been loaded
+(evilnc-define-comment-operator)
 
 (provide 'evil-nerd-commenter)
 

Reply via email to