[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org-remark b543e3c3ff 2/2: Merge pull request #27 from
From: |
ELPA Syncer |
Subject: |
[elpa] externals/org-remark b543e3c3ff 2/2: Merge pull request #27 from vedang/feature/eww-support |
Date: |
Sun, 27 Nov 2022 03:58:12 -0500 (EST) |
branch: externals/org-remark
commit b543e3c3ff4c6cf00cd65fbfb97aca3bede3337f
Merge: e958e3f068 5e4b27afe3
Author: Noboru Ota <me@nobiot.com>
Commit: GitHub <noreply@github.com>
Merge pull request #27 from vedang/feature/eww-support
Support taking annotations and marginalia in EWW buffers.
Vedang Manerikar (vedang) has completed the FSF paperwork.
---
org-remark-global-tracking.el | 8 ++++++--
org-remark.el | 44 ++++++++++++++++++++++++++++++++++---------
2 files changed, 41 insertions(+), 11 deletions(-)
diff --git a/org-remark-global-tracking.el b/org-remark-global-tracking.el
index c9d5d212ee..d333c7c2ea 100644
--- a/org-remark-global-tracking.el
+++ b/org-remark-global-tracking.el
@@ -30,6 +30,7 @@
;;; Code:
(declare-function org-remark-mode "org-remark")
+(declare-function org-remark-source-find-file-name "org-remark")
(defvaralias 'org-remark-notes-file-path 'org-remark-notes-file-name)
@@ -69,7 +70,8 @@ readable, the function automatically activates `org-remark'."
(cond
(org-remark-global-tracking-mode
;; Activate
- (add-hook 'find-file-hook #'org-remark-auto-on))
+ (progn (add-hook 'find-file-hook #'org-remark-auto-on)
+ (add-hook 'eww-after-render-hook #'org-remark-auto-on)))
(t
;; Deactivate
(remove-hook 'find-file-hook #'org-remark-auto-on))))
@@ -83,7 +85,9 @@ This is the default function for the customizing variable
When the current buffer is visiting a file, the name of marginal
notes file will be \"FILE-notes.org\", adding \"-notes.org\" as a
suffix to the file name without the extension."
- (concat (file-name-sans-extension (buffer-file-name)) "-notes.org"))
+ (concat (file-name-sans-extension
+ (file-name-nondirectory (org-remark-source-find-file-name)))
+ "-notes.org"))
(defalias
'org-remark-notes-file-path-function 'org-remark-notes-file-name-function)
diff --git a/org-remark.el b/org-remark.el
index a50ce1c866..8737d83d69 100644
--- a/org-remark.el
+++ b/org-remark.el
@@ -377,6 +377,15 @@ marginal notes file. The expected values are nil, :load
and
'(:underline "gold" :background "lemon chiffon")
'(CATEGORY "important")))
+(defun org-remark-source-find-file-name ()
+ "Assumes that we are currently in the source buffer.
+Returns the filename for the soure buffer. We use this filename
+to identify the source buffer in all operations related to
+marginalia."
+ (if (eq major-mode 'eww-mode)
+ (let ((url-parsed (url-generic-parse-url (eww-current-url))))
+ (concat (url-host url-parsed) (url-filename url-parsed)))
+ (buffer-file-name)))
(defun org-remark-save ()
"Save all the highlights tracked in current buffer to notes file.
@@ -389,7 +398,7 @@ in the current buffer. Each highlight is an overlay."
(interactive)
(org-remark-highlights-housekeep)
(org-remark-highlights-sort)
- (let ((filename (buffer-file-name)))
+ (let ((filename (org-remark-source-find-file-name)))
(dolist (h org-remark-highlights)
(let ((beg (overlay-start h))
(end (overlay-end h))
@@ -697,7 +706,7 @@ to the database."
;; for mode, nil and :change result in saving the highlight. :load
;; bypasses save.
(unless (eq mode :load)
- (let ((filename (buffer-file-name)))
+ (let ((filename (org-remark-source-find-file-name)))
(if filename
(org-remark-highlight-save filename
beg end
@@ -712,8 +721,17 @@ to the database."
"Return the title of the current buffer.
Utility function to work with a single highlight overlay."
(or (cadr (assoc "TITLE" (org-collect-keywords '("TITLE"))))
- (file-name-sans-extension
- (file-name-nondirectory (buffer-file-name)))))
+ (let* ((full-name (org-remark-source-find-file-name))
+ (filename (if (and (string= "" (file-name-nondirectory full-name))
+ (string-match "[\/]+\\'" full-name))
+ ;; The name ends with a / (possibly a URL).
+ ;; Trim all the slashes at the end of the
+ ;; name.
+ (replace-match "" t t full-name)
+ full-name)))
+ (if (or (null filename) (string= "" filename))
+ (error "Could not extract highlight title")
+ (file-name-sans-extension (file-name-nondirectory filename))))))
(defun org-remark-highlight-get-org-id (point)
"Return Org-ID closest to POINT.
@@ -952,7 +970,8 @@ Each highlight is a list in the following structure:
;; current-buffer to source-file-name. Issue #39 FIXME: A way to make
;; this sequence agnostic is preferred, if there is a function that
;; visit file but not set the current buffer
- (when-let ((source-file-name (org-remark-source-get-file-name
(buffer-file-name)))
+ (when-let ((source-file-name (org-remark-source-get-file-name
+ (org-remark-source-find-file-name)))
(notes-buf (find-file-noselect (org-remark-notes-get-file-name))))
;; TODO check if there is any relevant notes for the current file
;; This can be used for adding icon to the highlight
@@ -1073,12 +1092,19 @@ Case 2. The overlay points to no buffer
This case happens when overlay is deleted by
`overlay-delete' but the variable not cleared."
(dolist (ov org-remark-highlights)
- ;; Both start and end of an overlay are identical; this should not happen
- ;; when you manually mark a text region. A typical cause of this case is
- ;; when you delete a region that contains a highlight overlay.
+ ;; Both start and end of an overlay are identical; this should not
+ ;; happen when you manually mark a text region. A typical cause of
+ ;; this case is when you delete a region that contains a highlight
+ ;; overlay. This also happens when EWW reloads the buffer or
+ ;; re-renders any part of the buffer. This is because it removes
+ ;; overlays on re-render by calling `remove-overlays', which edits
+ ;; the overlay-start and overlay-end properties. To guard against
+ ;; this, we check if the buffer is write-able and only remove the
+ ;; annotation when it is.
(when (and (overlay-buffer ov)
(= (overlay-start ov) (overlay-end ov)))
- (org-remark-notes-remove (overlay-get ov 'org-remark-id))
+ (when (not buffer-read-only)
+ (org-remark-notes-remove (overlay-get ov 'org-remark-id)))
(delete-overlay ov))
(unless (overlay-buffer ov)
(setq org-remark-highlights (delete ov org-remark-highlights))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/org-remark b543e3c3ff 2/2: Merge pull request #27 from vedang/feature/eww-support,
ELPA Syncer <=