[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Making a function than can only be used interactively
From: |
Emanuel Berg |
Subject: |
Re: Making a function than can only be used interactively |
Date: |
Fri, 08 Jul 2022 05:40:44 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) |
Here is an example of a more complicated interactive spec,
(interactive
`(,(read-string "search: [repeat] ")
,(or (equal current-prefix-arg '( 4))
(equal current-prefix-arg '(64)) )
,(or (equal current-prefix-arg '(16))
(equal current-prefix-arg '(64)) )
,@(if (use-region-p)
(list (region-beginning) (region-end))
(list (point-min) (point-max)) )))
Again, eval the `interactive'!
The signature is
(defun wrap-search (str &optional case rev beg end)
Especially because 'case' and 'rev' both depends on the
`prefix-arg' I wonder if it's impossible to do with just the
interactive string, even ...
Other than that it isn't so difficult, a string is "s",
a number is "n" and the region is "r".
Note the use of the backtick just to be able to
do ,@ ... that's pretty common.
Another situation is this
(let*((case-fold-search (not case))
(pos (point))
(data (if rev (list #'search-backward end beg)
(list #'search-forward beg end) ))
(search-f (car data))
(search-beg (cadr data))
(search-end (caddr data)) ) ...)
Here we see that instead of doing (if rev ... ) three times we
stash the configuration (here 3 vars) based on 'rev', then use
`car' and the "forbidden" `cadr' and `caddr' to get from that.
(Forbidden as you should it has been said only use vanilla `car'
and `cdr', with 2 or more elements instead of `car' one should
do `nth.'.
But I think the argument-free cars are interesting I
guess ....
Full source:
https://dataswamp.org/~incal/emacs-init/wrap-search.el
--
underground experts united
https://dataswamp.org/~incal
- Re: Making a function than can only be used interactively, (continued)
- Re: Making a function than can only be used interactively, Stefan Monnier, 2022/07/04
- Re: Making a function than can only be used interactively, carlmarcos, 2022/07/04
- Re: Making a function than can only be used interactively, Stefan Monnier, 2022/07/04
- Re: Making a function than can only be used interactively, Jean Louis, 2022/07/05
- Re: Making a function than can only be used interactively, Christopher Dimech, 2022/07/06
- Re: Making a function than can only be used interactively, Jean Louis, 2022/07/07
- Re: Making a function than can only be used interactively, Christopher Dimech, 2022/07/07
- Re: Making a function than can only be used interactively, carlmarcos, 2022/07/07
- Re: Making a function than can only be used interactively, Emanuel Berg, 2022/07/07
- Re: Making a function than can only be used interactively, carlmarcos, 2022/07/07
- Re: Making a function than can only be used interactively,
Emanuel Berg <=
- Re: Making a function than can only be used interactively, Yuri Khan, 2022/07/08
- Re: Making a function than can only be used interactively, Emanuel Berg, 2022/07/08
- Re: Making a function than can only be used interactively, Yuri Khan, 2022/07/08
- Re: Making a function than can only be used interactively, carlmarcos, 2022/07/08
- Re: Making a function than can only be used interactively, Emanuel Berg, 2022/07/08
- Re: Making a function than can only be used interactively, Emanuel Berg, 2022/07/10
- Re: Making a function than can only be used interactively, carlmarcos, 2022/07/08
- Re: Making a function than can only be used interactively, Christopher Dimech, 2022/07/08
- Message not available
- Re: Making a function than can only be used interactively, carlmarcos, 2022/07/08
- Re: Making a function than can only be used interactively, Christopher Dimech, 2022/07/08