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

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

[nongnu] elpa/evil-nerd-commenter cac2f7945f 151/235: handle one line co


From: ELPA Syncer
Subject: [nongnu] elpa/evil-nerd-commenter cac2f7945f 151/235: handle one line comment properly
Date: Thu, 6 Jan 2022 02:59:43 -0500 (EST)

branch: elpa/evil-nerd-commenter
commit cac2f7945fc90f43d1282dfe4aca24ded9f7cd03
Author: Chen Bin <chenbin.sh@gmail.com>
Commit: Chen Bin <chenbin.sh@gmail.com>

    handle one line comment properly
---
 README.org                      |  2 +-
 evil-nerd-commenter-operator.el | 44 ++++++++++++++++++++++++++++++++++-------
 evil-nerd-commenter-sdk.el      | 27 ++++++++++++++++---------
 evil-nerd-commenter.el          |  4 ++--
 pkg.sh                          |  2 +-
 5 files changed, 59 insertions(+), 20 deletions(-)

diff --git a/README.org b/README.org
index cb55c762f1..9b41c9036e 100644
--- a/README.org
+++ b/README.org
@@ -1,4 +1,4 @@
-* evil-nerd-commenter (v3.0.1)
+* evil-nerd-commenter (v3.0.2)
 
 
[[http://melpa.org/#/evil-nerd-commenter][file:http://melpa.org/packages/evil-nerd-commenter-badge.svg]]
 
[[http://stable.melpa.org/#/evil-nerd-commenter][file:http://stable.melpa.org/packages/evil-nerd-commenter-badge.svg]]
 
diff --git a/evil-nerd-commenter-operator.el b/evil-nerd-commenter-operator.el
index cb4e0a232b..061f643d4c 100644
--- a/evil-nerd-commenter-operator.el
+++ b/evil-nerd-commenter-operator.el
@@ -97,6 +97,12 @@
       ;; or else beg end will be screwed up
       (comment-region beg end))))
 
+(defun evilnc-is-one-line-comment (b e)
+  "one line comment, just select the comment."
+  (save-excursion
+    (goto-char b)
+    (and (<= (line-beginning-position) b)
+         (<= e (line-end-position)))))
 
 (defun evilnc-get-comment-bounds ()
   (let* ((b (point))
@@ -105,6 +111,7 @@
     ;; extend begin
     (while (evilnc-is-comment (- b 1))
       (setq b (- b 1)))
+
     ;; extend end
     (while (evilnc-is-comment (+ e 1))
       (setq e (+ e 1)))
@@ -113,11 +120,27 @@
     ;; so we need go back
     (let* ((str (save-excursion
                   (goto-char e)
-                  (buffer-substring-no-properties (line-beginning-position) 
e))))
-      (if (string-match "^[ \t]+$" str)
-          (setq e (- (length str)))))
-
-    (if (< b e) (setq rlt (cons b e)))
+                  (buffer-substring-no-properties (line-beginning-position) 
e)))
+           (empty-line-p (string-match "^[ \t]*$" str)))
+      (if empty-line-p
+          ;; empty line plus line feed
+          (setq e (- e (length str) 1))))
+    (cond
+     ((>= b e)
+      (setq rlt nil))
+     ((evilnc-is-one-line-comment b e)
+      ;; contract begin
+      (while (not (evilnc-is-pure-comment b))
+        (setq b (+ b 1)))
+
+      ;; contract end
+      (while (not (evilnc-is-pure-comment e))
+        (setq e (- e 1)))
+
+      (if (< b e) (setq rlt (cons b (+ e 1)))))
+     (t
+      ;; multi-line comment
+      (setq rlt (cons b e))))
     rlt))
 
 (defun evilnc-ajusted-comment-end (b e)
@@ -159,8 +182,15 @@
                   (goto-char (cdr bounds))
                   (goto-char (evilnc-ajusted-comment-end b 
(line-end-position)))
                   (point))))
-
-        (evil-range b e 'block :expanded t)))
+        (when (evilnc-is-one-line-comment b e)
+          (while (and (< b e)
+                      (or (evilnc-is-comment-delimiter e)
+                          (and (evilnc-is-pure-comment e)
+                               (evilnc-is-whitespace e))))
+            (setq e (- e 1)))
+          (setq e (+ e 1)))
+
+        (if (< b e) (evil-range b e 'block :expanded t))))
      (t
       (error "Not inside a comment.")))))
 
diff --git a/evil-nerd-commenter-sdk.el b/evil-nerd-commenter-sdk.el
index 4ae8f6ff95..a079c07a16 100644
--- a/evil-nerd-commenter-sdk.el
+++ b/evil-nerd-commenter-sdk.el
@@ -42,6 +42,19 @@
                  (eq (get-text-property pos 'block-token) 'comment)
                  (eq (get-text-property pos 'part-token) 'comment)))))
 
+(defun evilnc-is-pure-comment (pos)
+  (let* ((fontfaces (if (> pos 0) (get-text-property pos 'face))))
+    (if (not (listp fontfaces))
+        (setf fontfaces (list fontfaces)))
+    (or (and (string= major-mode "web-mode")
+             (evilnc-web-mode-is-comment pos))
+        (evilnc--check-fonts fontfaces
+                             '(font-lock-comment-face
+                               font-lock-comment-delimiter-face)))))
+
+(defun evilnc-is-whitespace (pos)
+  (member (evilnc-get-char pos) '(32 9)))
+
 (defun evilnc-is-comment (pos)
   "Check whether the code at POS is comment by comparing font face."
   (let* ((fontfaces (if (> pos 0) (get-text-property pos 'face))))
@@ -50,16 +63,12 @@
     (cond
      ((or (< pos (point-min)) (> pos (point-max)))
       nil)
-     ((and (not fontfaces)
-           ;; character under cursor is SPACE or TAB
-           (member (evilnc-get-char pos) '(32 9)))
-      t)
-     ((string= major-mode "web-mode")
-      (evilnc-web-mode-is-comment pos))
+     ((not fontfaces)
+      ;; character under cursor is SPACE or TAB
+      ;; and out of comment
+      (evilnc-is-whitespace pos))
      (t
-      (evilnc--check-fonts fontfaces
-                           '(font-lock-comment-face
-                             font-lock-comment-delimiter-face))))))
+      (evilnc-is-pure-comment pos)))))
 
 (defun evilnc-get-char (pos)
   (save-excursion
diff --git a/evil-nerd-commenter.el b/evil-nerd-commenter.el
index 22bd199e74..1777e1ce5e 100644
--- a/evil-nerd-commenter.el
+++ b/evil-nerd-commenter.el
@@ -4,7 +4,7 @@
 
 ;; Author: Chen Bin <chenbin.sh@gmail.com>
 ;; URL: http://github.com/redguardtoo/evil-nerd-commenter
-;; Version: 3.0.1
+;; Version: 3.0.2
 ;; Keywords: commenter vim line evil
 ;;
 ;; This file is not part of GNU Emacs.
@@ -681,7 +681,7 @@ Then we operate the expanded region.  NUM is ignored."
 (defun evilnc-version ()
   "The version number."
   (interactive)
-  (message "3.0.1"))
+  (message "3.0.2"))
 
 (defvar evil-normal-state-map)
 (defvar evil-visual-state-map)
diff --git a/pkg.sh b/pkg.sh
index 41f88f6261..85ffef09e1 100755
--- a/pkg.sh
+++ b/pkg.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 name=evil-nerd-commenter
-version=3.0.1
+version=3.0.2
 pkg=$name-$version
 mkdir $pkg
 cp *.el $pkg



reply via email to

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