156 Commits

Author SHA1 Message Date
Colomban Wendling
bdc0f720e7 Remove unused flags from document_search_bar_find()
Passed-in flags was always 0, so the argument is not useful.
Also, this function expected Scintilla search flags rather than Geany
ones, making the API confusing for no good reason.
2014-08-19 03:40:52 +02:00
Thomas Martitz
135b60d25e callbacks: Refactor on_reload_as_activate() as document_reload_prompt()
The callback wasn't used from glade but is useful for some other places so
it's worth moving into document.c. This also fixes a bug where reload via sidebar
always reloads the current document instead of the actually clicked one.
2014-06-24 15:01:42 +02:00
Matthew Brush
4efcbab332 Include what you use
This is a mega-commit - because most of it had to be done in one go
otherwise some commits would fail to compile - that attempts to fix a
few problems with Geany's includes as well as various other related
cleanups. After this change it's easier to use includes and there's
little worry about which order things are included in or who includes
what.

Overview of changes:

* Include config.h at the start of each source file if HAVE_CONFIG_H
  is defined (and never in headers).
* Go through each source file and make the includes section generally
  like this:
  - Always config.h first as above
  - Then if the file has a header with the same name, include that
  - Then include in alphabetical order each other internal/geany header.
  - Then include standard headers
  - Then include non-standard system headers
  - Then include GLib/GTK+ related stuff
* Doing as above makes it easier to find implicit header include
  dependencies and it exposed quite a few weird problems with includes
  or forward declarations, fix those.
* Make geany.h contain not much besides some defines.
  - Add a little header file "app.h" for GeanyApp and move it there
  - Move "app" global to new "app.h" file
  - Move "ignore_callback" global to "callbacks.h"
  - Move "geany_object" global to "geanyobject.h"
* Add an include in "geany.h" for "app.h" since GeanyApp used to be
  defined there and some plugins included this header to access
  GeanyApp.
