| Age | Commit message (Collapse) | Author |
|
|
|
This avoids one call to `llama--collect' per ,unquote.
|
|
|
|
When the file was evaluated, the previous code worked, but when the
compiled file is loaded instead, then (eq '## X) where X's value is
a "runtime '##", returns nil.
|
|
|
|
|
|
Make that the default, but do so via a new `llama-llama-macro' face
to make it customizable. Rename `llama-macro' to `llama-\#\#-macro'
for consistency.
|
|
|
|
This is necessary at the beginning of a line,
as otherwise `outline-minor-mode' gets confused.
|
|
Finish [1: cea812d].
1: 2024-05-20 cea812d16129749deb524771e615a4a831604a83
Correct outdated examples
|
|
|
|
|
|
Only highlight arguments within macro body. Do not highlight quoted
arguments. While `##' or `llama' is highlighted instantly, arguments
are only highlighted once closing parenthesis is in place.
While this new variant takes care to rehighlight multiline constructs,
it does not ensure correct identification of multiline constructs.
Doing the latter seems too expensive.
|
|
|
|
Use the same face as for `lambda' not the same as for `##'. The reason
that `##' uses another face is that it might appear right next to
another symbol using `font-lock-keyword-face' with no space in between.
By using another face, we prevent them from looking like one symbol.
The same cannot happen for `llama'.
|
|
|
|
Suggested-by: L. Andrew <flandrew@tutanota.com>
|
|
Suggested-by: L. Andrew <flandrew@tutanota.com>
|
|
|
|
|
|
|
|
|
|
|
|
To do so, merge the code-paths for regular lists, dotted-lists and
vectors.
|
|
|
|
Show them in the same order as they appear in the code.
Suggested-by: L. Andrew <flandrew@tutanota.com>
|
|
|
|
|
|
Previously only the last cons-cell was returned. Now the expression is
returned unchanged. That means that we still do not remove explicit
unused arguments from the returned value. As before these have to be
placed elsewhere.
|
|
I'll have to wait until the next release to be able to add this again.
Closes #2.
|
|
Closes #1.
|
|
|
|
|
|
Emacs 26.1 is needed for `mapcan', but I wouldn't want to support
older releases anyway.
|
|
|
|
|
|
|
|
|
|
Re https://github.com/minad/vertico/discussions/481.
|
|
|
|
|
|
"Delete" and "remove" are the terms usually used in Emacs/Lisp,
and the former seems more fitting, since I tend to think of this
as a destructive transformation.
|
|
The order should not matter, but a user reported privately that on
Emacs 29.3 it does; we get an "Invalid face box" error otherwise.
|
|
|
|
|
|
The assert was needlessly limited to the first argument, to catch
specifically `%1'vs`%' and `&1'vs`&' (but also, e.g., `%1'vs`_&'). Now
be also detect `%N'vs`&N', `%N'vs`_%N' and even conflicts were multiple
aspects differ (e.g., `%2'vs`_&2').
We could just use `%N' in the arglist when both `%N' and `_%N' appear
in the body. Since `_%N' is dropped from the body, that wouldn't result
in an unbound variable error, as would happen in other cases. But that
would both complicate the implementation and hide a user mistake, which
could be of consequence (e.g., if they actually meant `_%N+1').
|
|
Previously we turned
(##list %1 &3)
into
(lambda (%1 _%2 &optional &3) (list %1 &3))
now we use
(lambda (%1 &optional _&2 &3) (list %1 &3))
The new approach is better because even if the first form would have
been "correct", the latter will nearly¹ always at least be "valid".
The same isn't true for the old approach. If we make an argument
mandatory that should be optional, and the callers does not pass that
argument, that's an error. These cases are several magnitudes more
likely.
¹ The exception being callers that check a functions *minimal* arity
to determine what arguments to pass. In the unlikely case that one
should ever encounter such a caller, one can use an explicit _%N,
as one previously would frequently have had to use _&N.
|
|
Using `seq-drop-while' would be nicer, but we want to avoid
dependencies.
|
|
|
|
|