Add styling utilities
This commit is contained in:
parent
c76166e318
commit
58cad3a287
3 changed files with 92 additions and 2 deletions
|
@ -17,8 +17,13 @@
|
|||
6. Added more utility commands/functions
|
||||
7. ~anki-editor-use-math-jax~ was replaced with
|
||||
~anki-editor-latex-style~
|
||||
8. Minor internal code refactoring
|
||||
8. Code refactoring
|
||||
9. Allows to put one field in heading
|
||||
10. Added options to copy custom head tags to card stylings
|
||||
1. Variable ~anki-editor-include-default-style~
|
||||
2. Variable ~anki-editor-html-head~
|
||||
3. Command ~anki-editor-copy-styles~
|
||||
4. Command ~anki-editor-remove-styles~
|
||||
|
||||
** v0.3.3
|
||||
|
||||
|
|
12
README.org
12
README.org
|
@ -84,11 +84,13 @@ there are any ambiguity or grammatical mistakes ;-)/
|
|||
|-----------------------------------------------+------------------------+----------------------------------------------------------------------------------------------------------|
|
||||
| anki-editor-api-host | "127.0.0.1" | The network address AnkiConnect is listening. |
|
||||
| anki-editor-api-port | "8765" | The port number AnkiConnect is listening. |
|
||||
| anki-editor-break-consecutive-braces-in-latex | nil | If non-nil, consecutive `}' will be automatically separated by spaces to prevent early-closing of cloze. |
|
||||
| anki-editor-break-consecutive-braces-in-latex | nil | If non-nil, consecutive "}" will be automatically separated by spaces to prevent early-closing of cloze. |
|
||||
| anki-editor-ignored-org-tags | '("export" "noexport") | A list of Org tags that are ignored when constructing notes form entries. |
|
||||
| anki-editor-org-tags-as-anki-tags | t | If nil, tags of entries wont't be counted as Anki tags. |
|
||||
| anki-editor-protected-tags | '("marked" "leech") | A list of tags that won't be deleted from Anki even though they're absent in Org entries. |
|
||||
| anki-editor-latex-style | builtin | The style of latex to translate into. |
|
||||
| anki-editor-include-default-style | t | Wheter or not to include `org-html-style-default' when using `anki-editor-copy-styles'. |
|
||||
| anki-editor-html-head | nil | Additional html tags to append to card stylings when using `anki-editor-copy-styles'. |
|
||||
|
||||
** Functions and Macros
|
||||
|
||||
|
@ -141,6 +143,14 @@ there are any ambiguity or grammatical mistakes ;-)/
|
|||
|
||||
Find notes with QUERY.
|
||||
|
||||
*** anki-editor-copy-styles
|
||||
|
||||
Copy `org-html-style-default' and `anki-editor-html-head' to Anki card stylings.
|
||||
|
||||
*** anki-editor-remove-styles
|
||||
|
||||
Remove from card stylings html tags generated by this mode.
|
||||
|
||||
* Limitations
|
||||
|
||||
** Tags between Anki and Org
|
||||
|
|
|
@ -107,6 +107,17 @@ form entries."
|
|||
:type '(radio (const :tag "Built-in" builtin)
|
||||
(const :tag "MathJax" mathjax)))
|
||||
|
||||
(defcustom anki-editor-include-default-style t
|
||||
"Wheter or not to include `org-html-style-default' when using `anki-editor-copy-styles'.
|
||||
For example, you might want to turn this off when you are going to
|
||||
provide your custom styles in `anki-editor-html-head'."
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom anki-editor-html-head nil
|
||||
"Additional html tags to append to card stylings when using `anki-editor-copy-styles'.
|
||||
For example, you can put custom styles or scripts in this variable."
|
||||
:type 'string)
|
||||
|
||||
|
||||
;;; AnkiConnect
|
||||
|
||||
|
@ -937,6 +948,70 @@ entry."
|
|||
(message "%S" nids)
|
||||
nids)))
|
||||
|
||||
(defvar anki-editor--style-start "</style>\n<!-- {{ Emacs Org-mode -->")
|
||||
(defvar anki-editor--style-end "<!-- Emacs Org-mode }} -->\n<style>")
|
||||
|
||||
(defun anki-editor-copy-styles ()
|
||||
"Copy `org-html-style-default' and `anki-editor-html-head' to Anki card stylings."
|
||||
(interactive)
|
||||
(let ((head (concat (org-element-normalize-string anki-editor--style-start)
|
||||
(org-element-normalize-string (format "<!-- Updated: %s -->" (current-time-string)))
|
||||
(when anki-editor-include-default-style
|
||||
(org-element-normalize-string org-html-style-default))
|
||||
(org-element-normalize-string anki-editor-html-head)
|
||||
anki-editor--style-end)))
|
||||
(cl-loop for model in (anki-editor-note-types)
|
||||
for style = (let* ((css (alist-get 'css (anki-editor-api-call-result 'modelStyling :modelName model)))
|
||||
(start (string-match
|
||||
(regexp-quote anki-editor--style-start)
|
||||
css))
|
||||
(end (string-match
|
||||
(regexp-quote anki-editor--style-end)
|
||||
css)))
|
||||
(if (and start end)
|
||||
(progn
|
||||
(cl-incf end (length anki-editor--style-end))
|
||||
;; skip whitespaces
|
||||
(when-let ((newend (string-match "[[:graph:]]" css end)))
|
||||
(setq end newend))
|
||||
(concat
|
||||
(substring css 0 start)
|
||||
(substring css end)))
|
||||
css))
|
||||
do
|
||||
(message "Updating styles for \"%s\"..." model)
|
||||
(anki-editor-api-call-result 'updateModelStyling
|
||||
:model (list :name model
|
||||
:css (concat (concat head "\n\n") style)))
|
||||
finally do (message "Updating styles...Done"))))
|
||||
|
||||
(defun anki-editor-remove-styles ()
|
||||
"Remove from card stylings html tags generated by this mode."
|
||||
(interactive)
|
||||
(cl-loop for model in (anki-editor-note-types)
|
||||
for css = (alist-get 'css (anki-editor-api-call-result 'modelStyling :modelName model))
|
||||
for start = (string-match
|
||||
(regexp-quote anki-editor--style-start)
|
||||
css)
|
||||
for end = (string-match
|
||||
(regexp-quote anki-editor--style-end)
|
||||
css)
|
||||
if (and start end)
|
||||
do
|
||||
(cl-incf end (length anki-editor--style-end))
|
||||
;; also remove whitespaces
|
||||
(when-let ((newend (string-match "[[:graph:]]" css end)))
|
||||
(setq end newend))
|
||||
(message "Resetting styles for \"%s\"..." model)
|
||||
(anki-editor-api-call-result
|
||||
'updateModelStyling
|
||||
:model (list :name model
|
||||
:css (concat
|
||||
(substring css 0 start)
|
||||
(substring css end))))
|
||||
finally do (message "Resetting styles...Done")))
|
||||
|
||||
|
||||
(provide 'anki-editor)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
Loading…
Reference in a new issue