mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-25 05:48:07 -05:00
emacs: Add 'guix-with-indent'.
* emacs/guix-utils.el (guix-with-indent): New macro. (guix-memoized-font-lock-keywords): Rename to... (guix-utils-font-lock-keywords): ... this. Add it. * emacs/guix-info.el (guix-info-insert-entry-default): Use it.
This commit is contained in:
parent
778437ed9f
commit
36c00c61fa
2 changed files with 21 additions and 8 deletions
|
@ -219,13 +219,11 @@ ENTRIES should have a form of `guix-entries'."
|
|||
"Insert ENTRY of ENTRY-TYPE into the current info buffer.
|
||||
If INDENT-LEVEL is non-nil, indent displayed information by this
|
||||
number of `guix-info-indent' spaces."
|
||||
(let ((region-beg (point)))
|
||||
(guix-with-indent (* (or indent-level 0)
|
||||
guix-info-indent)
|
||||
(mapc (lambda (param)
|
||||
(guix-info-insert-param param entry entry-type))
|
||||
(guix-info-get-displayed-params entry-type))
|
||||
(when indent-level
|
||||
(indent-rigidly region-beg (point)
|
||||
(* indent-level guix-info-indent)))))
|
||||
(guix-info-get-displayed-params entry-type))))
|
||||
|
||||
(defun guix-info-insert-entry (entry entry-type &optional indent-level)
|
||||
"Insert ENTRY of ENTRY-TYPE into the current info buffer.
|
||||
|
|
|
@ -64,6 +64,17 @@ Use `guix-time-format'."
|
|||
"Return one-line string from a multi-line STR."
|
||||
(replace-regexp-in-string "\n" " " str))
|
||||
|
||||
(defmacro guix-with-indent (indent &rest body)
|
||||
"Evaluate BODY and indent inserted text by INDENT number of spaces."
|
||||
(declare (indent 1) (debug t))
|
||||
(let ((region-beg-var (make-symbol "region-beg"))
|
||||
(indent-var (make-symbol "indent")))
|
||||
`(let ((,region-beg-var (point))
|
||||
(,indent-var ,indent))
|
||||
,@body
|
||||
(unless (zerop ,indent-var)
|
||||
(indent-rigidly ,region-beg-var (point) ,indent-var)))))
|
||||
|
||||
(defun guix-format-insert (val &optional face format)
|
||||
"Convert VAL into a string and insert it at point.
|
||||
If FACE is non-nil, propertize VAL with FACE.
|
||||
|
@ -303,9 +314,13 @@ See `defun' for the meaning of arguments."
|
|||
,(or docstring
|
||||
(format "Memoized version of `%S'." definition))))
|
||||
|
||||
(defvar guix-memoized-font-lock-keywords
|
||||
|
||||
(defvar guix-utils-font-lock-keywords
|
||||
(eval-when-compile
|
||||
`((,(rx "("
|
||||
`((,(rx "(" (group "guix-with-indent")
|
||||
symbol-end)
|
||||
. 1)
|
||||
(,(rx "("
|
||||
(group "guix-memoized-" (or "defun" "defalias"))
|
||||
symbol-end
|
||||
(zero-or-more blank)
|
||||
|
@ -314,7 +329,7 @@ See `defun' for the meaning of arguments."
|
|||
(1 font-lock-keyword-face)
|
||||
(2 font-lock-function-name-face nil t)))))
|
||||
|
||||
(font-lock-add-keywords 'emacs-lisp-mode guix-memoized-font-lock-keywords)
|
||||
(font-lock-add-keywords 'emacs-lisp-mode guix-utils-font-lock-keywords)
|
||||
|
||||
(provide 'guix-utils)
|
||||
|
||||
|
|
Loading…
Reference in a new issue