* Fix detection of some non-UTF-8 files with a encoding stanza in them (e.g. `coding: iso-8859-2`)
* Fix out-of-bounds reads loading an empty UTF-16 buffer with BOM (yeah, really)
* Fix **silently** truncating at the first NUL in some case (part of #3700)
* Fix handling of non-UTF-8 data that start with a UTF-8 BOM
Note: this still doesn't load data after the first NUL byte, but at least now it will always properly warn as we supposedly were already doing.
You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany/pull/3716
-- Commit Summary --
* Add some basic tests for encoding detection and conversion
* encodings: Fix detection of non-UTF-8 inline encodings
* Remove unused code
* Add basic tests for UTF-16* and UTF-32*
* Add some basic UTF-7 tests
* Add some tests for empty data with BOM
* Fix silently truncating files with NULs
* Refactor to remove duplication, lower assumptions and improve safety
-- File Changes --
M src/encodings.c (151)
M src/encodingsprivate.h (3)
M src/libmain.c (2)
M tests/Makefile.am (3)
A tests/test_encodings.c (283)
-- Patch Links --
https://github.com/geany/geany/pull/3716.patchhttps://github.com/geany/geany/pull/3716.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/3716
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/pull/3716(a)github.com>
**Conditions**
- except `File Browser` all other plugins are deactivated
- sidebar is on the left side
- in the sidebar are three tabs (from left to the right): `Symbols`, `Documents` and `Files`
- in the editor are two documents
**Steps to reproduce the issue**
1. click in the editor on the second tab-title, so the second tab is in focus
2. click in the sidebar on the tab-title `Documents`
3. close Geany
4. open Geany (result: the second tab of the editor should be in focus while in the sidebar the tab `Documents` is active)
5. click on the tab-title `Files`
6. tab-browse with the keyboard three times to the left side
**Result**
the first tab of the editor is in focus
**Expectation**
the tab `Files` of the sidebar should be in focus
**System**
Lubuntu 23.10
Geany 1.38
**Remark**
This does not only happen with the plugin `File Browser` but also with the plugin `Preview`, because in both plugins a new tab is created in the sidebar, in the plugin `File Browser` it is the Files-tab while in the plugin `Preview` it is the Preview-tab.
This issue is based on the knowledge of https://github.com/xiota/geany-preview/issues/11.
**System**
Lubuntu 23.10
Geany 1.38
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany-plugins/issues/1318
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany-plugins/issues/1318(a)github.com>
Hi, let me start with an expression of gratitude for this great text editor!
This is a feature request:
Scenario steps:
1. Have a file with some text already in it.
2. Have the text be hierarchically organized by indentation levels
3. Be on a level 2
4. Paste a multiline text from the clipboard
Current behavior:
The first line of the text is pasted at the cursor location. (indented on level 2)
All the other lines of the clipboard contents are pasted at column 0 (indentation level 1).
Desired behavior:
Have all the lines of the pasted clipboard text be "padded" with the indentation level of the cursor.
e.g.
```
Intro:
This text is indented on level 2
....
....
Other section:
This text is also indented on level 2
# now I wish to paste a multiline text from the clipboard and have _all_ of the text indented to the "Level 1" (whatever that is, e.g. 1 tab)
```
Thanks in advance!
Even if this doesn't get implemented, I'd love to hear why this is not a desired behavior :)
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/3845
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/issues/3845(a)github.com>
This is a two-parts fix required for usage with 2.0:
8cad88d72c343fd1091b6dab85ecb226c062a9da: Fix a crash when encountering an unknown tag type (e.g. locals)
3af0bf5117a1143b20286f5ee9fb0a2c35916d6b: Add support for locals, and do something useful with them by default.
Without the first one, triggering documentation generation when a local is the "current" symbol crashes the plugin (and thus Geany).
Without the second one in addition, it's annoying because locals "catch" the generation request, although in most cases they should be skipped.
Both of these are particularly important with 2.0 because we now generate locals for purpose of improved scope completion, and thus we have a *lot* of them for parsers supporting it (e.g. the C and C++ one, which is the main default target of the plugin).
You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany-plugins/pull/1294
-- Commit Summary --
* geanygendoc: Do not crash if documenting an unknown tag type
* geanygendoc: Add support for local variables
-- File Changes --
M geanygendoc/data/filetypes/c.conf (5)
M geanygendoc/docs/manual.rst (2)
M geanygendoc/src/ggd-tag-utils.c (1)
M geanygendoc/src/ggd.c (2)
-- Patch Links --
https://github.com/geany/geany-plugins/pull/1294.patchhttps://github.com/geany/geany-plugins/pull/1294.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany-plugins/pull/1294
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany-plugins/pull/1294(a)github.com>
An offspring of #3716, with small things on the improvement side rather than fixes.
* Merge 2 controls in the prefs dialog (no functional change intended, but gets rid of a checkbox and some UI code)
* Don't display unsupported encodings in the encoding menus and combo boxes (e.g. [ISO-8859-8-I](https://en.wikipedia.org/wiki/ISO-8859-8-I) and [HZ](https://en.wikipedia.org/wiki/HZ_(character_encoding)) are commonly unsupported on Linux, and I hear [ISO-IR-111](https://en.wikipedia.org/wiki/ISO-IR-111) usually isn't available on Windows)
* Don't try unsupported encodings when guessing encoding (because it's useless)
You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany/pull/3720
-- Commit Summary --
* prefs: Remove separate checkbox for default open encoding
* encodings: Add a flag for whether the encoding is supported
* Don't display unsupported encodings
* Don't try knowingly unsupported encodings
-- File Changes --
M data/geany.glade (16)
M doc/geany.txt (10)
M src/encodings.c (35)
M src/encodingsprivate.h (1)
M src/prefs.c (40)
-- Patch Links --
https://github.com/geany/geany/pull/3720.patchhttps://github.com/geany/geany/pull/3720.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/3720
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/pull/3720(a)github.com>
Right now parsing of modules is not enabled. The problem is that module
name in ocaml is the name of the source file and with our unit tests
the source file name is a temporary name so we get different tag name
every time and the unit test fails.
You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany/pull/3163
-- Commit Summary --
* Add Ocaml ctags parser
-- File Changes --
M ctags/Makefile.am (1)
A ctags/parsers/ocaml.c (2094)
M meson.build (1)
M src/filetypes.c (2)
M src/tagmanager/tm_parser.c (21)
M src/tagmanager/tm_parser.h (1)
M src/tagmanager/tm_parsers.h (3)
M tests/ctags/Makefile.am (1)
A tests/ctags/simple.ml (34)
A tests/ctags/simple.ml.tags (8)
M tests/meson.build (1)
-- Patch Links --
https://github.com/geany/geany/pull/3163.patchhttps://github.com/geany/geany/pull/3163.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/3163
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/pull/3163(a)github.com>
After successful installation of geany-plugins-2.0_setup.exe with standard settings only a few plugins are available in Geany.
Error message says plugins are not binary compatible with this release of geany and needs to be recompiled.
In previous version 1.38 already some plugins were missing like git-changebar but now lot more.
Both Geany and Geany-Plugins are installed in Windows user directory.
![grafik](https://github.com/geany/geany-plugins/assets/52318651/97da42b5-ce8a-41df-aed4-bbe80cecc711)
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany-plugins/issues/1292
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany-plugins/issues/1292(a)github.com>
The Fortran function random_init is not highlighted in f90 files.
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/3362
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/issues/3362(a)github.com>
This fixes #3362.
I added the keywords from Fortran 2018 with the help of a python script (if this has to be done again in the future).
The current standard and keywords can be found here:
https://j3-fortran.org/doc/year/18/18-007r1.pdfhttps://github.com/cdslaborg/FortranKeywords
<details>
<summary>Script</summary>
```python
old_f = open("filetypes.fortran", "r")
old_lines = old_f.read().splitlines()
old_primary = set()
old_intrinsic_functions = set()
old_user_functions = set()
for line in old_lines:
s = line.split("=")
if s[0] == "primary":
for w in s[1].split():
old_primary.add(w)
elif s[0] == "intrinsic_functions":
for w in s[1].split():
old_intrinsic_functions.add(w)
elif s[0] == "user_functions":
for w in s[1].split():
old_user_functions.add(w)
old_f.close()
f = open("FortranKeywords2018.txt", "r")
lines = f.read().splitlines()
primary = set()
intrinsic_functions = set()
user_functions = set()
types_primary = {"specifier", "statement", "attribute"}
types_intrinsic_functions = {
"function_elemental",
"function_transformational",
"function_inquiry",
"function_void",
"subroutine",
"subroutine_atomic",
"subroutine_pure",
"constant",
"subroutine_collective",
"type_derived",
"module_intrinsic",
}
types_user_functions = {}
old_maping = {
"primary": set(),
"intrinsic_functions": set(),
"user_functions": set(),
"unspecified": set(),
}
for line in lines:
s = line.split(",")
ws = s[0].replace("(", " ").replace(")", " ").replace(".", " ").split()
# check old maping
for w in ws:
wl = w.lower()
if wl in old_intrinsic_functions and not wl in old_primary :
old_maping["intrinsic_functions"].add(s[1])
elif wl in old_primary and not wl in old_intrinsic_functions:
old_maping["primary"].add(s[1])
# elif wl in old_user_functions:
# old_maping["user_functions"].add(s[1])
old_maping["unspecified"].add(s[1])
old_maping["unspecified"] = (
old_maping["unspecified"]
- old_maping["primary"]
- old_maping["intrinsic_functions"]
- old_maping["user_functions"]
)
if s[1] in types_primary:
for w in ws:
primary.add(w.lower())
elif s[1] in types_intrinsic_functions:
for w in ws:
intrinsic_functions.add(w.lower())
elif s[1] in types_user_functions:
for w in ws:
user_functions.add(w.lower())
else:
print("not added:", s)
if s[0] in old_primary:
print("old_primary")
if s[0] in old_primary:
print("old_intrinsic_functions")
f.close()
old_dubs = old_intrinsic_functions.intersection(old_primary)
wrong = (
primary.intersection(old_intrinsic_functions).union(
intrinsic_functions.intersection(old_primary)
)
- old_dubs
)
print("wrong:", wrong)
# print("old duplicates:", old_dubs)
# dubs = primary.intersection(intrinsic_functions)-old_dubs
# print("dubs:",' '.join(dubs))
print("\nmissing primary:", " ".join(primary - old_primary))
print(
"\nmissing intrinsic_functions:",
" ".join(intrinsic_functions - old_intrinsic_functions),
)
print("\n approximate old maping:", old_maping)
# print("legacy:")
# print("primary:", old_primary-primary)
# print("intrinsic_functions:", old_intrinsic_functions-intrinsic_functions)
```
</details>
Some if the keywords are added to both primary and intrinsic_functions, but this was also the case in the past. I mapped keyword categories (from the standard) to "primary" and "intrinsic_functions" like it has been in the past, and new categories like "module_intrinsic" have been added to the most fitting one.
As far as I can tell, it is correct and all keywords are handled. Also, I didn't remove any of the existing keywords to keep compatibility to older Fortran versions.
<details>
<summary>Category Mapping</summary>
```python
primary = {"specifier", "statement", "attribute"}
intrinsic_functions = {
"function_elemental",
"function_transformational",
"function_inquiry",
"function_void",
"subroutine",
"subroutine_atomic",
"subroutine_pure",
"constant",
"subroutine_collective",
"type_derived",
"module_intrinsic",
}
```
</details>
You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany/pull/3656
-- Commit Summary --
* update fortran keywords
-- File Changes --
M data/filedefs/filetypes.fortran (4)
-- Patch Links --
https://github.com/geany/geany/pull/3656.patchhttps://github.com/geany/geany/pull/3656.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/3656
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/pull/3656(a)github.com>