views:

91

answers:

2

I've tried various version to no avail:

(global-set-key (kbd "C-<space>") 'tempo-complete-tag)

(global-set-key [C-space] 'tempo-complete-tag)

I'm using CUA mode and running Emacs on Ubuntu, version: GNU Emacs 23.1.50.1 (x86_64-pc-linux-gnu, GTK+ Version 2.18.0) of 2009-09-27 on crested, modified by Debian

When I run tempo-complete-tag manually it tells me it is bound to C-space but C-space still runs cua-set-mark (or if CUA is disable, set-mark-command).

How can I rebind the C-space shortcut in Emacs to a command I decide?

+5  A: 

C-h k (key) will tell you how Emacs refers to a given key (which is "C-SPC" in this instance). (global-set-key (kbd "C-SPC") 'tempo-complete-tag) will do what you want.

I always use the (kbd) function for key-bindings, as it allows you to refer to the key the same way it is typically written everywhere else.

Do keep in mind that C-SPC is a standard set-mark-command binding! Personally I'd pick something different :)

phils
Hooray! That did it! I was thinking of `backspace` and thought naively that space was called `space`. But we're dealing with Emacs here. :-)
Adam Lindberg
+3  A: 

Also keep in mind that "global-set-key" will only do what you want, if your mode doesn't override it. I'm too lazy to load tempo to see if it does indeed override C-SPC, but it might well do so, in which case, you want to put this in your .emacs:

(add-hook 'tempo-mode-hook
          (lambda ()
            (local-set-key (kbd "C-SPC") 'tempo-complete-tag)
            ))
offby1
Great tip! I keep forgetting how powerful the hooks are...
Adam Lindberg