1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-12-04 14:46:47 -05:00

Introduce session- (tab-)specific options

Introduce session-specific options for those options that have toggle-... actions.
This commit is contained in:
Miciah Dashiel Butler Masters 2007-08-28 17:29:41 +00:00 committed by Miciah Dashiel Butler Masters
parent fd22173b29
commit fa12b10e26
4 changed files with 26 additions and 8 deletions

View File

@ -252,7 +252,10 @@ get_opt_(
{
struct option *opt = NULL;
/* TODO: Look for a session-specific option. */
/* If given a session and the option is shadowed in that session's
* options tree, return the shadow. */
if (ses && ses->option)
opt = get_opt_rec_real(ses->option, name);
/* TODO: Look for a domain-specific option. */

View File

@ -30,7 +30,7 @@ init_document_options(struct session *ses, struct document_options *doo)
doo->assume_cp = get_opt_codepage("document.codepage.assume", NULL);
doo->hard_assume = get_opt_bool("document.codepage.force_assumed", NULL);
doo->use_document_colors = get_opt_int("document.colors.use_document_colors", NULL);
doo->use_document_colors = get_opt_int("document.colors.use_document_colors", ses);
doo->margin = get_opt_int("document.browse.margin_width", NULL);
doo->num_links_key = get_opt_int("document.browse.links.number_keys_select_link", NULL);
doo->meta_link_display = get_opt_int("document.html.link_display", NULL);
@ -57,16 +57,16 @@ init_document_options(struct session *ses, struct document_options *doo)
/* Boolean options. */
#ifdef CONFIG_CSS
doo->css_enable = get_opt_bool("document.css.enable", NULL);
doo->css_enable = get_opt_bool("document.css.enable", ses);
doo->css_import = get_opt_bool("document.css.import", NULL);
#endif
doo->plain_display_links = get_opt_bool("document.plain.display_links", NULL);
doo->plain_compress_empty_lines = get_opt_bool("document.plain.compress_empty_lines", NULL);
doo->plain_compress_empty_lines = get_opt_bool("document.plain.compress_empty_lines", ses);
doo->underline_links = get_opt_bool("document.html.underline_links", NULL);
doo->wrap_nbsp = get_opt_bool("document.html.wrap_nbsp", NULL);
doo->use_tabindex = get_opt_bool("document.browse.links.use_tabindex", NULL);
doo->links_numbering = get_opt_bool("document.browse.links.numbering", NULL);
doo->links_numbering = get_opt_bool("document.browse.links.numbering", ses);
doo->active_link.color = get_opt_bool("document.browse.links.active_link.enable_color", NULL);
doo->active_link.invert = get_opt_bool("document.browse.links.active_link.invert", NULL);
@ -74,9 +74,9 @@ init_document_options(struct session *ses, struct document_options *doo)
doo->active_link.bold = get_opt_bool("document.browse.links.active_link.bold", NULL);
doo->table_order = get_opt_bool("document.browse.table_move_order", NULL);
doo->tables = get_opt_bool("document.html.display_tables", NULL);
doo->tables = get_opt_bool("document.html.display_tables", ses);
doo->frames = get_opt_bool("document.html.display_frames", NULL);
doo->images = get_opt_bool("document.browse.images.show_as_links", NULL);
doo->images = get_opt_bool("document.browse.images.show_as_links", ses);
doo->display_subs = get_opt_bool("document.html.display_subs", NULL);
doo->display_sups = get_opt_bool("document.html.display_sups", NULL);
@ -135,8 +135,13 @@ toggle_document_option(struct session *ses, unsigned char *option_name)
}
option = get_opt_rec(config_options, option_name);
assert(option);
if_assert_failed return;
if (ses->option)
option = get_option_shadow(option, config_options, ses->option);
if (!option) return;
/* TODO: toggle per document. --Zas */
toggle_option(ses, option);
draw_formatted(ses, 1);

View File

@ -865,6 +865,8 @@ init_session(struct session *base_session, struct terminal *term,
return NULL;
}
ses->option = copy_option(config_options,
CO_SHALLOW | CO_NO_LISTBOX_ITEM);
create_history(&ses->history);
init_list(ses->scrn_frames);
init_list(ses->more_files);
@ -1175,6 +1177,10 @@ destroy_session(struct session *ses)
#ifdef CONFIG_ECMASCRIPT
mem_free_if(ses->status.window_status);
#endif
if (ses->option) {
delete_option(ses->option);
ses->option = NULL;
}
del_from_list(ses);
}

View File

@ -138,6 +138,10 @@ struct session {
struct window *tab;
/* Session-specific options */
struct option *option;
/** @} @name Browsing history
* @{ */