[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/engrave-faces 3b3dda6 19/36: Improve docstrings and add
From: |
ELPA Syncer |
Subject: |
[elpa] externals/engrave-faces 3b3dda6 19/36: Improve docstrings and add some defcustoms |
Date: |
Tue, 31 Aug 2021 01:57:27 -0400 (EDT) |
branch: externals/engrave-faces
commit 3b3dda6dd225539b067a83d1d832ed5259af2eb1
Author: TEC <tec@tecosaur.com>
Commit: TEC <tec@tecosaur.com>
Improve docstrings and add some defcustoms
---
engrave-faces-latex.el | 17 +++++++++-----
engrave-faces.el | 60 +++++++++++++++++++++++++++++++-------------------
2 files changed, 49 insertions(+), 28 deletions(-)
diff --git a/engrave-faces-latex.el b/engrave-faces-latex.el
index 0ea2355..5a3891e 100644
--- a/engrave-faces-latex.el
+++ b/engrave-faces-latex.el
@@ -11,11 +11,17 @@
(require 'engrave-faces)
-(defvar engrave-faces-latex-output-style 'preset
- "TODO")
+(defcustom engrave-faces-latex-output-style 'preset
+ "How to encode LaTeX style information.
+When nil, all face properties are applied via \\colorbox, \\textcolor,
+\\textbf, etc. each time.
+When preset, short commands are generated for `engrave-faces-preset-styles'."
+ :type '(choice nil preset)
+ :group 'engrave-faces)
(defun engrave-faces-latex-gen-preamble ()
- "TODO"
+ "Generate a preamble which provides short commands for the preset styles.
+See `engrave-faces-preset-styles' and `engrave-faces-latex-output-style'."
(mapconcat
(lambda (face-style)
(engrave-faces-latex-gen-preamble-line (car face-style) (cdr face-style)))
@@ -23,6 +29,7 @@
"\n"))
(defun engrave-faces-latex-gen-preamble-line (face style)
+ "Generate a LaTeX preamble line for STYLE representing FACE."
(let ((short (plist-get style :slug))
(fg (plist-get style :foreground))
(bg (plist-get style :background))
@@ -40,7 +47,7 @@
" % " (symbol-name face))))
(defun engrave-faces-latex-face-apply (faces content)
- "TODO"
+ "Convert each (compatable) parameter of FACES to a LaTeX command apllied to
CONTENT."
(let ((attrs (engrave-faces-merge-attributes faces)))
(let ((bg (plist-get attrs :background))
(fg (plist-get attrs :foreground))
@@ -55,7 +62,7 @@
(when bg "}") (when fg "}") (when st "}") (when bl "}") (when it
"}")))))
(defun engrave-faces-latex-face-mapper (faces content)
- "TODO"
+ "Create a LaTeX representation of CONTENT With FACES applied."
(let ((protected-content (replace-regexp-in-string "[\\{}$%&_#]" "\\\\\\&"
content))
(style (unless (eq faces 'default) (assoc faces
engrave-faces-preset-styles))))
(if (string-match-p "\\`[\n[:space:]]+\\'" content)
diff --git a/engrave-faces.el b/engrave-faces.el
index 2675100..a6014c9 100644
--- a/engrave-faces.el
+++ b/engrave-faces.el
@@ -51,25 +51,33 @@
(defvar ,(intern (concat "engrave-faces-" name "-before-hook")) nil)
(defvar ,(intern (concat "engrave-faces-" name "-after-hook")) nil)))
-(defvar engrave-faces-attributes-of-interest
+(defgroup engrave-faces nil
+ "Export buffers with font-lock information to other formats."
+ :group 'hypermedia)
+
+(defcustom engrave-faces-attributes-of-interest
'(:foreground :background :slant :weight :height :strike-through)
- "Attributes which sould be paid attention to.")
+ "Attributes which sould be paid attention to."
+ :type '(repeat symbol)
+ :group 'engrave-faces)
-(defvar engrave-faces-before-hook nil
- "Hook run before htmlizing a buffer.
-The hook functions are run in the source buffer (not the resulting HTML
-buffer).")
+(defcustom engrave-faces-before-hook nil
+ "Hook run before engraving a buffer.
+The hook functions are run in the source buffer (not the resulting buffer)."
+ :type 'hook
+ :group 'engrave-faces)
-(defvar engrave-faces-after-hook nil
- "Hook run after htmlizing a buffer.
+(defcustom engrave-faces-after-hook nil
+ "Hook run after engraving a buffer.
Unlike `engrave-faces-before-hook', these functions are run in the generated
-HTML buffer. You may use them to modify the outlook of the final HTML
-output.")
+buffer. You may use them to modify the outlook of the final output."
+ :type 'hook
+ :group 'engrave-faces)
+
+(defun engrave-faces-buffer (backend)
+ "Export the current buffer with BACKEND and return the created buffer.
-(defun engrave-faces-buffer-1 (backend)
- ;; Internal function; don't call it from outside this file. Ansify
- ;; current buffer, writing the resulting ANSI to a new buffer, and
- ;; return it.
+This function is mostly lifted from htmlize."
(save-excursion
;; Protect against the hook changing the current buffer.
(save-excursion
@@ -92,13 +100,13 @@ output.")
(completed nil))
(unwind-protect
(let (next-change text)
- ;; This loop traverses and reads the source buffer, appending
- ;; the resulting ANSI to ANSIBUF. This method is fast
- ;; because: 1) it doesn't require examining the text
- ;; properties char by char (engrave-faces-next-face-change is used
- ;; to move between runs with the same face), and 2) it doesn't
- ;; require frequent buffer switches, which are slow because
- ;; they rebind all buffer-local vars.
+ ;; This loop traverses and reads the source buffer, appending the
+ ;; resulting text to the export buffer. This method is fast
because:
+ ;; 1) it doesn't require examining the text properties char by char
+ ;; (engrave-faces-next-face-change is used to move between runs
with
+ ;; the same face), and 2) it doesn't require frequent buffer
+ ;; switches, which are slow because they rebind all buffer-local
+ ;; vars.
(goto-char (point-min))
(while (not (eobp))
(setq next-change (engrave-faces-next-face-change (point)))
@@ -160,6 +168,9 @@ To consider inheritence, use
`engrave-faces-explicit-inheritance' first."
(delq 'default (if (listp faces) faces (list faces)))))))
(defun engrave-faces-next-face-change (pos &optional limit)
+ "Find the next face change from POS up to LIMIT.
+
+This function is lifted from htmlize."
;; (engrave-faces-next-change pos 'face limit) would skip over entire
;; overlays that specify the `face' property, even when they
;; contain smaller text properties that also specify `face'.
@@ -184,7 +195,7 @@ To consider inheritence, use
`engrave-faces-explicit-inheritance' first."
;;; Style helpers
-(defvar engrave-faces-preset-styles ; doom-one-light
+(defcustom engrave-faces-preset-styles ; doom-one-light
'((default :short "default" :slug "D"
:foreground "#383a42")
(font-lock-keyword-face :short "keyword" :slug "k"
:foreground "#e45649")
(font-lock-doc-face :short "doc" :slug "d"
:foreground "#84888b" :slant italic)
@@ -222,9 +233,12 @@ inherited styles.
Faces here will represented more compactly when possible, by using the
:short or :slug parameter to produce a named version styles, wheras other
-faces will need to be explicitly styled each time they're used.")
+faces will need to be explicitly styled each time they're used."
+ :type '(repeat (repeat (choice symbol string)))
+ :group 'engrave-faces)
(defun engrave-faces-check-nondefault (attr value)
+ "Return VALUE as long as it is specified, and not the default for ATTR."
(unless (or (eq value (face-attribute 'default attr nil t))
(eq value 'unspecified))
value))
- [elpa] externals/engrave-faces 757ba80 05/36: Improve attribute-plist face handling, (continued)
- [elpa] externals/engrave-faces 757ba80 05/36: Improve attribute-plist face handling, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 19da183 06/36: Add strikethrough support, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces c2ad032 11/36: Allow .-merge-attributes to work with single face, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 93fc726 03/36: Check preset faces when merging, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces c5c83ef 08/36: Fix invalid docstring in macro, remove unused func, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 4ef39b1 10/36: Improve handling of face inheritance., ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 3f7c5d5 04/36: Fix homepage url, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces aaa030a 07/36: Add licence, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 59bfd13 09/36: Fix single-face text being unstyled, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 52ab6fb 15/36: LaTeX export: fix edge case with braces across \n, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 3b3dda6 19/36: Improve docstrings and add some defcustoms,
ELPA Syncer <=
- [elpa] externals/engrave-faces b6d31d8 14/36: Account for multiple inherited faces, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 0cc9159 12/36: No longer set default face information separately, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 14eddbe 13/36: LaTeX: Don't set colour at the start of a block, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 7fc664a 20/36: Add interactive commands for backends, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces ccebbdd 18/36: Add the org-block face to the preset, improve doc, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 2fee4f7 24/36: Create engrave-faces-BACKEND-file command, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 2b03748 26/36: html: set page bg to default face bg (if given), ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 1f68496 27/36: LaTeX: use named colour for fg when possible, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 8bbaaf8 28/36: Missing subr-x requirement, ELPA Syncer, 2021/08/31
- [elpa] externals/engrave-faces 8b5e1fc 29/36: Move copyright to the FSF, ELPA Syncer, 2021/08/31