emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Phil Sainty <psainty@orcon.net.nz>
To: emacs-orgmode@gnu.org
Cc: Nicolas Goaziou <mail@nicolasgoaziou.fr>,
	Kaushal Modi <kaushal.modi@gmail.com>
Subject: Re: [RFC] Replace lambda functions added to org-mode-hook with named funcs
Date: Tue, 01 Oct 2019 18:00:18 +1300	[thread overview]
Message-ID: <8946ae80757155f64bd5dcaddf547732@webmail.orcon.net.nz> (raw)

On Fri, Oct 5, 2018, 6:42 AM Nicolas Goaziou <address@hidden> wrote:
> Kaushal Modi <address@hidden> writes:
> > I propose to replace such lamba functions with named functions.
> > Here's an example of diff on maint branch, after making one such change:
> >
> > -;; Remove overlays when changing major mode
> > -(add-hook 'org-mode-hook
> > -      (lambda () (add-hook 'change-major-mode-hook
> > -                   'org-show-block-all 'append 'local)))
> > +(defun org--unfold-all-blocks-on-major-mode-change ()
> > +  "Remove overlays when changing major mode."
> > +  (add-hook 'change-major-mode-hook #'org-show-block-all 'append 'local))
> > +(add-hook 'org-mode-hook #'org--unfold-all-blocks-on-major-mode-change)
> 
> If that's a function added to `org-mode-hook', it is not useful to
> add "on major mode change".

Certainly it's useful.  Or at least in general it's a common *pattern*
for a major mode to add a function to `change-major-mode-hook' so that
if the user changes from that major mode to some other major mode, the
function will be called and can put the buffer into a sensible state
before the replacement mode function is called.

The only curious thing about it to me is that this code is being run
via `org-mode-hook' rather than in the `org-mode' body; but maybe
there's some reason for that.


Regarding the general issue:

Grep shows me all of the following instances in the master branch
(commit d215c3a8c0b4c027), where a lambda is added to a hook variable
(a few of them in the form of commented suggestions to the user).

It's never a good idea; all of these should be changed to use named
functions, IMO.


-Phil


-*- grep -*-
./ob-core.el:1429:(add-hook 'org-mode-hook
./ob-haskell.el:66:  (add-hook 'inferior-haskell-hook
./ol-w3m.el:171:(add-hook
./ol-w3m.el:176:(add-hook
./org-agenda.el:2246:      (add-hook 'filter-buffer-substring-functions
./org-agenda.el:2935:	(add-hook
./org-attach.el:697:;; (add-hook
./org-compat.el:813:     (add-hook 'imenu-after-jump-hook
./org-compat.el:817:     (add-hook 'org-mode-hook
./org-compat.el:880:     (add-hook 'speedbar-visiting-tag-hook
./org-crypt.el:144:      (add-hook 'auto-save-hook
./org-crypt.el:267:  (add-hook
./org-ctags.el:196:(add-hook 'org-mode-hook
./org-ctags.el:59:;;    (add-hook 'org-mode-hook
./org-indent.el:188:	(add-hook 'filter-buffer-substring-functions
./org-mouse.el:1085:(add-hook 'org-agenda-mode-hook
./org-mouse.el:856:(add-hook 'org-mode-hook
./org-src.el:745:  (add-hook \\='org-src-mode-hook
./org.el:15697:	(add-hook 'after-save-hook
./org.el:18978:(add-hook 'occur-mode-find-occurrence-hook
./org.el:21221:(add-hook 'org-mode-hook     ;remove overlays when 
changing major mode
./org.el:2916:  (add-hook \\='org-capture-mode-hook

             reply	other threads:[~2019-10-01  5:00 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-01  5:00 Phil Sainty [this message]
2019-10-06  9:54 ` [RFC] Replace lambda functions added to org-mode-hook with named funcs stardiviner
  -- strict thread matches above, loose matches on Subject: below --
2018-10-04 15:10 Kaushal Modi
2018-10-05 10:42 ` Nicolas Goaziou
2018-10-06 13:42   ` Kaushal Modi

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

  List information: https://www.orgmode.org/

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

  git send-email \
    --in-reply-to=8946ae80757155f64bd5dcaddf547732@webmail.orcon.net.nz \
    --to=psainty@orcon.net.nz \
    --cc=emacs-orgmode@gnu.org \
    --cc=kaushal.modi@gmail.com \
    --cc=mail@nicolasgoaziou.fr \
    /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 public inbox

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

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