;;; config-org-citation.el --- Generated package (no.74) from my config -*- lexical-binding: t; -*- ;; ;; Copyright (C) 2024 TEC ;; ;; Author: TEC <https://code.tecosaur.net/tec> ;; Maintainer: TEC <contact@tecosaur.net> ;; Created: June 26, 2024 ;; Modified: June 26, 2024 ;; Version: 2024.06.26 ;; Homepage: https://code.tecosaur.net/tec/emacs-config ;; Package-Requires: ((emacs "29.1")) ;; ;; This file is not part of GNU Emacs. ;; ;;; Commentary: ;; ;; Generated package (no.74) from my config. ;; ;; During generation, dependency on other aspects of my configuration and ;; packages is inferred via (regexp-based) static analysis. While this seems ;; to do a good job, this method is imperfect. This code likely depends on ;; utilities provided by Doom, and if you try to run it in isolation you may ;; discover the code makes more assumptions. ;; ;; That said, I've found pretty good results so far. ;; ;; Package statement: ;; (package! org-cite-csl-activate :recipe (:host github :repo "andras-simonyi/org-cite-csl-activate") :pin "94a424a0c644129c8ea8f9badc482ff937dcec23") ;; ;;; Code: (use-package! oc-csl-activate :after oc :config (setq org-cite-csl-activate-use-document-style t) (defun +org-cite-csl-activate/enable () (interactive) (setq org-cite-activate-processor 'csl-activate) (add-hook! 'org-mode-hook '((lambda () (cursor-sensor-mode 1)) org-cite-csl-activate-render-all)) (defadvice! +org-cite-csl-activate-render-all-silent (orig-fn) :around #'org-cite-csl-activate-render-all (with-silent-modifications (funcall orig-fn))) (when (eq major-mode 'org-mode) (with-silent-modifications (save-excursion (goto-char (point-min)) (org-cite-activate (point-max))) (org-cite-csl-activate-render-all))) (fmakunbound #'+org-cite-csl-activate/enable))) (after! citar (setq org-cite-global-bibliography (let ((libfile-search-names '("library.json" "Library.json" "library.bib" "Library.bib")) (libfile-dir "~/Zotero") paths) (dolist (libfile libfile-search-names) (when (and (not paths) (file-exists-p (expand-file-name libfile libfile-dir))) (setq paths (list (expand-file-name libfile libfile-dir))))) paths) citar-bibliography org-cite-global-bibliography citar-symbols `((file ,(nerd-icons-faicon "nf-fa-file_o" :face 'nerd-icons-green :v-adjust -0.1) . " ") (note ,(nerd-icons-octicon "nf-oct-note" :face 'nerd-icons-blue :v-adjust -0.3) . " ") (link ,(nerd-icons-octicon "nf-oct-link" :face 'nerd-icons-orange :v-adjust 0.01) . " ")))) (after! oc-csl (setq org-cite-csl-styles-dir "~/Zotero/styles")) (after! oc (setq org-cite-export-processors '((t csl)))) (map! :after org :map org-mode-map :localleader :desc "Insert citation" "@" #'org-cite-insert) (after! oc (defun org-ref-to-org-cite () "Attempt to convert org-ref citations to org-cite syntax." (interactive) (let* ((cite-conversions '(("cite" . "//b") ("Cite" . "//bc") ("nocite" . "/n") ("citep" . "") ("citep*" . "//f") ("parencite" . "") ("Parencite" . "//c") ("citeauthor" . "/a/f") ("citeauthor*" . "/a") ("citeyear" . "/na/b") ("Citep" . "//c") ("Citealp" . "//bc") ("Citeauthor" . "/a/cf") ("Citeauthor*" . "/a/c") ("autocite" . "") ("Autocite" . "//c") ("notecite" . "/l/b") ("Notecite" . "/l/bc") ("pnotecite" . "/l") ("Pnotecite" . "/l/bc"))) (cite-regexp (rx (regexp (regexp-opt (mapcar #'car cite-conversions) t)) ":" (group (+ (not (any "\n ,.)]}"))))))) (save-excursion (goto-char (point-min)) (while (re-search-forward cite-regexp nil t) (message (format "[cite%s:@%s]" (cdr (assoc (match-string 1) cite-conversions)) (match-string 2))) (replace-match (format "[cite%s:@%s]" (cdr (assoc (match-string 1) cite-conversions)) (match-string 2)))))))) (provide 'config-org-citation) ;;; config-org-citation.el ends here