fep - unusable for certain stty settings
Rob McMahon
cudcv at warwick.ac.uk
Wed Dec 21 05:30:45 AEST 1988
We use ^X as our kill character round here (almost makes sense - CAN).
Because the settings imported from the tty driver override the standard
bindings for fep, this makes it almost unusable (^X is a prefix character
normally, and all sorts of nice commands, including show-bindings, go out the
window). I think it better if the default bindings override the imported
settings. There won't be any difference for the `standard' settings, and no
important commands will be lost.
Another problem is that if a character is unset, fep tries to set element -1
of an array.
--
RCS file: fep_edit.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -c -r1.1 -r1.2
*** /tmp/,RCSt1a03969 Tue Dec 20 19:25:46 1988
--- /tmp/,RCSt2a03969 Tue Dec 20 19:25:49 1988
***************
*** 182,211 ****
for (i = 0; i < 256; i++)
cft[i] = self_insert;
- for (ftp = emacsBindings; ftp->bt_s; ftp++) {
- bind_key (cft, ftp->bt_func, ftp->bt_s, abort);
- }
/* Now, using cbreak mode
! cft[(int) tchars_buf.t_startc] = ignore;
! cft[(int) tchars_buf.t_stopc] = ignore;
*/
! cft[(int) tchars_buf.t_intrc] = insert_and_flush;
! cft[(int) tchars_buf.t_quitc] = insert_and_flush;
! /* Now, EOF will be sent on empty line.
! cft[(int) tchars_buf.t_eofc] = send_eof;
*/
! cft[(int) tchars_buf.t_brkc] = insert_and_flush;
! cft[(int) ltchars_buf.t_suspc] = insert_and_flush;
! /* ^Y is used for yank-from-kill-buffer
! cft[(int) ltchars_buf.t_dsuspc] = self_insert;
*/
! cft[(int) ltchars_buf.t_rprntc] = reprint;
! cft[(int) ltchars_buf.t_flushc] = self_insert;
! cft[(int) ltchars_buf.t_werasc] = delete_previous_word;
! cft[(int) ltchars_buf.t_lnextc] = literal_next;
! cft[(int) initial_ttymode.sg_erase] = delete_previous_character;
! cft[(int) initial_ttymode.sg_kill] = delete_line;
}
/*
--- 182,214 ----
for (i = 0; i < 256; i++)
cft[i] = self_insert;
+ #define import(key, fn) if ((int) key > 0) cft[(int) key] = fn
/* Now, using cbreak mode
! import(tchars_buf.t_startc, ignore);
! import(tchars_buf.t_stopc, ignore);
*/
! import(tchars_buf.t_intrc, insert_and_flush);
! import(tchars_buf.t_quitc, insert_and_flush);
! import(tchars_buf.t_eofc, send_eof);
! import(tchars_buf.t_brkc, insert_and_flush);
! import(ltchars_buf.t_suspc, insert_and_flush);
! /* No-op
! import(ltchars_buf.t_dsuspc, self_insert);
*/
! import(ltchars_buf.t_rprntc, reprint);
! /* No-op
! import(ltchars_buf.t_flushc, self_insert);
*/
! import(ltchars_buf.t_werasc, delete_previous_word);
! import(ltchars_buf.t_lnextc, literal_next);
! import(initial_ttymode.sg_erase, delete_previous_character);
! import(initial_ttymode.sg_kill, delete_line);
! #undef import
!
! for (ftp = emacsBindings; ftp->bt_s; ftp++) {
! bind_key (cft, ftp->bt_func, ftp->bt_s, abort);
! }
}
/*
--
(Line numbers may vary)
RCS file: fep_vi.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -c -r1.2 -r1.3
*** /tmp/,RCSt1a03977 Tue Dec 20 19:27:33 1988
--- /tmp/,RCSt2a03977 Tue Dec 20 19:27:34 1988
***************
*** 160,165 ****
--- 160,190 ----
for (i = 0; i < 256; i++)
cft[i] = self_insert;
+ #define import(key, fn) if ((int) key > 0) cft[(int) key] = fn
+ /* Now, using cbreak mode
+ import(tchars_buf.t_startx, ignore);
+ import(tchars_buf.t_stopc, ignore);
+ */
+ import(tchars_buf.t_intrc, insert_and_flush);
+ if ((int) tchars_buf.t_intrc > 0)
+ aft[(int) tchars_buf.t_intrc] = insert_and_flush;
+ import(tchars_buf.t_quitc, insert_and_flush);
+ import(tchars_buf.t_eofc, send_eof);
+ import(tchars_buf.t_brkc, insert_and_flush);
+ import(ltchars_buf.t_suspc, insert_and_flush);
+ /* No-op
+ import(ltchars_buf.t_dsuspc, self_insert);
+ */
+ import(ltchars_buf.t_rprntc, reprint);
+ /* No-op
+ import(ltchars_buf.t_flushc, self_insert);
+ */
+ import(ltchars_buf.t_werasc, delete_previous_word);
+ import(ltchars_buf.t_lnextc, literal_next);
+ import(initial_ttymode.sg_erase, delete_previous_character);
+ import(initial_ttymode.sg_kill, delete_line);
+ #undef import
+
for (ftp = viComBindings; ftp->bt_s; ftp++) {
bind_key (aft, ftp->bt_func, ftp->bt_s, abort);
}
***************
*** 166,189 ****
for (ftp = viInsertBindings; ftp->bt_s; ftp++) {
bind_key (cft, ftp->bt_func, ftp->bt_s, abort);
}
-
- /* Now, using cbreak mode
- cft[(int) tchars_buf.t_startx] = ignore;
- cft[(int) tchars_buf.t_stopc] = ignore;
- */
- cft[(int) tchars_buf.t_intrc] = insert_and_flush;
- aft[(int) tchars_buf.t_intrc] = insert_and_flush;
- cft[(int) tchars_buf.t_quitc] = insert_and_flush;
- cft[(int) tchars_buf.t_eofc] = send_eof;
- cft[(int) tchars_buf.t_brkc] = insert_and_flush;
- cft[(int) ltchars_buf.t_suspc] = insert_and_flush;
- cft[(int) ltchars_buf.t_dsuspc] = self_insert;
- cft[(int) ltchars_buf.t_rprntc] = reprint;
- cft[(int) ltchars_buf.t_flushc] = self_insert;
- cft[(int) ltchars_buf.t_werasc] = delete_previous_word;
- cft[(int) ltchars_buf.t_lnextc] = literal_next;
- cft[(int) initial_ttymode.sg_erase] = delete_previous_character;
- cft[(int) initial_ttymode.sg_kill] = delete_line;
viInsTable = cft;
viComTable = aft;
--- 191,196 ----
--
Rob
--
UUCP: ...!mcvax!ukc!warwick!cudcv PHONE: +44 203 523037
JANET: cudcv at uk.ac.warwick ARPA: cudcv at warwick.ac.uk
Rob McMahon, Computing Services, Warwick University, Coventry CV4 7AL, England
More information about the Comp.sources.bugs
mailing list