* Print out my key-sequences
@ 2010-04-07 14:09 Andrea Crotti
2010-04-07 14:23 ` Peter Dyballa
0 siblings, 1 reply; 26+ messages in thread
From: Andrea Crotti @ 2010-04-07 14:09 UTC (permalink / raw)
To: help-gnu-emacs
I will have to do a presentation using Emacs in May, using Carbon Emacs
23 on OSX 10.6.
It would be really that while I type and do something it appears on the
screen what key-sequences I'm doing (C-M x C-c C-x C-o or whatever).
I know already that is possible to get the key sequences, what could be
a good way to show them?
Maybe using something like growl?
I looked for something useful some time ago but no luck...
Thanks
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-07 14:09 Print out my key-sequences Andrea Crotti
@ 2010-04-07 14:23 ` Peter Dyballa
2010-04-07 14:43 ` Andrea Crotti
0 siblings, 1 reply; 26+ messages in thread
From: Peter Dyballa @ 2010-04-07 14:23 UTC (permalink / raw)
To: Andrea Crotti; +Cc: help-gnu-emacs
Am 07.04.2010 um 16:09 schrieb Andrea Crotti:
> I know already that is possible to get the key sequences, what could
> be
> a good way to show them?
C-h l ?
--
Greetings
Pete
If you're not confused, you're not paying attention.
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-07 14:23 ` Peter Dyballa
@ 2010-04-07 14:43 ` Andrea Crotti
2010-04-07 15:07 ` suvayu ali
2010-04-07 15:46 ` Thierry Volpiatto
0 siblings, 2 replies; 26+ messages in thread
From: Andrea Crotti @ 2010-04-07 14:43 UTC (permalink / raw)
To: help-gnu-emacs
Peter Dyballa <Peter_Dyballa@Web.DE> writes:
>
> C-h l ?
Oh great I don't know how I've never seen it...
But that shows the keystrokes in another buffer, I would like to
- record the keystrokes while I type
- filter only the interesting ones (Meta and Control stuff)
- send them to some other program to display it nicely (I think growl
could be perfect for that with applescript)
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-07 14:43 ` Andrea Crotti
@ 2010-04-07 15:07 ` suvayu ali
2010-04-08 8:44 ` Andrea Crotti
2010-04-07 15:46 ` Thierry Volpiatto
1 sibling, 1 reply; 26+ messages in thread
From: suvayu ali @ 2010-04-07 15:07 UTC (permalink / raw)
To: Andrea Crotti; +Cc: help-gnu-emacs
On 7 April 2010 07:43, Andrea Crotti <andrea.crotti.0@gmail.com> wrote:
> Peter Dyballa <Peter_Dyballa@Web.DE> writes:
>>
>> C-h l ?
>
> Oh great I don't know how I've never seen it...
> But that shows the keystrokes in another buffer, I would like to
> - record the keystrokes while I type
> - filter only the interesting ones (Meta and Control stuff)
> - send them to some other program to display it nicely (I think growl
> could be perfect for that with applescript)
>
How about elisp that parses that buffer and uses growl to notify?
--
Suvayu
Open source is the future. It sets us free.
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-07 14:43 ` Andrea Crotti
2010-04-07 15:07 ` suvayu ali
@ 2010-04-07 15:46 ` Thierry Volpiatto
1 sibling, 0 replies; 26+ messages in thread
From: Thierry Volpiatto @ 2010-04-07 15:46 UTC (permalink / raw)
To: help-gnu-emacs
Andrea Crotti <andrea.crotti.0@gmail.com> writes:
> Peter Dyballa <Peter_Dyballa@Web.DE> writes:
>>
>> C-h l ?
>
> Oh great I don't know how I've never seen it...
> But that shows the keystrokes in another buffer, I would like to
> - record the keystrokes while I type
> - filter only the interesting ones (Meta and Control stuff)
> - send them to some other program to display it nicely (I think growl
> could be perfect for that with applescript)
May be you can do something with:
(open-dribble-file "~/tmp/last-emacs-commands")
Then just tail the file.
--
Thierry Volpiatto
Gpg key: http://pgp.mit.edu/
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-07 15:07 ` suvayu ali
@ 2010-04-08 8:44 ` Andrea Crotti
2010-04-10 5:47 ` Suvayu Ali
0 siblings, 1 reply; 26+ messages in thread
From: Andrea Crotti @ 2010-04-08 8:44 UTC (permalink / raw)
To: help-gnu-emacs
suvayu ali <fatkasuvayu+linux@gmail.com> writes:
> On 7 April 2010 07:43, Andrea Crotti <andrea.crotti.0@gmail.com> wrote:
>>
>
> How about elisp that parses that buffer and uses growl to notify?
Great yes I also found this:
http://growl.info/documentation/growlnotify.php
and it's really easy to pass stuff to growl, maybe I just need a filter
now to make it appear in a certain position with a certain width...
Now I just need to parse the file with the keys, which looks like this
--8<---------------cut here---------------start------------->8---
<backspace><backspace><tab>ke<tab>y<tab>s<tab> 0x8000078tail<tab>
--8<---------------cut here---------------end--------------->8---
but I have no idea on how i should split interesting sequences by non
interesting ones, how does emacs understands that?
I mean I would only like to get in the end
C-M o C-c C-o etc etc,
Apparently there are space in between the same key sequence:
--8<---------------cut here---------------start------------->8---
<return>C-M o C-c O<S-backspace>
--8<---------------cut here---------------end--------------->8---
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-08 8:44 ` Andrea Crotti
@ 2010-04-10 5:47 ` Suvayu Ali
2010-04-17 10:11 ` Andrea Crotti
0 siblings, 1 reply; 26+ messages in thread
From: Suvayu Ali @ 2010-04-10 5:47 UTC (permalink / raw)
To: help-gnu-emacs
On Thursday 08 April 2010 01:44 AM, Andrea Crotti wrote:
> suvayu ali<fatkasuvayu+linux@gmail.com> writes:
>
>> On 7 April 2010 07:43, Andrea Crotti<andrea.crotti.0@gmail.com> wrote:
>>>
>>
>> How about elisp that parses that buffer and uses growl to notify?
>
> Great yes I also found this:
> http://growl.info/documentation/growlnotify.php
> and it's really easy to pass stuff to growl, maybe I just need a filter
> now to make it appear in a certain position with a certain width...
>
> Now I just need to parse the file with the keys, which looks like this
> --8<---------------cut here---------------start------------->8---
> <backspace><backspace><tab>ke<tab>y<tab>s<tab> 0x8000078tail<tab>
> --8<---------------cut here---------------end--------------->8---
>
> but I have no idea on how i should split interesting sequences by non
> interesting ones, how does emacs understands that?
> I mean I would only like to get in the end
>
> C-M o C-c C-o etc etc,
> Apparently there are space in between the same key sequence:
> --8<---------------cut here---------------start------------->8---
> <return>C-M o C-c O<S-backspace>
> --8<---------------cut here---------------end--------------->8---
>
I am a elisp newbie and I have never used Macs, I couldn't give you a
clue. But to setup the notifications you could try looking in this post.
http://emacs-fu.blogspot.com/2009/11/showing-pop-ups.html
Here the author uses notify-send (a GNU/Linux tool like growlnotify) to
send notifications.
Good Luck and do post back if you have any solutions to your need. It
would be interesting to know.
--
Suvayu
Open source is the future. It sets us free.
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-10 5:47 ` Suvayu Ali
@ 2010-04-17 10:11 ` Andrea Crotti
2010-04-17 15:58 ` Kevin Rodgers
0 siblings, 1 reply; 26+ messages in thread
From: Andrea Crotti @ 2010-04-17 10:11 UTC (permalink / raw)
To: help-gnu-emacs
Suvayu Ali <fatkasuvayu+linux@gmail.com> writes:
> I am a elisp newbie and I have never used Macs, I couldn't give you a
> clue. But to setup the notifications you could try looking in this
> post.
>
> http://emacs-fu.blogspot.com/2009/11/showing-pop-ups.html
>
> Here the author uses notify-send (a GNU/Linux tool like growlnotify)
> to send notifications.
>
> Good Luck and do post back if you have any solutions to your need. It
> would be interesting to know.
Thanks a lot, but now the actually showing the popup is not hard at all,
now I would like to understand how to manage new keys instead.
I've seen the code of C-h l and in short I can use
- (recent-keys) which returns a vector of the last 300 keys inserted
- (single-key-description) which makes it more readable
I can check always the last element inserted in the vector and print it
out, is that supposed to work?
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-17 10:11 ` Andrea Crotti
@ 2010-04-17 15:58 ` Kevin Rodgers
2010-04-17 18:59 ` Andrea Crotti
0 siblings, 1 reply; 26+ messages in thread
From: Kevin Rodgers @ 2010-04-17 15:58 UTC (permalink / raw)
To: help-gnu-emacs
Andrea Crotti wrote:
> Suvayu Ali <fatkasuvayu+linux@gmail.com> writes:
>
>> I am a elisp newbie and I have never used Macs, I couldn't give you a
>> clue. But to setup the notifications you could try looking in this
>> post.
>>
>> http://emacs-fu.blogspot.com/2009/11/showing-pop-ups.html
>>
>> Here the author uses notify-send (a GNU/Linux tool like growlnotify)
>> to send notifications.
>>
>> Good Luck and do post back if you have any solutions to your need. It
>> would be interesting to know.
>
> Thanks a lot, but now the actually showing the popup is not hard at all,
> now I would like to understand how to manage new keys instead.
>
> I've seen the code of C-h l and in short I can use
> - (recent-keys) which returns a vector of the last 300 keys inserted
> - (single-key-description) which makes it more readable
>
> I can check always the last element inserted in the vector and print it
> out, is that supposed to work?
Not for multi-event keybindings. C-h f this-command-keys
--
Kevin Rodgers
Denver, Colorado, USA
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-17 15:58 ` Kevin Rodgers
@ 2010-04-17 18:59 ` Andrea Crotti
2010-04-17 19:27 ` Lennart Borgman
0 siblings, 1 reply; 26+ messages in thread
From: Andrea Crotti @ 2010-04-17 18:59 UTC (permalink / raw)
To: help-gnu-emacs
Kevin Rodgers <kevin.d.rodgers@gmail.com> writes:
>
> Not for multi-event keybindings. C-h f this-command-keys
Great I can use directly "last-command", it would be great!
The only thing I still didn't get is how to intercept the event, is
there a simple daemon-client way to get if a new command has been typed?
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-17 18:59 ` Andrea Crotti
@ 2010-04-17 19:27 ` Lennart Borgman
2010-04-17 22:06 ` Andrea Crotti
0 siblings, 1 reply; 26+ messages in thread
From: Lennart Borgman @ 2010-04-17 19:27 UTC (permalink / raw)
To: Andrea Crotti; +Cc: help-gnu-emacs
On Sat, Apr 17, 2010 at 8:59 PM, Andrea Crotti
<andrea.crotti.0@gmail.com> wrote:
> Kevin Rodgers <kevin.d.rodgers@gmail.com> writes:
>
>>
>> Not for multi-event keybindings. C-h f this-command-keys
>
> Great I can use directly "last-command", it would be great!
>
> The only thing I still didn't get is how to intercept the event, is
> there a simple daemon-client way to get if a new command has been typed?
post-command-hook?
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-17 19:27 ` Lennart Borgman
@ 2010-04-17 22:06 ` Andrea Crotti
2010-04-17 22:12 ` Drew Adams
2010-04-17 23:00 ` Lennart Borgman
0 siblings, 2 replies; 26+ messages in thread
From: Andrea Crotti @ 2010-04-17 22:06 UTC (permalink / raw)
To: help-gnu-emacs
Lennart Borgman <lennart.borgman@gmail.com> writes:
>
> post-command-hook?
Great almost there, it's really not so difficult apparently...
So given this function
--8<---------------cut here---------------start------------->8---
(defun growl-popup (msg)
"Show a popup using growl notification or say it, only working on OSX with growlnotify in the $PATH"
(interactive)
(if (not (null window-system))
(shell-command (concat "growlnotify -a /Applications/Emacs.app/ -m " msg))
(message msg)))
--8<---------------cut here---------------end--------------->8---
I only need to pass the last command and add a hook that executes it
every time, the only thing missing is how to get a string from the
last-command variable.
Any help?
This doesn't work
(growl-popup last-command)
Debugger entered--Lisp error: (wrong-type-argument sequencep self-insert-command)
In the doc they say
The last command executed.
Normally a symbol with a function definition, but can be whatever was found
in the keymap, or whatever the variable `this-command' was set to by that
command.
So how am I supposed to print it out?
Thanks
^ permalink raw reply [flat|nested] 26+ messages in thread
* RE: Print out my key-sequences
2010-04-17 22:06 ` Andrea Crotti
@ 2010-04-17 22:12 ` Drew Adams
2010-04-17 22:16 ` Drew Adams
2010-04-17 23:00 ` Lennart Borgman
1 sibling, 1 reply; 26+ messages in thread
From: Drew Adams @ 2010-04-17 22:12 UTC (permalink / raw)
To: 'Andrea Crotti', help-gnu-emacs
> (not (null window-system))
No idea what you're really trying to do (I haven't followed this thread), but,
FYI, `not' and `null' are the same function, and (not (null X)) is the same as
X.
^ permalink raw reply [flat|nested] 26+ messages in thread
* RE: Print out my key-sequences
2010-04-17 22:12 ` Drew Adams
@ 2010-04-17 22:16 ` Drew Adams
0 siblings, 0 replies; 26+ messages in thread
From: Drew Adams @ 2010-04-17 22:16 UTC (permalink / raw)
To: 'Andrea Crotti', help-gnu-emacs
> `not' and `null' are the same function, and (not (null X))
> is the same as X.
I should have said that they are the same in terms of truth value.
(not (null 3)) is t, which is not the same as 3.
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-17 22:06 ` Andrea Crotti
2010-04-17 22:12 ` Drew Adams
@ 2010-04-17 23:00 ` Lennart Borgman
2010-04-18 8:47 ` Andrea Crotti
1 sibling, 1 reply; 26+ messages in thread
From: Lennart Borgman @ 2010-04-17 23:00 UTC (permalink / raw)
To: Andrea Crotti; +Cc: help-gnu-emacs
On Sun, Apr 18, 2010 at 12:06 AM, Andrea Crotti
<andrea.crotti.0@gmail.com> wrote:
> Lennart Borgman <lennart.borgman@gmail.com> writes:
>
>>
>> post-command-hook?
>
> Great almost there, it's really not so difficult apparently...
> So given this function
>
> --8<---------------cut here---------------start------------->8---
> (defun growl-popup (msg)
> "Show a popup using growl notification or say it, only working on OSX with growlnotify in the $PATH"
> (interactive)
> (if (not (null window-system))
> (shell-command (concat "growlnotify -a /Applications/Emacs.app/ -m " msg))
> (message msg)))
> --8<---------------cut here---------------end--------------->8---
>
> I only need to pass the last command and add a hook that executes it
> every time, the only thing missing is how to get a string from the
> last-command variable.
>
> Any help?
> This doesn't work
> (growl-popup last-command)
(growl-popup (format "%s" last-command))
> Debugger entered--Lisp error: (wrong-type-argument sequencep self-insert-command)
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-17 23:00 ` Lennart Borgman
@ 2010-04-18 8:47 ` Andrea Crotti
2010-04-18 9:01 ` Andrea Crotti
0 siblings, 1 reply; 26+ messages in thread
From: Andrea Crotti @ 2010-04-18 8:47 UTC (permalink / raw)
To: help-gnu-emacs
Lennart Borgman <lennart.borgman@gmail.com> writes:
> On Sun, Apr 18, 2010 at 12:06 AM, Andrea Crotti
> <andrea.crotti.0@gmail.com> wrote:
>> Lennart Borgman <lennart.borgman@gmail.com> writes:
>>
>>>
>>> post-command-hook?
>>
>> Great almost there, it's really not so difficult apparently...
>> So given this function
>>
>> --8<---------------cut here---------------start------------->8---
>> (defun growl-popup (msg)
>> "Show a popup using growl notification or say it, only working on OSX with growlnotify in the $PATH"
>> (interactive)
>> (if (not (null window-system))
>> (shell-command (concat "growlnotify -a /Applications/Emacs.app/ -m " msg))
>> (message msg)))
>> --8<---------------cut here---------------end--------------->8---
>>
>> I only need to pass the last command and add a hook that executes it
>> every time, the only thing missing is how to get a string from the
>> last-command variable.
>>
>> Any help?
>> This doesn't work
>> (growl-popup last-command)
>
> (growl-popup (format "%s" last-command))
>
>> Debugger entered--Lisp error: (wrong-type-argument sequencep self-insert-command)
Oh great, I did this
--8<---------------cut here---------------start------------->8---
(defun growl-popup (msg)
"Show a popup using growl notification or say it, only working on OSX with growlnotify in the $PATH"
(interactive)
(if window-system
(shell-command (concat "growlnotify -a /Applications/Emacs.app/ -m " msg))
(message msg)))
(defun popup-last ()
(interactive)
(growl-popup (format "%s" last-command)))
(add-hook 'post-command-hook 'popup-last)
--8<---------------cut here---------------end--------------->8---
And now emacs is going crazy, when I try to evaluate something it tries
to execute it in the shell.
I then removed the hook with
(setq post-command-hook (remq 'popup-last post-command-hook))
but it didn't listen, it's continuing to use it indefinitely...
Other problems are:
- the command is shown after (not during)
- I should remove useless stuff like self-insert-command
- I want to see the keyboard combination, not the full name of the
command...
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-18 8:47 ` Andrea Crotti
@ 2010-04-18 9:01 ` Andrea Crotti
2010-04-18 11:13 ` Lennart Borgman
0 siblings, 1 reply; 26+ messages in thread
From: Andrea Crotti @ 2010-04-18 9:01 UTC (permalink / raw)
To: help-gnu-emacs
Andrea Crotti <andrea.crotti.0@gmail.com> writes:
>
>
>
> And now emacs is going crazy, when I try to evaluate something it tries
> to execute it in the shell.
>
> I then removed the hook with
> (setq post-command-hook (remq 'popup-last post-command-hook))
>
> but it didn't listen, it's continuing to use it indefinitely...
>
> Other problems are:
> - the command is shown after (not during)
> - I should remove useless stuff like self-insert-command
> - I want to see the keyboard combination, not the full name of the
> command...
Ok I understood why it does so, it was for every command waiting to
growlnotify to finish, maybe in general it would be better to spawn a
shell process without waiting for it.
Another thing is that pre-command-hook is better, otherwise the command
is shown too late.
Last thing is that post-command-hook is modified globally but locally
somewhere there is still that command in the hook, that's why it keeps
getting crazy...
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-18 9:01 ` Andrea Crotti
@ 2010-04-18 11:13 ` Lennart Borgman
2010-04-18 14:16 ` Andrea Crotti
0 siblings, 1 reply; 26+ messages in thread
From: Lennart Borgman @ 2010-04-18 11:13 UTC (permalink / raw)
To: Andrea Crotti; +Cc: help-gnu-emacs
On Sun, Apr 18, 2010 at 11:01 AM, Andrea Crotti
<andrea.crotti.0@gmail.com> wrote:
>
> Andrea Crotti <andrea.crotti.0@gmail.com> writes:
> >
> > - I want to see the keyboard combination, not the full name of the
> > command...
last-command => this-command-keys, this-command-keys-vector
You can find this information by searching in the elisp manual with
isearch for "last-command".
See also key-description.
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-18 11:13 ` Lennart Borgman
@ 2010-04-18 14:16 ` Andrea Crotti
2010-04-18 14:59 ` Thierry Volpiatto
` (2 more replies)
0 siblings, 3 replies; 26+ messages in thread
From: Andrea Crotti @ 2010-04-18 14:16 UTC (permalink / raw)
To: help-gnu-emacs
Lennart Borgman <lennart.borgman@gmail.com> writes:
> On Sun, Apr 18, 2010 at 11:01 AM, Andrea Crotti
>
> last-command => this-command-keys, this-command-keys-vector
>
> You can find this information by searching in the elisp manual with
> isearch for "last-command".
>
> See also key-description.
Great I think this is what I was looking for : (this-command-keys)
Now I have this but I'm still getting an error
--8<---------------cut here---------------start------------->8---
(defun growl-popup (msg)
"Show a popup using growl notification or say it, only working on OSX with growlnotify in the $PATH"
(interactive)
(if window-system
(shell-command (concat "growlnotify -a /Applications/Emacs.app/ -m " msg))
(message msg)))
(defun popup-last ()
(interactive)
(growl-popup (this-command-keys)))
--8<---------------cut here---------------end--------------->8---
What doest that supposed to mean?
The function this-command-keys is returning a string, and growl-popup is
working just fine, so what could be the problem again?
--8<---------------cut here---------------start------------->8---
(Shell command killed by signal Trace/BPT trap)
--8<---------------cut here---------------end--------------->8---
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-18 14:16 ` Andrea Crotti
@ 2010-04-18 14:59 ` Thierry Volpiatto
2010-04-18 16:09 ` Lennart Borgman
2010-04-21 7:09 ` Kevin Rodgers
2 siblings, 0 replies; 26+ messages in thread
From: Thierry Volpiatto @ 2010-04-18 14:59 UTC (permalink / raw)
To: help-gnu-emacs
Andrea Crotti <andrea.crotti.0@gmail.com> writes:
> Lennart Borgman <lennart.borgman@gmail.com> writes:
>
>> On Sun, Apr 18, 2010 at 11:01 AM, Andrea Crotti
>>
>> last-command => this-command-keys, this-command-keys-vector
>>
>> You can find this information by searching in the elisp manual with
>> isearch for "last-command".
>>
>> See also key-description.
>
> Great I think this is what I was looking for : (this-command-keys)
>
> Now I have this but I'm still getting an error
> (defun growl-popup (msg)
> "Show a popup using growl notification or say it, only working on OSX with growlnotify in the $PATH"
> (interactive)
> (if window-system
> (shell-command (concat "growlnotify -a /Applications/Emacs.app/ -m " msg))
> (message msg)))
>
> (defun popup-last ()
> (interactive)
> (growl-popup (this-command-keys)))
>
> What doest that supposed to mean?
> The function this-command-keys is returning a string,
Not always.
> and growl-popup is
> working just fine, so what could be the problem again?
>
> (Shell command killed by signal Trace/BPT trap)
See man page of trap and the list of signals with kill -l.
--
Thierry Volpiatto
Gpg key: http://pgp.mit.edu/
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-18 14:16 ` Andrea Crotti
2010-04-18 14:59 ` Thierry Volpiatto
@ 2010-04-18 16:09 ` Lennart Borgman
2010-04-21 7:09 ` Kevin Rodgers
2 siblings, 0 replies; 26+ messages in thread
From: Lennart Borgman @ 2010-04-18 16:09 UTC (permalink / raw)
To: Andrea Crotti; +Cc: help-gnu-emacs
On Sun, Apr 18, 2010 at 4:16 PM, Andrea Crotti
<andrea.crotti.0@gmail.com> wrote:
>
> (defun popup-last ()
> (interactive)
> (growl-popup (this-command-keys)))
> --8<---------------cut here---------------end--------------->8---
>
> What doest that supposed to mean?
> The function this-command-keys is returning a string, and growl-popup is
> working just fine, so what could be the problem again?
Are you sure this-command-keys is always returning a string?
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-18 14:16 ` Andrea Crotti
2010-04-18 14:59 ` Thierry Volpiatto
2010-04-18 16:09 ` Lennart Borgman
@ 2010-04-21 7:09 ` Kevin Rodgers
2010-05-24 17:07 ` Andrea Crotti
2 siblings, 1 reply; 26+ messages in thread
From: Kevin Rodgers @ 2010-04-21 7:09 UTC (permalink / raw)
To: help-gnu-emacs
Andrea Crotti wrote:
> Lennart Borgman <lennart.borgman@gmail.com> writes:
>
>> On Sun, Apr 18, 2010 at 11:01 AM, Andrea Crotti
>>
>> last-command => this-command-keys, this-command-keys-vector
>>
>> You can find this information by searching in the elisp manual with
>> isearch for "last-command".
>>
>> See also key-description.
>
> Great I think this is what I was looking for : (this-command-keys)
>
> Now I have this but I'm still getting an error
> --8<---------------cut here---------------start------------->8---
> (defun growl-popup (msg)
> "Show a popup using growl notification or say it, only working on OSX with growlnotify in the $PATH"
> (interactive)
> (if window-system
> (shell-command (concat "growlnotify -a /Applications/Emacs.app/ -m " msg))
> (message msg)))
>
> (defun popup-last ()
> (interactive)
> (growl-popup (this-command-keys)))
> --8<---------------cut here---------------end--------------->8---
>
> What doest that supposed to mean?
> The function this-command-keys is returning a string, and growl-popup is
> working just fine, so what could be the problem again?
this-command-keys may return a string or a vector, but concat returns a
string.
> --8<---------------cut here---------------start------------->8---
> (Shell command killed by signal Trace/BPT trap)
> --8<---------------cut here---------------end--------------->8---
this-command-keys can return a vector containing elements other than
integers (characters) e.g. symbols for function keys and mouse events. And
the vector can contain integers that cannot be put into a string. See
the Strings of Events node of the Emacs Lisp manual.
So first you have to find a robust way of converting the result of
this-command-keys to a string, so it can incorporated into the COMMAND
string argument to shell-command. As Lennart suggested, key-description
is probably the way to go.
And passing an arbitrary string as an argument to a program via
shell-command is itself risky, if it may contain a shell metacharacters
(which seems quite likely in this case). So the string should be escaped
using shell-quote-argument, or you could use call-process instead of
shell-command to avoid the quoting issue.
So:
(defun growl-popup (msg)
"Pop up a growl notification with MSG, or display an Emacs message.
The \"growlnotify\" program is used if `window-system' is non-nil and
the program is found in `exec-path'; otherwise `message' is used."
(interactive)
(if (and window-system (executable-find "growlnotify"))
(shell-command (concat "growlnotify -a /Applications/Emacs.app/ -m "
(shell-quote-argument msg)))
(message msg)))
(defun popup-last ()
(interactive)
(growl-popup (key-description (this-command-keys))))
--
Kevin Rodgers
Denver, Colorado, USA
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-04-21 7:09 ` Kevin Rodgers
@ 2010-05-24 17:07 ` Andrea Crotti
2010-05-24 18:02 ` Andrea Crotti
2010-05-25 6:47 ` Kevin Rodgers
0 siblings, 2 replies; 26+ messages in thread
From: Andrea Crotti @ 2010-05-24 17:07 UTC (permalink / raw)
To: help-gnu-emacs
Kevin Rodgers <kevin.d.rodgers@gmail.com> writes:
> this-command-keys can return a vector containing elements other than
> integers (characters) e.g. symbols for function keys and mouse events. And
> the vector can contain integers that cannot be put into a string. See
> the Strings of Events node of the Emacs Lisp manual.
>
> So first you have to find a robust way of converting the result of
> this-command-keys to a string, so it can incorporated into the COMMAND
> string argument to shell-command. As Lennart suggested, key-description
> is probably the way to go.
>
> And passing an arbitrary string as an argument to a program via
> shell-command is itself risky, if it may contain a shell metacharacters
> (which seems quite likely in this case). So the string should be escaped
> using shell-quote-argument, or you could use call-process instead of
> shell-command to avoid the quoting issue.
>
> So:
>
> (defun growl-popup (msg)
> "Pop up a growl notification with MSG, or display an Emacs message.
> The \"growlnotify\" program is used if `window-system' is non-nil and
> the program is found in `exec-path'; otherwise `message' is used."
> (interactive)
> (if (and window-system (executable-find "growlnotify"))
> (shell-command (concat "growlnotify -a /Applications/Emacs.app/ -m "
> (shell-quote-argument msg)))
> (message msg)))
>
> (defun popup-last ()
> (interactive)
> (growl-popup (key-description (this-command-keys))))
That's really nice thanks, I've added it to my configuration, with also
two functions to enable/disable it.
I have to use setq-default to disable it by the way, is that correct?
--8<---------------cut here---------------start------------->8---
(defun growl-mode-off ()
(interactive)
(setq-default pre-command-hook (remq 'popup-last pre-command-hook)))
--8<---------------cut here---------------end--------------->8---
Only one more problem, here I display all the keys, but I don't really
care about stuff like
"C-n", "C-p", "m" (all the keys are inserted).
Is there any kind of distinction between simple and more complex
combinations?
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-05-24 17:07 ` Andrea Crotti
@ 2010-05-24 18:02 ` Andrea Crotti
2010-05-25 6:47 ` Kevin Rodgers
1 sibling, 0 replies; 26+ messages in thread
From: Andrea Crotti @ 2010-05-24 18:02 UTC (permalink / raw)
To: help-gnu-emacs
Andrea Crotti <andrea.crotti.0@gmail.com> writes:
>
> I have to use setq-default to disable it by the way, is that correct?
> (defun growl-mode-off ()
> (interactive)
> (setq-default pre-command-hook (remq 'popup-last pre-command-hook)))
>
> Only one more problem, here I display all the keys, but I don't really
> care about stuff like
> "C-n", "C-p", "m" (all the keys are inserted).
>
> Is there any kind of distinction between simple and more complex
> combinations?
This is one possible way to solve the problem
--8<---------------cut here---------------start------------->8---
(defun popup-last ()
(interactive)
(let
((last-key (key-description (this-command-keys))))
(if
(or
(string-prefix-p "C-" last-key)
(string-prefix-p "M-" last-key))
(growl-popup last-key))))
--8<---------------cut here---------------end--------------->8---
But probably not the best one...
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-05-24 17:07 ` Andrea Crotti
2010-05-24 18:02 ` Andrea Crotti
@ 2010-05-25 6:47 ` Kevin Rodgers
2010-05-31 22:30 ` Andrea Crotti
1 sibling, 1 reply; 26+ messages in thread
From: Kevin Rodgers @ 2010-05-25 6:47 UTC (permalink / raw)
To: help-gnu-emacs
Andrea Crotti wrote:
> Kevin Rodgers <kevin.d.rodgers@gmail.com> writes:
>
>> this-command-keys can return a vector containing elements other than
>> integers (characters) e.g. symbols for function keys and mouse events. And
>> the vector can contain integers that cannot be put into a string. See
>> the Strings of Events node of the Emacs Lisp manual.
>>
>> So first you have to find a robust way of converting the result of
>> this-command-keys to a string, so it can incorporated into the COMMAND
>> string argument to shell-command. As Lennart suggested, key-description
>> is probably the way to go.
>>
>> And passing an arbitrary string as an argument to a program via
>> shell-command is itself risky, if it may contain a shell metacharacters
>> (which seems quite likely in this case). So the string should be escaped
>> using shell-quote-argument, or you could use call-process instead of
>> shell-command to avoid the quoting issue.
>>
>> So:
>>
>> (defun growl-popup (msg)
>> "Pop up a growl notification with MSG, or display an Emacs message.
>> The \"growlnotify\" program is used if `window-system' is non-nil and
>> the program is found in `exec-path'; otherwise `message' is used."
>> (interactive)
>> (if (and window-system (executable-find "growlnotify"))
>> (shell-command (concat "growlnotify -a /Applications/Emacs.app/ -m "
>> (shell-quote-argument msg)))
>> (message msg)))
Oops, that should be (message "%s" msg)
>> (defun popup-last ()
>> (interactive)
>> (growl-popup (key-description (this-command-keys))))
>
>
> That's really nice thanks, I've added it to my configuration, with also
> two functions to enable/disable it.
>
> I have to use setq-default to disable it by the way, is that correct?
> --8<---------------cut here---------------start------------->8---
> (defun growl-mode-off ()
> (interactive)
> (setq-default pre-command-hook (remq 'popup-last pre-command-hook)))
> --8<---------------cut here---------------end--------------->8---
>
> Only one more problem, here I display all the keys, but I don't really
> care about stuff like
> "C-n", "C-p", "m" (all the keys are inserted).
>
> Is there any kind of distinction between simple and more complex
> combinations?
How about:
(unless (= (length (this-command-keys-vector)) 1)
...)
or:
(unless (eq (lookup-key global-map (this-command-keys)) this-command)
...)
or both:
(unless (and (= (length (this-command-keys-vector)) 1)
(eq (lookup-key global-map (this-command-keys)) this-command))
...)
--
Kevin Rodgers
Denver, Colorado, USA
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Print out my key-sequences
2010-05-25 6:47 ` Kevin Rodgers
@ 2010-05-31 22:30 ` Andrea Crotti
0 siblings, 0 replies; 26+ messages in thread
From: Andrea Crotti @ 2010-05-31 22:30 UTC (permalink / raw)
To: help-gnu-emacs
Kevin Rodgers <kevin.d.rodgers@gmail.com> writes:
> How about:
>
> (unless (= (length (this-command-keys-vector)) 1)
> ...)
>
> or:
>
> (unless (eq (lookup-key global-map (this-command-keys)) this-command)
> ...)
>
> or both:
>
> (unless (and (= (length (this-command-keys-vector)) 1)
> (eq (lookup-key global-map (this-command-keys)) this-command))
> ...)
Yes great looks very nice I'm just using the first version...
Where could that posted for a better visibility, I was looking for
something like that some time ago but with no luck.
Maybe on emacs-wiki or just on my blog or somewhere else?
^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2010-05-31 22:30 UTC | newest]
Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-07 14:09 Print out my key-sequences Andrea Crotti
2010-04-07 14:23 ` Peter Dyballa
2010-04-07 14:43 ` Andrea Crotti
2010-04-07 15:07 ` suvayu ali
2010-04-08 8:44 ` Andrea Crotti
2010-04-10 5:47 ` Suvayu Ali
2010-04-17 10:11 ` Andrea Crotti
2010-04-17 15:58 ` Kevin Rodgers
2010-04-17 18:59 ` Andrea Crotti
2010-04-17 19:27 ` Lennart Borgman
2010-04-17 22:06 ` Andrea Crotti
2010-04-17 22:12 ` Drew Adams
2010-04-17 22:16 ` Drew Adams
2010-04-17 23:00 ` Lennart Borgman
2010-04-18 8:47 ` Andrea Crotti
2010-04-18 9:01 ` Andrea Crotti
2010-04-18 11:13 ` Lennart Borgman
2010-04-18 14:16 ` Andrea Crotti
2010-04-18 14:59 ` Thierry Volpiatto
2010-04-18 16:09 ` Lennart Borgman
2010-04-21 7:09 ` Kevin Rodgers
2010-05-24 17:07 ` Andrea Crotti
2010-05-24 18:02 ` Andrea Crotti
2010-05-25 6:47 ` Kevin Rodgers
2010-05-31 22:30 ` Andrea Crotti
2010-04-07 15:46 ` Thierry Volpiatto
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).