]>
git.neil.brown.name Git - edlib.git/log
NeilBrown [Tue, 12 Jan 2016 03:00:03 +0000 (14:00 +1100)]
Remove pane_with_cursor.
No longer needed.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 12 Jan 2016 02:57:04 +0000 (13:57 +1100)]
discard move_cursor()
no longer needed - we have a new way of positioning the cursor.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 12 Jan 2016 02:34:39 +0000 (13:34 +1100)]
Remove old pane-text interface
No longer used.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 12 Jan 2016 02:30:17 +0000 (13:30 +1100)]
render-lines: add support for new text rendering.
This required lots of bug-fixes too.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 5 Jan 2016 02:57:38 +0000 (13:57 +1100)]
lib-view: use text-display for borders of a view.
and hacks and bugfixes..
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 5 Jan 2016 01:54:05 +0000 (12:54 +1100)]
lib-messageline: use new text-display interface
Also some fixes and hacks...
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Mon, 4 Jan 2016 23:19:14 +0000 (10:19 +1100)]
display-pygtk: switch to pixel-sizing for pane.
This makes the display completely wrong of course.
So next few patches while change different panes to understand
text-size issues properly.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Mon, 4 Jan 2016 20:53:56 +0000 (07:53 +1100)]
display-pygtk: add text-size and text-display interfaces
NeilBrown [Mon, 28 Dec 2015 21:50:54 +0000 (08:50 +1100)]
display-ncurses: add text-size and text-display interfaces
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Sat, 26 Dec 2015 01:18:51 +0000 (12:18 +1100)]
Add pygtk display.
This is an alternate display, using pygtk.
It also provides an alternate event loop, and the alternate loop
must be used. This is wart which will be resolved eventually.
Only a constant-width font is used. Obviously that must change.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 25 Dec 2015 22:43:47 +0000 (09:43 +1100)]
Fix text.py for new calling convention.
Pane commands must be called against a pane...
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 25 Dec 2015 22:42:19 +0000 (09:42 +1100)]
Python: provide Pane.add_notify interface for pane_add_notify.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 25 Dec 2015 22:38:41 +0000 (09:38 +1100)]
python: use consistent capitalisation for type names.
I've been inconsistent with type names.
Spell all edlib types (Pane Mark Comm) with leading capital letter.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 25 Dec 2015 22:38:06 +0000 (09:38 +1100)]
Python: add the new "comm" type to the python namespace
also initialise it properly.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 25 Dec 2015 22:35:37 +0000 (09:35 +1100)]
pane: improve usefulness of abs_z
In abs_z calculation, the child should be higher than the parent,
incase both are drawn to. This ensures children pane will cover
relevant parts of parent.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 25 Dec 2015 22:34:07 +0000 (09:34 +1100)]
keymap: make a local copy of any key put in a keymap.
When called from C, these are always static. But there is no
such guarantee when called from elsewhere.
We really should refcount the 'comm' too or something like that.
For now, they are never freed.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Sun, 13 Dec 2015 04:25:58 +0000 (15:25 +1100)]
Move 'exit' functionality out of 'display-ncurses'.
Put it in 'mode-emacs' for now.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Sun, 13 Dec 2015 04:13:19 +0000 (15:13 +1100)]
Add global 'z' level.
'abs_z' can be compared between pane to determine global z order.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Sun, 13 Dec 2015 03:36:00 +0000 (14:36 +1100)]
Refresh child panes in 'z' order
This will make future patches which create a global z-order
possible.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Sat, 12 Dec 2015 00:03:37 +0000 (11:03 +1100)]
Python: remove old debuging PrintObject
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Sat, 12 Dec 2015 00:01:54 +0000 (11:01 +1100)]
Python: add co-ordinate conversion methods to panes.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 23:53:19 +0000 (10:53 +1100)]
Add new key_handle_* interfaces to Python.
Discard 'edlib.call' and make the various "call" functions methods
of the (focus) pane object.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 23:47:21 +0000 (10:47 +1100)]
Clarify key_handle*
key_handle should be used most often.
It uses the focus given, but moves 'home' out to a leaf and
searches in from there.
key_handle_filter should be used only when calling a function with
the same name as self. It uses focus and home as given and
only searches home towards root
key_handle_focus should be used when simulting keyboard input. It
moves focus out to a leaf, and then sets home from there.
key_handle_xy should be used when simulatiing mouse input. it follows
focus out to a root tracking x,y and starts home from there.
key_handle_focus and key_handle_xy also pick-up ->point if it is set on
any pane on the way out.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 23:21:59 +0000 (10:21 +1100)]
Discard hx,hy in favour explicit conversion functions.
Less room for conversion, and best to do the work when it is needed.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 23:01:57 +0000 (10:01 +1100)]
Ditto for emacs_str
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 22:59:22 +0000 (09:59 +1100)]
popup_quote remove assignment of whole cmd_info
That makes me nervous...
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 22:55:58 +0000 (09:55 +1100)]
Revisions to pane_refresh
Instead of passing a pointer to a struct which is then copied and
otherwise (largely) unused, just pass the struct by-value.
Also change the setting of some fields that isn't needed as they
cannot have been changed.
And never use a ci again after it has been passed to a command.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 22:34:44 +0000 (09:34 +1100)]
remove call_str and call_extra
no longer used.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 21:55:15 +0000 (08:55 +1100)]
Make sure python compares/hashes panes properly.
Two python objects for the same pane must compare and hash the same.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 21:43:35 +0000 (08:43 +1100)]
Add 'Comm' type to python interface.
This is a command - it can be called from python to run non-python
code.
There are issues with argument passing that I haven't fully resolved...
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 06:31:41 +0000 (17:31 +1100)]
Make it possible to replace current event handler.
Setting DAMAGED_EVENTS on the root and then refreshing
should do it. Untested though.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 06:15:32 +0000 (17:15 +1100)]
First step to plugable event loops.
attach libevent via an plugin command.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 04:30:41 +0000 (15:30 +1100)]
Use new notifiers for lib-view
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 04:21:30 +0000 (15:21 +1100)]
use new notifiers to notify changes to render-lines.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 03:25:55 +0000 (14:25 +1100)]
Use new notifiers for render-hex.
This makes the he_data redundant. I'll leave it there as I'll
probably find a need for it later.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 03:15:15 +0000 (14:15 +1100)]
Use DEF_LOOKUP_CMD in render-hex.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 03:13:57 +0000 (14:13 +1100)]
More fixed for closing popup windows.
I think I need refcounting on panes :-(
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 02:44:32 +0000 (13:44 +1100)]
popup: Close doc more directly.
I want this to all go eventually with auto-close documents.
But destroying a doc via some pane is problematic as the
pane might have disappeared already. So do it more directly.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 02:43:14 +0000 (13:43 +1100)]
Disconnect pane where possible before closing children.
This limits multiple closes due to recursion to some extent.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 02:41:07 +0000 (13:41 +1100)]
Introduce DAMAGED_CLOSED
This gets set when a pane is being closed, and prevents repeated
close when a child tried to close a parent.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 00:43:43 +0000 (11:43 +1100)]
Use new notifiers to close a popup when target disappears.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 00:39:06 +0000 (11:39 +1100)]
Use new notifications to support search_again
That than the old doc notifer.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 11 Dec 2015 00:21:52 +0000 (11:21 +1100)]
Start changing rules about ->focus and ->home
I'm still thinking this through....
'home' must always be the pane where the command was found.
'focus' should be where the action happens.
Previously 'home' would always end up being a parent of 'focus' but
sometimes, particularly calls from popup to target, we want something else.
So allow the caller to set 'focus' to themselves and 'home' to where
to start looking for the command.
If either is home is not set, focuses it moved out to a leaf first.
This still seems a bit clumsy...
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 07:11:49 +0000 (18:11 +1100)]
Use new notifiers to send notification when document changes.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 07:03:30 +0000 (18:03 +1100)]
Unify doc_notify_change and point_notify_change more.
In particular: export only one interface.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 06:48:13 +0000 (17:48 +1100)]
Use new notifier to close all views on a document when destroyed.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 06:00:28 +0000 (17:00 +1100)]
Add infrastructure to allow panes to get notifications from other panes.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Wed, 9 Dec 2015 22:45:15 +0000 (09:45 +1100)]
Make struct cmd_info mostly read-only
I want this to be treated readonly except for a few
places where explicit write access is requested.
Partly because it used to be changed a lot and I want to stop that.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 04:17:55 +0000 (15:17 +1100)]
Remove doc_from_pane
No more callers.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 04:15:56 +0000 (15:15 +1100)]
Change line-count to use a pane rather than a doc.
Now all those pane-based functions are available...
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 04:11:14 +0000 (15:11 +1100)]
Introduce vmark_new to avoid direct acess to doc_new_mark
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 03:21:58 +0000 (14:21 +1100)]
Define doc:set-attr and use in line-count.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 03:00:18 +0000 (14:00 +1100)]
Introduce pane_mark_attr.
This searches panes for an attribute at a mark.
This removes another doc_from_pane call.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 02:55:17 +0000 (13:55 +1100)]
search: used Move-File rather than mark_reset to go to start.
this removes another doc_from_pane call.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 02:42:16 +0000 (13:42 +1100)]
Use attributes to get name of document instead of direct access.
This removes another doc_from_pane() call.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 02:33:30 +0000 (13:33 +1100)]
Use pane_attr_get to get linecount attributes for 'view'.
This reduced need for 'doc'.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 02:20:35 +0000 (13:20 +1100)]
Introduce doc_following_pane and change many mark_next/mark_prev to _pane
still tring to get 'doc' references out of non-core/doc code.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 02:15:44 +0000 (13:15 +1100)]
All ed->commands to be accessed by key_handle
This makes sense and means we don't need to find the 'ed'.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 01:49:42 +0000 (12:49 +1100)]
Introduce mark_next_pane and mark_prev_pane
Use these to remove the need for 'doc_from_pane' from search_add.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 01:29:34 +0000 (12:29 +1100)]
Rationalise prev/next mark function.
- don't need the 'safe' version any more
- don't need to pass 'doc'.
- consistent names: doc_{prev,next}_mark_{all,view}
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 01:21:18 +0000 (12:21 +1100)]
Change hlist to make the head directlry recognisable.
Store a least-significant-bit in the pointer in the 'head'
so that we can recognise the start of the list without carrying
around the pointer to the head.
This allows free movement around marks without holding the doc.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 00:54:05 +0000 (11:54 +1100)]
Remove 'doc' arg from next_mark.
It doesn't need it.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 00:52:00 +0000 (11:52 +1100)]
Remove mark_same calls from non-core/doc code.
These should use mark_same_pane.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 00:47:20 +0000 (11:47 +1100)]
Remove 'd' from render_complete_line
It isn't used.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 00:45:35 +0000 (11:45 +1100)]
Change doc_destroy to take a pane.
This starts to reduce the number of doc_from_pane() callers.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 00:06:17 +0000 (11:06 +1100)]
Python: return number from 'call'.
Return value is now more meaningful, so need to pass it back.
Probably should do something better with negative values.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 00:03:17 +0000 (11:03 +1100)]
python_call: don't accept return values for storage in 'ci'.
That approach is no longer supported.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 10 Dec 2015 00:00:36 +0000 (11:00 +1100)]
Use callback to return marks from doc:vmark-get
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Wed, 9 Dec 2015 23:54:56 +0000 (10:54 +1100)]
Use callback to return pane for call_pane()
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Wed, 9 Dec 2015 23:45:17 +0000 (10:45 +1100)]
Use a call-back to return pane from "display-ncurses".
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Wed, 9 Dec 2015 23:41:39 +0000 (10:41 +1100)]
Use callbacks to return pane from "doc-*"
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Wed, 9 Dec 2015 23:35:44 +0000 (10:35 +1100)]
Use callbacks to return string from Complete:prefix.
Also fix up freeing of strings.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Wed, 9 Dec 2015 09:48:05 +0000 (20:48 +1100)]
Mark the '42' hack in render-complete as such.
And hide it from future attempts to make 'ci' read-only.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Wed, 9 Dec 2015 09:34:57 +0000 (20:34 +1100)]
Return value from doc:add-view directly
Just like doc:find-view
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Wed, 9 Dec 2015 09:25:57 +0000 (20:25 +1100)]
Remove assignment to ci->mark in doc_file.
It isn't needed, and I want to make ci read-only.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Wed, 9 Dec 2015 09:00:02 +0000 (20:00 +1100)]
complete: remove the finding of the render-lines pane.
If we just make render-lines use "key_handle_focus", it is OK
for render-complete to be placed on top of the stack.
This makes things a lot cleaner.
We now need to let move-line through too.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Wed, 9 Dec 2015 08:38:58 +0000 (19:38 +1100)]
Change "render-line" to return line via a callback.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 06:54:26 +0000 (17:54 +1100)]
render-lines: don't set ci->hy unnecessarily.
I want 'ci' to be read-only inside commands.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 06:53:42 +0000 (17:53 +1100)]
Use REDEF_CMD to predeclate keymap_attach_func.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 06:32:28 +0000 (17:32 +1100)]
Use callbacks to return pane from render-*-attach commands.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 06:22:13 +0000 (17:22 +1100)]
use callbacks to return a pane from 'attach' commands.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 03:52:27 +0000 (14:52 +1100)]
Use callback to return string from doc:get-str
This way it is clear how ownership of the string is managed.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 03:36:16 +0000 (14:36 +1100)]
Use a callback to return string from doc:get-attr
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 02:01:47 +0000 (13:01 +1100)]
Use a callback to return mark for mark_at_point.
This might seem a bit forced, but I really think callbacks
like this are the best generic approach. I hope.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 01:54:17 +0000 (12:54 +1100)]
Unify calls to doc:dup-point.
All these calls can use mark_to_point - so do that.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 01:32:13 +0000 (12:32 +1100)]
Change Complete:prefix to return count directly.
with an offset of '1' to avoid returning '0'.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 01:28:14 +0000 (12:28 +1100)]
Change text-search to return result directly.
-2 is cannot find
-1 is incomplete regex
0 is no such commnd
N is match of length N-1 found.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 00:41:56 +0000 (11:41 +1100)]
Change doc:replace to return result directly.
There isn't must result here - just a flag to say "yes, a change was made".
But it was being handled completely wrongly!
I think it is fixed now.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 00:38:01 +0000 (11:38 +1100)]
Change doc:mark-same to return result directlry.
'1' means they are the same.
any other +ve number means they are different.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 00:33:08 +0000 (11:33 +1100)]
Change doc:step to return character directly.
Don't use ci for returing things.
As a char could be zero and WEOF could appear negative,
use high bits to make the number look positive.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 00:10:18 +0000 (11:10 +1100)]
Change doc:find-view to return value directly.
I'm moving away from using the cmd_info to return stuff.
So for numbers, just return them directly.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Tue, 8 Dec 2015 00:01:18 +0000 (11:01 +1100)]
Update README file
Lots has happened since this was written...
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 4 Dec 2015 05:42:12 +0000 (16:42 +1100)]
python: make standard globals available to python scripts.
Also make 'editor' and 'edlib' available to subsequent function calls
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 4 Dec 2015 05:38:05 +0000 (16:38 +1100)]
Make symbols in loaded libraries global.
I don't really like doing this, but python needs it for
"import gtk" to work.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 4 Dec 2015 01:05:02 +0000 (12:05 +1100)]
Fix various issues with python
Now that I've started testing a bit more...
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Fri, 4 Dec 2015 01:03:50 +0000 (12:03 +1100)]
Remove 'buf' from pane_text
It isn't used.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 3 Dec 2015 23:47:26 +0000 (10:47 +1100)]
python: Add 'init' function for panes.
This calls pane_register.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 3 Dec 2015 22:52:16 +0000 (09:52 +1100)]
Python: add interface for pane_focus and pane_refresh.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 3 Dec 2015 22:48:35 +0000 (09:48 +1100)]
Create a command for defining new named commands.
Signed-off-by: NeilBrown <neil@brown.name>
NeilBrown [Thu, 3 Dec 2015 22:47:50 +0000 (09:47 +1100)]
Initialise doc_default_cmd earlier.
It needs to be initialised before the very first doc is created.
Signed-off-by: NeilBrown <neil@brown.name>