Skip to content

Commit

Permalink
undo redo works. wip adding tests
Browse files Browse the repository at this point in the history
  • Loading branch information
saikyun committed Mar 18, 2021
1 parent 3ac9ffe commit bd4d086
Show file tree
Hide file tree
Showing 12 changed files with 984 additions and 865 deletions.
107 changes: 101 additions & 6 deletions api.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,52 @@
# High level api

gb-length
gb-slice
gb-nth

put-caret
update-caret

delete-selection!
delete-before-caret!
delete-word-forward!
delete-word-backward!
backspace!

insert-char!
insert-char-upper!

forward-word
backward-word
forward-char
backward-char

copy
cut!
paste!

undo!
redo!


# Undo / redoable

delete-selection!
delete-before-caret!
delete-word-forward!
delete-word-backward!
backspace!

insert-char!
insert-char-upper!

cut!
paste!





Here's a list of all functions in `src/new_gap_buffer.janet`.

### iterators
Expand All @@ -7,9 +56,15 @@ index-char-backward
index-char-backward-start
index-char-start

### committing
fresh?
commit!

### string functions
gb-length
gb-slice
start-stop-text-gap-nth*
gb-nth

### bounds-check
bounds-check
Expand All @@ -18,9 +73,6 @@ bounds-check
put-caret
update-caret

### committing
fresh?

### c->s
c->s

Expand All @@ -29,8 +81,51 @@ word-delimiter?
end-of-next-word
start-of-previous-word

### selection funcs
deselect
select-all
select-forward-word
delete-word-forward!
delete-word-backward!
select-backward-char

### gap movement
put-gap-pos!
update-gap-pos!
move-gap-to-caret!

### removal
remove-region*
remove-region!
remove-selection!
delete-region*
delete-region!
delete-selection!
delete-before-caret!
delete-word-forward!
delete-word-backward!
backspace!
replace-content

### insertion
insert-char-at-caret
insert-string-at-caret
insert-char!
ascii-upper-chr*
insert-char-upper!

### navigation
forward-word
backward-word
forward-char
backward-char

### cut / copy / paste
get-selection
copy
cut!
paste!

### undo
undo!
redo!

### render
render
50 changes: 28 additions & 22 deletions src/input.janet
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
(when (meta-down?)
(reset-blink props)

(paste props)))})
(paste! props)))})

## bindings from key to function
(def gb-binds @{})
Expand All @@ -73,8 +73,14 @@

:/
(fn [props]
(when (meta-down?)
(undo props)))
(cond
(and (or (key-down? :left-shift)
(key-down? :right-shift))
(meta-down?))
(redo! props)

(meta-down?)
(undo! props)))

:left (fn [props]
(reset-blink props)
Expand All @@ -93,9 +99,9 @@

(or (key-down? :left-shift)
(key-down? :right-shift))
(select-backward-char! props)
(select-backward-char props)

(backward-char! props)))
(backward-char props)))

:right (fn [props]
(reset-blink props)
Expand All @@ -113,16 +119,16 @@

(or (key-down? :left-shift)
(key-down? :right-shift))
(select-forward-char! props)
(select-forward-char props)

(forward-char! props)))
(forward-char props)))

:delete (fn [props]
(reset-blink props)

(cond (or (key-down? :left-alt)
(key-down? :right-alt))
(kill-word-forward! props)
(delete-word-forward! props)

(comment (forward-delete props))))

Expand All @@ -134,7 +140,7 @@
(when (meta-down?)
(reset-blink props)

(cut props)
(cut! props)
))

:i (fn [props]
Expand All @@ -159,9 +165,9 @@

(cond (or (key-down? :left-alt)
(key-down? :right-alt))
(kill-word-backward! props)
(delete-word-backward! props)

(backspace props)))
(backspace! props)))

:q (fn [props]
(when (or (key-down? :left-control)
Expand Down Expand Up @@ -191,7 +197,7 @@
(string/reverse (props :after))))
(eval-it (props :data) code))

(insert-char props (first "\n"))))
(insert-char! props (first "\n"))))

:up (fn [props]
(reset-blink props)
Expand Down Expand Up @@ -242,9 +248,9 @@

(or (key-down? :left-shift)
(key-down? :right-shift))
(select-backward-char! props)
(select-backward-char props)

(backward-char! props)))
(backward-char props)))

:right (fn [props]
(reset-blink props)
Expand All @@ -262,16 +268,16 @@

(or (key-down? :left-shift)
(key-down? :right-shift))
(select-forward-char! props)
(select-forward-char props)

(forward-char! props)))
(forward-char props)))

:delete (fn [props]
(reset-blink props)

(cond (or (key-down? :left-alt)
(key-down? :right-alt))
(kill-word-forward! props)
(delete-word-forward! props)

(comment (forward-delete props))))

Expand All @@ -283,7 +289,7 @@
(when (meta-down?)
(reset-blink props)

(cut props)
(cut! props)
))

:i (fn [props]
Expand All @@ -308,9 +314,9 @@

(cond (or (key-down? :left-alt)
(key-down? :right-alt))
(kill-word-backward! props)
(delete-word-backward! props)

(backspace props)))
(backspace! props)))

:q (fn [props]
(when (or (key-down? :left-control)
Expand Down Expand Up @@ -388,9 +394,9 @@

(cond (or (key-down? :left-shift)
(key-down? :right-shift))
(insert-char-upper props k)
(insert-char-upper! props k)

(insert-char props k))
(insert-char! props k))

(scroll-to-focus props)

Expand Down
12 changes: 9 additions & 3 deletions src/main.janet
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,17 @@
(import ./text_rendering :prefix "")
(import ./text_rendering_ints :prefix "" :fresh true)
(import ../build/text-rendering :prefix "")
(import ./text_api :prefix "")
(import ./input :prefix "")
(import ./file_handling :prefix "")
(import ./find_row_etc :prefix "")
(import ./highlight :prefix "")
(import ./new_gap_buffer :prefix "")
(import ./new_gap_buffer_util :prefix "")
(import ./render_new_gap_buffer :prefix "")
(import spork/netrepl)

(setdyn :pretty-format "%.40M")

(defmacro defonce
"Define a value once."
[name & more]
Expand Down Expand Up @@ -64,6 +66,7 @@
:caret 0

:actions @[]
:redo-queue @[]

:selection nil

Expand Down Expand Up @@ -94,6 +97,7 @@
:caret 0

:actions @[]
:redo-queue @[]
:selection nil

:size [800 14]
Expand Down Expand Up @@ -229,7 +233,8 @@
([err fib]
(let [path "text_experiment_dump"]
(debug/stacktrace fib err)
(dump-state path gb-data)
## TODO: Dump-state
#(dump-state path gb-data)
(print "Dumped state to " path))
(print (debug/stacktrace fib err))
(ev/sleep 1))))))))
Expand Down Expand Up @@ -304,7 +309,8 @@
(debug/stacktrace fib err)

(let [path "text_experiment_dump"]
(dump-state path gb-data)
## TODO: Dump-state
#(dump-state path gb-data)
(print "Dumped state to " path))

(close-window))))
Expand Down
Loading

0 comments on commit bd4d086

Please sign in to comment.