* Include "gtkcompat.h" everywhere instead of gtk/gtk.h so that
  everywhere sees the same definitions (not a problem in practice AFAIK
  so this could be changed back if better that way.
* Remove forward declarations from previous commits as some people
  apparently consider this bad style, despite that it reduces inter-
  header dependencies.

TODO:
* As always, to test on win32
* As always, to test with not Autotools
* Test plugins better, both builtin and geany-plugins, likely API/ABI bump
* Test with various defines/flags that may change what is included
* win32.[ch] not really touched since I couldn't test
2014-05-21 15:37:19 -07:00
Matthew Brush
6f87aac118 Normalize use of header guards and extern "C" guards
* Always define GEANY_FOO_H to 1 in the header guards
* Always put a G_BEGIN_DECLS/G_END_DECLS guard in every header for
consistency, even private ones where it doesn't matter.
* Always include either <glib.h>, <gtk/gtk.h> or some other header
that will provide G_BEGIN_DECLS before using it. In a lot of headers
that use glib.h and gtk/gtk.h stuff anyway, this resolves an implicit
dependency they had on them being included before that header.
* Always put a comment at the #endif part of the guard so it's
easier to see what it applies to.
* Always use an underscore between the header guard identifier's words
even though the filename doesn't have one.
2014-05-21 12:18:26 -07:00
Matthew Brush
fec15c61c4 Move typedefs out of geany.h and into their own headers
This helps to avoid the requirement that geany.h be included before
using any of the changed headers.
2014-05-21 12:18:25 -07:00
Nick Treleaven
5ff38b4daa Fix document pointer documentation
Improve clarity and remove wrong documentation about using `is_valid` to
check if a document still exists.
2014-04-28 12:34:13 +01:00
Nick Treleaven
5758b9ca67 Add foreach_document(), documents[] examples 2014-04-27 16:14:09 +01:00
Colomban Wendling
c2dcec7107 Don't use G_LIKELY() in macros commonly used in g_return_if_fail()
g_return_if_fail() puts itself its condition in a G_LIKELY() clause,
and nested G_LIKELY() lead to warnings about shadowed variables, as
well as not being of any use.

Also, hiding G_LIKELY() in a macro may lead to unexpected use of it
which may hint the compiler incorrectly.
2014-01-22 17:38:29 +01:00
Colomban Wendling
5412a244ba Fix crash with bulk pattern replacements (introduced with c83a93e)
"regex_match_text" and "regex_matches" being globals, performing
several searches and then the replacements separately lead to them
having unexpected values, resulting in incorrect behavior and crash.

Fix this by removing the globals and instead make the search functions
return match details.  Not only this fixes the issue, but also make the
code a lot more maintainable by not having globals introducing side
effects (proof of them being an issue is that c83a93e inadvertently
broke things bad).
2013-04-13 17:06:47 +02:00
Colomban Wendling
36581d6638 Move document status color definition to the gtkrc file
This allows for users to change the colors if needed (may be useful
with some themes or color blind persons).

On the sidebar, only the color is applied for now.  This is because
it is not possible to style cell renderers through RC files, all having
to be done in the code;  so currently only the color is applied.
2013-02-11 04:46:40 +01:00
Nick Treleaven
6ca889c78b Add Document->Clone keybinding 2012-12-12 14:02:50 +00:00
Nick Treleaven
85006b6d0b Add 'Document->Clone' menu command
This copies the current document text and properties into a new
document, similar to the old Save As 'Open file in a new tab'
option, but easier to understand and decoupled from saving.

One notable difference is that the new document does not copy the
filename - the old behaviour was confusing and error-prone for the
user (e.g. editing two documents with the same filename).
2012-11-23 15:37:00 +00:00
Colomban Wendling
d80bc7ce56 Update FSF address
Closes #3557875.
2012-08-24 19:25:57 +02:00
Colomban Wendling
1c2c455b1d Update copyright information 2012-06-18 01:15:04 +02:00
Matthew Brush
51dc2e9baf Support plugins written in C++
Rename use of C++ `template` keyword in plugin API function argument
and add `G_BEGIN_DECLS` and `G_END_DECLS` to public header files to
make them easier to include in C++ code. TagManager and Scintilla
headers already have these `extern "C"` blocks so they shouldn't
require any modifications.

The Autotools build system already adds in a `dummy.cxx` to hint
Automake into C++ linking to support Scintilla, which is quite
convenient for dynamically loading of C++ plugins at run-time into
the otherwise C-only program. The other build systems seem to also
use the correct linking.
2012-03-30 23:35:10 -07:00
Matthew Brush
6c31ed4bc0 Re-highlight type keywords on notebook page switch 2012-01-03 10:21:09 -08:00
Colomban Wendling
23eede5291 Make switch to MRU upon tab close configurable
Add configuration option tab_close_switch_to_mru to allow the user
to choose whether to switch to the most recently used tab or to the
next one after closing the current tab.
2011-12-24 12:30:58 +01:00
Matthew Brush
9bffb94cc4 Real-time type keyword highlighting
* Add new function: document_update_tags().
* Refactor the various tag update functions into document_update_tags().
* Remove extra call to update the tags in document_new_file().
2011-11-11 16:08:26 -08:00
Lex Trotman
cdb748c2c4 Add filetype extraction by regex
Adds the ability to set filetype on open by extracting it from the
file using a regex on the first few lines (default 2).
2011-10-22 22:55:57 +11:00
Matthew Brush
b1b88286cf Simplify updating Scintilla keywords on reload config and tab switch.
Remove type keywords caching function since it doesn't really speed up
anything and we don't care if the keywords change since they can/should
still be reloaded.  This also prevents "leaking" a static GString once
when the application closes and saves a call to g_string_free() when the
type keywords have changed.

Rename document_update_highlighting() to document_update_type_keywords()
since no re-highlighting is needed when updating Scintilla keywords.
Scintilla highlights the new keywords automatically so this saves a call
to queue_colourise().

Remove update_type_keywords() function since this is now all handled
in the document_update_type_keywords() function.  This function had a
comment about updating all documents when sci is NULL but it was never
used in this way since it was only called on document_load_config() which
always operates on a single document and the sci should not be NULL.
2011-10-19 21:39:17 -07:00
Matthew Brush
1a14e4869f Update Scintilla keywords and highlighting when changing document tabs 2011-10-19 01:29:10 -07:00
Colomban Wendling
d06e9f4575 Remove $Id$ and $Date$ SVN keywords 2011-10-09 22:57:35 +02:00
Nick Treleaven
1563c625f7 Add document_show_tab().
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@6017 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-10-07 16:47:31 +00:00
Colomban Wendling
e3bf851784 Add menu items to detect indentation settings from document's content
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5904 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-08-25 20:15:02 +00:00
Colomban Wendling
d61dea84ed Add an hidden pref to choose between GIO and plain C unsafe file saving.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5860 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-06-20 16:11:18 +00:00
Colomban Wendling
3bd6a01525 Fix a few signed vs. unsigned and differently-sized integer problems
Most notably, utils_get_line_endings() and document_open_file_list()
don't support -1 as the size anymore.  If the size should be computed
from null-terminated data, the caller code must take care of doing so.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5855 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-06-17 22:52:17 +00:00
Colomban Wendling
6f9d845181 In messages show the actual text user entered in Find and Replace dialogs
Previously we could put into a message a string where escape sequences
were already translated.

In the code, now we pass the original text together with the one
that is actually searched for.  New `original_text' field was added to
GeanySearchData.  A bug was fixed in document.c:show_replace_summary(): it
did not escape the "No matches found for ..." string.

Patch by Eugene Arshinov, thanks.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5832 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-06-03 13:40:42 +00:00
Enrico Tröger
5141f14007 Add ui_focus_current_document() and document_grab_focus().
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5828 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-06-02 21:15:37 +00:00
Colomban Wendling
ec4a5ea4f9 Make sure to update the tag list only for the current document
Fix idle tag list updating not to update the tag list if the current
document isn't the one to update anymore. In this case, mark the
document as needing an update and re-schedule an idle update next time
the document gets the focus.

This fixes updating the tag list after switching documents, which
resulted in displaying the wrong tag list.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5738 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-26 13:52:31 +00:00
Enrico Tröger
9f8c5103a8 Add document_compare_by_tab_order() and document_compare_by_tab_order_reverse() to the plugin API.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5727 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-17 13:40:04 +00:00
Nick Treleaven
9733a9806f Use brackets for DOC_FILENAME() macro 'doc' argument.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5719 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-13 12:20:19 +00:00
Enrico Tröger
d478a5cc01 Add missing parts from previous commit, oops
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5715 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-12 17:24:13 +00:00
Enrico Tröger
211a963773 Rename document_sort_by_display_name() into document_compare_by_display_name(), thanks again Nick.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5714 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-12 17:20:59 +00:00
Colomban Wendling
a788a38240 Revert "Don't update parent WorkObjects when updating one in real-time"
This reverts commit 877cc1d97acd185cc7e0e88bb0b014fb74e16072.

This commit broke calltips, we need another fix for it.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5711 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-11 15:54:43 +00:00
Enrico Tröger
66c8b7faee Add ui_menu_add_document_items_sorted() and document_sort_by_display_name() to the plugin API.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5705 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-10 17:03:41 +00:00
Colomban Wendling
8640d845d0 Don't update parent WorkObjects when updating one in real-time
Updating the parent may lead to performance issues if an object have
too many parents since they are updated recursively.

Parent objects are still updated when saving the file.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5642 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-28 20:36:06 +00:00
Colomban Wendling
7698bf60a7 Improve usage of G_(UN)?LIKELY()
G_(UN)?LIKELY() should be only used on whole conditional expressions,
and only if the branching is very highly predictable, not if it is only
more probable.

These macros should be used with care because a wrong prediction may
be a lot worst than what a good prediction can give.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5625 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-24 22:00:18 +00:00
Colomban Wendling
4ac3ccbd37 Make Shift-Enter in search dialog and toolbar search entries search backwards
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5621 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-24 16:51:02 +00:00
Enrico Tröger
6ac2623208 Update copyright information.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5528 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-01-19 19:39:09 +00:00
Nick Treleaven
3a3d8815a3 Add gio_unsafe_save_backup hidden pref (patch by Lex Trotman,
thanks).



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5430 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-11-23 16:23:22 +00:00
Nick Treleaven
c25d9856fe Add 'Ensure consistent line endings' file saving pref (patch by
Manuel Bua, thanks).



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5321 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-10-25 16:24:55 +00:00
Enrico Tröger
fdd451f0d4 Add preference to add new document tabs beside the current one (patch by Colomban Wendling, thanks).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4928 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-05-16 17:45:39 +00:00
Nick Treleaven
f38b468348 Add function document_apply_indent_settings() for use later.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4872 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-05-05 12:07:45 +00:00
Nick Treleaven
138cbaa02f Use 3rd person (gets not get) for API function brief descriptions.
Avoid using 'convenience function' in API brief descriptions.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4757 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-03-12 18:15:48 +00:00
Enrico Tröger
995a467901 Fix document_try_focus() to make it work with the sidebar document list as well.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4712 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-02-28 14:32:38 +00:00
Nick Treleaven
cfa2b8b532 Show 'Replaced X matches in Y documents' message when using Replace in
Session.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4533 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-01-18 17:05:13 +00:00
Enrico Tröger
7ba4a81181 Update copyright information.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4518 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-01-01 22:55:18 +00:00
Enrico Tröger
d91e7b762b Add document_need_save_as().
Show the Save As also for documents created from filetype templates instead of saving them directly with the untitled filename.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4494 ea778897-0a13-0410-b9d1-a72fbfd435f5
2009-12-20 15:36:52 +00:00
Nick Treleaven
cf540a712f Deprecate documents_foreach() as it looks more like a function; use
foreach_document() instead.
Generate dox even for GEANY_DISABLE_DEPRECATED declarations.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4399 ea778897-0a13-0410-b9d1-a72fbfd435f5
2009-11-04 15:28:38 +00:00
Nick Treleaven
a4eec38feb Enable type-ahead find for sidebar symbols and documents tabs
(patch by Thomas Martitz, thanks).



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4148 ea778897-0a13-0410-b9d1-a72fbfd435f5
2009-09-03 12:04:27 +00:00