the naming of the options in the local and global edition
option dialogs are still not 100% consistent (only "use
tabs" vs. "use real tabs (ASCII 9)" left, afaics).
"autoindent" and "backspace unindents" should be right
above each other.
also, i'd either say "return indents" or "autounindent" to
make the naming symmetric. or maybe not. *g*
there are the global options. on top of them can be a file
type specific "diff list"; unlisted options "shine through"
from the global options.
then there are the local options. they just completely
override the global option set if they are defined. i think
this should change; only the explicitly set local options
should override the respective global options, so when a
global option changes and it is not overridden by a local
option, the change will be immediately visible in that
particular window.
next point is the "diff list". technically a cool idea, but
you can't show this to a user (after all, you have dialogs
for the global and local options as well - why not just an
option/value table?). every setting in the file type specific
global options and the local options should have a state
"inherit". for boolean options that would mean tri-state
checkboxes, for lists of any kind one entry more, for text
fields an additional "override" checkbox.
the local options dialog should have a "reset to globals"
button. with inheritance, it would reset all options to
"inherit", otherwise it would just copy the global options
that apply to this file.
gui-wise, the correlation between "default global edition"
and "global edition" is unobvious, to say the least.
remove "global edition". rename "default global edition"
to "global edition". remove the button "no SHL" and
instead insert a "<Default>" entry at the top of the list.
make "edit" pop up a the regular edition options dialog.
all those dialogs but the one for the <default> entry
would have "inherit" states (the "diff list" dialog would
work for now, too).
a completely different approach: make "default global
edition" a subdialog of the current "global edition" dialog
(and name it "per file type settings"). that should be
sufficient as a quick fix when using "diff lists", but would
look odd once "inherit" states are implemented.
in any case it is important to have the things close
together to make the hierarchy clear.
the "to all" button in the "global edition" settings is
ambiguous. i sort of expected it to apply to all files, not
only the currently open ones. within a project it should
be no problem at all to do this. but it is also possible
outside any project: save timestamps along with the
settings. if the local settings are older then the global
ones, discard them.
the user should have the choice to what to apply the
options. to be consistent, there should be only an "ok"
button (apart from the "cancel" one) and that one would
ask to what to apply these settings, i.e. "all without local
settings", "currently opened", "entire project", "all". the
alternative would be a huge button bar in the option
dialog, but this is not viable.
btw, as long as the state files are binary, such
project/desktop "escape" possibilities would be useful for
about every type of settings.