* Standard module format. All modules are explicitly declared
as modules, they're created via a constructor and
instantiated automatically. They're dependency aware. They
stringify properly.
* Classes are declared the same way (rather like Structs
already were). They also stringify properly. Plus, each
instance has a rather nifty closure member that closes all
of its methods around 'this', so you can pass them to map,
forEach, setTimeout, etc. Modules are themselves classes,
with a special metaclass, as it were.
* Doug Crockford is dead, metaphorically speaking.
Closure-based classes just don't fit into any of the common
JavaScript frameworks, and they're inefficient and
confusing. Now, all class and module members are accessed
explicitly via 'this', which makes it very clear that
they're class members and not (e.g.) local variables,
without anything nasty like Hungarian notation.
* Strictly one module per file. Classes that belong to a
module live in the same file.
* For the moment, there are quite a few utility functions
sitting in base.c, because my class implementation used
them, and I haven't had the time or inclination to sort them
out. I plan to reconcile them with the current mess that is
the util namespace.
* Changed bracing style.
New review:
owner: dougkearns
I like this for the most part, except that it has to go to lengths
to wrap the original nsIFile correctly, an that it can't be passed
directly to other XPCOM components. It makes most operations on
files a lot cleaner, though.
This list of keys is completely arbitrary, a small subset of Firefox's
supposedly undesirable bindings, and still manages to break three default
bindings on GTK/Firefox. INSERT mode is essentially a pass-through mode. If
that's not desirable then a new enhancement issue should be opened.
Fixes issue #58.
A error occurs if the element has been removed when "elem.selectionStart" is executed.
e.g.
Press "gi<ESC>" on
<input type="text" onfocus="this.parentNode.removeChild(this)" />
For now, the internal equivalent of "iskeyword" is [^\s'"].
In the future, the internal "iskeyword" equivalent can be expanded. It may
be overboard to add an "iskeyword" option, as it applies to lots more
things than :abbr. Additionally, it's not clear why it's bad to call
keyword characters everything except whitespace and quotes.
TODO: Should abbreviations be triggered by any non-keyword character?
TODO: Should abbreviations be triggered by <CR>?
TODO: Should abbreviations be able to include <Left>, etc.?
a.) Cleaned up copyright language to match conventions.
(I used the memoir document class documentation as a reference, but
these conventions are common throughout publishing)
* The (c) symbol has no legal meaning. Only the word "Copyright" and
an encircled lowercase c are appropriate. So the word "Copyright"
was placed before each (c).
* Each (C) was changed to (c).
* Kris uses the correct symbols in copyright notices, but those
symbols can be problematic in terminal-mode editors. Added the word
"Copyright" as well.
* Replaced colons/spaces after years with the word "by."
b.) Added a copyright notice to common/content/template.js. It was
missing one entirely. Please correct if it doesn't need one or if the
copyright isn't held by Martin.
c.) Also added a "tildetidy" target to Makefile common that includes a
version of the find line from the existing "clean" target (however,
this version uses "rm -fv" instead of "rm -f").