* Troubles with abbrev-mode
@ 2006-09-26 18:56 Tassilo Horn
2006-09-26 20:14 ` Reiner Steib
0 siblings, 1 reply; 8+ messages in thread
From: Tassilo Horn @ 2006-09-26 18:56 UTC (permalink / raw)
Hi all,
I want to start using abbrev-mode but I don't get it right. I use emacs
from the current CVS head, which I updated today.
Those are my abbrevs (`list-abbrevs'):
--8<---------------cut here---------------start------------->8---
(message-mode-abbrev-table)
"lg" 0 "Liebe Grüße"
"mw" 0 "meines Wissens"
"vg" 0 "Viele Grüße,"
(text-mode-abbrev-table)
"vg" 3 "Viele Grüße,"
(lisp-mode-abbrev-table)
"da" 0 "defalias"
"dl" 0 "dolist ("
"dm" 0 "defmacro"
"ia" 0 "interactive"
"se" 0 "save-excursion"
"swe" 0 "save-window-excursion"
--8<---------------cut here---------------end--------------->8---
And those are my problems:
a) The abbrevs for `message-mode' I defined with `edit-abbrevs'. Then I
started writing a message (in `message-mode') and wondered why my
abbrevs don't expand. I inserted a new abbrev with
`add-mode-abbrev'. But that abbrev was added to
`text-mode-abbrev-table' instead of message-mode's one. And in
`message-mode' only abbrev defined in `text-mode-abbrev-table'
expand. Why? Is it a bug?
b) All the abbrevs below `lisp-mode-abbrev-table' were defined when I
was in `emacs-lisp-mode'. But they also expand in SLIME's common lisp
mode, where `save-excursion' and `interactive' are totally
useless. Isn't it possible to save abbrevs strictly mode-specific?
Best regards,
Tassilo
--
A child of five could understand this! Fetch me a child of five!
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Troubles with abbrev-mode
2006-09-26 18:56 Troubles with abbrev-mode Tassilo Horn
@ 2006-09-26 20:14 ` Reiner Steib
2006-09-26 21:33 ` Tassilo Horn
0 siblings, 1 reply; 8+ messages in thread
From: Reiner Steib @ 2006-09-26 20:14 UTC (permalink / raw)
On Tue, Sep 26 2006, Tassilo Horn wrote:
> a) The abbrevs for `message-mode' I defined with `edit-abbrevs'. Then I
> started writing a message (in `message-mode') and wondered why my
> abbrevs don't expand. I inserted a new abbrev with
> `add-mode-abbrev'. But that abbrev was added to
> `text-mode-abbrev-table' instead of message-mode's one. And in
> `message-mode' only abbrev defined in `text-mode-abbrev-table'
> expand. Why? Is it a bug?
FWIW, `message.el' sets `local-abbrev-table' to
`text-mode-abbrev-table':
(define-derived-mode message-mode text-mode "Message"
"Major mode for editing mail and news to be sent.
Like Text Mode but with these additional commands:\\<message-mode-map>
[...]
M-RET `message-newline-and-reformat' (break the line and reformat)."
(setq local-abbrev-table text-mode-abbrev-table)
[...]
I don't know if this is good or not, but it has been there since ages:
| 6.202 (zsh 07-Feb-02): (setq local-abbrev-table text-mode-abbrev-table)
Bye, Reiner.
--
,,,
(o o)
---ooO-(_)-Ooo--- | PGP key available | http://rsteib.home.pages.de/
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Troubles with abbrev-mode
2006-09-26 20:14 ` Reiner Steib
@ 2006-09-26 21:33 ` Tassilo Horn
2006-09-27 7:56 ` Reiner Steib
0 siblings, 1 reply; 8+ messages in thread
From: Tassilo Horn @ 2006-09-26 21:33 UTC (permalink / raw)
Reiner Steib <reinersteib+gmane@imap.cc> writes:
> FWIW, `message.el' sets `local-abbrev-table' to
> `text-mode-abbrev-table':
>
> [...]
>
> I don't know if this is good or not, but it has been there since ages:
>
> | 6.202 (zsh 07-Feb-02): (setq local-abbrev-table text-mode-abbrev-table)
Hm, in my opinion that's a really bad behavior, because...
a) if the user wants that behavior, he can set in `message-mode-hook'.
b) adding abbrevs in message mode (with `add-mode-abbrev' or
`inverse-add-mode-abbrev') adds it to
`message-mode-abbrev-table'. So you effectively cannot add abbrevs
interactively.
So I see two possible fixes:
1) Delete the setq. (To me that seems right and proper.)
2) Fix `add-mode-abbrev' and `inverse-add-mode-abbrev', so that they
insert into `local-abbrev-table'.
To me the second point should be done, too, because that's what a user
would expect. Only then he has the possibility to use a abbrev-table for
multiple modes, e.g. text-mode-abbrev-table for
message-mode-abbrev-table.
What do you mean?
Bye,
Tassilo
--
A morning without coffee is like something without something else.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Troubles with abbrev-mode
2006-09-26 21:33 ` Tassilo Horn
@ 2006-09-27 7:56 ` Reiner Steib
2006-09-27 9:36 ` Tassilo Horn
0 siblings, 1 reply; 8+ messages in thread
From: Reiner Steib @ 2006-09-27 7:56 UTC (permalink / raw)
On Tue, Sep 26 2006, Tassilo Horn wrote:
> Reiner Steib <reinersteib+gmane@imap.cc> writes:
>> | 6.202 (zsh 07-Feb-02): (setq local-abbrev-table text-mode-abbrev-table)
>
> Hm, in my opinion that's a really bad behavior, because...
>
> a) if the user wants that behavior, he can set in `message-mode-hook'.
And if he doesn't want the current behavior, he can probably also do
it in `message-mode-hook' now? [1]
> b) adding abbrevs in message mode (with `add-mode-abbrev' or
> `inverse-add-mode-abbrev') adds it to
> `message-mode-abbrev-table'. So you effectively cannot add abbrevs
> interactively.
>
> So I see two possible fixes:
>
> 1) Delete the setq. (To me that seems right and proper.)
This will break existing configurations, wouldn't it? `message-mode'
derived from `text-mode': Do we have guidelines / conventions / best
practice in Emacs on how to deal with abbrevs in derived modes?
> 2) Fix `add-mode-abbrev' and `inverse-add-mode-abbrev', so that they
> insert into `local-abbrev-table'.
>
> To me the second point should be done, too, because that's what a user
> would expect. Only then he has the possibility to use a abbrev-table for
> multiple modes, e.g. text-mode-abbrev-table for
> message-mode-abbrev-table.
>
> What do you mean?
I don't have a strong opinion here (as I don't know what the docs
suggest here).
[1] BTW, in my init files I find...
(add-hook
'gnus-message-setup-hook
'(lambda ()
(when (boundp 'rs-message-mode-abbrev-table)
(setq local-abbrev-table rs-message-mode-abbrev-table))
[...]
... but I don't exactly recall it's purpose. At least, I have some
abbrevs in message-mode that are not present in text-mode.
Bye, Reiner.
--
,,,
(o o)
---ooO-(_)-Ooo--- | PGP key available | http://rsteib.home.pages.de/
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Troubles with abbrev-mode
2006-09-27 7:56 ` Reiner Steib
@ 2006-09-27 9:36 ` Tassilo Horn
2006-09-29 20:52 ` Reiner Steib
0 siblings, 1 reply; 8+ messages in thread
From: Tassilo Horn @ 2006-09-27 9:36 UTC (permalink / raw)
Reiner Steib <reinersteib+gmane@imap.cc> writes:
Hi Reiner,
>> Hm, in my opinion that's a really bad behavior, because...
>>
>> a) if the user wants that behavior, he can set in `message-mode-hook'.
>
> And if he doesn't want the current behavior, he can probably also do
> it in `message-mode-hook' now? [1]
Yes, he can. But I think the current behavior patronizes the user too
much. It's not logical to use a abbrev-table from a different mode, even
if the current mode is derived from it, when newly added abbrevs go into
the current mode's abbrev-table, thus have no effect at all.
If you know what's going on, you can handle it, but for a normal user
without any knowledge about how abbrev-mode works it's simply wrong
accoring to the docs.
,----[ (info "(emacs)Defining Abbrevs") ]
| `C-x a g'
| Define an abbrev, using one or more words before point as its
| expansion (`add-global-abbrev').
|
| `C-x a l'
| Similar, but define an abbrev specific to the current major mode
| (`add-mode-abbrev'). ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| `C-x a i g'
| Define a word in the buffer as an abbrev
| (`inverse-add-global-abbrev').
|
| `C-x a i l'
| Define a word in the buffer as a mode-specific abbrev
| (`inverse-add-mode-abbrev'). ^^^^^^^^^^^^^^^^^^^^
`----
>> b) adding abbrevs in message mode (with `add-mode-abbrev' or
>> `inverse-add-mode-abbrev') adds it to
>> `message-mode-abbrev-table'. So you effectively cannot add abbrevs
>> interactively.
>>
>> So I see two possible fixes:
>>
>> 1) Delete the setq. (To me that seems right and proper.)
>
> This will break existing configurations, wouldn't it?
Yep, but it would be easy to fix. The user could copy his abbrevs to
`message-mode-abbrev-table' or setq `local-abbrev-table' back to
`text-mode-abbrev-table' in `message-mode-hook' (or
`gnus-message-setup-hook'). Ok, the second solution still suffers from
this adding-abbrevs-problem...
> `message-mode' derived from `text-mode': Do we have guidelines /
> conventions / best practice in Emacs on how to deal with abbrevs in
> derived modes?
As I'm not really involved in emacs development I don't know. Should I
start a new thread about point 2 in gmane.emacs.devel?
>> 2) Fix `add-mode-abbrev' and `inverse-add-mode-abbrev', so that they
>> insert into `local-abbrev-table'.
>>
>> To me the second point should be done, too, because that's what a
>> user would expect. Only then he has the possibility to use a
>> abbrev-table for multiple modes, e.g. text-mode-abbrev-table for
>> message-mode-abbrev-table.
>>
>> What do you mean?
>
> I don't have a strong opinion here (as I don't know what the docs
> suggest here).
At least you have to admit that it's inconvenient for the user if he
adds abbrevs interactively, but they don't work.
> [1] BTW, in my init files I find...
> (add-hook
> 'gnus-message-setup-hook
> '(lambda ()
> (when (boundp 'rs-message-mode-abbrev-table)
> (setq local-abbrev-table rs-message-mode-abbrev-table))
> [...]
>
> ... but I don't exactly recall it's purpose. At least, I have some
> abbrevs in message-mode that are not present in text-mode.
But you alway added them with `edit-abbrevs', not interactively with
`add-mode-abbrev' or `inverse-add-mode-abbrev', right?
Bye,
Tassilo
--
A morning without coffee is like something without something else.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Troubles with abbrev-mode
2006-09-27 9:36 ` Tassilo Horn
@ 2006-09-29 20:52 ` Reiner Steib
2006-09-29 22:17 ` Tassilo Horn
0 siblings, 1 reply; 8+ messages in thread
From: Reiner Steib @ 2006-09-29 20:52 UTC (permalink / raw)
On Wed, Sep 27 2006, Tassilo Horn wrote:
> Reiner Steib <reinersteib+gmane@imap.cc> writes:
[...]
> If you know what's going on, you can handle it, but for a normal user
> without any knowledge about how abbrev-mode works it's simply wrong
> accoring to the docs.
>
> ,----[ (info "(emacs)Defining Abbrevs") ]
[...]
>> `message-mode' derived from `text-mode': Do we have guidelines /
>> conventions / best practice in Emacs on how to deal with abbrevs in
>> derived modes?
>
> As I'm not really involved in emacs development I don't know. Should I
> start a new thread about point 2 in gmane.emacs.devel?
Maybe a good idea.
[...]
>> I don't have a strong opinion here (as I don't know what the docs
>> suggest here).
>
> At least you have to admit that it's inconvenient for the user if he
> adds abbrevs interactively, but they don't work.
Sure.
[...]
>> (setq local-abbrev-table rs-message-mode-abbrev-table))
>> [...]
>> ... but I don't exactly recall it's purpose. At least, I have some
>> abbrevs in message-mode that are not present in text-mode.
>
> But you alway added them with `edit-abbrevs', not interactively with
> `add-mode-abbrev' or `inverse-add-mode-abbrev', right?
Probably I've edited ~/.abbrev_defs manually (I don't change my
abbrevs often: the time stamp says 2005-11-30).
Bye, Reiner.
--
,,,
(o o)
---ooO-(_)-Ooo--- | PGP key available | http://rsteib.home.pages.de/
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Troubles with abbrev-mode
2006-09-29 20:52 ` Reiner Steib
@ 2006-09-29 22:17 ` Tassilo Horn
2006-09-30 8:02 ` Reiner Steib
0 siblings, 1 reply; 8+ messages in thread
From: Tassilo Horn @ 2006-09-29 22:17 UTC (permalink / raw)
Reiner Steib <reinersteib+gmane@imap.cc> writes:
>>> `message-mode' derived from `text-mode': Do we have guidelines /
>>> conventions / best practice in Emacs on how to deal with abbrevs in
>>> derived modes?
>>
>> As I'm not really involved in emacs development I don't know. Should
>> I start a new thread about point 2 in gmane.emacs.devel?
>
> Maybe a good idea.
Gnmpf, I cannot reproduce the problem anymore. I don't even know if the
problem existed sometime at all or if I was confused, which is more
likely.
,----[ ~/uni/repos/heimdall-uni/programs/elisp/th-abbrev.el ]
| [...]
| (define-abbrev-table 'th-emacs-lisp-mode-abbrev-table
| '(("da" "(defalias °)" (lambda ()
| (th-abbrev-set-point)))
| [...] ))))
|
| (add-hook 'emacs-lisp-mode-hook
| (lambda ()
| (setq local-abbrev-table th-emacs-lisp-mode-abbrev-table)
| (th-abbrev-mode-initialize)))
|
| (define-abbrev-table 'th-message-mode-abbrev-table
| '([...]
| ("vg" "Viele Grüße,\n°" (lambda ()
| (th-abbrev-set-point)))))
|
| (add-hook 'message-mode-hook
| (lambda ()
| (setq local-abbrev-table th-message-mode-abbrev-table)
| (th-abbrev-mode-initialize)))
`----
Whenever I add an abbrev interactively it goes into the local
abbrev-table (one of the th-<mode>-abbrev-tables), which is correct.
So the only question is why gnus uses text-mode-abbrev-table (where
interactively added abbrevs go, too) when there's a
message-mode-abbrev-table in `edit-abbrevs' by default.
Regards,
Tassilo
--
A morning without coffee is like something without something else.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Troubles with abbrev-mode
2006-09-29 22:17 ` Tassilo Horn
@ 2006-09-30 8:02 ` Reiner Steib
0 siblings, 0 replies; 8+ messages in thread
From: Reiner Steib @ 2006-09-30 8:02 UTC (permalink / raw)
On Sat, Sep 30 2006, Tassilo Horn wrote:
> So the only question is why gnus uses text-mode-abbrev-table (where
> interactively added abbrevs go, too) when there's a
> message-mode-abbrev-table in `edit-abbrevs' by default.
`define-derived-mode' does this by default:
,----[ (info "(elisp)Derived Modes") | Emacs 22 ]
| * The new mode has its own abbrev table, kept in the variable
| `VARIANT-abbrev-table', unless you override this using the
| `:abbrev-table' keyword (see below).
|
| [...]
|
| `:abbrev-table'
| You can use this to explicitly specify an abbrev table for
| the new mode. If you specify a `nil' value, the new mode
| uses the same abbrev table as PARENT, or
| `fundamental-mode-abbrev-table' if PARENT is `nil'. (Again,
| a `nil' value is _not_ equivalent to not specifying this
| keyword.)
`----
Maybe `message-mode' could use ":abbrev-table nil" instead of "(setq
local-abbrev-table text-mode-abbrev-table)". (Probably we need it for
compatibility with Emacs 21 and/or XEmacs.)
Bye, Reiner.
--
,,,
(o o)
---ooO-(_)-Ooo--- | PGP key available | http://rsteib.home.pages.de/
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2006-09-30 8:02 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-26 18:56 Troubles with abbrev-mode Tassilo Horn
2006-09-26 20:14 ` Reiner Steib
2006-09-26 21:33 ` Tassilo Horn
2006-09-27 7:56 ` Reiner Steib
2006-09-27 9:36 ` Tassilo Horn
2006-09-29 20:52 ` Reiner Steib
2006-09-29 22:17 ` Tassilo Horn
2006-09-30 8:02 ` Reiner Steib
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).