branch: externals/org-remark commit c7dc42bf30f73b823348eb58e19acad4cd14f212 Author: Noboru Ota <m...@nobiot.com> Commit: Noboru Ota <m...@nobiot.com>
fix: margin width --- org-remark-line.el | 21 ++++++++------ org-remark.el | 85 +++++++++++++++++++++++++++++------------------------- 2 files changed, 57 insertions(+), 49 deletions(-) diff --git a/org-remark-line.el b/org-remark-line.el index e1ec071c4e..9bd028d753 100644 --- a/org-remark-line.el +++ b/org-remark-line.el @@ -5,7 +5,7 @@ ;; Author: Noboru Ota <m...@nobiot.com> ;; URL: https://github.com/nobiot/org-remark ;; Created: 01 August 2023 -;; Last modified: 14 August 2023 +;; Last modified: 15 August 2023 ;; Package-Requires: ((emacs "27.1") (org "9.4")) ;; Keywords: org-mode, annotation, note-taking, marginal-notes, wp @@ -74,7 +74,7 @@ filefor the first time, the window has not been created before ;; olivetti sets DEPTH to t (=90). We need go lower priority than it (add-hook 'window-size-change-functions #'org-remark-line-set-window-margins 95 :local) - (setq left-margin-width org-remark-line-minimum-margin-width) + ;;(setq left-margin-width org-remark-line-minimum-margin-width) ;;(org-remark-line-set-buffer-windows)) ) (remove-hook 'org-remark-find-dwim-functions #'org-remark-line-find :local) @@ -97,11 +97,14 @@ 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) - (when (or (eq left-width nil) (< left-width - org-remark-line-minimum-margin-width)) - ;; (setq left-margin-width org-remark-line-minimum-margin-width) - (set-window-buffer (get-buffer-window) (current-buffer) 'keep-margins) - (set-window-margins nil org-remark-line-minimum-margin-width)) + (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 left-width) + (setq right-margin-width right-width)) + (set-window-buffer (get-buffer-window) (current-buffer) 'keep-margins) + (set-window-margins nil left-margin-width right-margin-width) (org-remark-highlights-load) (window-margins)))) @@ -144,7 +147,7 @@ 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 80 '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) @@ -160,7 +163,7 @@ Return OV" ;;(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 - (left-margin (or (car (window-margins)) org-remark-line-minimum-margin-width)) + (left-margin (or (car (window-margins)) left-margin-width)) (string (or string (with-temp-buffer ;;(insert-char ?\s spaces) (insert org-remark-line-icon) diff --git a/org-remark.el b/org-remark.el index 2fcc8a03e8..65470522ad 100644 --- a/org-remark.el +++ b/org-remark.el @@ -6,7 +6,7 @@ ;; URL: https://github.com/nobiot/org-remark ;; Version: 1.1.0 ;; Created: 22 December 2020 -;; Last modified: 14 August 2023 +;; Last modified: 15 August 2023 ;; Package-Requires: ((emacs "27.1") (org "9.4")) ;; Keywords: org-mode, annotation, note-taking, marginal-notes, wp, @@ -331,7 +331,7 @@ recommended to turn it on as part of Emacs initialization. (add-hook 'after-save-hook #'org-remark-save nil t) (add-hook 'org-remark-highlight-link-to-source-functions #'org-remark-highlight-link-to-source-default 80) - (add-hook 'after-revert-hook #'org-remark-highlights-load) + (add-hook 'after-revert-hook #'org-remark-highlights-load :local) (add-hook 'clone-buffer-hook #'org-remark-highlights-load 80 :local)) (t ;; Deactivate @@ -344,7 +344,7 @@ recommended to turn it on as part of Emacs initialization. (remove-hook 'after-save-hook #'org-remark-save t) (remove-hook 'org-remark-highlight-link-to-source-functions #'org-remark-highlight-link-to-source-default) - (remove-hook 'after-revert-hook #'org-remark-highlights-load) + (remove-hook 'after-revert-hook #'org-remark-highlights-load :local) (remove-hook 'clone-buffer-hook #'org-remark-highlights-load :local)))) @@ -862,42 +862,43 @@ 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))) - (while properties - (let ((prop (pop properties)) - (val (pop properties))) - (overlay-put ov prop val))) - (when label (overlay-put ov 'org-remark-label label)) - (overlay-put ov 'org-remark-id id) - ;; Keep track of the overlay in a local variable. It's a list that is - ;; guaranteed to contain only org-remark overlays as opposed to the one - ;; returned by `overlay-lists' that lists all overlays. - (push ov org-remark-highlights) - ;; for mode, nil and :change result in saving the highlight. :load - ;; bypasses save. - (unless (eq mode :load) - (let* ((notes-buf (find-file-noselect - (org-remark-notes-get-file-name))) - (source-buf (current-buffer)) - ;; Get props for create and change modes - (notes-props - (org-remark-highlight-add ov source-buf notes-buf))) - (when notes-props - (org-remark-highlight-put-props ov notes-props)) - ;; Save the notes buffer when not loading - (unless (eq notes-buf (current-buffer)) - ;; Force tiggering the update save for :change:operation. - ;; The line-icons do not get updated because :change: to - ;; the same pen does not involve buffer modificaiton and - ;; thus the sync does not get triggered to update icons. - (with-current-buffer notes-buf - (unless (buffer-modified-p) (restore-buffer-modified-p t)) - (save-buffer)))))) - (deactivate-mark) - (org-remark-highlights-housekeep) - (org-remark-highlights-sort) - (setq org-remark-source-setup-done t) - ;; Return overlay - ov))) + (when ov + (while properties + (let ((prop (pop properties)) + (val (pop properties))) + (overlay-put ov prop val))) + (when label (overlay-put ov 'org-remark-label label)) + (overlay-put ov 'org-remark-id id) + ;; Keep track of the overlay in a local variable. It's a list that is + ;; guaranteed to contain only org-remark overlays as opposed to the one + ;; returned by `overlay-lists' that lists all overlays. + (push ov org-remark-highlights) + ;; for mode, nil and :change result in saving the highlight. :load + ;; bypasses save. + (unless (eq mode :load) + (let* ((notes-buf (find-file-noselect + (org-remark-notes-get-file-name))) + (source-buf (current-buffer)) + ;; Get props for create and change modes + (notes-props + (org-remark-highlight-add ov source-buf notes-buf))) + (when notes-props + (org-remark-highlight-put-props ov notes-props)) + ;; Save the notes buffer when not loading + (unless (eq notes-buf (current-buffer)) + ;; Force tiggering the update save for :change:operation. + ;; The line-icons do not get updated because :change: to + ;; the same pen does not involve buffer modificaiton and + ;; thus the sync does not get triggered to update icons. + (with-current-buffer notes-buf + (unless (buffer-modified-p) (restore-buffer-modified-p t)) + (save-buffer)))))) + (deactivate-mark) + (org-remark-highlights-housekeep) + (org-remark-highlights-sort) + (setq org-remark-source-setup-done t) + ;; Return overlay + ov)))) (defun org-remark-highlight-get-title () "Return the title of the source buffer. @@ -1129,7 +1130,8 @@ Assume the current buffer is the source buffer." (let ((fn (intern (concat "org-remark-mark-" label)))) (unless (functionp fn) (setq fn #'org-remark-mark)) (setq ov (funcall fn beg end id :load)) - (org-remark-highlight-put-props ov props) + (when ov + (org-remark-highlight-put-props ov props)) ;; Return highlight overlay ov))) @@ -1484,6 +1486,7 @@ process." ;; 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) (org-remark-highlights-clear) @@ -1501,6 +1504,8 @@ process." (dolist (highlight (org-remark-highlights-get notes-buf)) (push (org-remark-highlight-load highlight) 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)