unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [comp.emacs] Announcing Easymacs: an all-in-one Emacs configuration for newbies
@ 2005-07-01  7:43 David Kastrup
  2005-07-01 13:36 ` Robert J. Chassell
  2005-07-01 14:21 ` Luc Teirlinck
  0 siblings, 2 replies; 7+ messages in thread
From: David Kastrup @ 2005-07-01  7:43 UTC (permalink / raw)


[-- Attachment #1: Type: text/plain, Size: 419 bytes --]


The following announcement seems like an excellent reason to get
custom themes working.  While I have not looked at it yet, such
customization sets might be desirable to be available in the core
Emacs.  And there are also things like "Aquamacs" which change a lot
of default settings.  Having those available as a single theme which
the user can use all at once without losing his own customizations
seems desirable.


[-- Attachment #2: Type: message/rfc822, Size: 850 bytes --]

From: public@heslin.eclipse.co.uk
Subject: Announcing Easymacs: an all-in-one Emacs configuration for newbies
Date: Thu, 30 Jun 2005 10:03:05 +0100
Message-ID: <87acl86wty.fsf@heslin.eclipse.co.uk>

Easymacs is an easy-to-learn, one-size-fits-all configuration for new
users of GNU Emacs. It sets up key bindings that conform to a common
denominator of the Gnome/KDE/OS X/Microsoft Windows human interface
guidelines, and provides function-key bindings for other powerful Emacs
features. It is fully documented, and the new user can productively edit
text right away, without going through the Emacs tutorial. Many
commonly-used functions can be accessed without having to learn the
"chords", or multiple keystrokes that Emacs uses by default.

http://www.dur.ac.uk/p.j.heslin/Software/Emacs/Easymacs/

Peter

[-- Attachment #3: Type: text/plain, Size: 52 bytes --]



-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

[-- Attachment #4: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [comp.emacs] Announcing Easymacs: an all-in-one Emacs configuration for newbies
  2005-07-01  7:43 [comp.emacs] Announcing Easymacs: an all-in-one Emacs configuration for newbies David Kastrup
@ 2005-07-01 13:36 ` Robert J. Chassell
  2005-07-01 14:21 ` Luc Teirlinck
  1 sibling, 0 replies; 7+ messages in thread
From: Robert J. Chassell @ 2005-07-01 13:36 UTC (permalink / raw)


David Kastrup <dak@gnu.org> writes

    The following announcement seems like an excellent reason to get
    custom themes working.  ...

Yes.  The advantages of a customize theme command are two fold:
writing customizations becomes more usual for those who have learned
differently than writing simple expressions.  And loading the
resulting libraries becomes simpler.

As Luc Teirlinck pointed out, for loading, the current custom theme
files use custom-theme-set-variables and custom-theme-set-faces.
This is not necessary.

There is an alternative way to load and unload the current custom
theme libraries.  This means writing one new function (which may be
hard).

The other part of customization, the part that uses the existing
cus-*.el libraries, is fine for people who have not learned or do not
wish to learn to write customizations in the normal way.

For loading, the current custom theme methods is very inconvenient for
those who have 20 year old custom theme libraries and load them
frequently (well, I mean, load the current version of the library).
That is because the regular customization libraries must be rewritten
using custom-theme-set-variables and custom-theme-set-faces.

On the other hand, the new method is advantageous to those who wish to
specify the name of a custom theme inside a library instead of making
the name of the library be the name of the theme.

I think we should drop the loading method in the current set up and
use the conventional loading method.  The latter works fine to load
`custom-set-faces' and `custom-set-variables' expressions; they can be
set however you want.

To load and unload custom themes we only need two functions, one of
which has been around since the beginning and one of which is new.

The first function is `load-library'.  It loads an existing custom
theme file, such as a .emacs file with a `custom-set-faces' expression
in it.

The second function does not exist.  It is `unload-libraries'.  This
function should unbind every customized or user-modified symbol in an
instance of Emacs and rebind those symbols to whose which come with

    emacs -q --no-site-file

(Well, the function should be named `unload-library' and should only
unload a specified library and return only those bindings to their
defaults; but I think that is harder.)

Thus, to offer an Emacs theme that has my personal theme plus a theme
with a white background (useful for sitting in the sun), type

    M-x load-library RET .emacs RET
    M-x load-library RET .emacs-white-background RET

To return to a default instance of Emacs, type

    M-x unload-libraries RET

The disadvantage is that each theme is specified by a named file.
In addition, you cannot put different themes into the same file.

Also, you cannot substract one theme from another, since
`unload-libraries' rebinds all symbols to whose which come with come
with `emacs -q --no-site-file'.

I do not know how unload one or more non-default libraries and return
an instance of Emacs to a default.  A function using `makunbound' is
not what we want since `makunbound' does not rebind a symbol to the
default value.  It makes the symbol be void.  As for `unload-feature',
I cannot figure out how to call the name of a file, such as
"~/.emacs-white-background" a `feature' that means the rest of the
library must be loaded or unloaded.  (I hope the capability is there
and that I am just being foolish.)

In any event, like everyone, I customize my instances of Emacs all the
time using various .emacs files.  However, instead of unloading such
customizations, I simply start a new instance with `-q -l ' and the
name of a different file to load.

Thus, if the customization file exists, I could start Easymacs with

    emacs -q -l .emacs-easymacs

With the new function, I could start an instance of Emacs of my own
and then type

    M-x unload-libraries RET
    M-x load-library RET .emacs-easymacs RET

For me, the first is easier, but for many, the second would be easier.

As for settings that go into a customization file:  that capability
can be left as is.  Some variables, like `inhibit-startup-message',
should be set with `setq' with the expression written into the
customization file.

On the other hand, to specify faces, it is often best to use the
`custom-set-faces' function.  When the face is new and you are working
interactively, the function automatically writes the expression into
the initialization file.  But you need not work interactively; for
previously set faces, you can change the expression in your .emacs
file.  This can be very convenient.

This is a scheme that works for both novices and experts:  use the old
loading function, one new unloading function, and the current setting
mechanisms.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [comp.emacs] Announcing Easymacs: an all-in-one Emacs configuration for newbies
  2005-07-01  7:43 [comp.emacs] Announcing Easymacs: an all-in-one Emacs configuration for newbies David Kastrup
  2005-07-01 13:36 ` Robert J. Chassell
@ 2005-07-01 14:21 ` Luc Teirlinck
  2005-07-01 14:55   ` Lennart Borgman
  1 sibling, 1 reply; 7+ messages in thread
From: Luc Teirlinck @ 2005-07-01 14:21 UTC (permalink / raw)
  Cc: emacs-devel

David Kastrup wrote:

   The following announcement seems like an excellent reason to get
   custom themes working.  While I have not looked at it yet, such
   customization sets might be desirable to be available in the core
   Emacs.

That announcement is talking about key bindings.  The current Custom
themes machinery does not attempt to handle key bindings at all.  So
it would be useless for this particular purpose.

Custom themes only try to handle user options defined with defcustom.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [comp.emacs] Announcing Easymacs: an all-in-one Emacs configuration for newbies
  2005-07-01 14:21 ` Luc Teirlinck
@ 2005-07-01 14:55   ` Lennart Borgman
  2005-07-01 15:36     ` Luc Teirlinck
  0 siblings, 1 reply; 7+ messages in thread
From: Lennart Borgman @ 2005-07-01 14:55 UTC (permalink / raw)
  Cc: emacs-devel

Luc Teirlinck wrote:

>David Kastrup wrote:
>
>   The following announcement seems like an excellent reason to get
>   custom themes working.  While I have not looked at it yet, such
>   customization sets might be desirable to be available in the core
>   Emacs.
>
>That announcement is talking about key bindings.  The current Custom
>themes machinery does not attempt to handle key bindings at all.  So
>it would be useless for this particular purpose.
>
>Custom themes only try to handle user options defined with defcustom.
>  
>
Which make me think that these two things would overlap if the key 
bindings where defined through define-minor-mode.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [comp.emacs] Announcing Easymacs: an all-in-one Emacs configuration for newbies
  2005-07-01 14:55   ` Lennart Borgman
@ 2005-07-01 15:36     ` Luc Teirlinck
  2005-07-01 15:51       ` Luc Teirlinck
  2005-07-01 16:58       ` Robert J. Chassell
  0 siblings, 2 replies; 7+ messages in thread
From: Luc Teirlinck @ 2005-07-01 15:36 UTC (permalink / raw)
  Cc: emacs-devel

Lennart Borgman wrote:

   Which make me think that these two things would overlap if the key 
   bindings where defined through define-minor-mode.

In a certain sense, global minor modes can be thought of as keybinding
themes (if the main thing they do is activate a keymap).  However,
there is a convention that minor modes can only bind a very limited
number of key sequences.  Of course, a "theme" minor mode can get
around that by simply disregarding that convention.  I am not really
familiar with cua-mode or pc-selection-mode, but I guess that this is
exactly what they do.  A "theme" minor mode has to be very careful,
however, because it normally is intended as a substitute for the
global map.  The local map (usually the major mode map) overrides the
global map, but not the substitutions to the global map provided by
the theme minor mode.  This could potentially mess up some major modes.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [comp.emacs] Announcing Easymacs: an all-in-one Emacs configuration for newbies
  2005-07-01 15:36     ` Luc Teirlinck
@ 2005-07-01 15:51       ` Luc Teirlinck
  2005-07-01 16:58       ` Robert J. Chassell
  1 sibling, 0 replies; 7+ messages in thread
From: Luc Teirlinck @ 2005-07-01 15:51 UTC (permalink / raw)
  Cc: emacs-devel

>From my earlier message:

   The local map (usually the major mode map) overrides the
   global map, but not the substitutions to the global map provided by
   the theme minor mode.  This could potentially mess up some major modes.

I guess that once the problem is noticed, it can be corrected using
minor-mode-overriding-map-alist.  There are "emulation modes" which
are a kind of a "keymap theme", like viper-mode.  There also is
emulation-mode-map-alists for them to use.  See `(elisp)Active Keymaps'.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [comp.emacs] Announcing Easymacs: an all-in-one Emacs configuration for newbies
  2005-07-01 15:36     ` Luc Teirlinck
  2005-07-01 15:51       ` Luc Teirlinck
@ 2005-07-01 16:58       ` Robert J. Chassell
  1 sibling, 0 replies; 7+ messages in thread
From: Robert J. Chassell @ 2005-07-01 16:58 UTC (permalink / raw)


Lennart Borgman wrote:

   Which make me think that these two things would overlap if the key 
   bindings where defined through define-minor-mode.

It is easier to use the current, standard customization mechanism.
Simply load a .emacs file.

In it, you can define global keybindings, local keybindings, faces,
variables, functions, and so on.  You do not need to be limited as
lisp/cus-theme.el is currently limited.

By adding an `unload-libraries' function, you get both the
known-to-work, longstanding method and the newer automatic programming
method that the other cus-*.el libraries provide.

-- 
    Robert J. Chassell                         
    bob@rattlesnake.com                         GnuPG Key ID: 004B4AC8
    http://www.rattlesnake.com                  http://www.teak.cc

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2005-07-01 16:58 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-07-01  7:43 [comp.emacs] Announcing Easymacs: an all-in-one Emacs configuration for newbies David Kastrup
2005-07-01 13:36 ` Robert J. Chassell
2005-07-01 14:21 ` Luc Teirlinck
2005-07-01 14:55   ` Lennart Borgman
2005-07-01 15:36     ` Luc Teirlinck
2005-07-01 15:51       ` Luc Teirlinck
2005-07-01 16:58       ` Robert J. Chassell

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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).