12 Commits
0.3.0 ... 0.4.1

Author SHA1 Message Date
ac9e3e4c17 Bump to version 0.4.1 2022-09-07 10:19:03 +02:00
579b901de2 Update CONTRIBUTING and dir variables 2022-09-07 10:18:37 +02:00
f55f25b989 Update package description 2022-09-07 10:18:22 +02:00
e14eb92ec0 Add MELPA badges 2022-09-04 14:34:03 +02:00
dff82d885f Bump version 2022-09-01 16:38:02 +02:00
f8e68356d1 Rename option auto-id' to unique-id' 2022-09-01 16:26:30 +02:00
8633b3b83b Simpler expression 2022-09-01 16:22:22 +02:00
e7c01d9dc8 Update Eask information 2022-08-24 18:33:56 +02:00
8f0f99121f Bump version to 0.3.1 2022-08-24 18:25:44 +02:00
81212e7c60 Remove redundant let, ensure the whole buffer is checked for auto-id
Redundant let was left over from past refactoring. This commit removes
it.

It also ensures the search for auto-id:t is made throughout the whole
buffer.
2022-08-24 18:22:53 +02:00
c32fc49d3d Make org-unique-id-maybe interactive 2022-08-24 18:17:16 +02:00
e67035032f Add CI badge to README 2022-08-24 03:50:03 +02:00
5 changed files with 83 additions and 26 deletions

View File

@@ -3,4 +3,6 @@
((emacs-lisp-mode . ((sentence-end-double-space . t) ((emacs-lisp-mode . ((sentence-end-double-space . t)
(indent-tabs-mode . nil))) (indent-tabs-mode . nil)))
(makefile-mode . ((indent-tabs-mode . t)))) (makefile-mode . ((indent-tabs-mode . t)))
(org-mode . ((sentence-end-double-space . nil)
(fill-column . 70))))

View File

