[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-nerd-commenter fa40dab8d2 208/235: know the text obje
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-nerd-commenter fa40dab8d2 208/235: know the text object before operate on it |
Date: |
Thu, 6 Jan 2022 02:59:48 -0500 (EST) |
branch: elpa/evil-nerd-commenter
commit fa40dab8d2f010db17e1e62dfd245c1504d0542f
Author: Chen Bin <chenbin.sh@gmail.com>
Commit: Chen Bin <chenbin.sh@gmail.com>
know the text object before operate on it
---
evil-nerd-commenter-operator.el | 61 +++++++++++++++++++++++++++++++++--------
evil-nerd-commenter-sdk.el | 4 +--
evil-nerd-commenter-tests.el | 4 +--
evil-nerd-commenter.el | 6 ++--
pkg.sh | 2 +-
5 files changed, 58 insertions(+), 19 deletions(-)
diff --git a/evil-nerd-commenter-operator.el b/evil-nerd-commenter-operator.el
index c3c9f145ef..19117f5adf 100644
--- a/evil-nerd-commenter-operator.el
+++ b/evil-nerd-commenter-operator.el
@@ -47,6 +47,14 @@
web-mode)
"Major modes using C comment syntax.")
+(defvar evilnc-current-text-object nil
+ "Internal variable to detect current object working on.")
+
+(defvar evilnc-whole-line-text-objects
+ '(evil-forward-paragraph
+ evil-backward-paragraph)
+ "Comment operator operates on wholes when dealing with these text objects.")
+
(defvar evilnc-temporary-goal-column 0
"Value of`temporary-goal-column' specifying right edge of rectangle yank.")
@@ -76,41 +84,72 @@
(setq last-command tmp-command)
(setq evilnc-temporary-goal-column 0)))
-(defun evilnc-extend-to-whole-comment-or-line (beg end)
- "Extend the comment region defined by BEG and END so all comment is included.
-Or extend the region to contain whole lines if the region is not a comment."
+(defun evilnc-expand-to-whole-comment-or-line (beg end)
+ "Expand the comment region defined by BEG and END so all comment is included.
+Or expand the region to contain whole lines if it's not comment and certain
conditions met."
+
(cond
((evilnc-is-pure-comment beg)
(save-excursion
(let* ((newbeg beg)
(newend end))
- ;; extend the beginning
+ ;; expand the beginning
(goto-char newbeg)
(while (and (>= (1- newbeg) (line-beginning-position))
(evilnc-is-pure-comment (1- newbeg)))
(setq newbeg (1- newbeg)))
- ;; extend the end
+ ;; expand the end
(goto-char newend)
(while (and (<= newend (line-end-position)) (evilnc-is-pure-comment
newend))
(setq newend (1+ newend)))
(cons newbeg newend))))
- ((not (evilnc-sdk-inside-one-line-p beg end))
- (evilnc-sdk-extend-to-contain-whole-lines beg end))
+
+ ;; try to expand region to contain whole line if,
+ ;; - currently more than one line text in the region,
+ ;; - a specific text object is touched just before the operator
+ ((and (not (evilnc-sdk-inside-one-line-p beg end))
+ evilnc-current-text-object
+ (member (car evilnc-current-text-object)
evilnc-whole-line-text-objects)
+ ;; 0.5 second
+ (< (- (float-time (current-time)) (cdr evilnc-current-text-object))
0.5))
+ (evilnc-sdk-expand-to-contain-whole-lines beg end))
(t
(cons beg end))))
+;; {{ know text object type to operate on
+(defun evilnc-set-current-text-object (text-object)
+ "Set current TEXT-OBJECT."
+ (setq evilnc-current-text-object
+ (cons text-object (float-time (current-time)))))
+
+(defadvice evil-select-an-object (before evilnc-evil-select-an-object-hack
activate)
+ "Figure out text object type."
+ (let* ((thing (car (ad-get-args 0))))
+ ;; record the thing and timestamp `evil-select-an-object' is called
+ (evilnc-set-current-text-object thing)))
+
+(defadvice evil-backward-paragraph (before evilnc-evil-backward-paragraph-hack
activate)
+ "Record current text object."
+ (evilnc-set-current-text-object 'evil-backward-paragraph))
+
+(defadvice evil-forward-paragraph (before evilnc-evil-forward-paragraph-hack
activate)
+ "Record current text object."
+ (evilnc-set-current-text-object 'evil-forward-paragraph))
+;; }}
+
(evil-define-operator evilnc-comment-operator (beg end type)
"Comments text from BEG to END with TYPE."
(interactive "<R>")
(cond
((eq type 'block)
- (let* ((newpos (evilnc-extend-to-whole-comment-or-line beg end) ))
+ (let* ((newpos (evilnc-expand-to-whole-comment-or-line beg end) ))
(evil-apply-on-block #'evilnc--comment-or-uncomment-region
(car newpos)
(cdr newpos)
nil)))
+
((and (eq type 'line)
(= end (point-max))
(or (= beg end)
@@ -128,7 +167,7 @@ Or extend the region to contain whole lines if the region
is not a comment."
(t
(when (and beg end)
- (let* ((newpos (evilnc-extend-to-whole-comment-or-line beg end)))
+ (let* ((newpos (evilnc-expand-to-whole-comment-or-line beg end)))
(evilnc--comment-or-uncomment-region (car newpos) (cdr newpos))))))
;; place cursor on beginning of line
@@ -169,11 +208,11 @@ Or extend the region to contain whole lines if the region
is not a comment."
(e (point))
(col 0)
rlt)
- ;; extend begin
+ ;; decrease begin
(while (evilnc-is-comment (- b 1))
(setq b (- b 1)))
- ;; extend end
+ ;; increase end
(while (evilnc-is-comment (+ e 1))
(setq e (+ e 1)))
diff --git a/evil-nerd-commenter-sdk.el b/evil-nerd-commenter-sdk.el
index 3c245448fb..f7836ca232 100644
--- a/evil-nerd-commenter-sdk.el
+++ b/evil-nerd-commenter-sdk.el
@@ -94,8 +94,8 @@ or else we can't select multiple lines comment."
(and (<= (line-beginning-position) beg)
(<= end (line-end-position))))
-(defun evilnc-sdk-extend-to-contain-whole-lines (beg end)
- "Extend region between BEG and END so the region contain whole lines.
+(defun evilnc-sdk-expand-to-contain-whole-lines (beg end)
+ "Expand region between BEG and END so the region contain whole lines.
Return new range like '(region_begin . region_end)."
(save-excursion
;; Another work around for evil-visual-line bug:
diff --git a/evil-nerd-commenter-tests.el b/evil-nerd-commenter-tests.el
index c911804f11..9af5b8f4db 100644
--- a/evil-nerd-commenter-tests.el
+++ b/evil-nerd-commenter-tests.el
@@ -216,7 +216,7 @@
(should (eq 49 (nth 1 info)))
(should (string= "python" (nth 2 info))))))
-(ert-deftest evilnc-test-extend-whole ()
+(ert-deftest evilnc-test-expand-whole ()
(let* (info)
(with-temp-buffer
(insert "console.log('hello world');\n"
@@ -235,7 +235,7 @@
(search-forward "hello world") ; middle of third line
(setq e (point))
(should (not (evilnc-sdk-inside-one-line-p b e)))
- (setq range (evilnc-sdk-extend-to-contain-whole-lines b e))
+ (setq range (evilnc-sdk-expand-to-contain-whole-lines b e))
(should (eq (car range) (save-excursion (goto-char b)
(line-beginning-position))))
(should (eq (cdr range) (save-excursion (goto-char e)
(line-end-position))))))))
diff --git a/evil-nerd-commenter.el b/evil-nerd-commenter.el
index fbd992d6cf..ecbada54cb 100644
--- a/evil-nerd-commenter.el
+++ b/evil-nerd-commenter.el
@@ -3,7 +3,7 @@
;; Author: Chen Bin <chenbin DOT sh AT gmail.com>
;; URL: http://github.com/redguardtoo/evil-nerd-commenter
-;; Version: 3.5.0
+;; Version: 3.5.1
;; Package-Requires: ((emacs "24.4"))
;; Keywords: convenience evil
;;
@@ -309,7 +309,7 @@ See
http://lists.gnu.org/archive/html/bug-gnu-emacs/2013-03/msg00891.html."
;; Select more than one line
(t
;; selected region spans MORE than one line
- (let* ((range (evilnc-sdk-extend-to-contain-whole-lines (region-beginning)
+ (let* ((range (evilnc-sdk-expand-to-contain-whole-lines (region-beginning)
(region-end)))
(b (car range))
(e (cdr range)))
@@ -738,7 +738,7 @@ Then we operate the expanded region. NUM is ignored."
(defun evilnc-version ()
"The version number."
(interactive)
- (message "3.5.0"))
+ (message "3.5.1"))
(defvar evil-normal-state-map)
(defvar evil-visual-state-map)
diff --git a/pkg.sh b/pkg.sh
index e3c14ade5c..028799e1b2 100755
--- a/pkg.sh
+++ b/pkg.sh
@@ -1,6 +1,6 @@
#!/bin/bash
name=evil-nerd-commenter
-version=3.5.0
+version=3.5.1
pkg=$name-$version
mkdir $pkg
cp *.el $pkg
- [nongnu] elpa/evil-nerd-commenter 31db96711e 162/235: make check-doc happy, (continued)
- [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
- [nongnu] elpa/evil-nerd-commenter 904d9ee2ed 179/235: comment operator should be compatible with evil-matchit, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 341f78551b 182/235: Fix regression for non-visual modes., ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 36304a689b 184/235: tested in Emacs 24.4, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 65bb73ec49 171/235: Update README.org to reflect changes in c68ad3346f528d1cabaef76e3944748e2b8f68b2, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter aa34d89797 185/235: add unit test and CI, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter f7b082d5b2 186/235: add build status into README, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 00840b3da4 198/235: Merge pull request #103 from mamapanda/master, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter fa40dab8d2 208/235: know the text object before operate on it,
ELPA Syncer <=
- [nongnu] elpa/evil-nerd-commenter 4387407615 209/235: fixed key binding setup, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 60b8862864 210/235: clean code, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter b7fc023492 220/235: fixed: `add-to-list’ can’t use lexical var `cands’, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter b8ac35fe01 225/235: add evilnc-yank-and-comment-operator, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter b8a2601117 006/235: some tip, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter ef643d604d 007/235: updated README, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter d3581dcf64 014/235: workaround autoconf.el comment bug, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 72965eab13 019/235: remove warning when installing package, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter a074fed790 033/235: Added check for evil-define-operator, ELPA Syncer, 2022/01/06
- [nongnu] elpa/evil-nerd-commenter 71995b8ac3 034/235: Updated readme, ELPA Syncer, 2022/01/06