### Trivial
-- [X] :Cx-< and :Cx-> to shift view left and right and disable wrap
-- [ ] Unify edlib_timing and pane_too_long ??
- edlib_timing is for times_up(). We start before a keystroke or
- mouse event, and force all commands to fail after 15 seconds.
- pane_too_long fires 500msec or more after pane_set_time()
- It is used to avoid search taking too long and to avoid hogging
- cpu for too long in parsing make output. I should use it for
- linecount too.
- times_up() callers don't have easy access to a common pane.
- Maybe each pane should hold a link to 'editor', then we could
- do away with static variables.
-- [X] If an email part doesn't end with newline, last character is swallowed.
-- [X] What is rule for doc:content? Does the mark move and get passed
- down, or is it copied and left unchanged?
-- [X] notmuch: When moving among messages, always move cursor to search
- pane
+- [ ] give every pane a link to root/editor main and use that
+ instead of statics. Then maybe times_up() can use pane_too_long()
+- [ ] mark DEF_CMD structs as const
+- [ ] rexel: don't abort if something looks wrong, just fail.
### Small
-- [X] ->replace_pane, ->replace_popup can be deleted (Abort) but we
- don't catch it...
-- [X] notmuch reply should interpolate the first *visible* text part
-- [X] ncurses - don't block in nc_external_viewer - at least abort after
- 30 seconds, but preferably switch to a mode which leaves
- everything else running.
-- [X] lang-python should put each module in a separate module
- Maybe PyImport_ExecCodeModuleEx() after reading and compile()ing
- the source file. Or set up path to find edlib modules.
+- [ ] detect and limit recursion.
+- [ ] message-line: use lib-renderline for the one line, so we have
+ markup support.
+- [ ] history: Make it possible to search through history. Maybe Alt-p only shows
+ lines containing current content.
+- [ ] emacs: Num-C-l doesn't work if it would require part of a wrapped line
+ off top of screen
+- [ ] emacs: :C-q to recognise names of Unicode chars: e.g. WASTEBASKET
+ Possibly matches a list which continued :C-q cycles through
+- [ ] linecount 'view' mode improvements
### Medium
-- [X] add event:on-idle with 3 priority levels
-- [X] Always do word-count async.
-- [X] lib-url
- [ ] lib-mergeview improvements
- [ ] lib-diff slowness with large diff
- [ ] linecount :when used in 'view' mode, stack the counting pane with all the
others so it can easily catch view-changed.
+- [ ] C config module that reads an ini-style file to set attributes
+ based on path
+- [ ] review all doc:char implementations for simplification.
+- [ ] make it easy for a make-search command to search backwards
### Large
- [ ] give every pane a link to root/editor main and use that
instead of statics. Then maybe times_up() can use pane_too_long()
- [ ] mark DEF_CMD structs as const
-- [X] add event:on-idle with 3 priority levels
- 2 - fast cleanup that must be run immediately
- 1 - slower general response to recent command: typically
- pane_refresh
- 0 - do one of these before checking of other events
- Use 2 for freeing panes and marks and other memory
- Use 1 for pane_refresh
- Use 0 for splitting up background tasks like spell and linecount
- simplify main loop in edlib.c to: call("event:run", ed)
- [ ] teach input to allow a repeat command to be registered so that e.g.
search/replace and do a bit of work, then ask to be called again.
input can cancel this on suitable input.
### lib-mergeview
-- [ ] commands to resolve a conflict
+- [ ] commands to resolve a conflict with numeric args to :A-m
+ negative: discard change, keep original
+ 0: if no conflicts remain, wiggle change into place
+ 1: ignore conflicts, keep replacement
+ 9: if in merge cut patch to copy-buffer
+ if there is a selection, paste in patch with selection as
+ "orig"
+ if no selection - just paste it in with empty orih
- [ ] merge-mode to highlight markers with "space-only" or "no-diff" state
Also have green for "no conflicts", but it doesn't stand out.
It would be nice if space-only differences didn't stand out so much.
space-conflicts: bold blue
conflicts: red
in text, space conflicts get underline, no inverse
-- [ ] merge-mode command to select one of the three "this only".
- "discard" keeps first, or "apply" does wiggle
- A-- A-m to discard, A-1 A-m to apply
+- [ ] Capture '-<' and '->' on the marker lines to move the orig section
+ w.r.t surrounding text, or to prune the before and after sections.
+- [ ] Capture :CX:C-x command to cycle through matching places in the
+ three branches.
- [ ] merge-mode automatic detect, enable, goto-first
I'm not sure I want this, but probably try it and see
-- [ ] command to cycle through matching places in other 2 branches.
- Capture Cx-Cx ??
+ Maybe time-limit on search
### emacs
- [ ] Num-C-l doesn't work if it would require part of a wrapped line
off top of screen
-- [X] ->replace_pane, ->replace_popup can be deleted (Abort) but we
- don't catch it...
- [ ] :C-q to recognise names of Unicode chars: e.g. WASTEBASKET
Possibly matches a list which continued :C-q cycles through
+- [ ] split some generic functionality like arrows and mouse clicks
+ into a separate module to be shared with other edit modes.
- [ ] sort the command names for command-completion?
Currently lines are inserted into buffer. I need to store in
an array first, then qsort()
### ncurses
-- [X] don't block in nc_external_viewer - at least abort after
- 30 seconds, but preferrably switch to a mode which leaves
- everything else running.
- [ ] add full list of colour names (to lib-colourmap)
- [ ] allow a pane to require 'true-colour' and discover number of colours available
Colour map gets changed when it becomes the focus.
### message-line
- [ ] Differentiate warnings from info, and blink-screen for warnings.
+- [ ] use lib-renderline for the one line, so we have markup support.
### docs
### line count
-- [X] count-lines seems to go very slowly in base64/utf-8 email
-- [X] Always do word-count async.
- [ ] Find a way to locate mark faster than walking the whole list
- adding up the interval counts. Maybe a version number and
- async update.
+ adding up the interval counts. Add a second mark list as a
+ 'skiplist' with 1 mark for every 100 of the main sequence.
### lib-utf-8
- [ ] "%d quoted lines" still not quite right. Moving 'down' past it
jumps to end of line.
- [ ] Don't wrap email header lines when cursor isn't on the line - too noisy
-- [X] notmuch reply should interpolate the first *visible* text part
- [ ] word-wrap subject (only) in email summary line
- [ ] check for Efail errors from doc:open
- [ ] make it practical for 'text' documents to contain non-utf8 so that
- [ ] in notmuch I searched in a message (mimepart), then enter to choose,
then 'q' and crash.
- [ ] A multipart still had an active view.
-- [X] linecount is spinning somewhere.
- Doc is multipart, chars are garbage. underlying is b64
- Email has large attachments
- This might have been because b64 was slow, but I don't really want
- linecount of these things.
- [ ] when I unhide an email part which is a single v.long line,
redraw gets confused and point goes off-screen, which seems
to leave it confused.
### lang-python
- [ ] repeated alarm(10)/alarm(0) calls slow things down
-- [X] lang-python should put each module in a separate module
- Maybe PyImport_ExecCodeModuleEx() after reading and compile()ing
- the source file. Or set up path to find edlib modules.
- [ ] array index should allow two args, second being a mark for
doc:get-attr etc.
- [ ] should be able to test if a mark is NULL or Freed
### lib-url
-- [X] command to mark-up all URLs in a document
-- [X] handlers for that markup. xdg-open for links, maybe signal
- register email client for mailto: links.
-- [X] easy way for K:Enter on a link to do just like mouse-click
-- [X] email: urls should not be followed unless they are visible.
- Maybe display in the message window, which might be made larger
- just for this purpose.
- Maybe "Message-button"
New Modules - simple
preferred column" ?? Maybe use for make output so I can see current
match more easily.
-- [ ] create a pane-type that just renders a marked-up line and use
- several of these for render-lines, and one for messageline.
- side-scrolling will be interesting.
- pane_clear might want to copy relevant region from underlying pane.
- Hopefully this will cure my performance problems with gtk on my slowish
- notebook.
-
- [ ] tags handling - and easy tag-search without tags. e.g. git-search.
alt-S looks for TAGS or .git and either does a tags-search or a grep-l and
check every match. So maybe this is part of the 'make' module
### config
+- [ ] C config module that reads an ini-style file to set attributes
+ based on path
+
What needs to be configured? How is that done?
- fill mode and width