[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-nerd-commenter 770981cffd 130/235: can comment/uncomm
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-nerd-commenter 770981cffd 130/235: can comment/uncomment mixed code in web-mode |
Date: |
Thu, 6 Jan 2022 02:59:41 -0500 (EST) |
branch: elpa/evil-nerd-commenter
commit 770981cffd7e8d967e6291c738534a04bcd7f753
Author: Chen Bin <chenbin.sh@gmail.com>
Commit: Chen Bin <chenbin.sh@gmail.com>
can comment/uncomment mixed code in web-mode
---
README.org | 2 +-
evil-nerd-commenter-operator.el | 2 +-
evil-nerd-commenter-pkg.el | 2 +-
evil-nerd-commenter.el | 106 +++++++++++++++++++++++++++-------------
pkg.sh | 2 +-
5 files changed, 76 insertions(+), 38 deletions(-)
diff --git a/README.org b/README.org
index 1093a9abc4..e1e6fc33b0 100644
--- a/README.org
+++ b/README.org
@@ -1,4 +1,4 @@
-* evil-nerd-commenter (v2.1)
+* evil-nerd-commenter (v2.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 90d6c146a9..653d5b7c71 100644
--- a/evil-nerd-commenter-operator.el
+++ b/evil-nerd-commenter-operator.el
@@ -4,7 +4,7 @@
;; Author: Chen Bin <chenbin.sh@gmail.com>
;; URL: http://github.com/redguardtoo/evil-nerd-commenter
-;; Version: 2.1
+;; Version: 2.2
;; Keywords: commenter vim line evil
;;
;; This file is not part of GNU Emacs.
diff --git a/evil-nerd-commenter-pkg.el b/evil-nerd-commenter-pkg.el
index d35d20f319..df262ba7c4 100644
--- a/evil-nerd-commenter-pkg.el
+++ b/evil-nerd-commenter-pkg.el
@@ -1,2 +1,2 @@
-(define-package "evil-nerd-commenter" "2.1"
+(define-package "evil-nerd-commenter" "2.2"
"Comment/uncomment lines efficiently. Like Nerd Commenter in
Vim")
diff --git a/evil-nerd-commenter.el b/evil-nerd-commenter.el
index 4e45f0ef02..8d75b51993 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: 2.1
+;; Version: 2.2
;; Keywords: commenter vim line evil
;;
;; This file is not part of GNU Emacs.
@@ -84,10 +84,22 @@
;;; Code:
+(autoload 'count-lines "simple")
+
(defvar evilnc-invert-comment-line-by-line nil
"If t then invert region comment status line by line.
Please note it has NOT effect on evil text object!")
+(defun evilnc--count-lines (beg end)
+ "Assume BEG less than END."
+ (let (rlt)
+ (setq rlt (count-lines beg end))
+ (save-excursion
+ (goto-char beg)
+ (if (> beg (line-beginning-position))
+ (setq rlt (1+ rlt))))
+ rlt))
+
(defun evilnc--goto-line (line-num)
"Shamelessly copied from `goto-line'. Goto line with LINE-NUM."
(save-restriction
@@ -112,7 +124,7 @@ See
http://lists.gnu.org/archive/html/bug-gnu-emacs/2013-03/msg00891.html."
;; since comment-use-syntax is nil in autoconf.el, the comment-start-skip
need
;; make sure its first parenthesized expression match the string exactly
before
;; the "dnl", check the comment-start-skip in lisp-mode for sample.
- ;; See code in (defun comment-search-forward) from emacs 24.2.1:
+ ;; See code in (defun comment-search-forward) from emacs 24.2.2:
;; (if (not comment-use-syntax)
;; (if (re-search-forward comment-start-skip limit noerror)
;; (or (match-end 1) (match-beginning 0)))
@@ -324,41 +336,67 @@ Code snippets embedded in Org-mode is identified and
right `major-mode' is used.
"-block")))
(unless (intern-soft comment-operation)
(message "defun %s NOT implemented in web-mode! DIY or raise issue to
its maintainer."
- comment-operation))))
+ comment-operation))
+ is-comment))
+
+(defun evilnc--web-mode-is-region-comment (beg end)
+ (let (rlt)
+ (setq rlt (and (save-excursion
+ (goto-char beg)
+ (goto-char (line-end-position))
+ (re-search-backward "^\\|[^[:space:]]")
+ (evilnc--web-mode-is-comment))
+ (evilnc--web-mode-is-comment (/ (+ beg end) 2))
+ (save-excursion
+ (goto-char end)
+ (back-to-indentation)
+ (evilnc--web-mode-is-comment))))
+ rlt))
+
+(defun evilnc--web-mode-do-current-line ()
+ "In web-mode, you have to select the whole before comment or uncomment it."
+ (let (line-mid-pos
+ (b (line-beginning-position))
+ (e (line-end-position)))
+
+ (save-excursion
+ (push-mark e t t)
+ (goto-char b)
+ (evilnc--warn-on-web-mode (evilnc--web-mode-is-region-comment b e))
+ (web-mode-comment-or-uncomment))))
+
+(defun evilnc--web-mode-comment-or-uncomment (beg end)
+ "Comment/uncomment line by line from BEG to END.
+DO-COMMENT decides we comment or uncomment."
+
+ ;; end will change when you comment line by line
+ (let (line-cnt tmp)
+ ;; switch beg end if needed
+ (when (> beg end)
+ (setq tmp beg)
+ (setq beg end)
+ (setq end tmp))
+
+ ;; start (un)comment
+ (save-excursion
+ (setq line-cnt (evilnc--count-lines beg end))
+ (goto-char beg)
+ (while (> line-cnt 0)
+ (evilnc--web-mode-do-current-line)
+ (forward-line)
+ (setq line-cnt (1- line-cnt))))))
(defun evilnc--comment-or-uncomment-region (beg end)
"Comment or uncommment region from BEG to END."
(cond
((eq major-mode 'web-mode)
- ;; web-mode comment only works when region selected
- ;; uncomment only works when region not selected
- ;; test three sample point, comment or uncomment
- (cond
- ((and (save-excursion
- (goto-char beg)
- (goto-char (line-end-position))
- (re-search-backward "^\\|[^[:space:]]")
- (evilnc--web-mode-is-comment))
- (evilnc--web-mode-is-comment (/ (+ beg end) 2))
- (save-excursion
- (goto-char end)
- (back-to-indentation)
- (evilnc--web-mode-is-comment)))
- ;; don't know why, but we need goto the middle of comment
- ;; in order to uncomment, or else trailing spaces will be appended
- (goto-char (/ (+ beg end) 2))
- (evilnc--warn-on-web-mode nil)
- (web-mode-uncomment (/ (+ beg end) 2)))
- (t
- (unless (region-active-p)
- (push-mark beg t t)
- (goto-char end))
- (evilnc--warn-on-web-mode t)
- (web-mode-comment (/ (+ beg end) 2)))
- ))
+ ;; elixir is not supported in web-mode for now
+ (unless (fboundp 'web-mode-comment-elixir-block)
+ (defalias 'web-mode-comment-elixir-block 'web-mode-comment-erb-block)
+ (defalias 'web-mode-uncomment-elixir-block
'web-mode-uncomment-erb-block))
+ (evilnc--web-mode-comment-or-uncomment beg end))
(t
- (evilnc--working-on-region beg end 'comment-or-uncomment-region))
- ))
+ (evilnc--working-on-region beg end 'comment-or-uncomment-region))))
(defun evilnc--current-line-num ()
"Get current line number."
@@ -421,11 +459,11 @@ Paragraphs are separated by empty lines."
(throw 'break i)))
(throw 'break i))
))
+
(when (<= b e)
(save-excursion
(evilnc--fix-buggy-major-modes)
- (evilnc--comment-or-uncomment-region b e)
- ))
+ (evilnc--comment-or-uncomment-region b e)))
))
;;;###autoload
@@ -580,7 +618,7 @@ Then we operate the expanded region. NUM is ignored."
(defun evilnc-version ()
"The version number."
(interactive)
- (message "2.1"))
+ (message "2.2"))
;;;###autoload
(defun evilnc-default-hotkeys ()
diff --git a/pkg.sh b/pkg.sh
index 82c9f5dc25..6cee61dc3f 100755
--- a/pkg.sh
+++ b/pkg.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-pkg=evil-nerd-commenter-2.1
+pkg=evil-nerd-commenter-2.2
mkdir $pkg
cp README.org $pkg
cp *.el $pkg
- [nongnu] elpa/evil-nerd-commenter 3c3fb92e67 029/235: minor typo in README, (continued)
- [nongnu] elpa/evil-nerd-commenter 3c3fb92e67 029/235: minor typo in README, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 2491e83868 030/235: hotkey to comment region, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter f8de9b168d 058/235: clean code a bit, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter ccb31ba534 061/235: finalize doc v1.2.7, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 1848bc36a1 077/235: comment to the line is optimized v1.4.0, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 487e1cdf2b 098/235: fixed: upgrade from melpa may fail v1.5.6, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 7c75a0e782 050/235: fixed: initialize error when set up hotkeys, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter b48da5411b 111/235: README updated, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 789a180160 100/235: FIXED: revert work on with-eval-after-load v1.5.8, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 7a1647cf6d 114/235: donot use comma as default hotkey, v 1.5.14, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 770981cffd 130/235: can comment/uncomment mixed code in web-mode,
ELPA Syncer <=
- [nongnu] elpa/evil-nerd-commenter 8e126cda3d 133/235: workaround haml-mode comment issue, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter a0c21304e6 136/235: support react jsx, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter e1de1d759b 137/235: clean code, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 2c62dfcb80 139/235: updated documentation, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 11998038f3 143/235: default key bindings can define key bindings in non-evil mode, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 7c274dbb7e 147/235: remove extra spaces at end of comment object, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 8b5830a003 145/235: remove obsolete macro, Emacs v23.2 is not my concern, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 31db96711e 162/235: make check-doc happy, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 2d31dfba53 156/235: Merge pull request #77 from madand/do-not-compile-operator-file, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 34d411715e 169/235: fixed issue when stripping trailing comment delimiter characters, ELPA Syncer, 2022/01/06