[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-nerd-commenter 8f6fafcce9 168/235: better algorithm t
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-nerd-commenter 8f6fafcce9 168/235: better algorithm to extract comments in imenu |
Date: |
Thu, 6 Jan 2022 02:59:45 -0500 (EST) |
branch: elpa/evil-nerd-commenter
commit 8f6fafcce901a7a588f946b26d2e21c65e36e843
Author: Chen Bin <chenbin.sh@gmail.com>
Commit: Chen Bin <chenbin.sh@gmail.com>
better algorithm to extract comments in imenu
---
README.org | 6 ++++--
evil-nerd-commenter.el | 41 +++++++++++++++++++++++++++++++++++++----
pkg.sh | 2 +-
3 files changed, 42 insertions(+), 7 deletions(-)
diff --git a/README.org b/README.org
index 5050b348ab..e1d865fec4 100644
--- a/README.org
+++ b/README.org
@@ -1,4 +1,4 @@
-* evil-nerd-commenter (v3.2.1)
+* evil-nerd-commenter (v3.2.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]]
@@ -8,7 +8,7 @@ A [[http://www.vim.org/scripts/script.php?script_id=1218][Nerd
Commenter]] emula
I recommend using it with Evil though Evil is optional.
-Tested on Emacs 23.4, 24.3, 24.4, 24.5
+Tested on Emacs 24.4, 24.5, 25.3
* Why?
** A simple use case on the efficiency
@@ -30,6 +30,8 @@ The code snippet embedded in org file will automatically be
detected and *correc
evil-nerd-commenter is already uploaded to [[http://melpa.org]]. The best way
to install is Emacs package manager.
* Setup
Please note NO key bindings are setup automatically. You need use following
ways to setup key bindings.
+
+Please note since v3.2.2, Emacs v24.4+ is required.
** Use recommended key bindings
Insert =(evilnc-default-hotkeys)= into =~/.emacs= to use key bindings preset
for both evil and non-evil mode. This is recommended way.
diff --git a/evil-nerd-commenter.el b/evil-nerd-commenter.el
index 6f047a326e..1217633d6b 100644
--- a/evil-nerd-commenter.el
+++ b/evil-nerd-commenter.el
@@ -5,6 +5,7 @@
;; Author: Chen Bin <chenbin.sh@gmail.com>
;; URL: http://github.com/redguardtoo/evil-nerd-commenter
;; Version: 3.2.1
+;; Package-Requires: ((emacs "24.4"))
;; Keywords: commenter vim line evil
;;
;; This file is not part of GNU Emacs.
@@ -709,6 +710,19 @@ If NO-EVIL-KEYBINDINGS is t, we don't define keybindings
in EVIL."
(define-key evil-inner-text-objects-map evilnc-comment-text-object
'evilnc-inner-comment)
(define-key evil-outer-text-objects-map evilnc-comment-text-object
'evilnc-outer-commenter)))))
+
+(defun evilnc-frame-wide-string (s)
+ "Build summary from S."
+ (let* ((w (frame-width))
+ ;; display kill ring item in one line
+ (key (replace-regexp-in-string "[ \t]*[\n\r]+[ \t]*" "\\\\n" s)))
+ ;; strip the whitespace
+ (setq key (replace-regexp-in-string "^[ \t]+" "" key))
+ ;; fit to the minibuffer width
+ (if (> (length key) w)
+ (setq key (concat (substring key 0 (- w 4)) "...")))
+ key))
+
;;;###autoload
(defun evilnc-imenu-create-index-function ()
"Imenu function find comments."
@@ -724,7 +738,8 @@ If NO-EVIL-KEYBINDINGS is t, we don't define keybindings in
EVIL."
;; learn this skill from etags-select
;; use simple string search to speed up searching
(while searching
- (setq beg (search-forward comment-start (point-max) t))
+ ;; C/C++ might use "/* " as comment-start
+ (setq beg (search-forward (string-trim comment-start) (point-max) t))
;; OK, it's comment
(cond
((not beg)
@@ -741,13 +756,31 @@ If NO-EVIL-KEYBINDINGS is t, we don't define keybindings
in EVIL."
(setq end (search-forward comment-end (point-max) t))))
(cond
((and end (> end beg))
- (setq str (buffer-substring-no-properties beg end))
- (when (and (not (string-match-p "^[ \t]*$" str))
+ (setq str (string-trim (buffer-substring-no-properties beg end)))
+ ;; no empty line
+ (setq str (replace-regexp-in-string "[\r\n]+" "\n" str))
+ ;; could be multi-lines comment
+ (let* ((a (split-string str "[\r\n]+"))
+ (pre-p (concat "^[ \t]*["
+ (string-trim comment-start)
+ "][ \t]*"))
+ (post-p (concat "[ \t]*["
+ (string-trim comment-end)
+ "][ \t]*$")))
+ ;; remove empty lines
+ (setq a (delq nil (mapcar (lambda (s)
+ (setq s (replace-regexp-in-string
pre-p "" s))
+ (setq s (replace-regexp-in-string
post-p "" s))
+ (setq s (string-trim s))
+ (unless (string-match-p "^[ \t]*$"
s) s))
+ a)))
+ (setq str (mapconcat 'identity a "\n" )))
+ (when (and (not (string-match-p "^[ \t\n\r]*$" str))
(> (length str) evilnc-min-comment-length-for-imenu))
(setq m (make-marker))
(set-marker m beg)
(add-to-list 'cands
- (cons (format "%d:%s" linenum str) m)
+ (cons (evilnc-frame-wide-string (format "%d:%s"
linenum str)) m)
t))
(goto-char (min (1+ end) (point-max))))
(t
diff --git a/pkg.sh b/pkg.sh
index 555b4a925d..e723e5adda 100755
--- a/pkg.sh
+++ b/pkg.sh
@@ -1,6 +1,6 @@
#!/bin/bash
name=evil-nerd-commenter
-version=3.2.1
+version=3.2.2
pkg=$name-$version
mkdir $pkg
cp *.el $pkg
- [nongnu] elpa/evil-nerd-commenter 372758d919 134/235: clean code, (continued)
- [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, 2022/01/06
- [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 <=
- [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
- [nongnu] elpa/evil-nerd-commenter 29990d314c 177/235: enable evil text object usage by default, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter a6d492b819 193/235: support inline comment for rust-mode, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 7e48e61207 197/235: Make evilnc-comment-and-copy-operator create only one undo entry, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 16561277ae 200/235: comment html tag in more web templates, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter cc8b254723 216/235: optimize performance, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 2730820b9c 224/235: fixed: evil-copy-and-comment-operator does not copy in visual-mode, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter e32519bc75 231/235: remove travis setup, ELPA Syncer, 2022/01/06