Allow brave users to disable the confirmation dialog when replacing text in the whole session.
While modifying the docs, I noticed a missing various pref in the table and added it.
Because of the long names of the other and the new setting, the table grew and needed reformatting. I put this into a separate commit for easier review but we can probably squash them together afterwards.
Closes #3702.
You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany/pull/3851
-- Commit Summary --
* Add a various pref to skip 'replace in session' confirmation dialog
* Add missing various pref docs
* Reformat various prefs table in docs
-- File Changes --
M doc/geany.txt (264)
M src/keyfile.c (2)
M src/plugindata.h (2)
M src/search.c (3)
M src/search.h (2)
-- Patch Links --
https://github.com/geany/geany/pull/3851.patchhttps://github.com/geany/geany/pull/3851.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/3851
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/pull/3851(a)github.com>
With Geany 2.0 there is a new question for **Search and Replace** dialog:
**Are you sure to replace in the whole session?**
![image](https://github.com/geany/geany/assets/31816829/6121a941-0a21-4dd3-866b-7caa1861b71b)
I'm against, this is unacceptable for me.
Is there, or can you add an option to disable it?
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/3702
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/issues/3702(a)github.com>
Hi,
I changed the selection color in default theme (File: data\filedefs\filetypes.common) but the changed color doesn't take effect if the "Find" dialog box is open. The changed color takes effect only when the "Find" dialog box is closed.
Here is my change:
-selection=0x000000;0xc0c0c0;false;true
+selection=0x000000;0x00ff00;false;true
I have captured the above issue in two images that I am attaching here.
Question: Is there some solution that the changed color should be applied even if the "Find" dialog box is open?
![Find_Dialog_Box_Open](https://github.com/geany/geany/assets/169445053/a592aa0d-e4cc-460a-bafc-c8893172a1a6)
![Find_Dialog_Box_Closed](https://github.com/geany/geany/assets/169445053/86216a4e-137f-41d6-b3ba-9a699f128d2d)
Regards,
Amit
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/3874
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/issues/3874(a)github.com>
I had a script with n variable, wanted to switch to TOTAL
Open replace window
type n
choose Whole word only
It will get '\n' too and IMHO I think it should SKIP new lines, because if Geany replace them, the text would be destroyed.
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/3875
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/issues/3875(a)github.com>
Hi, this PR fixes a use-after-free in codenav's go-to-file. (which often results in a crash)
## Problem:
### How to reproduce
1. Run geany from command line, to observe error messages
2. Enable codenav plugin, open some document (to allow use of go-to tool)
3. Trigger go-to-file tool (e.g. via shortcut)
4. Write `/`
5. Cancel & close dialog
6. Trigger go-to-file again
7. Write `a`
-> You will likely see an assertion fail in the output, or if you are lucky geany will crash altogether:
`gtk_entry_completion_set_model: assertion 'model == NULL || GTK_IS_TREE_MODEL (model)' failed`
Valgrind shows an invalid read to previously freed memory:
<details>
```
Invalid read of size 8
at 0x4DD5820: UnknownInlinedFun (gtkentrycompletion.c:1224)
by 0x4DD5820: gtk_entry_completion_set_model (gtkentrycompletion.c:1220)
by 0xE2E89F3: directory_check (goto_file.c:166)
by 0x5A6B72F: g_closure_invoke (gclosure.c:834)
by 0x5A9AC1A: signal_emit_unlocked_R.isra.0 (gsignal.c:3961)
by 0x5A8B7A1: signal_emit_valist_unlocked (gsignal.c:3520)
by 0x5A8BCAF: g_signal_emit_by_name (gsignal.c:3624)
by 0x4DBAC29: end_change.lto_priv.0 (gtkentry.c:2941)
by 0x4DC6576: gtk_entry_real_insert_text.lto_priv.0 (gtkentry.c:5401)
by 0x5A6B72F: g_closure_invoke (gclosure.c:834)
by 0x5A9AF49: signal_emit_unlocked_R.isra.0 (gsignal.c:3928)
by 0x5A8B7A1: signal_emit_valist_unlocked (gsignal.c:3520)
by 0x5A8BCAF: g_signal_emit_by_name (gsignal.c:3624)
Address 0xd42b8e0 is 96 bytes inside a block of size 136 free'd
at 0x48468CF: free (vg_replace_malloc.c:985)
by 0x5A90164: g_type_free_instance (gtype.c:2023)
by 0x5A7A732: g_object_unref (gobject.c:4475)
by 0x48E5AC9: run_kb (keybindings.c:1334)
by 0x48E5AC9: run_kb (keybindings.c:1325)
by 0x48E67E4: on_key_press_event (keybindings.c:1396)
by 0x4CFA6CC: _gtk_marshal_BOOLEAN__BOXED.part.0 (gtkmarshalers.c:84)
by 0x5A6B72F: g_closure_invoke (gclosure.c:834)
by 0x5A9A895: signal_emit_unlocked_R.isra.0 (gsignal.c:3888)
by 0x5A8B094: signal_emit_valist_unlocked (gsignal.c:3533)
by 0x5A8B9D6: g_signal_emit_valist (gsignal.c:3263)
by 0x5A8BA93: g_signal_emit (gsignal.c:3583)
by 0x4FC2CD4: gtk_widget_event_internal.part.0.lto_priv.0 (gtkwidget.c:7812)
Block was alloc'd at
at 0x484A993: calloc (vg_replace_malloc.c:1595)
by 0x5B2651A: g_malloc0 (gmem.c:133)
by 0x5A96F1B: g_type_create_instance (gtype.c:1923)
by 0x5A7CB10: g_object_new_internal.part.0 (gobject.c:2603)
by 0x5A7E0C6: UnknownInlinedFun (gobject.c:2600)
by 0x5A7E0C6: g_object_new_with_properties (gobject.c:2766)
by 0x5A7F009: g_object_new (gobject.c:2412)
by 0x4E56A25: gtk_list_store_new (gtkliststore.c:426)
by 0xE2E8573: build_file_list (goto_file.c:111)
by 0xE2E86A7: menu_item_activate (goto_file.c:285)
by 0x48E5AC9: run_kb (keybindings.c:1334)
by 0x48E5AC9: run_kb (keybindings.c:1325)
by 0x48E67E4: on_key_press_event (keybindings.c:1396)
by 0x4CFA6CC: _gtk_marshal_BOOLEAN__BOXED.part.0 (gtkmarshalers.c:84)
Invalid read of size 8
at 0x5A92C79: g_type_check_instance_is_a (gtype.c:4133)
by 0x4DD5836: UnknownInlinedFun (gtkentrycompletion.c:1224)
by 0x4DD5836: gtk_entry_completion_set_model (gtkentrycompletion.c:1220)
by 0xE2E89F3: directory_check (goto_file.c:166)
by 0x5A6B72F: g_closure_invoke (gclosure.c:834)
by 0x5A9AC1A: signal_emit_unlocked_R.isra.0 (gsignal.c:3961)
by 0x5A8B7A1: signal_emit_valist_unlocked (gsignal.c:3520)
by 0x5A8BCAF: g_signal_emit_by_name (gsignal.c:3624)
by 0x4DBAC29: end_change.lto_priv.0 (gtkentry.c:2941)
by 0x4DC6576: gtk_entry_real_insert_text.lto_priv.0 (gtkentry.c:5401)
by 0x5A6B72F: g_closure_invoke (gclosure.c:834)
by 0x5A9AF49: signal_emit_unlocked_R.isra.0 (gsignal.c:3928)
by 0x5A8B7A1: signal_emit_valist_unlocked (gsignal.c:3520)
Address 0xd42b8e0 is 96 bytes inside a block of size 136 free'd
at 0x48468CF: free (vg_replace_malloc.c:985)
by 0x5A90164: g_type_free_instance (gtype.c:2023)
by 0x5A7A732: g_object_unref (gobject.c:4475)
by 0x48E5AC9: run_kb (keybindings.c:1334)
by 0x48E5AC9: run_kb (keybindings.c:1325)
by 0x48E67E4: on_key_press_event (keybindings.c:1396)
by 0x4CFA6CC: _gtk_marshal_BOOLEAN__BOXED.part.0 (gtkmarshalers.c:84)
by 0x5A6B72F: g_closure_invoke (gclosure.c:834)
by 0x5A9A895: signal_emit_unlocked_R.isra.0 (gsignal.c:3888)
by 0x5A8B094: signal_emit_valist_unlocked (gsignal.c:3533)
by 0x5A8B9D6: g_signal_emit_valist (gsignal.c:3263)
by 0x5A8BA93: g_signal_emit (gsignal.c:3583)
by 0x4FC2CD4: gtk_widget_event_internal.part.0.lto_priv.0 (gtkwidget.c:7812)
Block was alloc'd at
at 0x484A993: calloc (vg_replace_malloc.c:1595)
by 0x5B2651A: g_malloc0 (gmem.c:133)
by 0x5A96F1B: g_type_create_instance (gtype.c:1923)
by 0x5A7CB10: g_object_new_internal.part.0 (gobject.c:2603)
by 0x5A7E0C6: UnknownInlinedFun (gobject.c:2600)
by 0x5A7E0C6: g_object_new_with_properties (gobject.c:2766)
by 0x5A7F009: g_object_new (gobject.c:2412)
by 0x4E56A25: gtk_list_store_new (gtkliststore.c:426)
by 0xE2E8573: build_file_list (goto_file.c:111)
by 0xE2E86A7: menu_item_activate (goto_file.c:285)
by 0x48E5AC9: run_kb (keybindings.c:1334)
by 0x48E5AC9: run_kb (keybindings.c:1325)
by 0x48E67E4: on_key_press_event (keybindings.c:1396)
by 0x4CFA6CC: _gtk_marshal_BOOLEAN__BOXED.part.0 (gtkmarshalers.c:84)
Gtk-CRITICAL **: 22:43:16.822: gtk_entry_completion_set_model: assertion 'model == NULL || GTK_IS_TREE_MODEL (model)' failed
```
</details>
## Cause
From what I understand, the root cause is here:
https://github.com/geany/geany-plugins/blob/2b897dc56c097551d2214aef9bfe2c9…
The model is saved in `old_model`, but the refcount is not incremented. As soon as the entry is destroyed, the model's refcount drops to 0 and it's deallocated. The (static) `old_model` now points to freed memory. In the next invocation, `gtk_entry_completion_set_model()` will be called with `old_model`, resulting in an invalid read in freed memory.
## Fix
Increment ref count when caching the completion model (what this PR does).
Extra evidence: With this PR applied, add a print for the refcount before gtk_entry_completion_set_model()`, like so:
```c
printf("old model %p refcount %u\n", old_model, ((GObject *) old_model)->ref_count);
gtk_entry_completion_set_model (completion, old_model);
```
This shows a refcount of 1 at that point, so if not for the `g_object_ref()` call added in this PR, this would have been 0, and the model would have been freed.
You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany-plugins/pull/1339
-- Commit Summary --
* codenav: Fix use-after-free in cached completion model
-- File Changes --
M codenav/src/goto_file.c (6)
-- Patch Links --
https://github.com/geany/geany-plugins/pull/1339.patchhttps://github.com/geany/geany-plugins/pull/1339.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany-plugins/pull/1339
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany-plugins/pull/1339(a)github.com>
1. Suggest using Github for reporting bugs and pull requests instead of sending them by email.
2. Use https:// instead of http://
3. Mention universal-ctags as a maintained version of ctags in geanyctags README
You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany-plugins/pull/1348
-- Commit Summary --
* geanyctags, projectorganizer, vimode: Encourage users to use github
* geanyctags, projectorganizer, vimode: Use https in URLs
* geanyctags: Mention the possibility of using universal-ctags
-- File Changes --
M geanyctags/README (13)
M projectorganizer/README (9)
M projectorganizer/src/prjorg-main.c (2)
M vimode/README (10)
M vimode/src/backends/backend-geany.c (2)
-- Patch Links --
https://github.com/geany/geany-plugins/pull/1348.patchhttps://github.com/geany/geany-plugins/pull/1348.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany-plugins/pull/1348
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany-plugins/pull/1348(a)github.com>
There were mostly expected "problems" like new source files that had to be added, rename of `perl6.c` to `raku.c`, update of kind mappings, etc.
The only unexpected thing is the behavior of the javascript parser - this is from the javascript commit message:
There are lots of differences because of
https://github.com/universal-ctags/ctags/commit/6d85089456ed215ce6b6a673744…
Also
https://github.com/universal-ctags/ctags/commit/b1870b826a384c3567193774372…
seems to confuse the parser in simple.js so it doesn't generate `my_global_var2`.
Finally, Geany reports
```
(geany:820768): Tagmanager-WARNING **: 20:38:28.755: ignoring null tag in /home/parallels/projects/geany/doc/reference/jquery.js(line: 2, language: JavaScript)
```
@b4n Does the PR in general and the javascript parser in particular look good to you? I didn't investigate the javascript parser differences much as I'm not a javascript user myself. At least the NULL warning should be fixed though.
You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany/pull/3859
-- Commit Summary --
* Update perl6.c to raku.c parser
* Update all parsers and related files to ctags p6.1.20240421.0
* Add ldscript parser
* Update parser kind mappings
* Map title/subtitle of the rst parser
* Map defines to tm_tag_variable_t of verilog so we get the same output as before
* Map filter to tm_tag_function_t for powershell to get the same output as before
* Update asm test
* Disable roles for macro kinds in C/C++
* Update unit tests for javascript
-- File Changes --
M ctags/Makefile.am (14)
M ctags/dsl/es.c (37)
M ctags/dsl/es.h (6)
M ctags/dsl/optscript.c (240)
M ctags/dsl/optscript.h (2)
M ctags/main/CommonPrelude.c (96)
M ctags/main/args.c (6)
M ctags/main/colprint.c (11)
M ctags/main/ctags.h (50)
M ctags/main/debug.c (5)
M ctags/main/debug.h (14)
M ctags/main/dependency.c (26)
M ctags/main/dependency.h (1)
M ctags/main/dependency_p.h (1)
M ctags/main/e_msoft.h (1)
M ctags/main/entry.c (551)
M ctags/main/entry.h (159)
M ctags/main/error_p.h (4)
M ctags/main/field.c (155)
M ctags/main/field.h (10)
M ctags/main/field_p.h (12)
M ctags/main/fmt.c (12)
M ctags/main/general.h (2)
M ctags/main/htable.c (200)
M ctags/main/htable.h (16)
A ctags/main/interval_tree_generic.h (197)
M ctags/main/keyword.c (38)
M ctags/main/keyword.h (20)
M ctags/main/kind.c (7)
M ctags/main/lregex.c (977)
M ctags/main/lregex_p.h (7)
M ctags/main/lxpath.c (17)
M ctags/main/lxpath.h (2)
M ctags/main/lxpath_p.h (1)
M ctags/main/main.c (2)
M ctags/main/mbcs.c (4)
M ctags/main/mini-geany.c (48)
M ctags/main/nestlevel.c (50)
M ctags/main/nestlevel.h (17)
M ctags/main/numarray.c (12)
M ctags/main/numarray.h (3)
M ctags/main/options.c (238)
M ctags/main/options_p.h (5)
M ctags/main/param.c (92)
M ctags/main/param.h (4)
M ctags/main/param_p.h (21)
M ctags/main/parse.c (655)
M ctags/main/parse.h (35)
M ctags/main/parse_p.h (24)
M ctags/main/parsers_p.h (40)
M ctags/main/promise.c (56)
M ctags/main/promise.h (2)
M ctags/main/ptag.c (39)
M ctags/main/ptag_p.h (5)
M ctags/main/ptrarray.c (18)
M ctags/main/ptrarray.h (4)
M ctags/main/rbtree.c (713)
M ctags/main/rbtree.h (193)
A ctags/main/rbtree_augmented.h (247)
M ctags/main/read.c (144)
M ctags/main/read.h (21)
M ctags/main/read_p.h (9)
M ctags/main/repoinfo.h (2)
M ctags/main/routines.c (59)
M ctags/main/routines.h (5)
M ctags/main/script.c (10)
M ctags/main/script_p.h (6)
M ctags/main/seccomp.c (2)
M ctags/main/selectors.c (445)
M ctags/main/selectors.h (20)
M ctags/main/sort.c (44)
M ctags/main/strlist.c (4)
M ctags/main/subparser.h (1)
M ctags/main/subparser_p.h (1)
M ctags/main/trace.h (14)
M ctags/main/trashbox.c (1)
M ctags/main/types.h (4)
M ctags/main/unwindi.c (6)
A ctags/main/utf8_str.c (83)
A ctags/main/utf8_str.h (22)
M ctags/main/vstring.c (32)
M ctags/main/vstring.h (61)
M ctags/main/writer-ctags.c (79)
M ctags/main/writer-json.c (34)
M ctags/main/writer.c (4)
M ctags/main/writer_p.h (8)
M ctags/main/xtag.c (6)
M ctags/main/xtag_p.h (4)
M ctags/parsers/abaqus.c (6)
M ctags/parsers/ada.c (74)
M ctags/parsers/asciidoc.c (42)
M ctags/parsers/asm.c (654)
M ctags/parsers/autoit.c (34)
M ctags/parsers/basic.c (326)
M ctags/parsers/bibtex.c (93)
A ctags/parsers/bibtex.h (25)
M ctags/parsers/clojure.c (38)
M ctags/parsers/cobol.c (12)
M ctags/parsers/cpreprocessor.c (505)
M ctags/parsers/cpreprocessor.h (26)
M ctags/parsers/css.c (9)
M ctags/parsers/cxx/cxx.c (16)
M ctags/parsers/cxx/cxx_debug.c (17)
M ctags/parsers/cxx/cxx_keyword.c (81)
M ctags/parsers/cxx/cxx_keyword.h (15)
M ctags/parsers/cxx/cxx_parser.c (133)
M ctags/parsers/cxx/cxx_parser_block.c (100)
M ctags/parsers/cxx/cxx_parser_function.c (76)
M ctags/parsers/cxx/cxx_parser_internal.h (16)
M ctags/parsers/cxx/cxx_parser_lambda.c (3)
A ctags/parsers/cxx/cxx_parser_module.c (331)
M ctags/parsers/cxx/cxx_parser_namespace.c (4)
M ctags/parsers/cxx/cxx_parser_template.c (43)
M ctags/parsers/cxx/cxx_parser_tokenizer.c (86)
M ctags/parsers/cxx/cxx_parser_typedef.c (13)
M ctags/parsers/cxx/cxx_parser_using.c (26)
M ctags/parsers/cxx/cxx_parser_variable.c (123)
M ctags/parsers/cxx/cxx_qtmoc.c (3)
M ctags/parsers/cxx/cxx_scope.c (25)
M ctags/parsers/cxx/cxx_scope.h (5)
A ctags/parsers/cxx/cxx_side_chain.c (230)
A ctags/parsers/cxx/cxx_side_chain.h (33)
M ctags/parsers/cxx/cxx_tag.c (159)
M ctags/parsers/cxx/cxx_tag.h (50)
M ctags/parsers/cxx/cxx_token.c (18)
M ctags/parsers/cxx/cxx_token.h (11)
M ctags/parsers/cxx/cxx_token_chain.c (92)
M ctags/parsers/cxx/cxx_token_chain.h (10)
M ctags/parsers/diff.c (4)
M ctags/parsers/erlang.c (10)
M ctags/parsers/flex.c (18)
M ctags/parsers/fortran.c (188)
M ctags/parsers/gdscript.c (74)
M ctags/parsers/geany_lcpp.h (23)
M ctags/parsers/go.c (13)
M ctags/parsers/haskell.c (2)
M ctags/parsers/haxe.c (57)
M ctags/parsers/html.c (181)
M ctags/parsers/iniconf.c (24)
M ctags/parsers/jscript.c (0)
A ctags/parsers/jscript.h (0)
M ctags/parsers/json.c (0)
M ctags/parsers/julia.c (0)
M ctags/parsers/lisp.c (0)
M ctags/parsers/lua.c (0)
M ctags/parsers/make.c (0)
M ctags/parsers/markdown.c (0)
M ctags/parsers/markdown.h (0)
M ctags/parsers/nsis.c (0)
M ctags/parsers/objc.c (0)
M ctags/parsers/ocaml.c (0)
M ctags/parsers/pascal.c (0)
M ctags/parsers/perl.c (0)
M ctags/parsers/perl.h (0)
M ctags/parsers/php.c (0)
M ctags/parsers/powershell.c (0)
M ctags/parsers/python.c (0)
M ctags/parsers/r.c (0)
R ctags/parsers/raku.c (0)
M ctags/parsers/rst.c (0)
M ctags/parsers/ruby.c (0)
A ctags/parsers/ruby.h (0)
M ctags/parsers/rust.c (0)
M ctags/parsers/sh.c (0)
A ctags/parsers/sh.h (0)
M ctags/parsers/sql.c (0)
M ctags/parsers/tcl.c (0)
M ctags/parsers/tcloo.c (0)
M ctags/parsers/tex.c (0)
M ctags/parsers/typescript.c (0)
M ctags/parsers/verilog.c (0)
M ctags/parsers/vhdl.c (0)
M meson.build (0)
M src/tagmanager/tm_parser.c (0)
M src/tagmanager/tm_parser.h (0)
M src/tagmanager/tm_parsers.h (0)
M tests/ctags/1795612.js.tags (0)
M tests/ctags/1850914.js.tags (0)
M tests/ctags/1878155.js.tags (0)
M tests/ctags/1880687.js.tags (0)
M tests/ctags/3470609.js.tags (0)
M tests/ctags/arraylist.js.tags (0)
M tests/ctags/bracematch.js.tags (0)
M tests/ctags/bug1950327.js.tags (0)
M tests/ctags/bug2888482.js.tags (0)
M tests/ctags/bug3571233.js.tags (0)
M tests/ctags/complex-return.js.tags (0)
M tests/ctags/js-class-related-unterminated.js.tags (0)
M tests/ctags/js-const.js.tags (0)
M tests/ctags/js-let.js.tags (0)
M tests/ctags/js-string-continuation.js.tags (0)
M tests/ctags/js-unknown-construct-nesting.js.tags (0)
M tests/ctags/jsFunc_tutorial.js.tags (0)
M tests/ctags/masm.asm.tags (0)
M tests/ctags/parenthesis-rvalue.js.tags (0)
M tests/ctags/secondary_fcn_name.js.tags (0)
M tests/ctags/simple.js.tags (0)
M tests/ctags/simple.rst (0)
M tests/ctags/simple.rst.tags (0)
M tests/ctags/ui5.controller.js.tags (0)
-- Patch Links --
https://github.com/geany/geany/pull/3859.patchhttps://github.com/geany/geany/pull/3859.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/3859
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/pull/3859(a)github.com>
Currently, if a link is clicked in the markdown preview, said link is opened in the preview tab itself, instead of calling my main browser.
This might be the desired outcome for relative links, but in my case opening youtube in the embedded browser led to audio glitches and then a nice crash.
Maybe a configurable option? Or absolute links in browser, relative in preview?
Thanks for your work, guys.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany-plugins/issues/544