Skip to content

Commit

Permalink
delete around
Browse files Browse the repository at this point in the history
  • Loading branch information
grierson committed Aug 15, 2023
1 parent 25f9d89 commit 6d8c843
Show file tree
Hide file tree
Showing 14 changed files with 96 additions and 492 deletions.
1 change: 1 addition & 0 deletions docs/sample.clj
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
(+ 1 2 3)
[1 2 3]
#{1 2 3}
39 changes: 28 additions & 11 deletions fnl/formedit/select.fnl
Original file line number Diff line number Diff line change
@@ -1,28 +1,45 @@
(local ts (require :nvim-treesitter.ts_utils))

(local query
"[(list_lit) (quoting_lit) (vec_lit) (set_lit) (anon_fn_lit) (map_lit)] @form")

(local forms {:list_lit true
:vec_lit true
:map_lit true
:set_lit true
:anon_fn_lit true})

(fn get-form [node]
;; Tree search
(fn find-current-form [node]
(if (. forms (node:type))
node
(let [parent (node:parent)]
(when parent (get-form parent)))))
(when parent (find-current-form parent)))))

(fn find-root-form [node]
(if (node:parent)
(find-root-form (node:parent))
node))

;; Find node
(fn get-current-form []
(let [node (ts.get_node_at_cursor)
form (get-form node)]
form))
(let [node (ts.get_node_at_cursor)]
(find-current-form node)))

(fn get-current-root-form []
(let [node (ts.get_node_at_cursor)]
(find-root-form node)))

; (fn get-inner-form []
; (let [form (get-current-form)
; [open-row open-col] [(: (. (form:field :open) 1) :end_)]
; [end-row end-col] [(: (. (form:field :close) 1) :start)]]
; [open-row open-col end-row end-col]))

;; Select node
(fn select-form []
(let [form (get-current-form)
_ (print (form:type))]
(let [form (get-current-form)]
(ts.update_selection 0 form)))

(fn select-root-form []
(let [form (get-current-root-form)]
(ts.update_selection 0 form)))

{: get-current-form : select-form}
{: get-current-form : select-form : select-root-form}
22 changes: 21 additions & 1 deletion fnl/spec/delete_around_spec.fnl
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,24 @@
(fn []
(h.setup {:content ["([1]" "[2])"] :cursor [1 0]})
(h.feedkeys :daf)
(h.expect {:content "" :cursor [1 0] :lines 1})))))
(h.expect {:content "" :cursor [1 0] :lines 1})))
(it "only deletes sub form"
(fn []
(h.setup {:content "([1] [2])" :cursor [1 5]})
(h.feedkeys :daf)
(h.expect {:content "([1] )" :cursor [1 5]})))))

(describe "delete around root"
(fn []
(before_each (fn []
(vim.keymap.set :o :aF select.select-root-form)))
(it "cursor at head of form deletes root"
(fn []
(h.setup {:content "(+ 1 (+ 2 3))" :cursor [1 0]})
(h.feedkeys :daF)
(h.expect {:content "" :cursor [1 0]})))
(it "cursor in sub form deletes root"
(fn []
(h.setup {:content "(+ 1 (+ 2 3))" :cursor [1 7]})
(h.feedkeys :daF)
(h.expect {:content "" :cursor [1 0]})))))
13 changes: 0 additions & 13 deletions fnl/spec/delete_inside1_spec.fnl

This file was deleted.

51 changes: 0 additions & 51 deletions fnl/spec/delete_inside_spec.fnl

This file was deleted.

117 changes: 0 additions & 117 deletions fnl/spec/tree_spec.fnl

This file was deleted.

11 changes: 0 additions & 11 deletions lua/formedit/init.lua

This file was deleted.

26 changes: 19 additions & 7 deletions lua/formedit/select.lua

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 0 additions & 25 deletions lua/formedit/tree.lua

This file was deleted.

29 changes: 27 additions & 2 deletions lua/spec/delete_around_spec.lua

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 6d8c843

Please sign in to comment.