[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/annotate 9aba6305fe 342/372: Merge pull request #109 from
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/annotate 9aba6305fe 342/372: Merge pull request #109 from cage2/fix-replace-button |
Date: |
Fri, 4 Feb 2022 16:59:20 -0500 (EST) |
branch: elpa/annotate
commit 9aba6305fef54f32b085a56ce2b843b3d8194ac2
Merge: b22f594f3b de86b9b22e
Author: cage2 <1257703+cage2@users.noreply.github.com>
Commit: GitHub <noreply@github.com>
Merge pull request #109 from cage2/fix-replace-button
Fixed callback for "[replace]" button in summary window
---
Changelog | 23 +++++++++++++
NEWS.org | 13 ++++++++
annotate.el | 108 ++++++++++++++++++++++++++++++++++++++++++------------------
3 files changed, 112 insertions(+), 32 deletions(-)
diff --git a/Changelog b/Changelog
index 33999c0519..7fd9dcbef4 100644
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,26 @@
+2021-05-27 cage
+
+ * annotate.el:
+
+ - fixed annotated text shown in the summary window
+
+ When an annotated buffer (that is visiting a file) is modified in
+ a way that changes the position of an annotation in that buffer,
+ showing the summary window -without saving the file first- will
+ read the annotation using the updated position but will get the
+ contents from the outdated file; this gives wrong results in the
+ text annotation parts of the summary windows, with the text
+ shifted from the correct position. This patch try to fix this
+ bug.
+
+2021-05-26 cage
+
+ * annotate.el:
+
+ - fixed callback for "[replace]" button in summary window; the
+ callback function was neither properly saving the annotation
+ database nor refreshing the buffer's annotations.
+
2021-05-07 cage
* annotate.el:
diff --git a/NEWS.org b/NEWS.org
index 3e9c0eb0dc..21727e1391 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -243,3 +243,16 @@
Before deleting the old database file a confirmation message is
printed on the minibuffer if the custom variable
'annotate-database-confirm-deletion' is non nil (default: t).
+
+- 2021-05-27 V1.3.1 cage ::
+
+ Bugfix release:
+
+ - The button "[replace]" to edit an annotation from the summary
+ window was not working at all;
+
+ - In certain cases the summary window was rendering wrong text's
+ fragment instead of the text of the annotation.
+
+ Many thanks to "glvno" for reporting the aforementioned bugs and
+ testing the patches!
diff --git a/annotate.el b/annotate.el
index 2295d2b19a..3c70169f14 100644
--- a/annotate.el
+++ b/annotate.el
@@ -7,7 +7,7 @@
;; Maintainer: Bastian Bechtold
;; URL: https://github.com/bastibe/annotate.el
;; Created: 2015-06-10
-;; Version: 1.3.0
+;; Version: 1.3.1
;; This file is NOT part of GNU Emacs.
@@ -58,7 +58,7 @@
;;;###autoload
(defgroup annotate nil
"Annotate files without changing them."
- :version "1.3.0"
+ :version "1.3.1"
:group 'text)
;;;###autoload
@@ -2338,6 +2338,13 @@ sophisticated way than plain text"
(with-current-buffer buffer
(goto-char (button-get button 'go-to))))))))
+(defun annotate-update-visited-buffer-maybe (filename)
+ (let ((visited-buffer (find-buffer-visiting filename)))
+ (when visited-buffer ;; a buffer is visiting the file
+ (with-current-buffer visited-buffer
+ (annotate-mode -1)
+ (annotate-mode 1)))))
+
(defun annotate-summary-delete-annotation-button-pressed (button)
"Callback for summary window fired when a 'delete' button is
pressed."
@@ -2358,20 +2365,12 @@ pressed."
(button-put annotation-button 'face '(:strike-through
t)))
(let ((replace-button (next-button (point))))
(button-put replace-button 'invisible t)))
- (read-only-mode 1)))
- ;; if the file where the deleted annotation belong to is
visited,
- ;; update the buffer
- (update-visited-buffer-maybe ()
- (let ((visited-buffer (find-buffer-visiting filename)))
- (when visited-buffer ;; a buffer is visiting the file
- (with-current-buffer visited-buffer
- (annotate-mode -1)
- (annotate-mode 1))))))
+ (read-only-mode 1))))
(redraw-summary-window)
- (update-visited-buffer-maybe))))
+ (annotate-update-visited-buffer-maybe filename))))
(defun annotate-summary-replace-annotation-button-pressed (button)
- "Callback for summary window fired when a 'replace' button is
+ "Callback for summary window fired when a 'replace' button is
pressed."
(let* ((filename (button-get button 'file))
(annotation-beginning (button-get button 'beginning))
@@ -2387,9 +2386,31 @@ pressed."
annotation-ending
new-annotation-text)))
(annotate-dump-annotation-data replaced-annotation-db)
- (annotate-show-annotation-summary query)))))
-
-(defun annotate-show-annotation-summary (&optional arg-query cut-above-point)
+ (annotate-update-visited-buffer-maybe filename)
+ (annotate-show-annotation-summary query nil nil)))))
+
+(cl-defun annotate-wrap-text (text &optional (wrapper "\""))
+ (concat wrapper text wrapper))
+
+(cl-defun annotate-unwrap-text (text &optional (wrapper "\"") (left-side t))
+ (let ((results text)
+ (wrapper-length (length wrapper)))
+ (when (>= (length text)
+ wrapper-length)
+ (if left-side
+ (let ((maybe-wrapper (substring results 0 wrapper-length)))
+ (when (string= maybe-wrapper wrapper)
+ (setf results (substring results wrapper-length))
+ (setf results (annotate-unwrap-text results wrapper nil))))
+ (let ((maybe-wrapper (substring results
+ (- (length results)
+ wrapper-length))))
+ (when (string= maybe-wrapper wrapper)
+ (setf results (substring results 0 (- (length results)
+ wrapper-length)))))))
+ results))
+
+(cl-defun annotate-show-annotation-summary (&optional arg-query
cut-above-point (save-annotations t))
"Show a summary of all the annotations in a temp buffer, the
results can be filtered with a simple query language: see
`annotate-summary-filter-db'."
@@ -2408,7 +2429,7 @@ results can be filtered with a simple query language: see
annotate-ellipse-text-marker)
text)))
(wrap (text)
- (concat "\"" text "\""))
+ (annotate-wrap-text text "\""))
(insert-item-summary (filename
snippet-text
button-text
@@ -2470,6 +2491,20 @@ results can be filtered with a simple query language: see
(info-setup filename (current-buffer))
(buffer-substring-no-properties
annotation-begin
annotation-end)))
+ (build-snippet-from-buffer (filename annotation-begin
annotation-end)
+ (let ((visited-buffer (find-buffer-visiting filename)))
+ (when visited-buffer ;; a buffer is visiting the file
+ (with-current-buffer visited-buffer
+ (let ((raw-snippet (buffer-substring-no-properties
annotation-begin
+
annotation-end)))
+ (clean-snippet raw-snippet))))))
+ (build-snippet-from-file (filename annotation-begin
annotation-end)
+ (with-temp-buffer
+ (insert-file-contents filename
+ nil
+ (1- annotation-begin)
+ (1- annotation-end))
+ (clean-snippet (buffer-string))))
(build-snippet (filename annotation-begin annotation-end)
(if (file-exists-p filename)
(cond
@@ -2479,12 +2514,12 @@ results can be filtered with a simple query language:
see
annotation-begin
annotation-end)))
(t
- (with-temp-buffer
- (insert-file-contents filename
- nil
- (1-
annotation-begin)
- (1- annotation-end))
- (clean-snippet (buffer-string)))))
+ (or (build-snippet-from-buffer filename
+
annotation-begin
+
annotation-end)
+ (build-snippet-from-file filename
+
annotation-begin
+
annotation-end))))
(if (annotate-info-root-dir-p filename)
(clean-snippet (build-snippet-info filename
annotation-begin
@@ -2503,7 +2538,8 @@ results can be filtered with a simple query language: see
(read-from-minibuffer "Query: "))
(t
".*"))))
- (annotate-save-annotations)
+ (when save-annotations
+ (annotate-save-annotations))
(let* ((filter-query (get-query))
(dump (annotate-summary-filter-db
(annotate-load-annotation-data t)
filter-query
@@ -2675,6 +2711,10 @@ example:
`annotate-summary-query'"
(eq token :no-more-tokens))
+(defun annotate-summary-token-symbol-match (looking-symbol token)
+ (eq looking-symbol
+ (annotate-summary-query-lexer-symbol token)))
+
(cl-defun annotate-summary-query-parse-note (filter-fn annotation &optional
(res nil))
"Parser rule for note:
@@ -2715,8 +2755,7 @@ Arguments:
"
(cl-labels ((token-symbol-match-p (looking-symbol token)
- (eq looking-symbol
- (annotate-summary-query-lexer-symbol
token)))
+ (annotate-summary-token-symbol-match looking-symbol token))
;; this function will parse the rule operator
;; OPERATOR := AND | OR
;; where
@@ -2871,16 +2910,20 @@ Note: this function returns the annotation part of the
record, see
(lambda (annotation query file-filter-fn note-filter-fn)
(let ((annotate-summary-query query) ; save the query
(query-notes-only nil)) ; the query for just the notes
- (let ((next-token (annotate-summary-lexer))) ; get file-mask
- ;; if there are no more tokes just return all the records
+ (let ((next-token (annotate-summary-lexer))) ; get potential file-mask
+ ;; if there are no more tokens just return all the records
;; these match the empty string as in rule
;; EXPRESSION := epsilon
(if (annotate-summary-query-parse-end-input-p next-token)
(annotate-annotations-from-dump annotation)
;; otherwise test the record with the file-mask
- (let* ((filtered-annotation (funcall file-filter-fn
-
(annotate-summary-query-lexer-string next-token)
- annotation))
+ (let* ((quoted-file-mask-p (annotate-summary-token-symbol-match
'escaped-re
+
next-token))
+ (file-mask-raw (annotate-summary-query-lexer-string
next-token))
+ (file-mask (if quoted-file-mask-p
+ (annotate-unwrap-text file-mask-raw
"\"")
+ file-mask-raw))
+ (filtered-annotation (funcall file-filter-fn file-mask
annotation))
;; get the operator as in rule
(operator-token (annotate-summary-lexer)))
;; if there are no operator just return the filtered (by file-mask)
@@ -3041,7 +3084,8 @@ position."
(interactive)
(with-current-buffer (current-buffer)
(when buffer-file-name
- (annotate-show-annotation-summary buffer-file-name (point)))))
+ (annotate-show-annotation-summary (annotate-wrap-text buffer-file-name
"\"")
+ (point)))))
;;; switching database
- [nongnu] elpa/annotate 85d7c87e08 293/372: - added padding also for notes placed on the margin of the window., (continued)
- [nongnu] elpa/annotate 85d7c87e08 293/372: - added padding also for notes placed on the margin of the window., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate ac55086d60 301/372: - fixed typo., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 3415b7ac08 321/372: - changed behaviour when user is annotation a newline character;, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate f33eecba7b 362/372: - prevented asking to delete a database that does not actually exists, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 1350e1d073 338/372: - fixed annotated text shown in the summary window, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 3e3c1b1066 368/372: - fixed function name;, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate a484ffa0b6 319/372: - allowed removing (or cutting) annotations when buffer is in read-only mode., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 936389e36a 316/372: - prevented asking for annotation when trying to annotate a newline character., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 36d3729c27 339/372: - updated version number and docs., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate a8762cd08a 344/372: - removed garbage at the end of an error message., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 9aba6305fe 342/372: Merge pull request #109 from cage2/fix-replace-button,
ELPA Syncer <=
- [nongnu] elpa/annotate bd12129213 333/372: Merge pull request #106 from cage2/fixed-call-comment-region, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 83e81e0979 369/372: - added missing docstrings and improved a bit the old ones., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate f5436b2bff 366/372: - added helper functions to manage annotation's interval and 'annotate-db-merge-annotations'., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 59c52e7318 162/372: - updated documentation to reflects changes in the code, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate fd9c403ecc 164/372: - changed quotation mark sentence., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate a28e7b4fd2 028/372: refactored and documented export function, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate b2cd959cfa 053/372: Annotations of long lines start at the next line, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate e98c93a12b 072/372: - added 'annotate-' prefix to public symbols;, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 6289c87bf8 029/372: annotation buffer now has proper file name, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate e1daa61b99 065/372: use `locate-user-emacs-file` to specify default save file, ELPA Syncer, 2022/02/04