branch: externals/org-remark commit f9c313342ca9ba34e0e2962f10e82f94777859a4 Author: Noboru Ota <m...@nobiot.com> Commit: Noboru Ota <m...@nobiot.com>
chg: separate global-tracking.el This way, you don't need to load the whole Org machinary to turn on global tracking in init. --- README.org | 8 ++-- org-marginalia-global-tracking.el | 84 +++++++++++++++++++++++++++++++++++++++ org-marginalia.el | 60 +--------------------------- 3 files changed, 89 insertions(+), 63 deletions(-) diff --git a/README.org b/README.org index 0593e51551..a217370415 100644 --- a/README.org +++ b/README.org @@ -291,8 +291,8 @@ jit-lock-register ** org-marginalia-load :PROPERTIES: :marginalia-id: 3ed4316a -:marginalia-source-beg: 14275 -:marginalia-source-end: 14294 +:marginalia-source-beg: 12170 +:marginalia-source-end: 12189 :END: [[file:~/local-repos/org-marginalia/org-marginalia.el][org-marginalia]] @@ -300,8 +300,8 @@ jit-lock-register ** set-buffer-modified-p :PROPERTIES: :marginalia-id: 275b8a06 -:marginalia-source-beg: 14183 -:marginalia-source-end: 14204 +:marginalia-source-beg: 12078 +:marginalia-source-end: 12099 :END: [[file:~/local-repos/org-marginalia/org-marginalia.el][org-marginalia]] diff --git a/org-marginalia-global-tracking.el b/org-marginalia-global-tracking.el new file mode 100644 index 0000000000..517c43849c --- /dev/null +++ b/org-marginalia-global-tracking.el @@ -0,0 +1,84 @@ +;;; Commentary: + +;;; Code + +(declare-function org-marginalia-mode 'org-marginalia) + +(defgroup org-marginalia nil + "Write margin notes (marginalia) for any text file in a +separate Org file" + :group 'org + :prefix "org-marginalia-" + :link '(url-link :tag "Github" "https://github.com/nobiot/org-marginalia")) + +(defcustom org-marginalia-notes-file-path "marginalia.org" + "Specify the file path for the marginalia.org file. +The default is \"./marginalia.org\", thus one marginalia file per directory. +Ensure that it is an Org file." + :type 'string + :group 'org-marginalia) + +(defcustom org-marginalia-tracking-file + (locate-user-emacs-file ".org-marginalia-tracking" nil) + "File name where the files `org-marginalia' tracks is saved. +When `org-marginalia-global-tracking-mode' is active, opening a file +saved in `org-marginalia-tracking-file' automatically loads highlights." + :type 'file) + +(defvar org-marginalia-tracking-file-loaded nil) + +(defvar org-marginalia-files-tracked nil) + +;;;###autoload +(define-minor-mode org-marginalia-global-tracking-mode + "Global mode. When enabled, check files saved in +`org-marginalia-tracking-file' and opening them automatically +activates `org-marginalia-mode' locally for the file opened." + :init-value nil + :lighter " marginalia-tracking" + :global t + (cond + (org-marginalia-global-tracking-mode + ;; Activate + (when (and (not org-marginalia-tracking-file-loaded) + (file-exists-p org-marginalia-tracking-file)) + (org-marginalia-tracking-load)) + (add-hook 'find-file-hook #'org-marginalia-tracking-auto-on) + (add-hook 'kill-emacs-hook #'org-marginalia-tracking-save)) + (t + ;; dactivate + (setq org-marginalia-files-tracked nil) + (setq org-marginalia-tracking-file-loaded nil) + (remove-hook 'find-file-hook #'org-marginalia-tracking-auto-on) + (remove-hook 'kill-emacs-hook #'org-marginalia-tracking-save)))) + +(defun org-marginalia-tracking-auto-on () + "." + (when (and org-marginalia-files-tracked + (member (abbreviate-file-name (buffer-file-name)) + org-marginalia-files-tracked)) + (unless (featurep 'org-marginalia) (require 'org-marginalia)) + (org-marginalia-mode +1))) + +(defun org-marginalia-tracking-load () + ". +Each line. It loads regardless of `org-marginalia-tracking-file'; +if already loaded this function reloads." + (with-temp-buffer + (condition-case nil + (progn + (insert-file-contents org-marginalia-tracking-file) + (setq org-marginalia-files-tracked + (split-string (buffer-string) "\n")) + (setq org-marginalia-tracking-file-loaded t))))) + +(defun org-marginalia-tracking-save () + "." + (interactive) + (when org-marginalia-files-tracked + (with-temp-file org-marginalia-tracking-file + (insert (mapconcat 'identity org-marginalia-files-tracked "\n"))))) + +(provide 'org-marginalia-global-tracking) + +;;; org-marginalia-global-tracking.el ends here diff --git a/org-marginalia.el b/org-marginalia.el index ba48ee36a8..5929188793 100644 --- a/org-marginalia.el +++ b/org-marginalia.el @@ -169,6 +169,7 @@ (require 'org) (require 'org-id) +(require 'org-marginalia-global-tracking) (declare-function org-collect-keywords 'org) ;;;; Customization @@ -197,13 +198,6 @@ Ensure that it is an Org file." :type 'string :group 'org-marginalia) -(defcustom org-marginalia-tracking-file - (locate-user-emacs-file ".org-marginalia-tracking" nil) - "File name where the files `org-marginalia' tracks is saved. -When `org-marginalia-global-tracking-mode' is active, opening a file -saved in `org-marginalia-tracking-file' automatically loads highlights." - :type 'file) - ;;;; Variables (defvar-local org-marginalia-loaded nil) @@ -220,10 +214,6 @@ On save-buffer each highlight will be persisted in the marginalia file "Stores the cloned indirect buffer for the margin notes. It is meant to exist only one of these in each Emacs session.") -(defvar org-marginalia-tracking-file-loaded nil) - -(defvar org-marginalia-files-tracked nil) - ;; Const for the names of properties in Org Mode (defconst org-marginalia-prop-id "marginalia-id") (defconst org-marginalia-prop-source-file "marginalia-source-file") @@ -232,54 +222,6 @@ It is meant to exist only one of these in each Emacs session.") ;;;; Commands -;;;###autoload -(define-minor-mode org-marginalia-global-tracking-mode - "Global mode. When enabled, check files saved in -`org-marginalia-tracking-file' and opening them automatically -activates `org-marginalia-mode' locally for the file opened." - :init-value nil - :lighter " marginalia-tracking" - :global t - (cond - (org-marginalia-global-tracking-mode - ;; Activate - (when (and (not org-marginalia-tracking-file-loaded) - (file-exists-p org-marginalia-tracking-file)) - (org-marginalia-tracking-load)) - (add-hook 'find-file-hook #'org-marginalia-tracking-auto-on) - (add-hook 'kill-emacs-hook #'org-marginalia-tracking-save)) - (t - ;; dactivate - (setq org-marginalia-files-tracked nil) - (setq org-marginalia-tracking-file-loaded nil) - (remove-hook 'find-file-hook #'org-marginalia-tracking-auto-on) - (remove-hook 'kill-emacs-hook #'org-marginalia-tracking-save)))) - -(defun org-marginalia-tracking-auto-on () - (when (and org-marginalia-files-tracked - (member (abbreviate-file-name (buffer-file-name)) - org-marginalia-files-tracked)) - (org-marginalia-mode +1))) - -(defun org-marginalia-tracking-load () - ". -Each line. It loads regardless of `org-marginalia-tracking-file'; -if already loaded this function reloads." - (with-temp-buffer - (condition-case nil - (progn - (insert-file-contents org-marginalia-tracking-file) - (setq org-marginalia-files-tracked - (split-string (buffer-string) "\n")) - (setq org-marginalia-tracking-file-loaded t))))) - -(defun org-marginalia-tracking-save () - "." - (interactive) - (when org-marginalia-files-tracked - (with-temp-file org-marginalia-tracking-file - (insert (mapconcat 'identity org-marginalia-files-tracked "\n"))))) - ;;;###autoload (define-minor-mode org-marginalia-mode "Highlight text, write margin notes for any text file in Org Mode.