From: Colin Yates <colin.yates@gmail.com>
To: Joost Kremers <joost.m.kremers@gmail.com>
Cc: help-gnu-emacs@gnu.org
Subject: Re: Doing things only in a particular mode
Date: Mon, 24 Aug 2015 18:30:34 +0100 [thread overview]
Message-ID: <m2lhd0mw5h.fsf@gmail.com> (raw)
In-Reply-To: <slrnmtmke8.ssv.joost.m.kremers@j.kremers4.news.arnhem.chello.nl>
Many thanks, this was exactly the type of info I was looking for. The
name of the hook was valuable but advice on how to find the name was
ever more appreciated.
Thanks Joost!
Joost Kremers writes:
> Colin Yates wrote:
>> (newbie warning).
>>
>> So I understand about (add-hook...) but I can't find the hook I
>> want. Basically, I have visual-line-mode turned on globally, but I want
>> to disable it when I view the headers in mu4e.
>>
>> The buffer is called *mu4e-headers* and I can see the major mode is
>> mu4e-headers but the following code has no effect:
>>
>> (add-hook 'mu4e-headers-hook
>> (lambda ()
>> (visual-line-mode 0)))
>
> Well, the hook is actually called `mu4e-headers-mode-hook`, so if you
> use that, it should work.
>
> To check if a variable exists, or find one if you have some idea what it
> might be called, you can use `C-h v`, type the name and hit RET. TAB
> completion works, so typing e.g., `C-h v mu4e-headers-hook TAB` would
> have found the right variable for you.
>
> BTW, the general advice is to not use lambdas in hook variables, just
> function names. You might not really care, but if you want to be
> pedantically correct about things, you could write:
>
> (defun my-mu4e-headers-function () ; use whatever name you see fit
> (visual-line-mode -1))
> (add-hook 'my-mu4e-headers-function)
>
> Note that I use `-1` as the argument to `visual-line-mode`. IIRC an
> argument of 0 would actually activate the mode.
>
>> I am not sure how 'hooks' are created - I searched through the source
>> code for my4e-headers-hook but couldn't find it.
>
> They are created automatically when you create a major or minor mode
> with `define-derived-mode` or `define-minor-mode`, so that's why you
> couldn't find it by grepping the source.
>
>> Assuming this is the right approach, how can I say 'when the major mode
>> is X then do this'. What is the idiomatic Emacs way?
>
> Well, one can argue about the meaning of "idiomatic", but here's how one
> could do it:
>
> (when (eq major-mode 'mu4e-headers-mode)
> (do this)
> (and that))
>
> Note, however, that in a mode major hook, there's no need to use this,
> because if the mode were anything else, the hook wouldn't be run. It
> could be useful in an Elisp program or in a (function called in a) minor
> mode hook, though.
>
> HTH
--
Sent with my mu4e
next prev parent reply other threads:[~2015-08-24 17:30 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.0.1440427806.19573.help-gnu-emacs@gnu.org>
2015-08-24 15:18 ` Doing things only in a particular mode Dan Espen
2015-08-24 16:28 ` Colin Yates
2015-08-24 17:32 ` John Mastro
2015-08-25 1:30 ` Emanuel Berg
2015-08-25 1:55 ` Emanuel Berg
2015-08-27 5:17 ` Marcin Borkowski
2015-08-24 17:18 ` Joost Kremers
2015-08-24 17:30 ` Colin Yates [this message]
2015-08-24 19:47 ` Jorge A. Alfaro-Murillo
2015-08-26 13:54 ` Stefan Monnier
2015-08-26 19:35 ` Jorge A. Alfaro-Murillo
2015-08-26 20:09 ` Jorge A. Alfaro-Murillo
2015-08-27 13:53 ` Stefan Monnier
2015-08-24 14:49 Colin Yates
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=m2lhd0mw5h.fsf@gmail.com \
--to=colin.yates@gmail.com \
--cc=help-gnu-emacs@gnu.org \
--cc=joost.m.kremers@gmail.com \
/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.