[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [VM] Any interest in trying to make local vs. IMAP folder treatment
From: |
Uday Reddy |
Subject: |
Re: [VM] Any interest in trying to make local vs. IMAP folder treatment more seamless |
Date: |
Thu, 14 Jun 2012 10:44:51 +0100 |
address@hidden writes:
> Would you elaborate on this? I can guess what "fundamentally flawed in
> its overdependence on key bindings" means but I expect my guess is acutally
> wrong.
Key bindings form the only customizable user interface in Emacs. (There are
also menus, but they are still underused.)
Since the available combinations of keys is limited, we run up against the
limitations pretty soon. The key space has been divvied up to various
parties, some keys to core Emacs, some for the applications, and some for
the users. It is good that it has been done. Otherwise, we would have had
zillions of conflicts. But it also means that we run up against key space
limitations even sooner.
When I first started using Gnu Emacs, I remember reading "commands are Lisp
functions that have an interactive specification," and thinking "why are
they doing that?" Commands are elements of the user interface. Lisp
functions are elements of the implementation. Why are they identifying
commands with Lisp functions? Imagine an operating system like Windows or
Linux asking the users to invoke operations, not by picking things from a
menu, but rather calling operating system functions by the exact names that
are used in the implementation! That is the situation we have in Emacs.
But Lisp hackers, at least in the original days, didn't understand software
engineering.
The right solution would be to have a separate name space of "commands",
which can be bound to Lisp functions in a mode-specific way. Then I could
define a command like "imap" which is bound to "vm-visit-imap-folder" just
in VM mode, but it won't interfere with any other modes.
Since we don't have a separate name space of "commands", we can only borrow
commands from function names. A global function name like "imap" cannot be
bound at the application level. However, you, as the end user, can always
define it for yourself. So, I recommend that you do so. It saves you from
having to type in long function names like "vm-visit-imap-folder". Here are
some more convenient aliases of this kind:
(defalias 'folder 'vm-visit-folder)
(defalias 'imap 'vm-visit-imap-folder)
(defalias 'pop 'vm-visit-pop-folder)
(defalias 'virtual 'vm-visit-virtual-folder)
Cheers,
Uday