fix bugs in mode initializations
* mode initializers should call text-mode-init to register ccallback for s->offset and s->top_offset, and other generic stuff. * this is error prone, should simplify this with base_mode property and keep unmapped windows lingering to get rid of ModeSavedData handlers
This commit is contained in:
parent
4cf9d7227b
commit
51477bbc8b
6 changed files with 17 additions and 27 deletions
11
hex.c
11
hex.c
|
|
@ -153,11 +153,8 @@ static int binary_mode_init(EditState *s, ModeSavedData *saved_data)
|
|||
QEFont *font;
|
||||
QEStyleDef style;
|
||||
int num_width;
|
||||
int ret;
|
||||
|
||||
ret = text_mode_init(s, saved_data);
|
||||
if (ret)
|
||||
return ret;
|
||||
text_mode_init(s, saved_data);
|
||||
|
||||
/* get typical number width */
|
||||
get_style(s, &style, s->default_style);
|
||||
|
|
@ -178,11 +175,7 @@ static int binary_mode_init(EditState *s, ModeSavedData *saved_data)
|
|||
|
||||
static int hex_mode_init(EditState *s, ModeSavedData *saved_data)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = text_mode_init(s, saved_data);
|
||||
if (ret)
|
||||
return ret;
|
||||
text_mode_init(s, saved_data);
|
||||
|
||||
s->disp_width = 16;
|
||||
s->hex_mode = 1;
|
||||
|
|
|
|||
2
html.c
2
html.c
|
|
@ -786,6 +786,8 @@ int gxml_mode_init(EditState *s,
|
|||
{
|
||||
HTMLState *hs = s->mode_data;
|
||||
|
||||
/* XXX: should register callbacks for s->offset and s->top_offset? */
|
||||
|
||||
if (!saved_data) {
|
||||
memset(s, 0, SAVED_DATA_SIZE);
|
||||
s->insert = 1;
|
||||
|
|
|
|||
7
list.c
7
list.c
|
|
@ -81,22 +81,19 @@ void list_toggle_selection(EditState *s)
|
|||
|
||||
static int list_mode_init(EditState *s, __unused__ ModeSavedData *saved_data)
|
||||
{
|
||||
text_mode_init(s, saved_data);
|
||||
|
||||
s->wrap = WRAP_TRUNCATE;
|
||||
s->get_colorized_line = list_get_colorized_line;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void list_mode_close(__unused__ EditState *s)
|
||||
{
|
||||
}
|
||||
|
||||
static int list_init(void)
|
||||
{
|
||||
memcpy(&list_mode, &text_mode, sizeof(ModeDef));
|
||||
list_mode.name = "list";
|
||||
list_mode.mode_probe = NULL;
|
||||
list_mode.mode_init = list_mode_init;
|
||||
list_mode.mode_close = list_mode_close;
|
||||
list_mode.mode_flags = MODEF_NOCMD;
|
||||
|
||||
qe_register_mode(&list_mode);
|
||||
|
|
|
|||
7
mpeg.c
7
mpeg.c
|
|
@ -140,14 +140,12 @@ static int mpeg_backward_offset(EditState *s, int offset)
|
|||
|
||||
static int mpeg_mode_init(EditState *s, ModeSavedData *saved_data)
|
||||
{
|
||||
int ret;
|
||||
ret = text_mode_init(s, saved_data);
|
||||
if (ret)
|
||||
return ret;
|
||||
text_mode_init(s, saved_data);
|
||||
|
||||
s->hex_mode = 1;
|
||||
s->hex_nibble = 0;
|
||||
s->wrap = WRAP_TRUNCATE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -167,7 +165,6 @@ static ModeDef mpeg_mode = {
|
|||
.name = "mpeg",
|
||||
.mode_probe = mpeg_mode_probe,
|
||||
.mode_init = mpeg_mode_init,
|
||||
.mode_close = NULL,
|
||||
.text_display = mpeg_display,
|
||||
.text_backward_offset = mpeg_backward_offset,
|
||||
.write_char = hex_write_char,
|
||||
|
|
|
|||
11
shell.c
11
shell.c
|
|
@ -1654,16 +1654,19 @@ static void shell_write_char(EditState *e, int c)
|
|||
} else {
|
||||
/* Should dispatch as in fundamental mode */
|
||||
switch (c) {
|
||||
case 4:
|
||||
case KEY_CTRL('d'):
|
||||
do_delete_char(e, NO_ARG);
|
||||
break;
|
||||
// Do not do this: it is useless and causes infinite recursion
|
||||
//case 9:
|
||||
// do_tab(e, 1);
|
||||
// break;
|
||||
case 11:
|
||||
case KEY_CTRL('k'):
|
||||
do_kill_line(e, 1);
|
||||
break;
|
||||
case KEY_CTRL('y'):
|
||||
do_yank(e);
|
||||
break;
|
||||
case KEY_BS:
|
||||
case KEY_DEL:
|
||||
do_backspace(e, NO_ARG);
|
||||
|
|
@ -1895,9 +1898,9 @@ static CmdDef shell_global_commands[] = {
|
|||
|
||||
static int shell_mode_init(EditState *s, __unused__ ModeSavedData *saved_data)
|
||||
{
|
||||
text_mode_init(s, saved_data);
|
||||
s->tab_size = 8;
|
||||
s->wrap = WRAP_TRUNCATE;
|
||||
set_colorize_func(s, NULL);
|
||||
s->get_colorized_line = shell_get_colorized_line;
|
||||
s->interactive = 1;
|
||||
return 0;
|
||||
|
|
@ -1905,9 +1908,9 @@ static int shell_mode_init(EditState *s, __unused__ ModeSavedData *saved_data)
|
|||
|
||||
static int pager_mode_init(EditState *s, __unused__ ModeSavedData *saved_data)
|
||||
{
|
||||
text_mode_init(s, saved_data);
|
||||
s->tab_size = 8;
|
||||
s->wrap = WRAP_TRUNCATE;
|
||||
set_colorize_func(s, NULL);
|
||||
s->get_colorized_line = shell_get_colorized_line;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
6
unihex.c
6
unihex.c
|
|
@ -23,11 +23,9 @@
|
|||
|
||||
static int unihex_mode_init(EditState *s, ModeSavedData *saved_data)
|
||||
{
|
||||
int ret, c, maxc, offset, max_offset;
|
||||
int c, maxc, offset, max_offset;
|
||||
|
||||
ret = text_mode_init(s, saved_data);
|
||||
if (ret)
|
||||
return ret;
|
||||
text_mode_init(s, saved_data);
|
||||
|
||||
/* Compute max width of character in hex dump (limit to first 64K) */
|
||||
maxc = 0xFF;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue