* Adding functionality to a minor mode @ 2022-02-05 10:00 goncholden via Users list for the GNU Emacs text editor 2022-02-05 18:50 ` goncholden 0 siblings, 1 reply; 17+ messages in thread From: goncholden via Users list for the GNU Emacs text editor @ 2022-02-05 10:00 UTC (permalink / raw) To: goncholden via Users list for the GNU Emacs text editor I have made a minor-mode with some defvar and defun. Have added some functionality for comments, and put everything in the following function definition. (defun rich-annotation-tools () "Aggregates annotation tools for comments." (rich-annotation-font-weight) (rich-annotation-low-contrast) (rich-annotation-keytrigger)) I would expect to add "(rich-annotation-tools)" in define-minor-mode. Would I introduce it within the "(when rich-minor-mode" part? ;;;###autoload (define-minor-mode rich-minor-mode "This is the description." :lighter "rich" ; indicator in mode-line (font-lock-remove-keywords nil rich-font-lock) (when rich-minor-mode (font-lock-add-keywords nil rich-font-lock 'append) (set (make-local-variable 'jit-lock-contextually) t) ) (rich-annotation-tools) (when font-lock-mode (if (fboundp 'font-lock-flush) (font-lock-flush) (with-no-warnings (font-lock-fontify-buffer)) )) ) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-05 10:00 Adding functionality to a minor mode goncholden via Users list for the GNU Emacs text editor @ 2022-02-05 18:50 ` goncholden 2022-02-07 0:09 ` goncholden 0 siblings, 1 reply; 17+ messages in thread From: goncholden @ 2022-02-05 18:50 UTC (permalink / raw) To: goncholden; +Cc: goncholden via Users list for the GNU Emacs text editor ------- Original Message ------- On Saturday, February 5th, 2022 at 10:00 AM, goncholden via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org> wrote: > I have made a minor-mode with some defvar and defun. Have added some functionality > > for comments, and put everything in the following function definition. > > (defun rich-annotation-tools () > "Aggregates annotation tools for comments." > (rich-annotation-font-weight) > (rich-annotation-low-contrast) > (rich-annotation-keytrigger)) > > I would expect to add "(rich-annotation-tools)" in define-minor-mode. Would I introduce it > within the "(when rich-minor-mode" part? > > ;;;###autoload > (define-minor-mode rich-minor-mode > "This is the description." > :lighter "rich" ; indicator in mode-line > (font-lock-remove-keywords nil rich-font-lock) > > (when rich-minor-mode > (font-lock-add-keywords nil rich-font-lock 'append) > (set (make-local-variable 'jit-lock-contextually) t) ) > (rich-annotation-tools) > > (when font-lock-mode > (if (fboundp 'font-lock-flush) > (font-lock-flush) > (with-no-warnings (font-lock-fontify-buffer)) )) ) What are the standard techniques for defining a minor mode (e.g. should only only use "(when rich-minor-mode"), and for enabling, disabling minor-mode functionality. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-05 18:50 ` goncholden @ 2022-02-07 0:09 ` goncholden 2022-02-07 6:00 ` Eric Abrahamsen 0 siblings, 1 reply; 17+ messages in thread From: goncholden @ 2022-02-07 0:09 UTC (permalink / raw) To: goncholden; +Cc: goncholden via Users list for the GNU Emacs text editor ------ Original Message ------- On Saturday, February 5th, 2022 at 6:50 PM, goncholden <goncholden@protonmail.com> wrote: > ------- Original Message ------- > > On Saturday, February 5th, 2022 at 10:00 AM, goncholden via Users list for the GNU Emacs text editor help-gnu-emacs@gnu.org wrote: > > > I have made a minor-mode with some defvar and defun. Have added some functionality > > > > for comments, and put everything in the following function definition. > > > > (defun rich-annotation-tools () > > > > "Aggregates annotation tools for comments." > > > > (rich-annotation-font-weight) > > > > (rich-annotation-low-contrast) > > > > (rich-annotation-keytrigger)) > > > > I would expect to add "(rich-annotation-tools)" in define-minor-mode. Would I introduce it > > > > within the "(when rich-minor-mode" part? > > > > ;;;###autoload > > > > (define-minor-mode rich-minor-mode > > > > "This is the description." > > :lighter "rich" ; indicator in mode-line > > (font-lock-remove-keywords nil rich-font-lock) > > > > (when rich-minor-mode > > (font-lock-add-keywords nil rich-font-lock 'append) > > (set (make-local-variable 'jit-lock-contextually) t) ) > > (rich-annotation-tools) > > > > (with-no-warnings (font-lock-fontify-buffer)) )) ) Could I get some clarification for using "(when rich-minor-mode" and when not to? ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-07 0:09 ` goncholden @ 2022-02-07 6:00 ` Eric Abrahamsen 2022-02-07 13:56 ` goncholden 0 siblings, 1 reply; 17+ messages in thread From: Eric Abrahamsen @ 2022-02-07 6:00 UTC (permalink / raw) To: help-gnu-emacs goncholden <goncholden@protonmail.com> writes: > ------ Original Message ------- > > On Saturday, February 5th, 2022 at 6:50 PM, goncholden <goncholden@protonmail.com> wrote: > >> ------- Original Message ------- >> >> On Saturday, February 5th, 2022 at 10:00 AM, goncholden via Users >> list for the GNU Emacs text editor help-gnu-emacs@gnu.org wrote: >> >> > I have made a minor-mode with some defvar and defun. Have added some functionality >> > >> > for comments, and put everything in the following function definition. >> > >> > (defun rich-annotation-tools () >> > >> > "Aggregates annotation tools for comments." >> > >> > (rich-annotation-font-weight) >> > >> > (rich-annotation-low-contrast) >> > >> > (rich-annotation-keytrigger)) >> > >> > I would expect to add "(rich-annotation-tools)" in >> > define-minor-mode. Would I introduce it >> > >> > within the "(when rich-minor-mode" part? >> > >> > ;;;###autoload >> > >> > (define-minor-mode rich-minor-mode >> > >> > "This is the description." >> > :lighter "rich" ; indicator in mode-line >> > (font-lock-remove-keywords nil rich-font-lock) >> > >> > (when rich-minor-mode >> > (font-lock-add-keywords nil rich-font-lock 'append) >> > (set (make-local-variable 'jit-lock-contextually) t) ) >> > (rich-annotation-tools) >> > >> > (with-no-warnings (font-lock-fontify-buffer)) )) ) > > Could I get some clarification for using "(when rich-minor-mode" and when not to? What's happening here is that, when you define a minor mode, it also defines a variable of the same name, which can be tested as a boolean to see if the minor mode is currently enabled or not. The only thing you need to know is that, when the minor mode is turned on or off, the variable is set *before* the body is run. So if you test the boolean variable in the body code of the minor mode, it will be t if you've just turned the mode on, and nil if you've just turned it off. For some reason, when I first started playing with minor modes, this struck me as backwards. I can no longer say why, exactly, but I remember it did. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-07 6:00 ` Eric Abrahamsen @ 2022-02-07 13:56 ` goncholden 2022-02-07 18:05 ` Michael Heerdegen ` (2 more replies) 0 siblings, 3 replies; 17+ messages in thread From: goncholden @ 2022-02-07 13:56 UTC (permalink / raw) To: Eric Abrahamsen; +Cc: help-gnu-emacs ------- Original Message ------- On Monday, February 7th, 2022 at 6:00 AM, Eric Abrahamsen <eric@ericabrahamsen.net> wrote: > goncholden goncholden@protonmail.com writes: > > > ------ Original Message ------- > > > > On Saturday, February 5th, 2022 at 6:50 PM, goncholden goncholden@protonmail.com wrote: > > > ------- Original Message ------- > > > On Saturday, February 5th, 2022 at 10:00 AM, goncholden via Users > > > list for the GNU Emacs text editor help-gnu-emacs@gnu.org wrote: > > > > > > > I have made a minor-mode with some defvar and defun. Have added some functionality > > > > for comments, and put everything in the following function definition. > > > > > > > > (defun rich-annotation-tools () > > > > "Aggregates annotation tools for comments." > > > > (rich-annotation-font-weight) > > > > (rich-annotation-low-contrast) > > > > (rich-annotation-keytrigger)) > > > > > > > > I would expect to add "(rich-annotation-tools)" in > > > > define-minor-mode. Would I introduce it > > > > within the "(when rich-minor-mode" part? > > > > > > > > ;;;###autoload > > > > > > > > (define-minor-mode rich-minor-mode > > > > > > > > "This is the description." > > > > :lighter "rich" ; indicator in mode-line > > > > (font-lock-remove-keywords nil rich-font-lock) > > > > > > > > (when rich-minor-mode > > > > (font-lock-add-keywords nil rich-font-lock 'append) > > > > (set (make-local-variable 'jit-lock-contextually) t) ) > > > > (rich-annotation-tools) > > > > > > > > (with-no-warnings (font-lock-fontify-buffer)) )) ) > > > > Could I get some clarification for using "(when rich-minor-mode" and when not to? > > What's happening here is that, when you define a minor mode, it also > defines a variable of the same name, which can be tested as a boolean to > see if the minor mode is currently enabled or not. > > The only thing you need to know is that, when the minor mode is turned > on or off, the variable is set before the body is run. So if you test > the boolean variable in the body code of the minor mode, it will be t if > you've just turned the mode on, and nil if you've just turned it off. > > For some reason, when I first started playing with minor modes, this > struck me as backwards. I can no longer say why, exactly, but I remember > it did. I am also struck about what happens when "(define-minor-mode rich-minor-mode" is used to disable the mode. I suppose that "(when richerenkov-minor-mode" would evaluate to false, but the other parts would evaluate. Would you be so kind to assist me a little bit, if you please? I normally use ultra-bold, but changed comments to use normal weight and included the functionality inside a minor mode like this. (defun rich-annotation-font-weight () "Makes normal font weight for comments." (set-face-attribute 'font-lock-comment-face nil :weight 'normal)) Is there a way that I can remember the :weight used initially, "(set-face-attribute 'default nil :height 160 :weight 'ultra-bold)" so I can set comments to ultra-bold again when the minor-mode is disabled. Then I added some additional functionality and put it here (defun rich-annotation-tools () "Aggregates annotation tools for comments." (rich-annotation-font-weight) (rich-annotation-low-contrast) (rich-annotation-keytrigger)) Here is my definition of the minor-mode ;;;###autoload (define-minor-mode rich-minor-mode "Colour Brace Marks according to their depth." :lighter "rich" ; indicator in mode-line (font-lock-remove-keywords nil rich-font-lock) (when rich-minor-mode (font-lock-add-keywords nil rich-font-lock 'append) (set (make-local-variable 'jit-lock-contextually) t) ) (rich-annotation-tools) (when font-lock-mode (if (fboundp 'font-lock-flush) (font-lock-flush) (with-no-warnings (font-lock-fontify-buffer)) )) ) Would it be better to introduce (rich-annotation-tools) in the "(when rich-minor-mode" part or outside it. To enable and disable the minor-mode, I have added ;;;###autoload (defun rich-minor-mode-enable () "Enable `rich-minor-mode'." (rich-minor-mode 1)) ;;;###autoload (defun rich-minor-mode-disable () "Disable `rich-minor-mode'." (rich-minor-mode 0)) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-07 13:56 ` goncholden @ 2022-02-07 18:05 ` Michael Heerdegen 2022-02-07 19:18 ` goncholden 2022-02-08 7:41 ` Kevin Vigouroux via Users list for the GNU Emacs text editor 2022-02-08 13:27 ` Stefan Monnier via Users list for the GNU Emacs text editor 2 siblings, 1 reply; 17+ messages in thread From: Michael Heerdegen @ 2022-02-07 18:05 UTC (permalink / raw) To: help-gnu-emacs goncholden <goncholden@protonmail.com> writes: > I am also struck about what happens when "(define-minor-mode > rich-minor-mode" is used to disable the mode. I suppose that "(when > richerenkov-minor-mode" would evaluate to false, but the other parts > would evaluate. Yes. Whenever you turn the mode on or off, the complete body is evaluated normally, with the mode variable bound to a non-nil value when the mode has been enabled and nil else. M-: (macroexpand-1 '(define-minor-mode rich-minor-mode ...)) RET to see the macroexpanded code of your definition - helps in understanding. Michael. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-07 18:05 ` Michael Heerdegen @ 2022-02-07 19:18 ` goncholden 2022-02-07 20:26 ` [External] : " Drew Adams 2022-02-07 21:40 ` Michael Heerdegen 0 siblings, 2 replies; 17+ messages in thread From: goncholden @ 2022-02-07 19:18 UTC (permalink / raw) To: Michael Heerdegen; +Cc: help-gnu-emacs ------- Original Message ------- On Monday, February 7th, 2022 at 6:05 PM, Michael Heerdegen <michael_heerdegen@web.de> wrote: > goncholden goncholden@protonmail.com writes: > > > I am also struck about what happens when "(define-minor-mode > > rich-minor-mode" is used to disable the mode. I suppose that "(when > > richerenkov-minor-mode" would evaluate to false, but the other parts > > would evaluate. > > Yes. Whenever you turn the mode on or off, the complete body is > evaluated normally, with the mode variable bound to a non-nil value when > the mode has been enabled and nil else. > > M-: (macroexpand-1 '(define-minor-mode rich-minor-mode ...)) RET to see > the macroexpanded code of your definition - helps in understanding. > > Michael. Am not sure whether I am executing your suggestion good. What should I look for? -------- Debugger entered--Lisp error: (wrong-type-argument stringp \.\.\.) string-match("\\bARG\\b" \.\.\. nil) easy-mmode--mode-docstring(\.\.\. "Rich minor mode" rich-minor-mode-map) #f(compiled-function (mode doc &optional init-value lighter keymap &rest body) #<bytecode 0x1578375e6509>)(rich-minor-mode \.\.\.) apply(#f(compiled-function (mode doc &optional init-value lighter keymap &rest body) #<bytecode 0x1578375e6509>) (rich-minor-mode \.\.\.)) macroexpand-1((define-minor-mode rich-minor-mode \.\.\.)) eval((macroexpand-1 '(define-minor-mode rich-minor-mode \.\.\.)) t) eval-expression((macroexpand-1 '(define-minor-mode rich-minor-mode \.\.\.)) nil nil 127) funcall-interactively(eval-expression (macroexpand-1 '(define-minor-mode rich-minor-mode \.\.\.)) nil nil 127) call-interactively(eval-expression nil nil) command-execute(eval-expression) ^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [External] : Re: Adding functionality to a minor mode 2022-02-07 19:18 ` goncholden @ 2022-02-07 20:26 ` Drew Adams 2022-02-07 20:38 ` goncholden 2022-02-07 21:40 ` Michael Heerdegen 1 sibling, 1 reply; 17+ messages in thread From: Drew Adams @ 2022-02-07 20:26 UTC (permalink / raw) To: goncholden, Michael Heerdegen; +Cc: help-gnu-emacs@gnu.org > Am not sure whether I am executing your suggestion good. > What should I look for? > > Debugger entered--Lisp error: (wrong-type-argument stringp \.\.\.) > string-match("\\bARG\\b" \.\.\. nil) ... > macroexpand-1((define-minor-mode rich-minor-mode \.\.\.)) I'm not following this thread, but it looks like you passed a symbol `...' as the doc-string argument. That arg needs to be a string. See `C-h f define-minor-mode'. ^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [External] : Re: Adding functionality to a minor mode 2022-02-07 20:26 ` [External] : " Drew Adams @ 2022-02-07 20:38 ` goncholden 2022-02-07 20:59 ` Drew Adams 0 siblings, 1 reply; 17+ messages in thread From: goncholden @ 2022-02-07 20:38 UTC (permalink / raw) To: Drew Adams; +Cc: Michael Heerdegen, help-gnu-emacs@gnu.org ------ Original Message ------- On Monday, February 7th, 2022 at 8:26 PM, Drew Adams <drew.adams@oracle.com> wrote: > Am not sure whether I am executing your suggestion good. > > What should I look for? > > Debugger entered--Lisp error: (wrong-type-argument stringp \.\.\.) > > string-match("\\bARG\\b" \.\.\. nil) ... > macroexpand-1((define-minor-mode rich-minor-mode \.\.\.)) I'm not following this thread, but it looks like you passed a symbol `...' as the doc-string argument. That arg needs to be a string. See` C-h f define-minor-mode'. Am figuring out "(when rich-minor-mode" works. Looks like it evaluates false when one calls "(rich-minor-mode 1)". It was suggested to use macroexpand to help my understanding. ^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: [External] : Re: Adding functionality to a minor mode 2022-02-07 20:38 ` goncholden @ 2022-02-07 20:59 ` Drew Adams 0 siblings, 0 replies; 17+ messages in thread From: Drew Adams @ 2022-02-07 20:59 UTC (permalink / raw) To: goncholden; +Cc: Michael Heerdegen, help-gnu-emacs@gnu.org Please quote mail you're replying to properly. It's not clear who said what in your reply to my reply. Thx. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-07 19:18 ` goncholden 2022-02-07 20:26 ` [External] : " Drew Adams @ 2022-02-07 21:40 ` Michael Heerdegen 2022-02-07 22:15 ` goncholden 1 sibling, 1 reply; 17+ messages in thread From: Michael Heerdegen @ 2022-02-07 21:40 UTC (permalink / raw) To: help-gnu-emacs goncholden <goncholden@protonmail.com> writes: > > M-: (macroexpand-1 '(define-minor-mode rich-minor-mode ...)) RET to see > > the macroexpanded code of your definition - helps in understanding. > Debugger entered--Lisp error: (wrong-type-argument stringp \.\.\.) You should of course macroexpand your complete definition, not the one I abbreviated. Michael. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-07 21:40 ` Michael Heerdegen @ 2022-02-07 22:15 ` goncholden 2022-02-07 22:26 ` Michael Heerdegen 0 siblings, 1 reply; 17+ messages in thread From: goncholden @ 2022-02-07 22:15 UTC (permalink / raw) To: Michael Heerdegen; +Cc: help-gnu-emacs ------- Original Message ------- On Monday, February 7th, 2022 at 9:40 PM, Michael Heerdegen <michael_heerdegen@web.de> wrote: > goncholden goncholden@protonmail.com writes: > > > > M-: (macroexpand-1 '(define-minor-mode rich-minor-mode ...)) RET to see > > > > > > the macroexpanded code of your definition - helps in understanding. > > > > > > Debugger entered--Lisp error: (wrong-type-argument stringp \.\.\.) > > You should of course macroexpand your complete definition, not the one I abbreviated. > > Michael. I would have to copy the whole function on the minibuffer. Is there an easier way to call macroexpand on rich-minor-mode? ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-07 22:15 ` goncholden @ 2022-02-07 22:26 ` Michael Heerdegen 0 siblings, 0 replies; 17+ messages in thread From: Michael Heerdegen @ 2022-02-07 22:26 UTC (permalink / raw) To: help-gnu-emacs goncholden <goncholden@protonmail.com> writes: > I would have to copy the whole function on the minibuffer. > Is there an easier way to call macroexpand on rich-minor-mode? You mean, to macroexpand the mode definition? If you don't want to use the minibuffer, use either use the *scratch* buffer (hit C-x C-e with cursor at the end of an expression to be evaluated; with prefix arg, the result is inserted) -- or M-x ielm, if you prefer something shell-like. Michael. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-07 13:56 ` goncholden 2022-02-07 18:05 ` Michael Heerdegen @ 2022-02-08 7:41 ` Kevin Vigouroux via Users list for the GNU Emacs text editor 2022-02-08 13:27 ` Stefan Monnier via Users list for the GNU Emacs text editor 2 siblings, 0 replies; 17+ messages in thread From: Kevin Vigouroux via Users list for the GNU Emacs text editor @ 2022-02-08 7:41 UTC (permalink / raw) To: help-gnu-emacs goncholden <goncholden@protonmail.com> writes: > I am also struck about what happens when "(define-minor-mode rich-minor-mode" is > used to disable the mode. I suppose that "(when richerenkov-minor-mode" would > evaluate to false, but the other parts would evaluate. > > Would you be so kind to assist me a little bit, if you please? I get the impression from reading your code, even though I’m a beginner, that you want to burn through the steps. > > I normally use ultra-bold, but changed comments to use normal weight and included the functionality > inside a minor mode like this. With the “little” knowledge gleaned from the manual, it would seem to me that things are reversed in your design. • Major modes are designed to be customizable using hooks and minor modes. • Minor modes are generally independent of a major mode. > > (defun rich-annotation-font-weight () > "Makes normal font weight for comments." > (set-face-attribute 'font-lock-comment-face nil :weight 'normal)) > > Is there a way that I can remember the :weight used initially, > "(set-face-attribute 'default nil :height 160 :weight 'ultra-bold)" > so I can set comments to ultra-bold again when the minor-mode is disabled. Comments seems to be handled in a major mode using “Font Lock mode”. > > Then I added some additional functionality and put it here > > (defun rich-annotation-tools () > "Aggregates annotation tools for comments." > (rich-annotation-font-weight) > (rich-annotation-low-contrast) > (rich-annotation-keytrigger)) > I couldn’t explain why but it seems strange: I don’t really see the point of forming a function just to group functions. > Here is my definition of the minor-mode > > ;;;###autoload > (define-minor-mode rich-minor-mode > "Colour Brace Marks according to their depth." > :lighter "rich" ; indicator in mode-line > > (font-lock-remove-keywords nil rich-font-lock) > > (when rich-minor-mode > (font-lock-add-keywords nil rich-font-lock 'append) > (set (make-local-variable 'jit-lock-contextually) t) ) > > (rich-annotation-tools) > > (when font-lock-mode > (if (fboundp 'font-lock-flush) > (font-lock-flush) > (with-no-warnings (font-lock-fontify-buffer)) )) > It seems that you are defining a minor mode when you should be defining a major mode (or derived mode). > ) > > Would it be better to introduce (rich-annotation-tools) in the > "(when rich-minor-mode" part or outside it. > > To enable and disable the minor-mode, I have added > > ;;;###autoload > (defun rich-minor-mode-enable () > "Enable `rich-minor-mode'." > (rich-minor-mode 1)) > > ;;;###autoload > (defun rich-minor-mode-disable () > "Disable `rich-minor-mode'." > (rich-minor-mode 0)) > -- Kevin Vigouroux Best regards ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-07 13:56 ` goncholden 2022-02-07 18:05 ` Michael Heerdegen 2022-02-08 7:41 ` Kevin Vigouroux via Users list for the GNU Emacs text editor @ 2022-02-08 13:27 ` Stefan Monnier via Users list for the GNU Emacs text editor 2022-02-08 17:05 ` goncholden 2 siblings, 1 reply; 17+ messages in thread From: Stefan Monnier via Users list for the GNU Emacs text editor @ 2022-02-08 13:27 UTC (permalink / raw) To: help-gnu-emacs > Is there a way that I can remember the :weight used initially, > "(set-face-attribute 'default nil :height 160 :weight 'ultra-bold)" > so I can set comments to ultra-bold again when the minor-mode is disabled. Rather than `set-face-attribute` you want to go through Customize's face settings. E.g. you can get the above behavior using a "Custom theme", which you can then enable&disable at will. Custom themes are conceptually very similar to (global) minor modes. Stefan ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-08 13:27 ` Stefan Monnier via Users list for the GNU Emacs text editor @ 2022-02-08 17:05 ` goncholden 2022-02-08 22:47 ` goncholden 0 siblings, 1 reply; 17+ messages in thread From: goncholden @ 2022-02-08 17:05 UTC (permalink / raw) To: Stefan Monnier; +Cc: help-gnu-emacs Sent with ProtonMail Secure Email. ------- Original Message ------- On Tuesday, February 8th, 2022 at 1:27 PM, Stefan Monnier via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org> wrote: > Is there a way that I can remember the :weight used initially, > > "(set-face-attribute 'default nil :height 160 :weight 'ultra-bold)" > > so I can set comments to ultra-bold again when the minor-mode is disabled. Rather than `set-face-attribute` you want to go through Customize's face settings. E.g. you can get the above behavior using a "Custom theme", which you can then enable&disable at will. Custom themes are conceptually very similar to (global) minor modes. Stefan I already use modus-themes. How does custom theme work? Have done this way by calling (set-face-attribute 'font-lock-comment-face nil :weight (face-attribute 'default :weight)) Here is the code ;;;###autoload (define-minor-mode rich-minor-mode "Colour Comments." :lighter "rich" ; indicator in mode-line (font-lock-remove-keywords nil rich-font-lock) (set-face-attribute 'font-lock-comment-face nil :weight (face-attribute 'default :weight)) (when rich-minor-mode ; evaluates true when mode enabled (font-lock-add-keywords nil rich-font-lock 'append) (set (make-local-variable 'jit-lock-contextually) t) (rich-annotation-tools)) (when font-lock-mode (if (fboundp 'font-lock-flush) (font-lock-flush) (with-no-warnings (font-lock-fontify-buffer)) )) ) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Adding functionality to a minor mode 2022-02-08 17:05 ` goncholden @ 2022-02-08 22:47 ` goncholden 0 siblings, 0 replies; 17+ messages in thread From: goncholden @ 2022-02-08 22:47 UTC (permalink / raw) To: goncholden; +Cc: Stefan Monnier, help-gnu-emacs ------- Original Message ------- On Tuesday, February 8th, 2022 at 5:05 PM, goncholden <goncholden@protonmail.com> wrote: > Sent with ProtonMail Secure Email. > ------- Original Message ------- > On Tuesday, February 8th, 2022 at 1:27 PM, Stefan Monnier via Users list for the GNU Emacs text editor help-gnu-emacs@gnu.org wrote: > > Is there a way that I can remember the :weight used initially, > > "(set-face-attribute 'default nil :height 160 :weight 'ultra-bold)" > > so I can set comments to ultra-bold again when the minor-mode is disabled. > Rather than `set-face-attribute` you want to go through Customize's > face settings. > E.g. you can get the above behavior using a "Custom theme", which you > can then enable&disable at will. > Custom themes are conceptually very similar to (global) minor modes. Stefan, my setup involved using modus-vivendi to which I add a bold font for everything. But I want a special customisation for comments. Customisations include having a normal weight, and having a keybinding that changes the contrast ratio between the comment colour and the background. My first thought has been to define a minor mode. But from the comments from this mailing list, I has been put forward to mo that what I am doing could be a very non-standard customisation. What would be the most appropriate way to customise comments as described. I would be grateful for examples on how I should approach the task. Cholden ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2022-02-08 22:47 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-02-05 10:00 Adding functionality to a minor mode goncholden via Users list for the GNU Emacs text editor 2022-02-05 18:50 ` goncholden 2022-02-07 0:09 ` goncholden 2022-02-07 6:00 ` Eric Abrahamsen 2022-02-07 13:56 ` goncholden 2022-02-07 18:05 ` Michael Heerdegen 2022-02-07 19:18 ` goncholden 2022-02-07 20:26 ` [External] : " Drew Adams 2022-02-07 20:38 ` goncholden 2022-02-07 20:59 ` Drew Adams 2022-02-07 21:40 ` Michael Heerdegen 2022-02-07 22:15 ` goncholden 2022-02-07 22:26 ` Michael Heerdegen 2022-02-08 7:41 ` Kevin Vigouroux via Users list for the GNU Emacs text editor 2022-02-08 13:27 ` Stefan Monnier via Users list for the GNU Emacs text editor 2022-02-08 17:05 ` goncholden 2022-02-08 22:47 ` goncholden
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).