(defvar +wiki-directory "~/writings/wiki") (defvar my/wiki-asset-directory-name "assets") (defun my/is-in-wiki-directory () "Return t if the file buffer is in the wiki directory." (if (and (not (string= (f-base (buffer-file-name)) my/wiki-asset-directory-name)) (f-descendant-of-p (buffer-file-name) (expand-file-name +wiki-directory))) t nil)) (defun my/get-assets-folder () "Get the assets folder of the current Org mode document." (if (my/is-in-wiki-directory) (f-join my/wiki-asset-directory-name (f-base buffer-file-name)) nil)) (defun my/concat-assets-folder (path) "Concatenate PATH to the assets folder." (f-join (my/get-assets-folder) path)) (defun my/create-assets-folder () "A quick convenient function to create an assets folder in the wiki folder." (interactive) (if (my/is-in-wiki-directory) (f-mkdir my/wiki-asset-directory-name (f-join my/wiki-asset-directory-name (file-name-sans-extension (buffer-file-name)))) (message "Not in the wiki directory."))) (defun my/anki-editor-delete-note () "Request AnkiConnect for deleting a note at point." (interactive) (let ((queue (anki-editor--anki-connect-invoke-queue))) (funcall queue 'deleteNotes `((notes . ,(list (org-entry-get (point) anki-editor-prop-note-id))))) (org-entry-delete (point) anki-editor-prop-note-id))) ;;; config.el ends here