GNU bug report logs -
#79178
[Improvement] Allow auto-insert to have functions as conditions
Previous Next
Full log
Message #8 received at 79178 <at> debbugs.gnu.org (full text, mbox):
> Date: Tue, 5 Aug 2025 18:16:48 +0200
> From: Mattias <mattias <at> kojin.tech>
>
> First contribution to emacs. This comes from the fact that I have a
> custom function that overrides auto-insert to fit my needs and I
> realised it was not a big change and could be merged into emacs directly.
>
> This small patch aims to allow any function acting as a predicate with
> no arguments to be used as a condition in auto-insert-alist
Thanks. Changes like this one should be called out in NEWS. In
addition, auto-insert is described in a manual (see
doc/misc/autotype.texi), which should be updated due to this change.
> Currently a condition can only be a regexp or a major-mode symbol but
> there's no real reason to not allow any predicate as a condition
This log message is incomplete: it lacks the record of the file and
the functions/variables which are modified by the patch. See "git
log" for examples of how we format commit log messages.
> +CONDITION may be a regexp that must match the new file's name, a symbol that
> +must match the major mode for this element to apply or a custom predicate that
> +takes no argument.
This addition makes the sentence too long and hard to read and grasp.
Suggest to break it in two:
CONDITION may be a regexp that must match the new file's name, or
a symbol that must match the major mode for this element to apply.
CONDITION could also be a predicate function of no arguments; Emacs
will insert the text if the predicate function returns non-nil,
> + ;; if `cond' is a lambda, don't split it but set `desc' to a custom string
> + (if (and (not (symbolp cond)) (functionp cond))
> + (setq desc "`lambda condition'")
> + (setq desc (cdr cond)
> + cond (car cond))))
> + (when (cond
> + ;; cond should be a major-mode variable
> + ((and (symbolp cond) (not (functionp cond)))
> + (derived-mode-p cond))
> +
> + ;; cond should be a predicate that takes no argument
> + ;; It can either be a named function or a lambda
> + ((functionp cond)
> + (funcall cond))
> +
> + ;; cond should be a regexp
Please be consistent, and quote 'cond' in all of these comments.
P.S. Since the number of the bug is now known, please mention the bug
number in the commit log message when you submit the updated patch.
This bug report was last modified 9 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.