diff options
Diffstat (limited to 'lib/editor.ml')
| -rw-r--r-- | lib/editor.ml | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/editor.ml b/lib/editor.ml index f91e66d..69dc666 100644 --- a/lib/editor.ml +++ b/lib/editor.ml | |||
| @@ -11,6 +11,7 @@ type editor = { | |||
| 11 | offset : int * int; | 11 | offset : int * int; |
| 12 | cursor : cursor; | 12 | cursor : cursor; |
| 13 | buffer : Buffer.t option; | 13 | buffer : Buffer.t option; |
| 14 | rendered : bool; | ||
| 14 | pending : Key.t Sequence.t; | 15 | pending : Key.t Sequence.t; |
| 15 | i_pending : Command.t Sequence.t; | 16 | i_pending : Command.t Sequence.t; |
| 16 | n_pending : Command.t Sequence.t; | 17 | n_pending : Command.t Sequence.t; |
| @@ -25,6 +26,7 @@ let init (c : Config.t) : editor = | |||
| 25 | offset = (0, 0); | 26 | offset = (0, 0); |
| 26 | cursor = (1, 1); | 27 | cursor = (1, 1); |
| 27 | buffer = List.hd c.files |> Option.map ~f:Buffer.from_file; | 28 | buffer = List.hd c.files |> Option.map ~f:Buffer.from_file; |
| 29 | rendered = true; | ||
| 28 | pending = Key.stream; | 30 | pending = Key.stream; |
| 29 | i_pending = Command.i_stream; | 31 | i_pending = Command.i_stream; |
| 30 | n_pending = Command.n_stream; | 32 | n_pending = Command.n_stream; |
| @@ -104,10 +106,13 @@ module Action = struct | |||
| 104 | let aux e = | 106 | let aux e = |
| 105 | let x, y = e.offset | 107 | let x, y = e.offset |
| 106 | and ((r, c) as size) = e.term.size | 108 | and ((r, c) as size) = e.term.size |
| 107 | and fill = Sequence.singleton '~' in | 109 | and fill = Sequence.singleton '~' |
| 110 | and limit = | ||
| 111 | Buffer.(if e.rendered then rendered_view else unrendered_view) | ||
| 112 | in | ||
| 108 | let view = | 113 | let view = |
| 109 | Option.( | 114 | Option.( |
| 110 | e.buffer >>| Buffer.view x y r c | 115 | e.buffer >>| limit x y r c |
| 111 | |> value ~default:(welcome size) | 116 | |> value ~default:(welcome size) |
| 112 | |> Text.extend ~fill r) | 117 | |> Text.extend ~fill r) |
| 113 | in | 118 | in |
| @@ -117,6 +122,11 @@ module Action = struct | |||
| 117 | 122 | ||
| 118 | (* TODO: save logic *) | 123 | (* TODO: save logic *) |
| 119 | let quit n = Stdlib.exit n | 124 | let quit n = Stdlib.exit n |
| 125 | |||
| 126 | (* Debug *) | ||
| 127 | let get_rendered e = (e.rendered, e) | ||
| 128 | let set_rendered r e = ((), { e with rendered = r }) | ||
| 129 | let toggle_rendered = get_rendered >>| not >>= set_rendered | ||
| 120 | let noop = return () | 130 | let noop = return () |
| 121 | end | 131 | end |
| 122 | 132 | ||
| @@ -352,6 +362,8 @@ let handle_normal_command = | |||
| 352 | (* | Key 's' -> *) | 362 | (* | Key 's' -> *) |
| 353 | (* (Buffer.Action.delete_after |> on_focused_buffer_or_new) *) | 363 | (* (Buffer.Action.delete_after |> on_focused_buffer_or_new) *) |
| 354 | (* *> set_mode Insert *) | 364 | (* *> set_mode Insert *) |
| 365 | (* Debug *) | ||
| 366 | | Simple (Ctrl 'R') -> toggle_rendered | ||
| 355 | | _ -> noop | 367 | | _ -> noop |
| 356 | 368 | ||
| 357 | let handle_next_command m e = | 369 | let handle_next_command m e = |
