all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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



  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.