summaryrefslogtreecommitdiff
path: root/lib/editor.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/editor.ml')
-rw-r--r--lib/editor.ml16
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 ()
121end 131end
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
357let handle_next_command m e = 369let handle_next_command m e =