unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Find all commands bound to key prefix
@ 2008-04-03 19:37 Seung Jun
  2008-04-04  9:55 ` Peter Dyballa
  0 siblings, 1 reply; 17+ messages in thread
From: Seung Jun @ 2008-04-03 19:37 UTC (permalink / raw)
  To: help-gnu-emacs

Hi,

I'd like to see a list of commands that are bound to key sequences
that starts with some prefix (e.g., C-x C-v).  How do I do that?

Thanks,
Seung




^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
       [not found] <mailman.9964.1207277776.18990.help-gnu-emacs@gnu.org>
@ 2008-04-04  3:26 ` rustom
  2008-04-04  4:28   ` Drew Adams
                     ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: rustom @ 2008-04-04  3:26 UTC (permalink / raw)
  To: help-gnu-emacs

On Apr 4, 12:37 am, "Seung Jun" <seungw...@gmail.com> wrote:
> Hi,
>
> I'd like to see a list of commands that are bound to key sequences
> that starts with some prefix (e.g., C-x C-v).  How do I do that?
>
> Thanks,
> Seung

C-x C-v is (usually) find alternate file ie its not a prefix.
But if you mean a prefix like C-x you can get the possible completions
by
C-x C-h


^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: Find all commands bound to key prefix
  2008-04-04  3:26 ` rustom
@ 2008-04-04  4:28   ` Drew Adams
       [not found]   ` <mailman.9967.1207283328.18990.help-gnu-emacs@gnu.org>
  2008-04-04  6:41   ` Jens Teich
  2 siblings, 0 replies; 17+ messages in thread
From: Drew Adams @ 2008-04-04  4:28 UTC (permalink / raw)
  To: 'rustom', help-gnu-emacs

> > I'd like to see a list of commands that are bound to key sequences
> > that starts with some prefix (e.g., C-x C-v).  How do I do that?
> 
> if you mean a prefix like C-x you can get the possible completions
> by C-x C-h

That doesn't work for all (even most) prefixes. It doesn't work for C-s, for
instance (isearch-mode-map).

If you use Icicles, then just use the prefix, followed by S-TAB. In this case,
C-x S-TAB. 

All possible key-sequence completions of prefix C-x are then completion
candidates - they are shown in *Completions* along with their bindings
(commands). 

You can see the complete command definitions of selected candidates during
completion using C-M-RET or C-M-mouse-2, or you can see the definitions of
several or all candidates, in order, by repeating C-next.

http://www.emacswiki.org/cgi-bin/wiki/Icicles_-_Key_Completion





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
       [not found]   ` <mailman.9967.1207283328.18990.help-gnu-emacs@gnu.org>
@ 2008-04-04  5:45     ` Pascal Bourguignon
  2008-04-04  7:34       ` Sébastien Vauban
  0 siblings, 1 reply; 17+ messages in thread
From: Pascal Bourguignon @ 2008-04-04  5:45 UTC (permalink / raw)
  To: help-gnu-emacs

"Drew Adams" <drew.adams@oracle.com> writes:

>> > I'd like to see a list of commands that are bound to key sequences
>> > that starts with some prefix (e.g., C-x C-v).  How do I do that?
>> 
>> if you mean a prefix like C-x you can get the possible completions
>> by C-x C-h
>
> That doesn't work for all (even most) prefixes. It doesn't work for C-s, for
> instance (isearch-mode-map).


Here is a command that gives you a list of all the bindings.  A little
slow, but exhaustive AFAIK.

(defmacro rloop (clauses &rest body)
  (if (null clauses)
      `(progn ,@body)
      `(loop ,@(car clauses) do (rloop ,(cdr clauses) ,@body))))

