branch: externals/org-remark
commit d606d80a47f9cbbd1619ed795d8de9f8d67f5f33
Author: Noboru Ota <[email protected]>
Commit: Noboru Ota <[email protected]>
refactor: move highlights-delay-load to org-remark.el
---
org-remark-line.el | 27 +++++++++++++++------------
org-remark.el | 33 +++++++++++++++++++++------------
2 files changed, 36 insertions(+), 24 deletions(-)
diff --git a/org-remark-line.el b/org-remark-line.el
index 9bd028d753..25abebd909 100644
--- a/org-remark-line.el
+++ b/org-remark-line.el
@@ -97,10 +97,12 @@ marginal area does not exist, its width will be returned as
nil."
;; (funcall fn))
;; (setq org-remark-line-delayed-put-overlay-functions nil))
(cl-destructuring-bind (left-width . right-width) (window-margins)
+ ;; TODO make this part compatible with right margin
(if (or (eq left-width nil) (< left-width
org-remark-line-minimum-margin-width))
(progn
- (setq left-margin-width org-remark-line-minimum-margin-width))
+ (setq left-margin-width org-remark-line-minimum-margin-width)
+ (setq right-margin-width org-remark-line-minimum-margin-width))
(setq left-margin-width left-width)
(setq right-margin-width right-width))
(set-window-buffer (get-buffer-window) (current-buffer) 'keep-margins)
@@ -147,22 +149,23 @@ Return OV"
(org-remark-line-highlight-overlay-put beg end face)
;; window is still not created and assigned to the current buffer.
;; Reload when it is.
- (add-hook 'window-state-change-functions #'org-remark-line-reload 95
'local)
+ ;; (add-hook 'window-state-change-functions #'org-remark-line-reload 95
'local)
;;(push (lambda ()
;; (org-remark-line-highlight-overlay-put beg end face))
;; org-remark-line-delayed-put-overlay-functions)
nil))
-(defun org-remark-line-reload (window)
- (when (windowp window)
- (remove-hook 'window-state-change-functions
- #'org-remark-line-reload 'local)
- (org-remark-highlights-load)))
+;; (defun org-remark-line-reload (window)
+;; (when (windowp window)
+;; (remove-hook 'window-state-change-functions
+;; #'org-remark-line-reload 'local)
+;; (org-remark-highlights-load)))
(defun org-remark-line-highlight-overlay-put (beg end face &optional string)
;;(when (or (car (window-margins)) (cdr (window-margins)))
(let* ((face (or face 'org-remark-line-highlighter))
;; We need to be sure where the minimum-margin-width is set to the
buffer
+ ;; TODO rigth margin
(left-margin (or (car (window-margins)) left-margin-width))
(string (or string
(with-temp-buffer ;;(insert-char ?\s spaces)
@@ -243,11 +246,11 @@ end of overlay being identical."
;; always follow the point, keeping the original place unless you
;; directly change the notes. That's not really an intutive behaviour,
;; though in some cases, it imay be useful.
- (if (not (overlay-start ov)) (delete-overlay ov)
- (let* ((ov-start (overlay-start ov))
- (ov-line-bol (org-remark-line-pos-bol ov-start)))
- (unless (= ov-start ov-line-bol)
- (move-overlay ov ov-line-bol ov-line-bol)))))
+ ;; (if (not (overlay-start ov)) (delete-overlay ov)
+ (let* ((ov-start (overlay-start ov))
+ (ov-line-bol (org-remark-line-pos-bol ov-start)))
+ (unless (= ov-start ov-line-bol)
+ (move-overlay ov ov-line-bol ov-line-bol))))
(defun org-remark-line-icon-overlay-put (ov icon-string)
;; If the icon-string has a display properties, assume it is an icon image
diff --git a/org-remark.el b/org-remark.el
index 65470522ad..34f7855a33 100644
--- a/org-remark.el
+++ b/org-remark.el
@@ -862,6 +862,10 @@ round-trip back to the notes file."
(if (not filename)
(message (format "org-remark: Highlights not saved.\
This buffer (%s) is not supported" (symbol-name major-mode)))
+ ;; OV may not be created for line-highlights when the user opens
+ ;; the buffer for the first time, as the window may not have been
+ ;; created to display the buffer yet. This is necessary for the
+ ;; margin width to be calculated.
(when ov
(while properties
(let ((prop (pop properties))
@@ -1471,6 +1475,13 @@ highlight is a property list in the following properties:
highlights)))))
highlights))))))
+(defun org-remark-highlights-delay-load (window)
+ "Delay load until window for current buffer is created."
+ (when (windowp window)
+ (remove-hook 'window-state-change-functions
+ #'org-remark-highlights-delay-load 'local)
+ (org-remark-highlights-load)))
+
;;;###autoload
(defun org-remark-highlights-load (&optional update)
"Visit notes file & load the saved highlights onto current buffer.
@@ -1479,16 +1490,15 @@ output a message in the echo.
Non-nil value for UPDATE is passed for the notes-source sync
process."
- ;; Some major modes such as nov.el reuse the current buffer, deleting
- ;; the buffer content and insert a different file's content. In this
- ;; case, obsolete highlight overlays linger when you switch from one
- ;; file to another. Thus, in order to update the highlight overlays we
- ;; need to begin loading by clearing them first. This way, we avoid
- ;; duplicate of the same highlight.
(if (not (get-buffer-window))
- ;;(not (or (car (window-margins)) (cdr (window-margins)))))
- ;; TODO
- (add-hook 'window-state-change-functions #'org-remark-line-reload 95
'local)
+ (add-hook 'window-state-change-functions
+ #'org-remark-highlights-delay-load 95 'local)
+ ;; Some major modes such as nov.el reuse the current buffer, deleting
+ ;; the buffer content and insert a different file's content. In this
+ ;; case, obsolete highlight overlays linger when you switch from one
+ ;; file to another. Thus, in order to update the highlight overlays we
+ ;; need to begin loading by clearing them first. This way, we avoid
+ ;; duplicate of the same highlight.
(org-remark-highlights-clear)
;; Loop highlights and add them to the current buffer
(let (overlays) ;; highlight overlays
@@ -1502,10 +1512,9 @@ process."
;; Load highlights with demoted errors -- this makes the loading
;; robust against errors in loading.
(dolist (highlight (org-remark-highlights-get notes-buf))
- (push (org-remark-highlight-load highlight) overlays))
+ (let ((ov (org-remark-highlight-load highlight)))
+ (when ov (push ov overlays))))
(unless update (org-remark-notes-setup notes-buf source-buf))
- ;; remove nil
- (setq overlays (cl-remove-if nil overlays))
(if overlays
(progn (run-hook-with-args
'org-remark-highlights-after-load-functions
overlays notes-buf)