8630 Commits

Author SHA1 Message Date
Colomban Wendling
1c4a9d8dd3 C++: Fix parsing of global scope qualifiers in base class lists
See also https://sourceforge.net/p/ctags/bugs/194/

I didn't use the exact upstream patch only altering the C++ code path,
because as far as I know no c.c language recognize two consecutive
colons separated by whitespace as a single token, so there's no point
in carrying on mistakes from the past.
2016-01-17 04:03:24 +01:00
Colomban Wendling
440a736018 C++, C#: Properly set scope on namespaces
Closes #871.
2016-01-17 03:30:06 +01:00
Colomban Wendling
6e0d4ac6ec Merge pull request #581 from techee/symbollist_sort
Make it possible to define default symbol_list_sort_mode
2016-01-13 17:43:03 +01:00
Thomas Martitz
740ecb00fb doxygen: fix doxygen warnings about filetypes_array references. 2016-01-12 07:15:54 +01:00
Jiří Techet
1ea072e125 Make it possible to define default symbol_list_sort_mode
Both sorting by name and appearance makes sense for most languages. Some
users may prefer sorting by appearance so make it configurable in
preferences (the possibility to override the settings for specific
filetypes is preserved).

Thanks to Colomban Wendling for lots of improvements of this patch.

Fixes #313.
2016-01-11 23:36:50 +01:00
Colomban Wendling
e7429d4cdb Merge branch 'gb-new'
Nothing to see here, is there :)
2016-01-11 02:31:01 +01:00
Jiří Techet
e0122592d9 Perform scope autocompletion based on function return types
We just need to skip the (...) and perform autocompletion as before.

Shift pos by 1 in the whole function so we don't have to look 2 characters
back (makes the function easier to read).

Functions contain pointers in their return values - remove them before
searching for the type.

Also restrict the searched variable/function/type tags a bit only to
types which make sense for the search.
2016-01-10 12:36:08 +01:00
Jiří Techet
4bc5f4a7e4 Popup scope autocompletion dialog in more cases
* for PHP and Rust scope separator ::
* when there's more than one whitespace between the identifier and operator
2016-01-10 12:36:08 +01:00
Jiří Techet
c4b1cd4938 Perform "namespace" search (autocomplete for A:: where A is a type)
In principle this is very similar to the normal scope search. If the
provided name belongs to a type that can contain members (contrary to a
variable in scope search), perform the namespace search. With namespace
search show all possible members that are at the given scope.