(defun all-bindings ()
  (interactive)
  (message "all-bindings: wait a few seconds please...")
  (let ((data
         (with-output-to-string
             (let ((bindings '()))
               (rloop ((for C in '("" "C-"))       ; Control
                       (for M in '("" "M-"))       ; Meta
                       (for A in '("" "A-"))       ; Alt
                       (for S in '("" "S-"))       ; Shift
                       (for H in '("" "H-"))       ; Hyper
                       (for s in '("" "s-"))       ; super
                       (for x from 32 to 127))
                      (let* ((k (format "%s%s%s%s%s%s%c" C M A S H s x))
                             (key (ignore-errors (read-kbd-macro k))))
                        (when key
                          (push
                           (list k
                                 (format "%-12s  %-12s  %S\n" k key
                                         (or
                                          ;; (string-key-binding key)
                                          ;; What is this string-key-binding?
                                          (key-binding key))))
                           bindings))))
               (dolist (item
                         (sort bindings
                               (lambda (a b)
                                 (or (< (length (first a))
                                        (length (first b)))
                                     (and (= (length (first a))
                                             (length (first b)))
                                          (string< (first a)
                                                   (first b)))))))
                 (princ (second item)))))))  
    (switch-to-buffer (format "Keybindings in %s" (buffer-name)))
    (erase-buffer)
    (insert data)
    (goto-char (point-min))
    (values)))

-- 
__Pascal Bourguignon__                     http://www.informatimago.com/
Wanna go outside.
Oh, no! Help! I got outside!
Let me back inside!


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
  2008-04-04  3:26 ` rustom
  2008-04-04  4:28   ` Drew Adams
       [not found]   ` <mailman.9967.1207283328.18990.help-gnu-emacs@gnu.org>
@ 2008-04-04  6:41   ` Jens Teich
  2 siblings, 0 replies; 17+ messages in thread
From: Jens Teich @ 2008-04-04  6:41 UTC (permalink / raw)
  To: help-gnu-emacs

rustom <rustompmody@gmail.com> writes:

> On Apr 4, 12:37 am, "Seung Jun" <seungw...@gmail.com> wrote:
>> Hi,
>>
>> I'd like to see a list of commands that are bound to key sequences
>> that starts with some prefix (e.g., C-x C-v).  How do I do that?
>>
>> Thanks,
>> Seung
>
> C-x C-v is (usually) find alternate file ie its not a prefix.
> But if you mean a prefix like C-x you can get the possible completions
> by
> C-x C-h

Show all bindings starting with C-x:

C-h b
M-x occur RET ^C-x RET

Jens



^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
  2008-04-04  5:45     ` Pascal Bourguignon
@ 2008-04-04  7:34       ` Sébastien Vauban
  0 siblings, 0 replies; 17+ messages in thread
From: Sébastien Vauban @ 2008-04-04  7:34 UTC (permalink / raw)
  To: help-gnu-emacs

Hello,

To add on Pascal's answer, if you want to see the bindings
attached to the function keys, here's a solution found on
http://www-xray.ast.cam.ac.uk/~gmorris/dotemacs.html (slightly
modified):

--8<---------------cut here---------------start------------->8---
;; print the key bindings in a tabular form
    (defun my-keytable (arg)
      "Print the key bindings in a tabular form."
      (interactive "sEnter a modifier string:")
      (with-output-to-temp-buffer "*Key table*"
        (let* ((i 0)
               (keys (list "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
                           "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
                           "<return>" "<down>" "<up>" "<right>" "<left>"
                           "<home>" "<end>" "<f1>" "<f2>" "<f3>" "<f4>" "<f5>"
                           "<f6>" "<f7>" "<f8>" "<f9>" "<f10>" "<f11>" "<f12>"
                           "1" "2" "3" "4" "5" "6" "7" "8" "9" "0"
                           "`" "~" "!" "@" "#" "$" "%" "^" "&" "*" "(" ")" "-" "_"
                           "=" "+" "\\" "|" "{" "[" "]" "}" ";" "'" ":" "\""
                           "<" ">" "," "." "/" "?"))
               (n (length keys))
               (modifiers (list "" "S-" "C-" "M-" "M-C-"))
               (k))
          (or (string= arg "") (setq modifiers (list arg)))
          (setq k (length modifiers))
          (princ (format " %-10.10s |" "Key"))
          (let ((j 0))
            (while (< j k)
              (princ (format " %-28.28s |" (nth j modifiers)))
              (setq j (1+ j))))
          (princ "\n")
          (princ (format "_%-10.10s_|" "__________"))
          (let ((j 0))
            (while (< j k)
              (princ (format "_%-28.28s_|"
                             "_______________________________"))
              (setq j (1+ j))))
          (princ "\n")
          (while (< i n)
            (princ (format " %-10.10s |" (nth i keys)))
            (let ((j 0))
              (while (< j k)
                (let* ((binding
                        (key-binding (read-kbd-macro (concat (nth j modifiers)
                                                             (nth i keys)))))
                       (binding-string "_"))
                  (when binding
                    (if (eq binding 'self-insert-command)
                        (setq binding-string (concat "'" (nth i keys) "'"))
                      (setq binding-string (format "%s" binding))))
                  (setq binding-string
                        (substring binding-string 0 (min (length
                                                          binding-string) 28)))
                  (princ (format " %-28.28s |" binding-string))
                  (setq j (1+ j)))))
            (princ "\n")
            (setq i (1+ i)))
          (princ (format "_%-10.10s_|" "__________"))
          (let ((j 0))
            (while (< j k)
              (princ (format "_%-28.28s_|"
                             "_______________________________"))
              (setq j (1+ j))))))
      (delete-window)
      (hscroll-mode)
      (setq truncate-lines t))
--8<---------------cut here---------------end--------------->8---

Seb

-- 
Sébastien Vauban


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
  2008-04-03 19:37 Find all commands bound to key prefix Seung Jun
@ 2008-04-04  9:55 ` Peter Dyballa
  2008-04-04 13:05   ` Tassilo Horn
  0 siblings, 1 reply; 17+ messages in thread
From: Peter Dyballa @ 2008-04-04  9:55 UTC (permalink / raw)
  To: Seung Jun; +Cc: help-gnu-emacs


Am 03.04.2008 um 21:37 schrieb Seung Jun:
> I'd like to see a list of commands that are bound to key sequences
> that starts with some prefix (e.g., C-x C-v).  How do I do that?

C-h b – it creates a *Help* buffer that will show all "key  
translations."

Now mark the whole buffer and apply a shell-command on that region  
(M-|):

	M-| | egrep '^<your prefix>' | sort -u

The egrep command takes a regular expression ('^' is part of that and  
stands for: "at the beginning of the line", the '<your prefix>' part  
needs to be substituted with your search pattern, i.e., C-x C-v) and  
tries to find matching lines in the marked region. The final sort  
command removes all duplicates (-u) and presents egrep's findings in  
a sorted form.

--
Greetings

   Pete     === -Q
              ==<__/% >>
_____________(_)____@_____________________________






^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
  2008-04-04  9:55 ` Peter Dyballa
@ 2008-04-04 13:05   ` Tassilo Horn
  2008-04-04 15:19     ` Peter Dyballa
       [not found]     ` <mailman.9987.1207322388.18990.help-gnu-emacs@gnu.org>
  0 siblings, 2 replies; 17+ messages in thread
From: Tassilo Horn @ 2008-04-04 13:05 UTC (permalink / raw)
  To: help-gnu-emacs

Peter Dyballa <Peter_Dyballa@Web.DE> writes:

Hi Peter,

>> I'd like to see a list of commands that are bound to key sequences
>> that starts with some prefix (e.g., C-x C-v).  How do I do that?
>
> C-h b – it creates a *Help* buffer that will show all "key
> translations."
>
> Now mark the whole buffer and apply a shell-command on that region
> (M-|):
>
> 	M-| | egrep '^<your prefix>' | sort -u

There's a much easier way.  Press the prefix key followed by C-h.  Let's
say you want to see all keys that start with the prefix C-x RET, you'd
type C-x RET C-h and get a *Help* buffer with all that keys.

Bye,
Tassilo
-- 
Richard Stallman spends  his leasure time playing Duke  Nukem Forever on
GNU Hurd.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
  2008-04-04 13:05   ` Tassilo Horn
@ 2008-04-04 15:19     ` Peter Dyballa
  2008-04-04 17:26       ` Tassilo Horn
       [not found]     ` <mailman.9987.1207322388.18990.help-gnu-emacs@gnu.org>
  1 sibling, 1 reply; 17+ messages in thread
From: Peter Dyballa @ 2008-04-04 15:19 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: help-gnu-emacs


Am 04.04.2008 um 15:05 schrieb Tassilo Horn:
> There's a much easier way.  Press the prefix key followed by C-h.   
> Let's
> say you want to see all keys that start with the prefix C-x RET, you'd
> type C-x RET C-h and get a *Help* buffer with all that keys.


The original question was aiming towards C-x C-v prefix – which seems  
to fail with this method ...

--
Mit friedvollen Grüßen

   Pete

Gut durch ist besser als unten durch!






^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
       [not found]     ` <mailman.9987.1207322388.18990.help-gnu-emacs@gnu.org>
@ 2008-04-04 16:52       ` rustom
  2008-04-04 18:22         ` Drew Adams
       [not found]         ` <mailman.9996.1207333434.18990.help-gnu-emacs@gnu.org>
  0 siblings, 2 replies; 17+ messages in thread
From: rustom @ 2008-04-04 16:52 UTC (permalink / raw)
  To: help-gnu-emacs

I am bewildered by these answers. (Or we are talking of different
editors/concepts??)

On Apr 4, 8:19 pm, Peter Dyballa <Peter_Dyba...@Web.DE> wrote:
>
> The original question was aiming towards C-x C-v prefix - which seems
> to fail with this method ...
>
> --
> Mit friedvollen Grüßen
>
>    Pete

Likewise
Drew Adams wrote:
> That doesn't work for all (even most) prefixes. It doesn't work for C-s, for
> instance (isearch-mode-map).

What is C-x C-v a prefix for -- all possible files in the system?
What is C-s a prefix for -- all possible substrings of the current
buffer?

True, Seung Jun (the OP) did ask about "list of commands that are
bound to key sequences that starts with some prefix (e.g., C-x C-v)"
Could you clarify what you were asking for?


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
  2008-04-04 15:19     ` Peter Dyballa
@ 2008-04-04 17:26       ` Tassilo Horn
  2008-04-04 18:27         ` Peter Dyballa
       [not found]         ` <mailman.9997.1207333651.18990.help-gnu-emacs@gnu.org>
  0 siblings, 2 replies; 17+ messages in thread
From: Tassilo Horn @ 2008-04-04 17:26 UTC (permalink / raw)
  To: help-gnu-emacs

Peter Dyballa <Peter_Dyballa@Web.DE> writes:

>> There's a much easier way.  Press the prefix key followed by C-h.
>> Let's say you want to see all keys that start with the prefix C-x
>> RET, you'd type C-x RET C-h and get a *Help* buffer with all that
>> keys.
>
> The original question was aiming towards C-x C-v prefix – which seems
> to fail with this method ...

For me (Emacs 23) C-x C-v is no prefix, but `find-alternate-file'.  What
is it for you?

Bye,
Tassilo
-- 
Richard  Stallman  needs  neither  mouse  nor keyboard  to  operate  his
computer. He just stares it down until it does what he wants.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: Find all commands bound to key prefix
  2008-04-04 16:52       ` rustom
@ 2008-04-04 18:22         ` Drew Adams
       [not found]         ` <mailman.9996.1207333434.18990.help-gnu-emacs@gnu.org>
  1 sibling, 0 replies; 17+ messages in thread
From: Drew Adams @ 2008-04-04 18:22 UTC (permalink / raw)
  To: 'rustom', help-gnu-emacs

> Likewise Drew Adams wrote:
>
> > That doesn't work for all (even most) prefixes. It doesn't 
> > work for C-s, for instance (isearch-mode-map).
> 
> What is C-x C-v a prefix for -- all possible files in the system?

I didn't say anything about C-x C-v. I said that a prefix key followed by C-h
doesn't always show the prefix key bindings.

FWIW, I suspect that the OP might have meant `C-x v', which is a prefix key and
for which C-h does work: `C-h v C-h'. But there are other prefix keys for which
it does not work.

> What is C-s a prefix for -- all possible substrings of the current
> buffer?

,----
| isearch-mode-map
| ----------------
| 
| Keymap for `isearch-mode'.
| 
| key             binding
| ---             -------
| 
| C-@ .. C-f	isearch-other-control-char
| C-g		isearch-abort
| C-h		isearch-other-control-char
| TAB .. C-j	isearch-printing-char
| C-k .. C-l	isearch-other-control-char
| RET		isearch-exit
...
`----

Some users, such as myself, explicitly bind C-h in isearch-mode-map so that C-s
C-h does show the C-s bindings. RMS does not want that behavior for Emacs,
however.  





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
  2008-04-04 17:26       ` Tassilo Horn
@ 2008-04-04 18:27         ` Peter Dyballa
       [not found]         ` <mailman.9997.1207333651.18990.help-gnu-emacs@gnu.org>
  1 sibling, 0 replies; 17+ messages in thread
From: Peter Dyballa @ 2008-04-04 18:27 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: help-gnu-emacs


Am 04.04.2008 um 19:26 schrieb Tassilo Horn:
> For me (Emacs 23) C-x C-v is no prefix, but `find-alternate-file'.   
> What
> is it for you?


The same. Therefore I chose my recommendation for the job.

I also assumed that Seung was trying to find a series of free key  
bindings to use them for his purposes. For this my method is not  
perfect: it works only on the key bindings known at this moment. Some  
extra-mode loaded later could introduce more key bindings ... or  
prefixes!

--
Mit friedvollen Grüßen

   Pete

There are three types of people in this world: those who can count,  
and those who cannot.






^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
       [not found]         ` <mailman.9997.1207333651.18990.help-gnu-emacs@gnu.org>
@ 2008-04-07  2:20           ` Alan
  2008-04-07  4:42             ` Drew Adams
  0 siblings, 1 reply; 17+ messages in thread
From: Alan @ 2008-04-07  2:20 UTC (permalink / raw)
  To: help-gnu-emacs

I have accidentally stumbled upon one of the nicest features in
emacs---that apparently escaped the list!  C-x [F1] .

Is this unique to my setup?  This is how I discovered it:

Long agon, I started using C-x6, C-x7, etc., as keymap prefixes to
numerous little utilities.  I would forget the keybindings, so in
my .emacs.el file, I defined a pop-up that would show me any
keybindings to the particular prefix.  I had to manually insert them.

Then, one day, after some years, I accidentally hit someother prefix,
followed by F1, and --- lo and behold --- what did I see, but a
listing of all bindings to that prefix.

I just tried it: it works with C-x !

Alan


^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: Find all commands bound to key prefix
  2008-04-07  2:20           ` Alan
@ 2008-04-07  4:42             ` Drew Adams
  0 siblings, 0 replies; 17+ messages in thread
From: Drew Adams @ 2008-04-07  4:42 UTC (permalink / raw)
  To: 'Alan', help-gnu-emacs

> I have accidentally stumbled upon one of the nicest features in
> emacs---that apparently escaped the list!  C-x [F1] .

That is what was discussed here as `C-x C-h'. `f1' has the same binding as
`C-h'. 

And, as was pointed out, it does not work for all prefix keys (but it does work
for `C-x').





^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Find all commands bound to key prefix
       [not found]         ` <mailman.9996.1207333434.18990.help-gnu-emacs@gnu.org>
@ 2008-05-04  1:16           ` David Combs
  2008-05-04  1:53             ` Drew Adams
  0 siblings, 1 reply; 17+ messages in thread
From: David Combs @ 2008-05-04  1:16 UTC (permalink / raw)
  To: help-gnu-emacs

In article <mailman.9996.1207333434.18990.help-gnu-emacs@gnu.org>,
Drew Adams <drew.adams@oracle.com> wrote:
>
>Some users, such as myself, explicitly bind C-h in isearch-mode-map so that C-s
>C-h does show the C-s bindings. RMS does not want that behavior for Emacs,
>however.  


And how do you do that?

And what command do you bind it to?

Thanks,

David




^ permalink raw reply	[flat|nested] 17+ messages in thread

* RE: Find all commands bound to key prefix
  2008-05-04  1:16           ` David Combs
@ 2008-05-04  1:53             ` Drew Adams
  0 siblings, 0 replies; 17+ messages in thread
From: Drew Adams @ 2008-05-04  1:53 UTC (permalink / raw)
  To: 'David Combs', help-gnu-emacs

> > Some users, such as myself, explicitly bind C-h in 
> > isearch-mode-map so that C-s C-h does show the C-s
> > bindings.  
> 
> And how do you do that? And what command do you bind it to?

http://www.emacswiki.org/cgi-bin/wiki/IsearchPlus - description

http://www.emacswiki.org/cgi-bin/wiki/isearch%2b.el - code

This is the relevant part:

(add-hook 'isearch-mode-hook
          (lambda ()
            (define-key isearch-mode-map "\C-h" 'isearch-mode-help)))

(defun isearch-mode-help ()
  "Display information on interactive search in buffer *Help*."
  (interactive)
  (describe-function 'isearch-forward)
  (isearch-done)
  (isearch-clean-overlays)
  (save-excursion
    (set-buffer "*Help*")
    (goto-char (point-max))
    (let ((buffer-read-only nil))
      (insert (substitute-command-keys "

Bindings in Isearch minor mode:
------------------------------

\\{isearch-mode-map}")))))





^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2008-05-04  1:53 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-03 19:37 Find all commands bound to key prefix Seung Jun
2008-04-04  9:55 ` Peter Dyballa
2008-04-04 13:05   ` Tassilo Horn
2008-04-04 15:19     ` Peter Dyballa
2008-04-04 17:26       ` Tassilo Horn
2008-04-04 18:27         ` Peter Dyballa
     [not found]         ` <mailman.9997.1207333651.18990.help-gnu-emacs@gnu.org>
2008-04-07  2:20           ` Alan
2008-04-07  4:42             ` Drew Adams
     [not found]     ` <mailman.9987.1207322388.18990.help-gnu-emacs@gnu.org>
2008-04-04 16:52       ` rustom
2008-04-04 18:22         ` Drew Adams
     [not found]         ` <mailman.9996.1207333434.18990.help-gnu-emacs@gnu.org>
2008-05-04  1:16           ` David Combs
2008-05-04  1:53             ` Drew Adams
     [not found] <mailman.9964.1207277776.18990.help-gnu-emacs@gnu.org>
2008-04-04  3:26 ` rustom
2008-04-04  4:28   ` Drew Adams
     [not found]   ` <mailman.9967.1207283328.18990.help-gnu-emacs@gnu.org>
2008-04-04  5:45     ` Pascal Bourguignon
2008-04-04  7:34       ` Sébastien Vauban
2008-04-04  6:41   ` Jens Teich

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).