pkg update and first config fix
org-brain not working, add org-roam
This commit is contained in:
@@ -36,6 +36,17 @@
|
||||
(require 'citeproc-context)
|
||||
(require 'citeproc-term)
|
||||
|
||||
(defvar citeproc-name-postprocess-functions nil
|
||||
"A list of functions to postprocess rendered names.
|
||||
Each function takes three arguments:
|
||||
- the rich-text rendering of a name to be post-processed,
|
||||
- the rendered name as an alist with CSL name-part
|
||||
keys (`family', `given' etc.), and
|
||||
- the rendering context, as a `citeproc-context' structure.
|
||||
The output of each function should be the post-processed
|
||||
rich-text, and the functions are applied in the order they appear
|
||||
in the list.")
|
||||
|
||||
;; OPTIMIZE: Name count could be sped up by only counting the names to be
|
||||
;; rendered without actually rendering them
|
||||
(defun citeproc-name-render-vars
|
||||
@@ -103,12 +114,9 @@ Nature."
|
||||
(push `(plural . ,(if (> (length var-value) 1) "always" "never"))
|
||||
label-attrs)))
|
||||
(if with-label
|
||||
(let ((form (alist-get 'form label-attrs))
|
||||
(rendered-label (car (citeproc--label label-attrs context))))
|
||||
(let ((rendered-label (car (citeproc--label label-attrs context))))
|
||||
(citeproc-rt-join-formatted `((rendered-var . ,var))
|
||||
(if (or label-before-names
|
||||
(string= form "verb")
|
||||
(string= form "verb-short"))
|
||||
(if label-before-names
|
||||
(list rendered-label rendered-names)
|
||||
(list rendered-names rendered-label))
|
||||
context))
|
||||
@@ -208,15 +216,18 @@ Nature."
|
||||
|
||||
(defun citeproc-name--render (name attrs name-part-attrs sort-o context)
|
||||
"Render NAME according to the given attributes."
|
||||
(let ((format-attrs
|
||||
(--filter (memq (car it) (-concat '(prefix suffix) citeproc-rt-format-attrs))
|
||||
attrs)))
|
||||
(citeproc-rt-format-single
|
||||
(cons `(name-id . ,(alist-get 'name-id name)) format-attrs)
|
||||
(citeproc-name--render-formatted
|
||||
(citeproc-name--format-nameparts name name-part-attrs context)
|
||||
attrs sort-o context)
|
||||
context)))
|
||||
(let* ((format-attrs
|
||||
(--filter (memq (car it) (-concat '(prefix suffix) citeproc-rt-format-attrs))
|
||||
attrs))
|
||||
(result (citeproc-rt-format-single
|
||||
(cons `(name-id . ,(alist-get 'name-id name)) format-attrs)
|
||||
(citeproc-name--render-formatted
|
||||
(citeproc-name--format-nameparts name name-part-attrs context)
|
||||
attrs sort-o context)
|
||||
context)))
|
||||
(dolist (fn citeproc-name-postprocess-functions)
|
||||
(setq result (funcall fn result name context)))
|
||||
result))
|
||||
|
||||
(defun citeproc-name--parts-w-sep (c1 c2 sep context)
|
||||
"Join name-parts in lists C1 C2 with spaces and then with SEP."
|
||||
@@ -232,7 +243,7 @@ Nature."
|
||||
(defun citeproc-name--render-formatted (name-alist attrs sort-o context)
|
||||
"Render formatted name described by NAME-ALIST according to ATTRS.
|
||||
NAME-ALIST is an alist with symbol keys corresponding to
|
||||
name-parts like 'family etc. and values are simple rich-text
|
||||
name-parts like `family' etc. and values are simple rich-text
|
||||
contents of the form (ATTRS CONTENT) where content must be a
|
||||
single string. SORT-O is a boolean determining whether to use
|
||||
sort order."
|
||||
@@ -260,7 +271,9 @@ sort order."
|
||||
(rmode (citeproc-context-render-mode context)))
|
||||
(if (citeproc-name--lat-cyr-greek-p name-alist)
|
||||
(let ((g
|
||||
(cond ((and show-given (= show-given 2)) g-uninited)
|
||||
(cond ((or (null g-uninited)
|
||||
(and show-given (= show-given 2)))
|
||||
g-uninited)
|
||||
((and init-with init)
|
||||
(list (citeproc-rt-attrs g-uninited)
|
||||
(citeproc-name--initialize
|
||||
@@ -318,8 +331,6 @@ NAME-ALIST is like in `citeproc-name--render-formatted'"
|
||||
(cdr x)))
|
||||
name-alist)))
|
||||
|
||||
;;NOTE: missing given names are currently dealt here by handling the names =
|
||||
;;nil case there should be a more appropriate place.
|
||||
(defun citeproc-name--initialize (names suffix &optional remove-hyphens)
|
||||
"Initialize NAMES and add SUFFIX.
|
||||
NAMES is a string containing one or more space-separated names,
|
||||
@@ -327,16 +338,15 @@ while SUFFIX is either nil or a string (e.g. \".\"). If the
|
||||
optional REMOVE-HYPHENS is non-nil then don't keep hyphens
|
||||
between initalized given names, e.g., initialize Jean-Paul to
|
||||
J.P. instead of the default J.-P."
|
||||
(if (not names) nil
|
||||
(let ((trimmed-suffix (s-trim suffix)))
|
||||
(concat (s-join
|
||||
suffix
|
||||
(--map
|
||||
(if (s-match "-" it)
|
||||
(citeproc-name--initialize-hyphenated it suffix remove-hyphens)
|
||||
(s-left 1 it))
|
||||
(s-split " +" names)))
|
||||
trimmed-suffix))))
|
||||
(let ((trimmed-suffix (s-trim suffix)))
|
||||
(concat (s-join
|
||||
suffix
|
||||
(--map
|
||||
(if (s-match "-" it)
|
||||
(citeproc-name--initialize-hyphenated it suffix remove-hyphens)
|
||||
(s-left 1 it))
|
||||
(s-split " +" names)))
|
||||
trimmed-suffix)))
|
||||
|
||||
(defun citeproc-name--initialize-hyphenated (name suffix &optional remove-hyphens)
|
||||
"Initialize space-less but hyphenated NAME with SUFFIX.
|
||||
@@ -396,7 +406,7 @@ contents."
|
||||
(defun citeproc--var-plural-p (var context)
|
||||
"Return whether the content of variable VAR is plural.
|
||||
VAR is a symbol."
|
||||
(let ((content (citeproc-var-value var context)))
|
||||
(let ((content (citeproc-rt-to-plain (citeproc-var-value var context))))
|
||||
(if (or (string= var "number-of-pages")
|
||||
(string= var "number-of-volumes"))
|
||||
(> (string-to-number content) 1)
|
||||
@@ -427,6 +437,10 @@ VAR is a symbol."
|
||||
(if (citeproc--var-plural-p label context)
|
||||
'multiple
|
||||
'single))))
|
||||
;; Add rendered locator label info in cite mode.
|
||||
(when (and (eq label 'locator)
|
||||
(eq (citeproc-context-mode context) 'cite))
|
||||
(push '(rendered-locator-label . t) attrs))
|
||||
(cons (citeproc-rt-format-single attrs (citeproc-term-inflected-text
|
||||
variable form number context)
|
||||
context)
|
||||
|
||||
Reference in New Issue
Block a user