all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: goncholden <goncholden@protonmail.com>
To: Eric Abrahamsen <eric@ericabrahamsen.net>
Cc: help-gnu-emacs@gnu.org
Subject: Re: Adding functionality to a minor mode
Date: Mon, 07 Feb 2022 13:56:52 +0000	[thread overview]
Message-ID: <RHmsTTPOdg581D8XUDSsdjLdnC821jaMocUhiOmhjoiQNIePGcMFAEGeKOuBjBfFOKPcH-BWoSBuo5P3Y6JCh8mEW7TTe58FJvJp_UasZEU=@protonmail.com> (raw)
In-Reply-To: <8735kvtdvh.fsf@ericabrahamsen.net>


------- 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))










  reply	other threads:[~2022-02-07 13:56 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='RHmsTTPOdg581D8XUDSsdjLdnC821jaMocUhiOmhjoiQNIePGcMFAEGeKOuBjBfFOKPcH-BWoSBuo5P3Y6JCh8mEW7TTe58FJvJp_UasZEU=@protonmail.com' \
    --to=goncholden@protonmail.com \
    --cc=eric@ericabrahamsen.net \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.