From a388a95305aef9710adbc9dfe1149592da1573c5 Mon Sep 17 00:00:00 2001 From: Charlie Gordon Date: Sun, 19 May 2024 19:15:08 +0200 Subject: [PATCH] Pass `QEmacsState` pointer to all module_init and module_exit functions (#24) --- Makefile | 15 ++++++++++++--- buffer.c | 2 +- charset.c | 2 +- charset.h | 7 ++++--- charsetjis.c | 2 +- charsetmore.c | 2 +- extras.c | 2 +- haiku.cpp | 4 ++-- html2png.c | 9 ++++++--- input.c | 2 +- lang/ada.c | 2 +- lang/agena.c | 2 +- lang/arm.c | 14 +++++++------- lang/asm.c | 2 +- lang/ats.c | 2 +- lang/basic.c | 2 +- lang/clang.c | 2 +- lang/cobol.c | 2 +- lang/coffee.c | 2 +- lang/crystal.c | 2 +- lang/csv.c | 3 ++- lang/ebnf.c | 2 +- lang/elixir.c | 2 +- lang/elm.c | 2 +- lang/emf.c | 2 +- lang/erlang.c | 2 +- lang/falcon.c | 2 +- lang/forth.c | 2 +- lang/fortran.c | 2 +- lang/groovy.c | 2 +- lang/haskell.c | 2 +- lang/htmlsrc.c | 2 +- lang/icon.c | 2 +- lang/inifile.c | 2 +- lang/jai.c | 2 +- lang/julia.c | 2 +- lang/lisp.c | 2 +- lang/lua.c | 2 +- lang/magpie.c | 2 +- lang/makemode.c | 2 +- lang/nim.c | 2 +- lang/ocaml.c | 2 +- lang/pascal.c | 2 +- lang/perl.c | 2 +- lang/postscript.c | 2 +- lang/python.c | 2 +- lang/rebol.c | 2 +- lang/rlang.c | 2 +- lang/ruby.c | 2 +- lang/rust.c | 2 +- lang/scad.c | 2 +- lang/script.c | 2 +- lang/sharp.c | 2 +- lang/smalltalk.c | 2 +- lang/sql.c | 2 +- lang/swift.c | 2 +- lang/tiger.c | 2 +- lang/txl.c | 2 +- lang/vimscript.c | 2 +- lang/virgil.c | 2 +- lang/wolfram.c | 2 +- lang/xml.c | 2 +- modes/archive.c | 18 +++++++++--------- modes/bufed.c | 2 +- modes/dired.c | 8 ++++---- modes/docbook.c | 2 +- modes/fractal.c | 2 +- modes/hex.c | 2 +- modes/html.c | 2 +- modes/image.c | 2 +- modes/latex-mode.c | 2 +- modes/markdown.c | 2 +- modes/mpeg.c | 2 +- modes/orgmode.c | 2 +- modes/shell.c | 2 +- modes/stb.c | 2 +- modes/unihex.c | 2 +- modes/video.c | 2 +- plugins/my_plugin.c | 2 +- qe.c | 29 ++++++++++++++++------------- qe.h | 23 +++++++++++++---------- qescript.c | 2 +- search.c | 2 +- tools/cptoqe.c | 2 +- tty.c | 2 +- variables.c | 2 +- win32.c | 2 +- x11.c | 2 +- 88 files changed, 153 insertions(+), 133 deletions(-) diff --git a/Makefile b/Makefile index bba36a1..6637124 100644 --- a/Makefile +++ b/Makefile @@ -327,13 +327,22 @@ $(OBJS_DIR)/$(TARGET)_modules.c: $(SRCS) Makefile config.mak @echo '#include "qe.h"' >> $@ @echo '#undef qe_module_init' >> $@ @echo '#define qe_module_init(fn) extern int module_##fn(void)' >> $@ - @grep -h ^qe_module_init $(SRCS) >> $@ + -@grep -h ^qe_module_init $(SRCS) >> $@ @echo '#undef qe_module_init' >> $@ - @echo 'void init_all_modules(void) {' >> $@ + @echo 'void init_all_modules(QEmacsState *qs) {' >> $@ @echo '#define qe_module_init(fn) module_##fn()' >> $@ - @grep -h ^qe_module_init $(SRCS) >> $@ + -@grep -h ^qe_module_init $(SRCS) >> $@ @echo '#undef qe_module_init' >> $@ @echo '}' >> $@ + @echo '#undef qe_module_exit' >> $@ + @echo '#define qe_module_exit(fn) extern void module_##fn(QEmacsState *qs)' >> $@ + -@grep -h ^qe_module_exit $(SRCS) >> $@ + @echo '#undef qe_module_exit' >> $@ + @echo 'void exit_all_modules(QEmacsState *qs) {' >> $@ + @echo '#define qe_module_exit(fn) module_##fn(qs)' >> $@ + -@grep -h ^qe_module_exit $(SRCS) >> $@ + @echo '#undef qe_module_exit' >> $@ + @echo '}' >> $@ $(OBJS_DIR)/cfb.o: cfb.c cfb.h fbfrender.h $(OBJS_DIR)/charset.o: charset.c wcwidth.c diff --git a/buffer.c b/buffer.c index ce297bc..d3ea579 100644 --- a/buffer.c +++ b/buffer.c @@ -2806,7 +2806,7 @@ EditBufferDataType raw_data_type = { }; /* init buffer handling */ -void eb_init(void) +void eb_init(QEmacsState *qs) { eb_register_data_type(&raw_data_type); } diff --git a/charset.c b/charset.c index d2610ca..f174953 100644 --- a/charset.c +++ b/charset.c @@ -1609,7 +1609,7 @@ int charset_goto_char_8bit(CharsetDecodeState *s, /********************************************************/ -void charset_init(void) { +void charset_init(struct QEmacsState *qs) { qe_register_charset(&charset_raw); qe_register_charset(&charset_8859_1); qe_register_charset(&charset_vt100); diff --git a/charset.h b/charset.h index 698a04a..aaa62c7 100644 --- a/charset.h +++ b/charset.h @@ -101,9 +101,10 @@ struct CharsetDecodeState { #define INVALID_CHAR 0xfffd #define ESCAPE_CHAR 0xffff -void charset_init(void); -int charset_more_init(void); -int charset_jis_init(void); +struct QEmacsState; +void charset_init(struct QEmacsState *qs); +int charset_more_init(struct QEmacsState *qs); +int charset_jis_init(struct QEmacsState *qs); void qe_register_charset(struct QECharset *charset); void charset_complete(CompleteState *cp, CompleteFunc enumerate); diff --git a/charsetjis.c b/charsetjis.c index e8cb4df..5db86a8 100644 --- a/charsetjis.c +++ b/charsetjis.c @@ -243,7 +243,7 @@ static struct QECharset charset_sjis = { .eol_char = 10, }; -int charset_jis_init(void) +int charset_jis_init(QEmacsState *qs) { qe_register_charset(&charset_sjis); qe_register_charset(&charset_euc_jp); diff --git a/charsetmore.c b/charsetmore.c index 13231ef..a7d4db4 100644 --- a/charsetmore.c +++ b/charsetmore.c @@ -1838,7 +1838,7 @@ static struct QECharset charset_atarist = { .private_table = table_atarist, }; -int charset_more_init(void) +int charset_more_init(QEmacsState *qs) { qe_register_charset(&charset_8859_2); qe_register_charset(&charset_8859_3); diff --git a/extras.c b/extras.c index 7ff4cf8..56e979d 100644 --- a/extras.c +++ b/extras.c @@ -2514,7 +2514,7 @@ static const CmdDef extra_commands[] = { do_kill_paragraph, ESi, "p") }; -static int extras_init(void) { +static int extras_init(QEmacsState *qs) { qe_register_commands(NULL, extra_commands, countof(extra_commands)); qe_register_completion(&tag_completion); qe_register_completion(&charname_completion); diff --git a/haiku.cpp b/haiku.cpp index 3c5a649..7699df0 100644 --- a/haiku.cpp +++ b/haiku.cpp @@ -896,7 +896,7 @@ static QEDisplay haiku_dpy = { NULL, /* next */ }; -static int haiku_init(void) +static int haiku_module_init(QEmacsState *qs) { QEmacsState *qs = &qe_state; @@ -917,4 +917,4 @@ static int haiku_init(void) return qe_register_display(&haiku_dpy); } -qe_module_init(haiku_init); +qe_module_init(haiku_module_init); diff --git a/html2png.c b/html2png.c index d7609bb..c9715c7 100644 --- a/html2png.c +++ b/html2png.c @@ -427,14 +427,17 @@ static void help(void) int main(int argc, char **argv) { + QEmacsState state, *qs; QEditScreen screen1, *screen = &screen1; int page_width, c, strict_xml, flags; const char *outfilename, *infilename; QECharset *charset; - charset_init(); - charset_more_init(); - charset_jis_init(); + qs = memset(&state, 0, sizeof state); + + charset_init(qs); + charset_more_init(qs); + charset_jis_init(qs); css_init(); page_width = DEFAULT_WIDTH; diff --git a/input.c b/input.c index 00a697f..a72ce44 100644 --- a/input.c +++ b/input.c @@ -129,7 +129,7 @@ static CompletionDef input_completion = { "input", input_complete, }; -void init_input_methods(void) +void input_methods_init(QEmacsState *qs) { register_input_method(&default_input_method); register_input_method(&unicode_input_method); diff --git a/lang/ada.c b/lang/ada.c index f7aabe7..0280b6f 100644 --- a/lang/ada.c +++ b/lang/ada.c @@ -197,7 +197,7 @@ static ModeDef ada_mode = { .colorize_func = ada_colorize_line, }; -static int ada_init(void) { +static int ada_init(QEmacsState *qs) { qe_register_mode(&ada_mode, MODEF_SYNTAX); return 0; } diff --git a/lang/agena.c b/lang/agena.c index 5f75780..7193e06 100644 --- a/lang/agena.c +++ b/lang/agena.c @@ -196,7 +196,7 @@ static ModeDef agena_mode = { .colorize_func = agena_colorize_line, }; -static int agena_init(void) +static int agena_init(QEmacsState *qs) { qe_register_mode(&agena_mode, MODEF_SYNTAX); diff --git a/lang/arm.c b/lang/arm.c index cfee6e6..7bc4ff7 100644 --- a/lang/arm.c +++ b/lang/arm.c @@ -173,7 +173,7 @@ static ModeDef arm_asm_mode = { .colorize_func = arm_asm_colorize_line, }; -static int arm_asm_init(void) +static int arm_asm_init(QEmacsState *qs) { qe_register_mode(&arm_asm_mode, MODEF_SYNTAX); return 0; @@ -303,7 +303,7 @@ static ModeDef arm_lst_mode = { .keywords = arm_registers, }; -static int arm_lst_init(void) +static int arm_lst_init(QEmacsState *qs) { qe_register_mode(&arm_lst_mode, MODEF_SYNTAX); return 0; @@ -371,7 +371,7 @@ static ModeDef intel_hex_mode = { .colorize_func = intel_hex_colorize_line, }; -static int intel_hex_init(void) +static int intel_hex_init(QEmacsState *qs) { qe_register_mode(&intel_hex_mode, MODEF_SYNTAX); return 0; @@ -379,11 +379,11 @@ static int intel_hex_init(void) /*----------------*/ -static int arm_modes_init(void) +static int arm_modes_init(QEmacsState *qs) { - arm_asm_init(); - arm_lst_init(); - intel_hex_init(); + arm_asm_init(qs); + arm_lst_init(qs); + intel_hex_init(qs); return 0; } diff --git a/lang/asm.c b/lang/asm.c index 7aa0d7b..830e386 100644 --- a/lang/asm.c +++ b/lang/asm.c @@ -165,7 +165,7 @@ static ModeDef asm_mode = { .colorize_func = asm_colorize_line, }; -static int asm_init(void) +static int asm_init(QEmacsState *qs) { qe_register_mode(&asm_mode, MODEF_SYNTAX); diff --git a/lang/ats.c b/lang/ats.c index 626abd3..174da93 100644 --- a/lang/ats.c +++ b/lang/ats.c @@ -227,7 +227,7 @@ static ModeDef ats_mode = { .colorize_func = ats_colorize_line, }; -static int ats_init(void) +static int ats_init(QEmacsState *qs) { qe_register_mode(&ats_mode, MODEF_SYNTAX); diff --git a/lang/basic.c b/lang/basic.c index e4a4c38..c2144f6 100644 --- a/lang/basic.c +++ b/lang/basic.c @@ -126,7 +126,7 @@ static ModeDef basic_mode = { .colorize_func = basic_colorize_line, }; -static int basic_init(void) +static int basic_init(QEmacsState *qs) { qe_register_mode(&basic_mode, MODEF_SYNTAX); diff --git a/lang/clang.c b/lang/clang.c index e84d0d7..af3cd21 100644 --- a/lang/clang.c +++ b/lang/clang.c @@ -3839,7 +3839,7 @@ static ModeDef salmon_mode = { /*---------------- Common initialization code ----------------*/ -static int c_init(void) +static int c_init(QEmacsState *qs) { qe_register_mode(&c_mode, MODEF_SYNTAX); qe_register_commands(&c_mode, c_commands, countof(c_commands)); diff --git a/lang/cobol.c b/lang/cobol.c index 7a6ed09..28c3735 100644 --- a/lang/cobol.c +++ b/lang/cobol.c @@ -251,7 +251,7 @@ static ModeDef cobol_mode = { .colorize_func = cobol_colorize_line, }; -static int cobol_init(void) +static int cobol_init(QEmacsState *qs) { qe_register_mode(&cobol_mode, MODEF_SYNTAX); diff --git a/lang/coffee.c b/lang/coffee.c index bd8775d..74123ae 100644 --- a/lang/coffee.c +++ b/lang/coffee.c @@ -374,7 +374,7 @@ static ModeDef coffee_mode = { .colorize_func = coffee_colorize_line, }; -static int coffee_init(void) +static int coffee_init(QEmacsState *qs) { qe_register_mode(&coffee_mode, MODEF_SYNTAX); diff --git a/lang/crystal.c b/lang/crystal.c index 17d750b..968bc85 100644 --- a/lang/crystal.c +++ b/lang/crystal.c @@ -507,7 +507,7 @@ static ModeDef crystal_mode = { .colorize_func = crystal_colorize_line, }; -static int crystal_init(void) +static int crystal_init(QEmacsState *qs) { qe_register_mode(&crystal_mode, MODEF_SYNTAX); return 0; diff --git a/lang/csv.c b/lang/csv.c index 27a2102..7d30bc1 100644 --- a/lang/csv.c +++ b/lang/csv.c @@ -254,7 +254,8 @@ static ModeDef csv_mode = { .colorize_func = csv_colorize_line, }; -static int csv_init(void) { +static int csv_init(QEmacsState *qs) +{ qe_register_mode(&csv_mode, MODEF_SYNTAX); return 0; } diff --git a/lang/ebnf.c b/lang/ebnf.c index 46fa4ce..4c82750 100644 --- a/lang/ebnf.c +++ b/lang/ebnf.c @@ -206,7 +206,7 @@ static ModeDef antlr_mode = { .colorize_func = ebnf_colorize_line, }; -static int ebnf_init(void) +static int ebnf_init(QEmacsState *qs) { qe_register_mode(&antlr_mode, MODEF_SYNTAX); qe_register_mode(&ebnf_mode, MODEF_SYNTAX); diff --git a/lang/elixir.c b/lang/elixir.c index 9a9466a..1190eac 100644 --- a/lang/elixir.c +++ b/lang/elixir.c @@ -291,7 +291,7 @@ static ModeDef elixir_mode = { .colorize_func = elixir_colorize_line, }; -static int elixir_init(void) +static int elixir_init(QEmacsState *qs) { qe_register_mode(&elixir_mode, MODEF_SYNTAX); diff --git a/lang/elm.c b/lang/elm.c index 9334083..8f8f9dc 100644 --- a/lang/elm.c +++ b/lang/elm.c @@ -262,7 +262,7 @@ static ModeDef elm_mode = { .colorize_func = elm_colorize_line, }; -static int elm_init(void) +static int elm_init(QEmacsState *qs) { qe_register_mode(&elm_mode, MODEF_SYNTAX); diff --git a/lang/emf.c b/lang/emf.c index 4ce5269..a1554c6 100644 --- a/lang/emf.c +++ b/lang/emf.c @@ -131,7 +131,7 @@ static ModeDef emf_mode = { .colorize_func = emf_colorize_line, }; -static int emf_init(void) +static int emf_init(QEmacsState *qs) { qe_register_mode(&emf_mode, MODEF_SYNTAX); diff --git a/lang/erlang.c b/lang/erlang.c index d49f1b0..687b899 100644 --- a/lang/erlang.c +++ b/lang/erlang.c @@ -264,7 +264,7 @@ static ModeDef erlang_mode = { .colorize_func = erlang_colorize_line, }; -static int erlang_init(void) +static int erlang_init(QEmacsState *qs) { qe_register_mode(&erlang_mode, MODEF_SYNTAX); diff --git a/lang/falcon.c b/lang/falcon.c index a3fe3cf..7aba184 100644 --- a/lang/falcon.c +++ b/lang/falcon.c @@ -223,7 +223,7 @@ static ModeDef falcon_mode = { .keywords = falcon_keywords, }; -static int falcon_init(void) +static int falcon_init(QEmacsState *qs) { qe_register_mode(&falcon_mode, MODEF_SYNTAX); diff --git a/lang/forth.c b/lang/forth.c index 0f47d84..704a731 100644 --- a/lang/forth.c +++ b/lang/forth.c @@ -329,7 +329,7 @@ static ModeDef ff_mode = { .colorize_func = ff_colorize_line, }; -static int ff_init(void) +static int ff_init(QEmacsState *qs) { qe_register_mode(&ff_mode, MODEF_SYNTAX); return 0; diff --git a/lang/fortran.c b/lang/fortran.c index f527798..3320ec8 100644 --- a/lang/fortran.c +++ b/lang/fortran.c @@ -169,7 +169,7 @@ static ModeDef fortran_mode = { .colorize_func = fortran_colorize_line, }; -static int fortran_init(void) +static int fortran_init(QEmacsState *qs) { qe_register_mode(&fortran_mode, MODEF_SYNTAX); diff --git a/lang/groovy.c b/lang/groovy.c index e612786..a36cc81 100644 --- a/lang/groovy.c +++ b/lang/groovy.c @@ -461,7 +461,7 @@ static ModeDef groovy_mode = { .fallback = &c_mode, }; -static int groovy_init(void) +static int groovy_init(QEmacsState *qs) { qe_register_mode(&groovy_mode, MODEF_SYNTAX); diff --git a/lang/haskell.c b/lang/haskell.c index 99b9613..209c4e4 100644 --- a/lang/haskell.c +++ b/lang/haskell.c @@ -252,7 +252,7 @@ static ModeDef haskell_mode = { .colorize_func = haskell_colorize_line, }; -static int haskell_init(void) +static int haskell_init(QEmacsState *qs) { qe_register_mode(&haskell_mode, MODEF_SYNTAX); diff --git a/lang/htmlsrc.c b/lang/htmlsrc.c index b3c8bf0..bce2eac 100644 --- a/lang/htmlsrc.c +++ b/lang/htmlsrc.c @@ -405,7 +405,7 @@ ModeDef htmlsrc_mode = { .colorize_func = htmlsrc_colorize_line, }; -static int htmlsrc_init(void) +static int htmlsrc_init(QEmacsState *qs) { qe_register_mode(&htmlsrc_mode, MODEF_SYNTAX); //qe_register_commands(&htmlsrc_mode, htmlsrc_commands, countof(htmlsrc_commands)); diff --git a/lang/icon.c b/lang/icon.c index 958f7e5..b32aa8f 100644 --- a/lang/icon.c +++ b/lang/icon.c @@ -207,7 +207,7 @@ static ModeDef icon_mode = { .fallback = &c_mode, }; -static int icon_init(void) +static int icon_init(QEmacsState *qs) { qe_register_mode(&icon_mode, MODEF_SYNTAX); diff --git a/lang/inifile.c b/lang/inifile.c index 56ae848..41c1a5c 100644 --- a/lang/inifile.c +++ b/lang/inifile.c @@ -153,7 +153,7 @@ static ModeDef ini_mode = { .colorize_func = ini_colorize_line, }; -static int ini_init(void) +static int ini_init(QEmacsState *qs) { qe_register_mode(&ini_mode, MODEF_SYNTAX); diff --git a/lang/jai.c b/lang/jai.c index 0d0572e..506cd77 100644 --- a/lang/jai.c +++ b/lang/jai.c @@ -274,7 +274,7 @@ static ModeDef vale_mode = { .fallback = &c_mode, }; -static int jai_init(void) +static int jai_init(QEmacsState *qs) { qe_register_mode(&jai_mode, MODEF_SYNTAX); qe_register_mode(&vale_mode, MODEF_SYNTAX); diff --git a/lang/julia.c b/lang/julia.c index 153b4b1..bb83ac6 100644 --- a/lang/julia.c +++ b/lang/julia.c @@ -285,7 +285,7 @@ static ModeDef julia_mode = { .colorize_func = julia_colorize_line, }; -static int julia_init(void) +static int julia_init(QEmacsState *qs) { qe_register_mode(&julia_mode, MODEF_SYNTAX); diff --git a/lang/lisp.c b/lang/lisp.c index 9517bc4..878c464 100644 --- a/lang/lisp.c +++ b/lang/lisp.c @@ -537,7 +537,7 @@ static ModeDef xaos_mode = { .fallback = &lisp_mode, }; -static int lisp_init(void) +static int lisp_init(QEmacsState *qs) { qe_register_mode(&lisp_mode, MODEF_SYNTAX); qe_register_mode(&elisp_mode, MODEF_SYNTAX); diff --git a/lang/lua.c b/lang/lua.c index 44a051f..228d423 100644 --- a/lang/lua.c +++ b/lang/lua.c @@ -197,7 +197,7 @@ static ModeDef lua_mode = { .colorize_func = lua_colorize_line, }; -static int lua_init(void) +static int lua_init(QEmacsState *qs) { qe_register_mode(&lua_mode, MODEF_SYNTAX); diff --git a/lang/magpie.c b/lang/magpie.c index f3b873c..8438f95 100644 --- a/lang/magpie.c +++ b/lang/magpie.c @@ -205,7 +205,7 @@ static ModeDef magpie_mode = { .colorize_func = magpie_colorize_line, }; -static int magpie_init(void) +static int magpie_init(QEmacsState *qs) { qe_register_mode(&magpie_mode, MODEF_SYNTAX); diff --git a/lang/makemode.c b/lang/makemode.c index 9fc475d..63d3499 100644 --- a/lang/makemode.c +++ b/lang/makemode.c @@ -258,7 +258,7 @@ static ModeDef cmake_mode = { .colorize_func = cmake_colorize_line, }; -static int makefile_init(void) +static int makefile_init(QEmacsState *qs) { qe_register_mode(&makefile_mode, MODEF_SYNTAX); qe_register_mode(&cmake_mode, MODEF_SYNTAX); diff --git a/lang/nim.c b/lang/nim.c index f6030b2..3474021 100644 --- a/lang/nim.c +++ b/lang/nim.c @@ -328,7 +328,7 @@ static ModeDef nim_mode = { .colorize_func = nim_colorize_line, }; -static int nim_init(void) +static int nim_init(QEmacsState *qs) { qe_register_mode(&nim_mode, MODEF_SYNTAX); diff --git a/lang/ocaml.c b/lang/ocaml.c index 8275e4a..e52ee38 100644 --- a/lang/ocaml.c +++ b/lang/ocaml.c @@ -273,7 +273,7 @@ static ModeDef eff_mode = { .colorize_func = ocaml_colorize_line, }; -static int ocaml_init(void) +static int ocaml_init(QEmacsState *qs) { qe_register_mode(&ocaml_mode, MODEF_SYNTAX); qe_register_mode(&eff_mode, MODEF_SYNTAX); diff --git a/lang/pascal.c b/lang/pascal.c index 2262ab2..d26cd5b 100644 --- a/lang/pascal.c +++ b/lang/pascal.c @@ -194,7 +194,7 @@ static ModeDef pascal_mode = { .colorize_func = pascal_colorize_line, }; -static int pascal_init(void) +static int pascal_init(QEmacsState *qs) { qe_register_mode(&pascal_mode, MODEF_SYNTAX); diff --git a/lang/perl.c b/lang/perl.c index 87029b7..223c465 100644 --- a/lang/perl.c +++ b/lang/perl.c @@ -385,7 +385,7 @@ static ModeDef perl_mode = { .types = perl_types, }; -static int perl_init(void) +static int perl_init(QEmacsState *qs) { qe_register_mode(&perl_mode, MODEF_SYNTAX); diff --git a/lang/postscript.c b/lang/postscript.c index fb88ab7..bf21bb8 100644 --- a/lang/postscript.c +++ b/lang/postscript.c @@ -140,7 +140,7 @@ static ModeDef ps_mode = { .colorize_func = ps_colorize_line, }; -static int ps_init(void) +static int ps_init(QEmacsState *qs) { qe_register_mode(&ps_mode, MODEF_SYNTAX); diff --git a/lang/python.c b/lang/python.c index b1e1e2d..4ab469b 100644 --- a/lang/python.c +++ b/lang/python.c @@ -359,7 +359,7 @@ static ModeDef bazel_mode = { .colorize_flags = PYTHON_BAZEL, }; -static int python_init(void) +static int python_init(QEmacsState *qs) { qe_register_mode(&python_mode, MODEF_SYNTAX); qe_register_mode(&rapydscript_mode, MODEF_SYNTAX); diff --git a/lang/rebol.c b/lang/rebol.c index 60dd83a..97a4493 100644 --- a/lang/rebol.c +++ b/lang/rebol.c @@ -305,7 +305,7 @@ static ModeDef rebol_mode = { .colorize_func = rebol_colorize_line, }; -static int rebol_init(void) +static int rebol_init(QEmacsState *qs) { qe_register_mode(&rebol_mode, MODEF_SYNTAX); diff --git a/lang/rlang.c b/lang/rlang.c index a077666..e13fe29 100644 --- a/lang/rlang.c +++ b/lang/rlang.c @@ -209,7 +209,7 @@ static ModeDef r_mode = { .colorize_func = r_colorize_line, }; -static int r_init(void) +static int r_init(QEmacsState *qs) { qe_register_mode(&r_mode, MODEF_SYNTAX); diff --git a/lang/ruby.c b/lang/ruby.c index 5cb5120..58f944f 100644 --- a/lang/ruby.c +++ b/lang/ruby.c @@ -511,7 +511,7 @@ static ModeDef ruby_mode = { .colorize_func = ruby_colorize_line, }; -static int ruby_init(void) +static int ruby_init(QEmacsState *qs) { qe_register_mode(&ruby_mode, MODEF_SYNTAX); diff --git a/lang/rust.c b/lang/rust.c index 34369e0..1c17c42 100644 --- a/lang/rust.c +++ b/lang/rust.c @@ -286,7 +286,7 @@ static ModeDef rust_mode = { .fallback = &c_mode, }; -static int rust_init(void) +static int rust_init(QEmacsState *qs) { qe_register_mode(&rust_mode, MODEF_SYNTAX); diff --git a/lang/scad.c b/lang/scad.c index a398b55..9bec8d8 100644 --- a/lang/scad.c +++ b/lang/scad.c @@ -197,7 +197,7 @@ static ModeDef scad_mode = { //.auto_indent = 1, }; -static int scad_init(void) +static int scad_init(QEmacsState *qs) { qe_register_mode(&scad_mode, MODEF_SYNTAX); diff --git a/lang/script.c b/lang/script.c index d26a73b..0bd10e3 100644 --- a/lang/script.c +++ b/lang/script.c @@ -350,7 +350,7 @@ static ModeDef tcsh_mode = { .keywords = shell_script_keywords, }; -static int shell_script_init(void) +static int shell_script_init(QEmacsState *qs) { qe_register_mode(&sh_mode, MODEF_SYNTAX); qe_register_mode(&bash_mode, MODEF_SYNTAX); diff --git a/lang/sharp.c b/lang/sharp.c index b1c336f..4aacdf7 100644 --- a/lang/sharp.c +++ b/lang/sharp.c @@ -75,7 +75,7 @@ static ModeDef sharp_mode = { .colorize_func = sharp_colorize_line, }; -static int sharp_init(void) +static int sharp_init(QEmacsState *qs) { qe_register_mode(&sharp_mode, MODEF_SYNTAX); diff --git a/lang/smalltalk.c b/lang/smalltalk.c index db4137a..04ce373 100644 --- a/lang/smalltalk.c +++ b/lang/smalltalk.c @@ -193,7 +193,7 @@ static ModeDef smalltalk_mode = { .colorize_func = smalltalk_colorize_line, }; -static int smalltalk_init(void) +static int smalltalk_init(QEmacsState *qs) { qe_register_mode(&smalltalk_mode, MODEF_SYNTAX); diff --git a/lang/sql.c b/lang/sql.c index 35069a6..e380bd1 100644 --- a/lang/sql.c +++ b/lang/sql.c @@ -204,7 +204,7 @@ static ModeDef sql_mode = { .colorize_func = sql_colorize_line, }; -static int sql_init(void) +static int sql_init(QEmacsState *qs) { qe_register_mode(&sql_mode, MODEF_SYNTAX); diff --git a/lang/swift.c b/lang/swift.c index f2e821a..4030fb5 100644 --- a/lang/swift.c +++ b/lang/swift.c @@ -358,7 +358,7 @@ static ModeDef swift_mode = { .fallback = &c_mode, }; -static int swift_init(void) +static int swift_init(QEmacsState *qs) { qe_register_mode(&swift_mode, MODEF_SYNTAX); diff --git a/lang/tiger.c b/lang/tiger.c index 2b7c71f..dd7a99a 100644 --- a/lang/tiger.c +++ b/lang/tiger.c @@ -181,7 +181,7 @@ static ModeDef tiger_mode = { .colorize_func = tiger_colorize_line, }; -static int tiger_init(void) +static int tiger_init(QEmacsState *qs) { qe_register_mode(&tiger_mode, MODEF_SYNTAX); diff --git a/lang/txl.c b/lang/txl.c index 9ecdbd3..0b28610 100644 --- a/lang/txl.c +++ b/lang/txl.c @@ -161,7 +161,7 @@ static ModeDef txl_mode = { .colorize_func = txl_colorize_line, }; -static int txl_init(void) +static int txl_init(QEmacsState *qs) { qe_register_mode(&txl_mode, MODEF_SYNTAX); diff --git a/lang/vimscript.c b/lang/vimscript.c index 79dbc3d..5afc695 100644 --- a/lang/vimscript.c +++ b/lang/vimscript.c @@ -267,7 +267,7 @@ static ModeDef vim_mode = { .colorize_func = vim_colorize_line, }; -static int vim_init(void) +static int vim_init(QEmacsState *qs) { qe_register_mode(&vim_mode, MODEF_SYNTAX); diff --git a/lang/virgil.c b/lang/virgil.c index 66ef2c5..2cdb019 100644 --- a/lang/virgil.c +++ b/lang/virgil.c @@ -461,7 +461,7 @@ static ModeDef virgil_mode = { .fallback = &c_mode, }; -static int virgil_init(void) +static int virgil_init(QEmacsState *qs) { qe_register_mode(&virgil_mode, MODEF_SYNTAX); diff --git a/lang/wolfram.c b/lang/wolfram.c index 864edcb..46cf5c8 100644 --- a/lang/wolfram.c +++ b/lang/wolfram.c @@ -238,7 +238,7 @@ static ModeDef wolfram_mode = { .colorize_func = wolfram_colorize_line, }; -static int wolfram_init(void) +static int wolfram_init(QEmacsState *qs) { qe_register_mode(&wolfram_mode, MODEF_SYNTAX); diff --git a/lang/xml.c b/lang/xml.c index 726ed55..cd53e00 100644 --- a/lang/xml.c +++ b/lang/xml.c @@ -205,7 +205,7 @@ ModeDef xml_mode = { .colorize_func = xml_colorize_line, }; -static int xml_init(void) +static int xml_init(QEmacsState *qs) { qe_register_mode(&xml_mode, MODEF_SYNTAX); diff --git a/modes/archive.c b/modes/archive.c index 4bb9370..16edcec 100644 --- a/modes/archive.c +++ b/modes/archive.c @@ -189,7 +189,7 @@ static ModeDef archive_mode = { .data_type = &archive_data_type, }; -static int archive_init(void) +static int archive_init(QEmacsState *qs) { int i; @@ -336,7 +336,7 @@ static ModeDef compress_mode = { .data_type = &compress_data_type, }; -static int compress_init(void) +static int compress_init(QEmacsState *qs) { int i; @@ -417,7 +417,7 @@ static EditBufferDataType wget_data_type = { NULL, /* next */ }; -static int wget_init(void) +static int wget_init(QEmacsState *qs) { /* copy and patch text_mode */ // XXX: remove this mess @@ -509,7 +509,7 @@ static EditBufferDataType man_data_type = { NULL, /* next */ }; -static int man_init(void) +static int man_init(QEmacsState *qs) { /* copy and patch text_mode */ // XXX: remove this mess @@ -526,12 +526,12 @@ static int man_init(void) /*---------------- Initialization ----------------*/ -static int archive_compress_init(void) +static int archive_compress_init(QEmacsState *qs) { - return archive_init() || - compress_init() || - wget_init() || - man_init(); + return archive_init(qs) || + compress_init(qs) || + wget_init(qs) || + man_init(qs); } qe_module_init(archive_compress_init); diff --git a/modes/bufed.c b/modes/bufed.c index 446108e..097e9f2 100644 --- a/modes/bufed.c +++ b/modes/bufed.c @@ -572,7 +572,7 @@ static const char * const bufed_bindings[] = { NULL }; -static int bufed_init(void) +static int bufed_init(QEmacsState *qs) { /* inherit from list mode */ /* CG: assuming list_mode already initialized ? */ diff --git a/modes/dired.c b/modes/dired.c index b147f5c..ce26caa 100644 --- a/modes/dired.c +++ b/modes/dired.c @@ -1527,9 +1527,9 @@ static EditBufferDataType dired_data_type = { }; #endif -static int filelist_init(void); +static int filelist_init(QEmacsState *qs); -static int dired_init(void) +static int dired_init(QEmacsState *qs) { /* inherit from list mode */ /* CG: assuming list_mode already initialized ? */ @@ -1550,7 +1550,7 @@ static int dired_init(void) qe_register_commands(&dired_mode, dired_commands, countof(dired_commands)); qe_register_commands(NULL, dired_global_commands, countof(dired_global_commands)); - filelist_init(); + filelist_init(qs); return 0; } @@ -1687,7 +1687,7 @@ static const CmdDef filelist_global_commands[] = { do_filelist, ESi, "p") }; -static int filelist_init(void) +static int filelist_init(QEmacsState *qs) { // XXX: remove this mess memcpy(&filelist_mode, &text_mode, offsetof(ModeDef, first_key)); diff --git a/modes/docbook.c b/modes/docbook.c index 712885c..6649eb4 100644 --- a/modes/docbook.c +++ b/modes/docbook.c @@ -49,7 +49,7 @@ static int docbook_mode_init(EditState *s, EditBuffer *b, int flags) static ModeDef docbook_mode; -static int docbook_init(void) +static int docbook_init(QEmacsState *qs) { /* inherit from html mode */ // XXX: remove this mess: should just inherit with fallback diff --git a/modes/fractal.c b/modes/fractal.c index 0ac45d6..053ad9a 100644 --- a/modes/fractal.c +++ b/modes/fractal.c @@ -1257,7 +1257,7 @@ static const CmdDef fractal_global_commands[] = { do_mandelbrot_test, ESi, "p") }; -static int fractal_init(void) +static int fractal_init(QEmacsState *qs) { qe_register_mode(&fractint_mode, MODEF_SYNTAX); qe_register_commands(NULL, fractal_global_commands, countof(fractal_global_commands)); diff --git a/modes/hex.c b/modes/hex.c index 4c84adb..3798329 100644 --- a/modes/hex.c +++ b/modes/hex.c @@ -367,7 +367,7 @@ static ModeDef hex_mode = { .fallback = &binary_mode, }; -static int hex_init(void) +static int hex_init(QEmacsState *qs) { /* first register mode(s) */ qe_register_mode(&binary_mode, MODEF_VIEW); diff --git a/modes/html.c b/modes/html.c index b5099f5..8f6f816 100644 --- a/modes/html.c +++ b/modes/html.c @@ -939,7 +939,7 @@ ModeDef html_mode = { .write_char = text_write_char, }; -static int html_init(void) +static int html_init(QEmacsState *qs) { css_init(); diff --git a/modes/image.c b/modes/image.c index 7943132..c8bc33d 100644 --- a/modes/image.c +++ b/modes/image.c @@ -922,7 +922,7 @@ static CompletionDef pixel_format_completion = { "pixel-format", pixel_format_complete }; -static int image_init(void) { +static int image_init(QEmacsState *qs) { av_register_all(); eb_register_data_type(&image_data_type); qe_register_mode(&image_mode, MODEF_DATATYPE | MODEF_VIEW); diff --git a/modes/latex-mode.c b/modes/latex-mode.c index 36f7df5..c768f1d 100644 --- a/modes/latex-mode.c +++ b/modes/latex-mode.c @@ -356,7 +356,7 @@ static CompletionDef latex_completion = { "latex", latex_complete, }; -static int latex_init(void) +static int latex_init(QEmacsState *qs) { qe_register_mode(&latex_mode, MODEF_SYNTAX); qe_register_mode(&texinfo_mode, MODEF_SYNTAX); diff --git a/modes/markdown.c b/modes/markdown.c index 8652b73..9ca7c65 100644 --- a/modes/markdown.c +++ b/modes/markdown.c @@ -930,7 +930,7 @@ static ModeDef litcoffee_mode = { // XXX: should use fallback for key bindings }; -static int mkd_init(void) +static int mkd_init(QEmacsState *qs) { qe_register_mode(&mkd_mode, MODEF_SYNTAX); qe_register_commands(&mkd_mode, mkd_commands, countof(mkd_commands)); diff --git a/modes/mpeg.c b/modes/mpeg.c index 7700ab7..4e0f218 100644 --- a/modes/mpeg.c +++ b/modes/mpeg.c @@ -174,7 +174,7 @@ static ModeDef mpeg_mode = { .write_char = hex_write_char, }; -static int mpeg_init(void) +static int mpeg_init(QEmacsState *qs) { qe_register_mode(&mpeg_mode, MODEF_MAJOR | MODEF_VIEW); return 0; diff --git a/modes/orgmode.c b/modes/orgmode.c index b0c6eee..59fa6d7 100644 --- a/modes/orgmode.c +++ b/modes/orgmode.c @@ -764,7 +764,7 @@ static ModeDef org_mode = { .colorize_func = org_colorize_line, }; -static int org_init(void) +static int org_init(QEmacsState *qs) { qe_register_mode(&org_mode, MODEF_SYNTAX); qe_register_commands(&org_mode, org_commands, countof(org_commands)); diff --git a/modes/shell.c b/modes/shell.c index ffd36d5..58af2ad 100644 --- a/modes/shell.c +++ b/modes/shell.c @@ -3835,7 +3835,7 @@ static const char * const pager_bindings[] = { NULL }; -static int shell_init(void) +static int shell_init(QEmacsState *qs) { /* populate and register shell mode and commands */ // XXX: remove this mess: should just inherit with fallback diff --git a/modes/stb.c b/modes/stb.c index cc73dfc..5136f3f 100644 --- a/modes/stb.c +++ b/modes/stb.c @@ -159,7 +159,7 @@ static ModeDef stb_mode = { .display = image_display, }; -static int stb_init(void) +static int stb_init(QEmacsState *qs) { qe_register_mode(&stb_mode, MODEF_VIEW); return 0; diff --git a/modes/unihex.c b/modes/unihex.c index 9c52628..e215367 100644 --- a/modes/unihex.c +++ b/modes/unihex.c @@ -266,7 +266,7 @@ static ModeDef unihex_mode = { //.fallback = &binary_mode, }; -static int unihex_init(void) { +static int unihex_init(QEmacsState *qs) { qe_register_mode(&unihex_mode, MODEF_VIEW); return 0; } diff --git a/modes/video.c b/modes/video.c index 2ee3ff6..f11aa7b 100644 --- a/modes/video.c +++ b/modes/video.c @@ -1025,7 +1025,7 @@ static EditBufferDataType video_data_type = { video_buffer_close, }; -static int video_init(void) { +static int video_init(QEmacsState *qs) { eb_register_data_type(&video_data_type); qe_register_mode(&video_mode, MODEF_DATATYPE | MODEF_VIEW); qe_register_commands(&video_mode, video_commands, countof(video_commands)); diff --git a/plugins/my_plugin.c b/plugins/my_plugin.c index 1d6d51d..f2a354a 100644 --- a/plugins/my_plugin.c +++ b/plugins/my_plugin.c @@ -15,7 +15,7 @@ static const CmdDef my_commands[] = { insert_hello, ES, "*") }; -static int my_plugin_init(void) { +static int my_plugin_init(QEmacsState *qs) { /* commands and default keys */ qe_register_commands(NULL, my_commands, countof(my_commands)); return 0; diff --git a/qe.c b/qe.c index 3402812..8af5983 100644 --- a/qe.c +++ b/qe.c @@ -7157,7 +7157,7 @@ static const CmdDef minibuffer_commands[] = { isearch_toggle_word_match) }; -void minibuffer_init(void) +void minibuffer_init(QEmacsState *qs) { /* populate and register minibuffer mode and commands */ // XXX: remove this mess: should just inherit with fallback @@ -7230,7 +7230,7 @@ static void list_display_hook(EditState *s) s->offset = eb_goto_bol(s->b, s->offset); } -static int list_init(void) +static int list_init(QEmacsState *qs) { // XXX: remove this mess: should just inherit with fallback memcpy(&list_mode, &text_mode, offsetof(ModeDef, first_key)); @@ -7312,7 +7312,7 @@ static const CmdDef popup_commands[] = { do_isearch, ESii, "p" "v", 1) }; -static void popup_init(void) +static void popup_init(QEmacsState *qs) { /* popup mode inherits from text mode */ // XXX: remove this mess: should just inherit with fallback @@ -8935,7 +8935,7 @@ void do_help_for_help(EditState *s) #ifdef CONFIG_WIN32 -void qe_event_init(void) +void qe_event_init(QEmacsState *qs) { } @@ -8952,7 +8952,7 @@ static void poll_action(qe__unused__ int sig) } /* init event system */ -void qe_event_init(void) +void qe_event_init(QEmacsState *qs) { struct sigaction sigact; struct itimerval itimer; @@ -9852,9 +9852,9 @@ static void qe_init(void *opaque) /* setup resource path */ set_user_option(NULL); - eb_init(); - charset_init(); - init_input_methods(); + eb_init(qs); + charset_init(qs); + input_methods_init(qs); #ifdef CONFIG_ALL_KMAPS if (find_resource_file(filename, sizeof(filename), "kmaps") >= 0) @@ -9883,12 +9883,12 @@ static void qe_init(void *opaque) qe_register_completion(&resource_completion); #endif - minibuffer_init(); - list_init(); - popup_init(); + minibuffer_init(qs); + list_init(qs); + popup_init(qs); /* init all external modules in link order */ - init_all_modules(); + init_all_modules(qs); #ifdef CONFIG_DLL /* load all dynamic modules */ @@ -9941,7 +9941,7 @@ static void qe_init(void *opaque) put_status(NULL, "%s display %dx%d", dpy->name, qs->screen->width, qs->screen->height); - qe_event_init(); + qe_event_init(qs); #ifdef CONFIG_SESSION if (use_session_file) { @@ -10041,6 +10041,9 @@ int main(int argc, char **argv) dpy_close(&global_screen); #ifndef CONFIG_TINY + /* exit all external modules in link order */ + exit_all_modules(qs); + if (free_everything) { /* free all structures for valgrind */ while (qs->first_window) { diff --git a/qe.h b/qe.h index 3ff7831..7e219e7 100644 --- a/qe.h +++ b/qe.h @@ -451,7 +451,7 @@ typedef struct LogBuffer { void eb_trace_bytes(const void *buf, int size, int state); -void eb_init(void); +void eb_init(QEmacsState *qs); int eb_read_one_byte(EditBuffer *b, int offset); int eb_read(EditBuffer *b, int offset, void *buf, int size); int eb_write(EditBuffer *b, int offset, const void *buf, int size); @@ -599,20 +599,23 @@ void eb_delete_properties(EditBuffer *b, int offset, int offset2); /* dynamic module case */ #define qe_module_init(fn) \ - int qe__module_init(void) { return fn(); } + int qe__module_init(QEmacsState *qs) { return fn(qs); } #define qe_module_exit(fn) \ - void qe__module_exit(void) { fn(); } + void qe__module_exit(QEmacsState *qs) { fn(qs); } #else /* QE_MODULE */ -void init_all_modules(void); +void init_all_modules(QEmacsState *qs); +void exit_all_modules(QEmacsState *qs); #define qe_module_init(fn) \ - extern int module_##fn(void); \ - int module_##fn(void) { return fn(); } + extern int module_##fn(QEmacsState *qs); \ + int module_##fn(QEmacsState *qs) { return fn(qs); } -#define qe_module_exit(fn) +#define qe_module_exit(fn) \ + extern void module_##fn(QEmacsState *qs); \ + void module_##fn(QEmacsState *qs) { fn(qs); } #endif /* QE_MODULE */ @@ -1286,7 +1289,7 @@ struct InputMethod { void register_input_method(InputMethod *m); void do_set_input_method(EditState *s, const char *method); void do_switch_input_method(EditState *s); -void init_input_methods(void); +void input_methods_init(QEmacsState *qs); int load_input_methods(const char *filename); void unload_input_methods(void); @@ -1295,7 +1298,7 @@ void unload_input_methods(void); /* minibuffer & status */ -void minibuffer_init(void); +void minibuffer_init(QEmacsState *qs); typedef struct CompletionDef { const char *name; @@ -1608,7 +1611,7 @@ void do_apropos(EditState *s, const char *str); EditBuffer *new_help_buffer(void); void do_describe_bindings(EditState *s, int argval); void do_help_for_help(EditState *s); -void qe_event_init(void); +void qe_event_init(QEmacsState *qs); void window_get_min_size(EditState *s, int *w_ptr, int *h_ptr); void window_resize(EditState *s, int target_w, int target_h); void wheel_scroll_up_down(EditState *s, int dir); diff --git a/qescript.c b/qescript.c index e25ceb3..2d39514 100644 --- a/qescript.c +++ b/qescript.c @@ -1488,7 +1488,7 @@ static const CmdDef parser_commands[] = { do_eval_buffer, ESi, "P") }; -static int parser_init(void) { +static int parser_init(QEmacsState *qs) { qe_register_commands(NULL, parser_commands, countof(parser_commands)); #ifndef CONFIG_TINY qe_register_completion(&symbol_completion); diff --git a/search.c b/search.c index d04af1b..ff48786 100644 --- a/search.c +++ b/search.c @@ -1645,7 +1645,7 @@ static ModeDef isearch_mode = { //.desc = ""; }; -static int search_init(void) { +static int search_init(QEmacsState *qs) { qe_register_mode(&isearch_mode, MODEF_NOCMD); qe_register_commands(&isearch_mode, isearch_commands, countof(isearch_commands)); qe_register_commands(NULL, search_commands, countof(search_commands)); diff --git a/tools/cptoqe.c b/tools/cptoqe.c index 7cdee49..ae4d039 100644 --- a/tools/cptoqe.c +++ b/tools/cptoqe.c @@ -347,7 +347,7 @@ int main(int argc, char **argv) "\n" "#include \"qe.h\"" "\n" ""); - add_init("int charset_more_init(void)\n{\n"); + add_init("int charset_more_init(QEmacsState *qs)\n{\n"); for (i = 1; i < argc; i++) { filename = argv[i]; diff --git a/tty.c b/tty.c index 64841d5..9ae40de 100644 --- a/tty.c +++ b/tty.c @@ -1716,7 +1716,7 @@ static QEDisplay tty_dpy = { NULL, /* next */ }; -static int tty_init(void) +static int tty_init(QEmacsState *qs) { return qe_register_display(&tty_dpy); } diff --git a/variables.c b/variables.c index 6ef30a2..4b11dcf 100644 --- a/variables.c +++ b/variables.c @@ -591,7 +591,7 @@ static const CmdDef var_commands[] = { "s{Describe variable: }[variable]|variable|") }; -static int vars_init(void) { +static int vars_init(QEmacsState *qs) { qe_register_variables(var_table, countof(var_table)); qe_register_commands(NULL, var_commands, countof(var_commands)); qe_register_completion(&variable_completion); diff --git a/win32.c b/win32.c index bc59502..6c24ebc 100644 --- a/win32.c +++ b/win32.c @@ -537,7 +537,7 @@ static QEDisplay win32_dpy = { NULL, /* next */ }; -static int win32_init(void) +static int win32_init(QEmacsState *qs) { return qe_register_display(&win32_dpy); } diff --git a/x11.c b/x11.c index e44ed80..408b75f 100644 --- a/x11.c +++ b/x11.c @@ -2038,7 +2038,7 @@ static CmdLineOptionDef cmd_options[] = { CMD_LINE_LINK() }; -static int x11_init(void) { +static int x11_init(QEmacsState *qs) { qe_register_cmd_line_options(cmd_options); qe_register_commands(NULL, x11_commands, countof(x11_commands)); if (force_tty)