@@ -11,6 +11,7 @@ hard to follow them.
- [[#how-can-i-contribute][How Can I Contribute?]] - [[#how-can-i-contribute][How Can I Contribute?]]
- [[#submitting-bugs-and-errors][Submitting Bugs and Errors]] - [[#submitting-bugs-and-errors][Submitting Bugs and Errors]]
- [[#submitting-new-code][Submitting New Code]] - [[#submitting-new-code][Submitting New Code]]
- [[#ensuring-the-quality-of-your-code][Ensuring the quality of your code]]
- [[#git-commit-messages][Git Commit Messages]] - [[#git-commit-messages][Git Commit Messages]]
- [[#describing-the-pull-request][Describing the Pull Request]] - [[#describing-the-pull-request][Describing the Pull Request]]
- [[#finding-something-to-do][Finding Something To Do]] - [[#finding-something-to-do][Finding Something To Do]]
@@ -46,6 +47,15 @@ the following:
- And obviously, your code works (I include that because I myself - And obviously, your code works (I include that because I myself
sometimes push commits that dont work) sometimes push commits that dont work)
*** Ensuring the quality of your code
Although a CI is already in place on the Github repository, you are
encouraged to make sure yourself everything runs correctly.
This package uses [[https://github.com/emacs-eask/eask][Eask]] to run its linters. Once it is installed, you
can go to your preferred terminal and run ~make ci~. If everything goes
well, youre ready to submit your code to the repository. If not,
please fix whatever Eask complains about first.
*** Git Commit Messages *** Git Commit Messages
Your commits should also follow [[https://github.com/syl20bnr/spacemacs/blob/develop/CONTRIBUTING.org#commit-messages][Spacemacs guidelines]] on this matter, Your commits should also follow [[https://github.com/syl20bnr/spacemacs/blob/develop/CONTRIBUTING.org#commit-messages][Spacemacs guidelines]] on this matter,
especially: especially:

2
Eask
View File

@@ -1,5 +1,5 @@
(package "org-unique-id" (package "org-unique-id"
"0.3.0" "0.3.1"
"Create unique IDs for org headers") "Create unique IDs for org headers")
(website-url "https://labs.phundrak.com/phundrak/org-unique-id") (website-url "https://labs.phundrak.com/phundrak/org-unique-id")

View File

@@ -1,6 +1,9 @@
#+title: org-unique-id #+title: org-unique-id
#+author: Lucien Cartier-Tilet #+author: Lucien Cartier-Tilet
#+email: lucien@phundrak.com #+email: lucien@phundrak.com
[[https://github.com/Phundrak/org-unique-id/actions/workflows/workflow.yml][file:https://github.com/Phundrak/org-unique-id/actions/workflows/workflow.yml/badge.svg]]
[[https://melpa.org/#/org-unique-id][file:https://melpa.org/packages/org-unique-id-badge.svg]]
[[https://stable.melpa.org/#/org-unique-id][file:https://stable.melpa.org/packages/org-unique-id-badge.svg]]
* Introduction * Introduction
~org-unique-id~ is a utility package for org users that are tired ~org-unique-id~ is a utility package for org users that are tired
@@ -13,6 +16,8 @@ user modifies them manually.
- [[#introduction][Introduction]] - [[#introduction][Introduction]]
- [[#installation][Installation]] - [[#installation][Installation]]
- [[#usage][Usage]] - [[#usage][Usage]]
- [[#breaking-changes][Breaking changes]]
- [[#040][~0.4.0~]]
- [[#contributing][Contributing]] - [[#contributing][Contributing]]
- [[#license][License]] - [[#license][License]]
@@ -48,12 +53,12 @@ While ~org-unique-id~ may be installed on your Emacs instance, it is not
active by default. This is because it can take some time to generate active by default. This is because it can take some time to generate
all the required IDs in your org file which may hang your Emacs all the required IDs in your org file which may hang your Emacs
instance for a bit. Therefore, automatic IDs are enabled on a per-file instance for a bit. Therefore, automatic IDs are enabled on a per-file
basis with the option ~auto-id~. basis with the option ~unique-id~.
Here is an example of an org buffer with ~org-unique-id~ enabled: Here is an example of an org buffer with ~org-unique-id~ enabled:
#+begin_src org #+begin_src org
,#+title: Test file ,#+title: Test file
,#+options: auto-id:t ,#+options: unique-id:t
,* Test level 1 ,* Test level 1
:PROPERTIES: :PROPERTIES:
@@ -76,7 +81,7 @@ the ~CUSTOM_ID~ and let ~org-unique-id~ regenerate it. If you dont like
the ~CUSTOM_ID~ generated by ~org-unique-id~, you can overwrite it the ~CUSTOM_ID~ generated by ~org-unique-id~, you can overwrite it
yourself and ~org-unique-id~ will not modify it. yourself and ~org-unique-id~ will not modify it.
Note that ~auto-id:t~ is absolutely required in order to get these Note that ~unique-id:t~ is absolutely required in order to get these
~CUSTOM_ID~. Here is the same buffer after save without this option: ~CUSTOM_ID~. Here is the same buffer after save without this option:
#+begin_src org #+begin_src org
,#+title: Test file ,#+title: Test file
@@ -87,7 +92,11 @@ Note that ~auto-id:t~ is absolutely required in order to get these
It is also possible to manually call ~org-unique-id~ (interactively or It is also possible to manually call ~org-unique-id~ (interactively or
not) on the current buffer. This will not check the value of the not) on the current buffer. This will not check the value of the
~auto-id~ option. ~unique-id~ option.
* Breaking changes
** ~0.4.0~
The option ~auto-id~ is renamed to ~unique-id~.
* Contributing * Contributing
See [[file:CONTRIBUTING.org]]. See [[file:CONTRIBUTING.org]].

View File

@@ -2,7 +2,7 @@
;; Author: Lucien Cartier-Tilet <lucien@phundrak.com> ;; Author: Lucien Cartier-Tilet <lucien@phundrak.com>
;; Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com> ;; Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com>
;; Version: 0.3.0 ;; Version: 0.4.1
;; Package-Requires: ((emacs "25.1") (org "9.3")) ;; Package-Requires: ((emacs "25.1") (org "9.3"))
;; Homepage: https://labs.phundrak.com/phundrak/org-unique-id ;; Homepage: https://labs.phundrak.com/phundrak/org-unique-id
;; Keywords: convenience ;; Keywords: convenience
@@ -26,17 +26,52 @@
;;; Commentary: ;;; Commentary:
;; This package is inspired by a blog post I published about a year ;; org-unique-id is a utility package for org-mode users that are
;; before I decided to write this package [1], which in turn is ;; tired dealing with random org IDs for their headers anchor that
;; largely inspired by another blog post [2]. ;; change on each org to HTML exports among others. This package
;; creates meaningful custom IDs for org headers that wont change
;; unless the user modifies or removes them manually.
;; ;;
;; It will generate a unique ID for each headers in an org file based ;; In order to be enabled, this packages `org-unique-id-maybe'
;; on the headers name plus a random short string in order to be sure ;; function must be hooked to `before-save-hook', and the string
;; to make it unique. This ID will be inserted in each headers ;; \\='auto-id:t\\=' must be present in an \\='#+OPTIONS:\\=' line in
;; properties as a custom ID. ;; the buffer.
;; ;;
;; [1] https://blog.phundrak.com/better-custom-ids-orgmode/ ;; If the \\='auto-id:t\\=' string is found, then it will create a
;; [2] https://writequit.org/articles/emacs-org-mode-generate-ids.html ;; slug of the current header (and if there are, its parent headers)
;; and it will add a unique string suffix generated with a UUID
;; generator to ensure all IDs are unique.
;;
;; Here is an example of an org-mode file without the
;; \\='auto-id:t\\=' option after save:
;;
;; #+title: Test file
;; * Test level 1
;; ** Test level 2
;; * Test level 1
;;
;; And here is the same org-mode file but with the option atop its
;; content:
;;
;; ,#+title: Test file
;; ,#+options: unique-id:t
;; ,* Test level 1
;; :PROPERTIES:
;; :CUSTOM_ID: Test-level-1-zmb40t305kj0
;; :END:
;; ,** Test level 2
;; :PROPERTIES:
;; :CUSTOM_ID: Test-level-1-Test-level-2-spn40t305kj0
;; :END:
;; ,* Test level 1
;; :PROPERTIES:
;; :CUSTOM_ID: Test-level-1-1nx40t305kj0
;; :END:
;;
;; Of course the last part of the custom ID might differ for you, but
;; once it is generated, org-unique-id will not modify it or
;; regenerate it unless you delete it yourself, hence ensuring a
;; constant ID for your org exports.
;;; Code: ;;; Code:
@@ -112,8 +147,8 @@ case, the CUSTOM_ID of the entry is returned."
(defun org-unique-id () (defun org-unique-id ()
"Add a CUSTOM_ID to all headers missing one. "Add a CUSTOM_ID to all headers missing one.
Only adds ids if the `auto-id' option is set to t in the file Only adds ids if the \\='unique-id\\=' option is set to t in the
somewhere, i.e. #+OPTIONS: auto-id:t" file somewhere, i.e. #+OPTIONS: unique-id:t"
(interactive) (interactive)
(save-excursion (save-excursion
(widen) (widen)
@@ -126,14 +161,15 @@ somewhere, i.e. #+OPTIONS: auto-id:t"
This function executes `org-unique-id' when the buffers major This function executes `org-unique-id' when the buffers major
mode is `org-mode', when the buffer is not read-only, and if mode is `org-mode', when the buffer is not read-only, and if
\\='auto-id:t\\' is found in an #+OPTIONS line." \\='unique-id:t\\' is found in an #+OPTIONS line."
(let ((case-fold-search t)) (interactive)
(when (and (eq major-mode 'org-mode) (when (and (eq major-mode 'org-mode)
(eq buffer-read-only nil) (not buffer-read-only)
(save-excursion (save-excursion
(let ((case-fold-search t)) (goto-char (point-min))
(re-search-forward "^#\\+OPTIONS:.*auto-id:t" (point-max) t)))) (let ((case-fold-search t))
(org-unique-id)))) (re-search-forward "^#\\+OPTIONS:.*unique-id:t" (point-max) t))))
(org-unique-id)))
(provide 'org-unique-id) (provide 'org-unique-id)