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.
The previous code would skip parsing with sub-parsers so these would not
work. Running full createTagsWithFallback1() in this case would cause
two problems:
1. We would have to propagate the extra callback arguments to
runParserInNarrowedInputStream()
2. And the callbacks after each pass should not actually be called in this
case because the caller expects these are called for the master parser,
not the sub-parsers.
So instead just do simple parsing without re-tries which are used only in
the C and Fortran parsers which lack sub-parser capability anyway.
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.
Since 320e4b9d762e0bd7d550c62be614873db5a04ac4 the "smart line
indentation" explicitly doesn't restore cursor position, and doesn't
make use of the position parameter, which no caller really use anyway.
Remove it altogether to avoid confusion.
Add a defensive check to make sure to catch the unlikely but maybe
theoretically possible case where the document last document is closed
while the Save As dialog is running.