Since we perform the scope search at file level, don't perform the
namespace search for tags that can span multiple files otherwise we get
incomplete results which could be confusing to users. This involves
namespaces and packages.
2016-01-10 12:36:05 +01:00
Jiří Techet
1281d0c942 Get members from the same file as the type/struct/union
Rethink how to extract members from the struct types. Inspired by
the patch using the same file as the typedef to search for structs,
we can do the same to extract the members only from the file
containing the struct and not the whole workspace. This makes
this operation fast enough so we don't have to keep the extracted
members in a special array (this will become especially useful
for namespace search because for it we would have to extract
all tags and then the extracted array would have the same
size as the workspace so we'd lose the performance gain).

Since the above works only for tags having the file information,
that is, not the global tags, we'll lose some performance
when searching the global tags. I think people don't create
the tag files for complete projects but rather for header files
which contain less tags and still the performance should be
better than before this patch set because we go through the
global tag list only once (was twice before).

On the way, clean up the source a bit, add more comments and move
some code from find_scope_members() to find_scope_members_tags().
2016-01-10 12:33:40 +01:00
Jiří Techet
30fa28bac7 Don't use enums for scoped search
Even though enums contain members, their members are accessed in a
different way than members of classes and structs. E.g. consider:

typedef enum {A, B, C, D} MyEnum;

Variable of this type is declared as

MyEnum myVar;

myVar can be assigned a value from MyEnum; however, we don't access myVar
over the dot operator so we don't need the list of all members after
typing

myVar.

This patch eliminates some false positives after typing .
2016-01-10 12:31:47 +01:00
Jiří Techet
bf17c90bd6 Improve tag searching for "typedef struct {...}" cases
When resolving typedef, search for the subsequent type in the file where
the typedef was defined. For more info see the comment in the patch.
2016-01-10 12:31:47 +01:00
Jiří Techet
13755122f2 Move symbols_get_context_separator() implementation to TM
This way we can use it inside TM.
2016-01-10 12:31:47 +01:00
Jiří Techet
e13aac0dea Remove unused tm_workspace_find_namespace_members()
The implementation of this function is almost the same like the original
m_workspace_find_scoped_members() and there's nothing interesting here
we wouldn't be able to recreate trivially.
2016-01-10 12:31:46 +01:00
Jiří Techet
809a9a7ea5 Merge add_member() and find_scope_members_tags()
By comparing the file pointer in the loop we can speed it up a bit
because we can avoid the strcmp() (this function is the slowest part of
the scope completion based on profiling).

Also move the pointer array creation to this function and return it which
is a bit cleaner.
2016-01-10 12:31:46 +01:00
Jiří Techet
8ff8cbc3a3 Sane implementation of find_scope_members_tags()
Disclaimer: I have absolutely no idea how the original function works.
After gazing into the code for one hour, I just gave up and wrote my own
version of it based on what I think the function should do
but maybe I'm just missing something what justifies the original
implementation's insanity.
2016-01-10 12:31:46 +01:00
Jiří Techet
140a7b6617 When extracting members, get them from single file only
The previous commit fixed the situation when e.g. anon_struct_0 was in the
current file by checking the current file first.

In the case the struct type definition isn't found in the current file,
at the moment we get all members from all anon_struct_0 which can be a
really long list. This list isn't very helpful to users because all the
members from all the structs are mixed. Moreover, not all possible members
are in the list because there are e.g. just members from anon_struct_0 but
not from anon_struct_1 etc. which from the point of view of this function
is a different type.

Instead, restrict the returned members to just a single file (anonymous
structs have unique name per file so it means there will be just one
from the file). Of course the picked file can be wrong and the returned
members might be from a different struct the user wanted but at least
the list will make more sense to users.
2016-01-10 12:31:46 +01:00
Jiří Techet
b6b93036f6 Get scope members only from corresponding tag arrays
At the moment it can happen that even though a member is found in the
currently edited file, the search at the end of the function finds
the type inside another file. This typically happens for anonymous
structs so e.g. for anon_struct_0{...} from the current file we get
members from anon_struct_0{...} from all open documents plus gloabl tags.

Search in an increasing "circle" - start with current file only (trying
all possible types of the variable), continue with workspace array and
finally, if not found, search in the global tags.
2016-01-10 12:31:02 +01:00
Colomban Wendling
4d4573c5d8 Merge pull request #855 from techee/changelog
Concatenate ChangeLog.pre-0-17 and ChangeLog.pre-1-22
2016-01-09 20:18:29 +01:00
Colomban Wendling
28f7c169fc Merge pull request #652 from b4n/kb/file-properties
Allow to set a keybinding for File->Properties
2016-01-09 20:07:23 +01:00
Colomban Wendling
8099fddd92 Remove leftover references to SVN
Closes #856.
2016-01-09 19:59:09 +01:00
Jiří Techet
c7bf89a464 Treat the "h" extension as a C++ file
The extension is used by both C and C++ and lexing/parsing C headers with
the C++ parser causes less problems (identifiers named like C++ keywords
get highlighted and tags aren't generated for them) than parsing C++
headers with the C parser (parsing and lexing completely broken).
2016-01-07 23:28:18 +01:00
Jiří Techet
5620c7df32 Concatenate ChangeLog.pre-0-17 and ChangeLog.pre-1-22
These files aren't updated (and probably read by anyone) any more and
it's better to have less "garbage" files in the root.
2016-01-06 21:52:46 +01:00
Colomban Wendling
4a2890667e vhdl: Fix a typo
This has no actual impact as the kind is not used anywhere anyway.

Part of #849.
2016-01-06 14:30:03 +01:00
Frank Lanitz
001fd5c52f Merge pull request #849 from BenWiederhake/master
Fix a huge amount of type inside overall Geany
2016-01-06 10:56:51 +01:00
Jiří Techet
7fcda040ab Fix various utf8/locale problems in build and message window
Non-ascii characters in file/directory names caused:

1. build commands didn't succeed
2. characters in the message window weren't shown in correct encoding
3. clicking on a row with error in the message window didn't open the file
with error.

This patch fixes these three issues.
2016-01-05 17:36:46 +01:00
Colomban Wendling
e083c8d1c9 reflow: Use plain ASCII space instead of GDK_space
`GDK_space` is not guaranteed to have the value of an ASCII space
(although it does in practice), and using a GDK constant does not make
sense inside a text manipulation function.
2016-01-04 22:30:32 +01:00
Colomban Wendling
ffde79e8ef reflow: Don't split right before a whitespace
Avoid splitting lines right before a whitespace when reflowing (e.g.
in case of several consecutive ones) not to move whitespaces at the
start of the next line, which, while they will be removed later on,
can lead to incorrect reflow width and even fully empty lines.
Prefer leave trailing spaces then, which is less of a problem.
2016-01-04 22:21:19 +01:00
Colomban Wendling
46ed77bf19 reflow: Fix infinite loop on some input with many consecutive spaces
Avoid triggering auto-indentation with consecutive whitespaces when
reflowing, as it can lead to infinite loop if auto-indent leads to
inserting full lines.

Fixes #848.
2016-01-04 21:58:42 +01:00
Ben Wiederhake
2df9f83bf2 Typos overlooked by codespell 2016-01-03 18:44:00 +01:00
Ben Wiederhake
29a6b9c003 Fix typos
All of these typos were found by codespell, so credits go the
the authors of this incredibly useful tool.

I manually confirmed and adapted all changes, which includes
reflowing over-long lines or filling up with spaces for alignment.

Some of these typos may need forwarding to their original authors.
codespell reported a lot words where I am unsure; I have not
included those corrections.
2016-01-03 18:33:25 +01:00
Ben Wiederhake
9941c2d044 Fix obvious typo 2016-01-03 18:01:10 +01:00
Thomas Martitz
ae0fac33f4 doxygen: undo export of some items from commit 302b40e
Some types were undocumented on purpose and shall not be exported just yet.
2015-12-21 20:07:56 +01:00
Devyn Collier Johnson
d1fcd9f226 Add *.asm51 and *.a51 extensions for 8051 assembly
The *.a51 extension is also used for Adobe Authorware files, but we are
unlikely to ever support those.

Closes #739
2015-12-19 17:31:06 -08:00
Colomban Wendling
8d643d6688 Fix missing progress bar during build runs
Restore progress bar pulsation while a build is running, as it was lost
by accident in 690cb922be902f023881d455ae0c0a87d1c62170.

Closes #765.
2015-12-19 17:08:01 -08:00
Matthew Brush
45f531cd4b Fix known memory leak in win32_show_folder_dialog() 2015-12-19 16:56:45 -08:00
Colomban Wendling
9365110c4c CUDA: Use C++ ctags parser
Closes #830.
2015-12-18 21:31:38 +01:00
Thomas Martitz
302b40e977 doxygen: various doxygen-related fixes in preparation for gtkdoc generation
Major changes are:

- Some types were accidentally documented, even though they couldn't be
accessed by any exported API functions. Those are removed (especially
from encodings.h).

- Some types were not documented where they should. Documentation is
added for them. Members are not necessarily documented separately if names
are self-explanatory.

- @a XXX refers to parameters of the function, it's inappropriate for
highlighting NULL (change to @c)

- As per consensus, build_info is removed from GeanyData (replaced by
pointer to avoid ABI break; added grep-able abi-todo tag so it doesn't get
forgotten)
2015-12-17 09:52:52 +01:00
Thomas Martitz
6098f55032 encodings: move private stuff into private header
encodings.h had a pretty large GEANY_PRIVATE part so it's worthwhile to
separate that into its own header (as per HACKING). What's left is used by the
plugin API.
2015-12-17 09:52:49 +01:00
Andrea Stacchiotti
402e669be1 Added some extra Markdown extensions 2015-12-16 03:09:31 +01:00
Enrico Tröger
34088fbbb8 Drop Waf build system support
See #768.
2015-12-13 14:36:12 +01:00
Jiří Techet
b361b83276 Colourise only the visible area when highlighting typenames
Colorizing the whole document is rather expensive and unnecessary as
Scintilla colorizes the visible part of the document when scrolling
happens. Instead, colorize only the visible area when highlighting
typenames.
2015-12-12 15:07:22 +01:00
Colomban Wendling
27628c0028 Merge pull request #773 from zhekov/pointer-from-integer
Fix warnings about casting pointer from/to different size integer
2015-11-30 19:25:24 +01:00
Colomban Wendling
48217703e1 Simplify encoding menu creation loop
Simplify and optimize creation of the sorted menus by taking advantage
of the fact they might already be partially sorted, and that we can at
least add one entry to each group in each run.

This goes from 4032 runs to 882, which while definitely not optimal for
adding 126 items, is probably totally good enough and don't warrant
duplicating the encoding array and sort it.

Though, such optimization doesn't matter as it's not what takes time in
this function, which is probably rather the widgets creation.
2015-11-27 23:07:07 +01:00
Colomban Wendling
8f9f9c5cf3 Simplify and cleanup encoding menu building
Rewrite a part of `encodings_init()` to remove duplication and some
hard-coded values.

This gives us the item for UHC back, that was lost when adding CP932 in
9d9f40cd15ad121ff3e3fffd40073706c297f2dd, due to a missing update of
the hard-coded group elements count.
2015-11-27 23:05:17 +01:00
Dimitar Zhekov
e49093b75f Fix warnings about casting pointer from/to different size integer
These appear under 64-bit Windows. Only the sciwrappers.c warning is
potentially dangerous. For win32.c, the "handle" provides some useful
information, while "lStdHandle" does not.
2015-11-24 21:04:05 +02:00
Colomban Wendling
1a84bb6e34 Fix the caret_width example in the documentation 2015-11-22 00:01:06 +01:00
Colomban Wendling
1cc171aa7c Drop use of unneeded deprecated GLib API 2015-11-21 19:03:12 +01:00
Colomban Wendling
aa57582a7c Fix build with GLib < 2.32
Closes #764.
2015-11-21 19:00:47 +01:00
Frank Lanitz
ef0cf9cb43 Update of Italian translation 2015-11-17 23:12:42 +01:00