Skip to content

Latest commit

 

History

History
129 lines (128 loc) · 5.69 KB

todo.org

File metadata and controls

129 lines (128 loc) · 5.69 KB

Todo

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

otherwise, reparse file

otherwise drop changes

Implement highlight current expression

Iterate through structure item, find nearest enclosing bounds

Write zipper for AST

Implement go to parent

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

Track lines in zipper

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

Fix issue with line 0

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

C-M-t fix transpose sexp

Fix whitespace

Support move out of region

Implement move into

Implement move outof

Support zipper to range

Implement refactoring

Inessential todos

- move zipper to point and kill

C-M-k - kill sexp

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

Longer term Todos

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

Highlight regions

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

Gopcaml-mode Ideas

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

Tasks

Implement customisable logging

Setup variable to track logging

Create logging variable