summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ieditor.pl21
1 files changed, 17 insertions, 4 deletions
diff --git a/ieditor.pl b/ieditor.pl
index a1cd173..8c6d3ab 100644
--- a/ieditor.pl
+++ b/ieditor.pl
@@ -1,10 +1,23 @@
:- use_module(library(pce)).
:- consult(ieditor_gesture).
+
+:- pce_begin_class(iview, view, "Improved view").
+
+initialise(V, L:label=[name], S:size=[size], D:display=[display],
+ E:editor=[editor]) :->
+ send_super(V, initialise, L, S, D, when(E == @default,
+ new(ieditor),
+ E)),
+ send(V, wrap, word).
+
+:- pce_end_class(iview).
+
:- pce_begin_class(ieditor, editor, "Improved editor").
initialise(E, T:text=[text_buffer], W:width=[int],
H:height=[int], M:margin=[int]) :->
send_super(E, initialise, T, W, H, M),
+ send(E, wrap, word),
send(E, key_binding, '\\ed', message(E, kill_word)),
send(E, key_binding, '\\e\\C-h', message(E, backward_kill_word)).
@@ -69,13 +82,13 @@ selection_save_mark(E, M) :<-
cursor_up(E, Arg:[int]) :->
"Handle cursor up-arrow"::
- cursor_updown(E, cursor_up, Arg).
+ send(E, cursor_updown, cursor_up, Arg).
cursor_down(E, Arg:[int]) :->
"Handle cursor down-arrow"::
- cursor_updown(E, cursor_down, Arg).
+ send(E, cursor_updown, cursor_down, Arg).
-cursor_updown(E, Msg, Arg:[int]) :-
- get(E, char_x, E?caret, X0),
+cursor_updown(E, Msg, Arg:[int]) :->
+ char_x(E, E?caret, X0),
get(E, selection_save_mark, M),
( Msg == cursor_up -> send_super(E, cursor_up, Arg)
; Msg == cursor_down -> send_super(E, cursor_down, Arg)