Update temporary highlight function to be less convoluted
Rebuild parse tree on changes
use after-change-functions to track changed location
use idle timer to queue update
setup function to rebuild region of parse tree
split list into three - before, in and after region
parse edited region and replace in section
otherwise, parse from start to eof and replace in and after
Implement highlight current expression
Iterate through structure item, find nearest enclosing bounds
use zipper to move to parent
Use set-transient-map to implement a tmm
Swap code regions at the same level
use zipper to find bounds for both regions
perform swap in emacs using marker to remember the insert positions
Figure out how to include comments in enclosed region
Implement move up move down (rather than transpose)
make zipper move to nearest enclosing scope on activation
integrate with merlin types (i.e print type of current zipper)
Goto nearest structure item (for C-M-a (tuareg is screwed up))
Fix issue with empty structures
Remove type holes on edit
Add insertion capability?
Fix move to defun functionality to use lines
Setup move to let def to begin zipper mode
C-M-a - move to start of defun & move zipper broadly to point and start zipper at structure item
C-M-e - move to end of defun & move zipper broadly to point and start zipper at structure item
C-M-u - backwards up list - move granularly to region, and move up zipper
C-M-u - backwards up list - move granularly to region, and move down zipper
- list expressions move forward without expanding the element
C-M-n - forwards list - move broadly to region and move left zipper
C-M-p - backwards list - move broadly to region and move left zipper
- forwards expressions attempt to expand the item below it
C-M-f - forwards sexp - move granularly to region and move forward zipper
C-M-b - backwards sexp - move granularly to region and move backwards zipper
Setup adding remove parens in pairs
Setup conditional keybindings
add filter function to check whether state active, and try to build - return nil if state still not possible
use menu-item to only bind movement commands when possible to build zipper
add support for selections
shift-commands - don’t place a face on the overlay
Support move out of region
- move zipper to point and kill
C-M-spc - mark sexp - move zipper to point and select region
M-{, M-} - move paragraph - (i.e top level structure items)
M-a, M-e - move sentences - module
M-k - kill sentence - kill module
C-M-l reposition to buffer - fix to work with ocaml
move to (??) type holes with C-n C-p if present in function DWIM
Write function to check if current buffer contains any type holes
Write function to return position of next type hole
add expression and more functionality to zipper
integrate with merlin (d)estruct/(l)ocate
Extract binding
Add function to find all repetitions of enclosing expression
add function to highlight all these bounds temporarily
add-on-idle function to run highlight on delay
Better move to defun recognition
If point on the same line, then use current item
Use line distance rather than character distance (makes more sense)
In case of tie then use column
Implement customisable logging
Setup variable to track logging