From: Tatsu Takamaro <tatsu.takamaro@gmail.com>
To: Drew Adams <drew.adams@oracle.com>,
"help-gnu-emacs@gnu.org" <help-gnu-emacs@gnu.org>
Subject: Re: [External] : Q3 - how to delete by words, not cut?
Date: Fri, 20 Dec 2024 03:19:08 +0300 [thread overview]
Message-ID: <0004b28d-9f74-bc89-45db-d4a286d2a81a@gmail.com> (raw)
In-Reply-To: <DS7PR10MB5232712BDE0470B351BB4F39F3062@DS7PR10MB5232.namprd10.prod.outlook.com>
Got it! Just needed to use a function name that I defined in the first
line of "defun..."
"C-S-<left>" #'tt-delword-backward
"C-S-<right>" #'tt-delword-forward
So easy! I entangled myself trying to find out "some way to bind a whole
piece of code to a key".
*
*
*>>You need to read up on `interactive'. *
Yes, you're right. The word "interactive" played a trick on me first.
English is not my native and the docs could be tricky sometimes. I
learned Lisp (it was Scheme (script fu), a dialect of Lisp to create
plugins for GIMP) many years ago, rather unusual language and that's
what makes it interesting.
Thanks for your patience in explaining! I'm grateful to you and to all
who has been answering!
So, now there is only one question stays unanswered. I posted it under
title "Q4 - the bottom edge of Emacs doesn't stick to the taskbar", no
answers for now.
чт, 19.12.2024 5:31, Drew Adams пишет:
>>> Did you try the `my-backward-delete-word' command I defined for you?
>> Sorry, I didn't try it before. Because I didn't understand it
>> by that time (and I have a habbit not to run any code until I
>> understand it good enough).
> A good habit! No reason to be sorry for that.
>
>> But now I dived into it and got it...
>> Though the function logic is clear, the key binding won't work.
>> I tried different keys. Here is the current state:
>>
>> (defun tt-delword-backward (arg)
>> "Delete backward arg words. (default 1)"
>> (interactive "C-;") ; <==============
>> (let ((opt (point)))
>> (backward-word arg)
>> (delete-region opt (point))))
>>
>> (defun tt-delword-forward (arg)
>> "Delete forward arg words. (default 1)"
>> (interactive "C-'") ; <==============
>> (let ((opt (point)))
>> (forward-word arg)
>> (delete-region opt (point))))
>>
>> I tried to set (interactive "b") and (interactive "f")
>> for backward and forward respectively.
> No. You need to read up on `interactive'.
> This is what I suggested:
>
> (defun my-backward-delete-word (arg)
> "Delete backard ARG words.
> ARG is the numeric prefix arg (default 1)."
> (interactive "p")
> (let ((opt (point)))
> (backward-word arg)
> (delete-region opt (point))))
>
> The "p" arg for `interactive' passes the current
> numeric prefix arg that a user supplies as the
> argument (ARG). That defaults to 1, if the user
> doesn't explicitly provide any prefix arg.
>
> So with no arg it deletes one word (backward).
> With `M-1' it does the same thing. With `M-2'
> it deletes two words, etc.
>
> This is common for Emacs commands that act on
> things from the cursor position - you can use
> the same command and key binding to act on N
> things by using `C-u N' (or `M-n' for small #s).
>
>> When "C-;" is set the minibuffers says it's undefined, when letters are set it just type letters. The call by M-x doesn't do the job either.
> Fix your `interactive' argument. It's not a
> key description. `interactive' has nothing to
> do with any key binding. It specifies how
> arguments (in this case argument ARG) are
> provided when the function's invoked interactively.
>
> I followed that command definition with this:
>
> Bind it to some key.
>
> IOW: you define a command and you bind that
> command to a key (if you want). If not bound
> to a key you can still invoke it, with `M-x'.
>
> The Elisp manual is your friend...
>
> https://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Commands.html
>
> https://www.gnu.org/software/emacs/manual/html_node/elisp/Using-Interactive.html
>
>
next prev parent reply other threads:[~2024-12-20 0:19 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-14 23:57 Q3 - how to delete by words, not cut? Tatsu Takamaro
2024-12-15 2:42 ` [External] : " Drew Adams
2024-12-15 2:45 ` Drew Adams
2024-12-16 23:26 ` Tatsu Takamaro
2024-12-17 0:01 ` Drew Adams
2024-12-17 0:26 ` Tatsu Takamaro
2024-12-17 2:28 ` Drew Adams
2024-12-18 23:54 ` Tatsu Takamaro
2024-12-19 2:31 ` Drew Adams
2024-12-20 0:19 ` Tatsu Takamaro [this message]
2024-12-20 1:38 ` Drew Adams
2024-12-20 2:18 ` [External] : Q3 - how to delete by words, not cut? --- about Q4 - the bottom edge of Emacs doesn't stick to the taskba Tatsu Takamaro
2024-12-20 15:34 ` Drew Adams via Users list for the GNU Emacs text editor
2024-12-17 8:38 ` [External] : Q3 - how to delete by words, not cut? Vagn Johansen
2024-12-17 4:06 ` Jean Louis
2024-12-17 4:12 ` Drew Adams
2024-12-17 4:25 ` Jean Louis
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.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0004b28d-9f74-bc89-45db-d4a286d2a81a@gmail.com \
--to=tatsu.takamaro@gmail.com \
--cc=drew.adams@oracle.com \
--cc=help-gnu-emacs@gnu.org \
/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.
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).