[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
- [nongnu] elpa/evil-nerd-commenter df140cc439 104/235: Merge pull request #41 from ryuslash/require-evil, (continued)
- [nongnu] elpa/evil-nerd-commenter df140cc439 104/235: Merge pull request #41 from ryuslash/require-evil, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter dbfddd4802 108/235: FIX: all nodes expanded when commenting code-block in org file v1.5.11, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter e4741fb3e0 112/235: Latest web-mode remove web-mode-is-comment v1.5.13, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter c9aa338e92 116/235: fixed typo on version, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 5833d2587c 122/235: updated README on invert comment, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 7e9bb3256c 123/235: invert comment bug when used with text object #53, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter aed1386b6c 126/235: remove dependency on cl, v2.1, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 372758d919 134/235: clean code, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 3eadae264f 138/235: new evil-mode operator "evil-copy-and-comment-operator", ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 9349468db8 148/235: Remove autoloads for evil text objects, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter cac2f7945f 151/235: handle one line comment properly,
ELPA Syncer <=
- [nongnu] elpa/evil-nerd-commenter 96f76a67a3 153/235: evilnc-comment-text-object: doc-string fix, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 684f558931 152/235: visual-state key bindings, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter dac58399e8 158/235: select/yank text object of irregular lines, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 498ac2dbbd 154/235: Merge pull request #75 from duianto/patch-1, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 0a46b91120 157/235: more precise inner comment text object, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 6a05c86bdf 164/235: Merge pull request #80 from duianto/fix-doc-string-typo-length, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 8f6fafcce9 168/235: better algorithm to extract comments in imenu, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter d1a5c9cd63 188/235: org v9.1 changed api to get language of src_block, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter cf1f57921d 175/235: can comment html paragraphs, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter a4ef4ec548 176/235: document on comment paragraph, ELPA Syncer, 2022/01/06