2010-11-16

emacs define-mode-abbrev oddity?

http://groups.google.com/group/gnu.emacs.help/browse_frm/thread/f32a510414508935#

On Nov 16, 6:54 am, harven wrote:
> Xah Lee writes:
> > this is a odd thing.
>
> > when in emacs-lisp-mode, and when you define a abbrev (e.g. call
> > define-mode-abbrev then “ah” then “add-hook”), then call write-abbrev-
> > file
>
> > then you get this in your abbrev file (e.g. at 〔~/.emacs.d/
> > abbrev_defs〕)
>
> > (define-abbrev-table 'lisp-mode-abbrev-table '(
> >     ("ah" "add-hook" nil 0)
> > ))
>
> > note that it's lisp-mode-abbrev-table not emacs-lisp-mode-abbrev-
> > table.
>
> > Why's that?
>
> > (if you change it to the latter, it won't work.)
>
> > i'm wondering because i want the abbrev to be for emacs-lisp-mode
> > only, not general lisp mode.
> > It appears that emacs-lisp-mode is defined on top of lisp-mode. Ok, so
> > my question is, what's the purpose of lisp-mode? Is that supposed to
> > be the base for other lisp lang modes to be defined on top of? A look
> > at scheme-mode seems to confirm this, but still, i want my abbrev for
> > emacs lisp mode only. Is that possible?
>
> > thanks.
>
> >  Xah ∑http://xahlee.org/☄
>
> I would try the following in .emacs
>
> (define-abbrev-table 'emacs-lisp-mode-abbrev-table '(
>   ("ah" "add-hook" nil 0)))
>
> (add-hook 'emacs-lisp-mode-hook (lambda()
>          (setq abbrev-mode t)
>          (setq local-abbrev-table emacs-lisp-mode-abbrev-table)))

thanks. Interesting solution.

Before i redefine my stuff, i did some more testing on my original question.

i tried to go to scheme-mode and apparantly the abbrev does not work, but only in emacs-lisp-mode.

if i'm in scheme-mode and i call define-mode-abbrev, it generate this code:

(define-abbrev-table 'scheme-mode-abbrev-table
'(
("ttt" "hhh" nil 0)
))

So, my question is probably caused by unnecessarily looking under the hood.

> I think that the nil argument after add-hook is deprecated in emacs ≥ 23.

any reference you have on this? thanks.

Xah ∑ http://xahlee.org/ ☄

No comments:

Post a Comment