Doing so drops the rectangular selection, and there is no obvious
correct behavior for line breaking with a rectangular selection.
So, just don't do line breaking in this case.
Fixes#2051.
This fixes support for COBOL symbols after the recent breakage of regex
parsers, as well as introducing additional features and bug fixes.
Also import some of the tests.
https://github.com/universal-ctags/ctags/pull/2076
Part of #2119.
And so remove the current year to ease maintenance and since it is not
strictly necessary.
Also remove individual copyright holders (where appropriate) and replace
the name with "The Geany contributors". The detailed authorship
information is still available in the GIT history.
Also remove copyright notice and author names from READMEs.
SO_REUSEADDR on Windows allows to bind to an already used port
without an error. This way we never notice if the port is already used.
So use the Windows special flag SO_EXCLUSIVEADDRUSE to ensure we receive
an error if the port is already used.
Part of #641.
We need to explicitly raise the main window on IPC commands
only when opening files and similar.
For query commands like "doclist" the focus should stay on the
remote instance.
The "perror" logs were not very visible on non-Windows systems
(i.e. the user could see and notice them only when Geany was started
from the command line).
On Windows, those messages were never visible at all.
Add a new debug log message if Geany received an IPC command
from a remote instance.
Also, add a status bar and status window message if the initial socket
creation failed.
* Use latest version of htable
* Use latest version of mio
* Use latest version of objpool
* Use latest version of ptrarray
* Use latest version of vstring
This also requires adding trashbox.c/h which is now used by vstring and
inline macros from inline.h.
* Rename fieldSpec to fieldDefinition
See b56bd065123d69087acd6f202499d71a86a7ea7a upstream.
* Rename kindOption to kindDefinition
See e112e8ab6e0933b5bd7922e0dfb969b1f28c60fa upstream
* Rename kinds field in parserDefinition to kindTable
See 09ae690face8b5cde940e2d7cf40f8860381067b upstream.
* Rename structure fields about field in parserDefinition
See a739fa5fb790bc349a66b2bee0bf42cf289994e8 upstream.
* Use kindIndex instead of kindDefinition
This patch replaces kindDefinition related entries from sTagEntryInfo
with kindIndex so kinds are referenced indirectly using the index. For
more info please refer to commits:
16a2541c0698bd8ee03c1be8172ef3191f6e695a
f92e6bf2aeb21fd6b04756487f98d0eefa16d9ce
Some other changes had to be made to make the sources compile (without
bringing all the diffs from upstream). At some places, which aren't used
by Geany, only stub implementations have been created.
In particular, the regex parser has been disabled (for now?) because its
current implementation doesn't allow accessing kindDefinitions using
index and allowing this would require big changes in its implementation.
The affected parsers are Cobol, ActionScript and HTML. For HTML we can
use the token-based parser from upstream, and we should consider
whether Cobol and ActionScript are worth the effort to maintain a separate
regex implementation using GRegex (IMO these languages are dead enough
not to justify the extra effort).
The patch also disables tests for languages using regex parsers.
* Rename roleDesc to roleDefinition
See 1345725842c196cc0523ff60231192bcd588961b upstream. Since we don't care
about roles in Geany, we don't have to do the additional stuff the upstream
patch does.
* Add XTAG_ANONYMOUS used by jscript
See 0e4c5d4a0461bc8d9616fe3b97d75b91d014246e upstream.
* Include stdint.h in entry.h
* Don't use hash value as an Anonymous field identifier
Instead of something like "Anonymous0ab283cd9402" use sequential integer
values like "Anonymous1".
* Call anonReset in main part
See 3c91b1ea509df238feb86c9cbd552b621e462653 upstream.
* Use upstream javascript parser
* Use upstream css parser
* Create correctly sized MIO for 0 size
See https://github.com/universal-ctags/ctags/pull/1951
* Always enable promise API and subparsers for Geany
* Support subparsers in Geany and add HTML parser demonstrating this feature
This feature requires several changes:
1. Propagating language of the tag from ctags to Geany so we know whether
the tag comes from a master parser or a subparser.
2. We need to address the problem that tag types from a subparsers can
clash with tag types from master parsers or other subparsers used by the
master parser. For instance, HTML and both its css and javascript
subparsers use tm_tag_class_t but HTML uses it for <h2> headings, and
css and javascript for classes. Representing all of them using
tm_tag_class_t would lead to complete mess where all of these types would
for instance be listed in the same branch of the tree in the sidebar.
To avoid this problem, this patch adds another mapping for subparsers where
each tag type can be mapped to another tag type (which isn't used neither
by master parser or other subparsers). To avoid unwanted clashes with other
parsers, only tags explicitly mentioned in such mappings are added to tag
manager; other subparser tags are discarded.
For HTML this patch introduces mapping only for tm_tag_function_t (which
in this case maps to the same type) to mimick the previous HTML parser
behavior but other javascript and css tag types can be added this way
in the future too.
3. Since in most of the code Geany and tag manager assume that tags from
one file use the same language, subparser's tags are modified to have the
same language like the master parser.
4. HTML parser itself was copied from upstream without any modifications.
Tests were fixed as the parser now correctly ignores comments.
* Rename truncateLine field of tagEntryInfo
See 0e70b22791877322598f03ecbe3eb26a6b661001 upstream. Needed for Fortran
parser.
* Add dummy mbcs.h and trace.h
Included by javascript parser.
* Introduce an accessor to `locate' field of `Option'
See fb5ef68859f71ff2949f1d9a7cab7515f523532f upstream. Needed for Fortran.
* Add numarray.c/h
Needed by various parsers.
* Add getLanguageForFilename() and getLanguageForCommand()
See
416c5e6b8807feaec318d7f8addbb4107370c187
334e072f9d6d9954ebd3eb89bbceb252c20ae9dd
upstream. Needed for Sh parser.
* txt2tags: Fix scope separator definition and re-enable tests
* Rename rest.c to rst.c to match upstream filename
* Use upstream asciidoc and rst parsers
* Add asciidoc and rst unit tests
* Rename conf.c to iniconf.c to match upstream filename
* Add tests of conf, diff, md parsers from universal ctags
* Add more ctags unit tests
This patch adds unit tests for: nsis, docbook, haskell, haxe, abaqus, vala,
abc.
The only missing unit tests are for GLSL and Ferite parsers which
however share the implementation with the C parser and should be
reasonably well covered by other C-like language tests.
The tests were put together from various tutorials and help of the
languages in order to cover the tags these parsers generate. No guarantee
they'd compile with real parsers.
* Rename latex.c to tex.c to match upstream filename
* Rename entry points of parsers to match upstream names
* Initialize trashbox
* Add newline to the end of file
33dafac8f0713de79f04e2ebce2399fb914d6792 restored the pre-Scintilla
3.10 default on non-Windows, but also changed the Windows one. Fix
this so the modifier keeps its historical value on Windows as well.
Fix document_account_for_unsaved() so it does not alter the `changed`
flag on documents, in order for plugins to have a reliable value there
at all times.
Patch by @chrontec with small additional tidying up.
Closes#1857.
- Notably the utils_strv_{find_common_prefix,find_lcs,shorten_file_list}
now take -1 for num to mean to compute the array length.
- utils_strv_find_common_prefix implementation simplified.
- if num == 0 is passed to the above functions the passed strv is not
dereferenced (so could be NULL).
- Fix lots of compiler warnings
- Fix a bug where a long base name would prevent ellipsizing the longest
common substring
- rewrite utils_strv_shorten_file_list to be more clear (hopefully)
- use g_strlcpy
- optimize case where the longest common substring need not be searched for
The array annotation has many possible parameters, this avoids having a Doxygen
command for each one.
Luckily you can define Doxygen commands multiple times with different a number
of parameters each.
Since I based the algorithm of the above function on code in one of my python
plugins, I would like to remove the implementation in my plugin and call
Geany's function.
From #1069:
> At the moment if symbols of the same name are defined in identically named
> files, it's hard to distinguish which file is which because there's no path
> in the popup.
> The popup should show part of the path until a directory where the paths
> differ so it's possible to distinguish the different files. At the same time
> there should probably be some top limit for the length of the paths as they
> can make the popup too wide.
This addresses the above by showing more of the file's paths but still try
to make it as short as possible. The file list is processed by the new
utils_strv_shorten_file_list(), as a result the popup will list files with
the common prefix stripped and the longest common sub-path ellipsized.
As a result, the file list shows enough of the path to make them unique but
still is still very short and doesn't make the dialog too wide.
Fixes#1069.
1) utils_strv_find_common_prefix
Locates the common prefix.
2) utils_strv_find_lcs
Finds the longest common substring.
3) utils_strv_shorten_file_list
Transforms the file list by removing the common prefix and ellipsizing
the longest common substring. This is intended to be used for fixing #1069.
Although only 3 will be used immediately, I separated the functionality, so
that the other two function can be used on their own.
This uses a menu and is thus subject to the menu icons visibility
setting, but here it should reflect the view from the symbols list,
and thus show the icon in all cases.
Don't use the files inode as the hash. Although it looks like a good
idea for de-duplicating links as well, it has several issues, including
non-uniqueness of inodes across file systems.
The way it was done hashing the inode but comparing the file name
string pointers also made the hash mostly irrelevant, as it just stored
filenames sharing the same inode in the same hash bucket but without
actually doing any de-duplication, making the whole thing a convoluted
way of converting to a list.
Instead, hash and compare the filenames themselves, which, even though
it doesn't handle links de-duplication, is better than the
non-functional previous code.
Also, directly build the list and only use the hash table as a way for
checking for duplicates, which is both faster and gives a stable
output.
Now the keybinding can be overridden (e.g. using Tab for it as well as
normal behavior), beeping when there is no next cursor is more annoying
than useful.
Part of #1554.
The new styles are for "diff of a diff", e.g. lines starting with `++`,
`+-`, `-+` and `--`. Those are currently mapped conservatively keeping
the previous display behavior, until we have good style matches for
them.
Scintilla 3.7.6/4.0.0 deprecated `SCE_*STYLEBITS*` and moved it to
deprecated features that require a build-time flag to be available.
Thus, drop use of those (as they are now no-ops anyway) and bump the
ABI (so plugins depending on those don't build mistakenly load) and API
(so a developer can guard use of those if wanted) version accordingly.