emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ELPA] Update package: psgml


From: Stefan Monnier
Subject: Re: [ELPA] Update package: psgml
Date: Mon, 17 Apr 2017 12:34:18 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux)

> Update how PSGML uses `sgml-set-face' to include a list of major modes.
> If the current major mode isn't in the list, treat as nil, otherwise t.

> This allows PSGML's parser to be used in other major modes without
> clobbering font locking in the process.

Hmm.. I like the goal, but I don't like lists of major-modes.
Could you give some further details about the context where you bumped
into the problem?

Any reason why you couldn't set sgml-set-face to nil buffer-locally instead?


        Stefan


> From c3cf6728d7f4bb1836aefaa78c8eb3e74f722085 Mon Sep 17 00:00:00 2001
> From: Lucien Pullen <address@hidden>
> Date: Sun, 16 Apr 2017 16:00:23 -0600
> Subject: [PATCH] psgml: conditionally set face from major mode

> * psgml-parse.el (sgml-set-face): In addition to never (nil) and
> always (t), can be a list of major mode functions to only set face in
> those modes.
> ---
>  psgml-parse.el | 12 +++++++-----
>  psgml.el       |  4 +++-
>  2 files changed, 10 insertions(+), 6 deletions(-)

> diff --git a/psgml-parse.el b/psgml-parse.el
> index 5609767..eb9828e 100644
> --- a/psgml-parse.el
> +++ b/psgml-parse.el
> @@ -1317,8 +1317,9 @@ was successful or nil if failed."
>    "Set the type of the markup parsed to TYPE.
>  The markup starts at position given by variable `sgml-markup-start' and
>  ends at point."
> -  (when (and sgml-set-face
> -          (null sgml-current-eref))
> +  (when (and (or (eq sgml-set-face t)
> +                 (find major-mode sgml-set-face))
> +             (null sgml-current-eref))
>      (sgml-set-face-for sgml-markup-start (point) type))
>    (setq sgml-markup-type type))
 
> @@ -2821,7 +2822,7 @@ overrides the entity type in entity look up."
>      (when (and (not executing-macro)
>              (or (and (boundp 'which-function-mode)
>                          which-function-mode )
> -                sgml-set-face)
> +                (or (eq sgml-set-face t) (find major-mode sgml-set-face))
>              sgml-buffer-parse-state
>              (sit-for 0))
>        (let ((deactivate-mark nil))
> @@ -2833,7 +2834,8 @@ overrides the entity type in entity look up."
>                    (sgml-element-gi sgml-last-element)))
>       (let ((eol-pos (save-excursion (end-of-line 1) (point))))
>            ;; Set face on current line
> -          (when (and sgml-set-face (not (input-pending-p)))
> +          (when (and (or (eq sgml-set-face t) (find major-mode 
> sgml-set-face))
> +                     (not (input-pending-p)))
>              (save-excursion
>                (condition-case nil
>                    (sgml-parse-to
> @@ -2846,7 +2848,7 @@ overrides the entity type in entity look up."
 
>  (defun sgml-fontify-buffer (delay)
>    (and
> -   sgml-set-face
> +   (or (eq sgml-set-face t) (find major-mode sgml-set-face))
>     (null (sgml-tree-etag-epos
>         (sgml-pstate-top-tree sgml-buffer-parse-state)))
>     (sit-for delay)
> diff --git a/psgml.el b/psgml.el
> index 142079a..b0ff140 100644
> --- a/psgml.el
> +++ b/psgml.el
> @@ -849,7 +849,9 @@ sgml-normalize-trims  If non-nil, sgml-normalize will 
> trim off white space
>       from end of element when adding end tag.
>  sgml-indent-step  How much to increment indent for every element level.
>  sgml-indent-data  If non-nil, indent in data/mixed context also.
> -sgml-set-face     If non-nil, psgml will set the face of parsed markup.
> +sgml-set-face     If non-nil, psgml will set the face of parsed markup,
> +     either always (when t) or when the buffer's major mode matches
> +     one of the listed function names.
>  sgml-markup-faces The faces used when the above variable is non-nil.
>  sgml-public-map  Mapping from public identifiers to file names.
>  sgml-offer-save  If non-nil, ask about saving modified buffers before
> -- 
> 2.3.4





reply via email to

[Prev in Thread] Current Thread [Next in Thread]