[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Redefine "(" and ")" keys in every mode

From: Xah Lee
Subject: Re: Redefine "(" and ")" keys in every mode
Date: Sun, 4 Jan 2009 18:26:29 -0800 (PST)
User-agent: G2/1.0

On Jan 3, 7:31 am, TheLonelyStar <address@hidden> wrote:
> Hi,
> I use the following functions (bellow) for redifine the insertions if ( and
> ).
> The Idea is: When I type (, I want () inserted. When I type ) and the next
> character is ), I want to just jump over it.
> The Problem is: This works, as long as the mode I am in does not overwrite
> the "(" or ")" key.
> And, at the same time, when the mode overwrites this keys, it normaly has a
> reason for it.
> Has somebody an Idea how this can be done, so that it works in every mode?
> Thanks!
> Nathan
> The functions:
> -----------------------------------
> (defun bracket (arg)
>   (interactive "*P")
>   (insert "()")
>   (backward-char))
> (define-key global-map (kbd "(") 'bracket)
> ;;Jump after character on insertion
> (defun end-insertion (arg)
>   (interactive "*p")
>   (if (looking-at (concat "[\n \t]*" (this-command-keys))) (goto-char
> (match-end 0)) (insert (this-command-keys)) (indent-according-to-mode))
> )
> (define-key global-map (kbd ")") 'end-insertion)
> (define-key c-mode-base-map (kbd ")") 'end-insertion)

to answer your question, you need to use hook on modes that use keys
that you defined in global-map. See here:

• How To Reclaim Keybindings In Emacs

I also have all matching pairs inserted together.

The way i do it is to use the Hyper key together with homerow keys
under my right hand.

The hyper is set to the Start key on Microsoft keyboard. The {}()[]
are qwerty's J, K, L.

The above is my setup. For detail, i'm using Mac OS X, and Microsoft's
ergonomic keyboard, and Dvorak layout (set in OS)... so the following
elisp code may seem complicated.

(setq mac-option-modifier 'hyper)

(global-set-key (kbd "H-h") (lambda () (interactive) (insert "{}")
(backward-char 1)))
(global-set-key (kbd "H-t") (lambda () (interactive) (insert "()")
(backward-char 1)))
(global-set-key (kbd "H-n") (lambda () (interactive) (insert "[]")
(backward-char 1)))

You can see my other matching pairs setup for “”‘’«»‹›"", as well as
easier to press keys for += and bunch of other unicode keys at:


reply via email to

[Prev in Thread] Current Thread [Next in Thread]