248 Commits

Author SHA1 Message Date
Colomban Wendling
eeddd6f720 Move custom styles to a resource file 2012-10-08 17:51:19 +02:00
Colomban Wendling
4d16735380 Don't access GtkDialog fields directly 2012-09-13 16:34:18 +02:00
Colomban Wendling
66b93d2d8d Fix "mark all" search feature when using regular expressions
Use the proper, full-featured, regular expression engine we use
everywhere else rather than Scintilla's stripped-down one.

Closes #3564132.
2012-09-02 14:47:07 +02:00
Colomban Wendling
69d8295c5e Don't try to unref NULL regex 2012-09-02 14:17:34 +02:00
Colomban Wendling
d80bc7ce56 Update FSF address
Closes #3557875.
2012-08-24 19:25:57 +02:00
Colomban Wendling
5110fab0e1 Fix search and replacement of empty matches (again)
f4eb89cd7d79738a9c6c45e29abdd9d15d22e4fd was partially wrong and
removed legitimate re-matches when two different matches ends at the
same position.  Particularly, the replacement changes are reverted.

Interestingly, Perl and Python does not agree on how to do such
replacements.  Python does what I did in the above-cited commit, e.g.
doesn't replace twice if the match end overlaps, but Perl does.
Perl looks more legitimate here since both Python and Perl does find
the overlapping matches when performing a search, so Python is the odd
guy here doing it differently on replace than it does upon search.

For example, replacing using the pattern "a?(?=b)" and the replacement
string "_":

	Python: ababcdb -> _b_bcd_b
	Perl:   ababcdb -> __b__bcd_b

But finding using the same pattern on the same input gives the same
results on both:

	Python: ababcdb -> ['a', '', 'a', '', '']
	Perl:   ababcdb -> ['a', '', 'a', '', '']

Anyway, GLib and us claim to support "Perl-compatible regular
expressions", so we gotta follow Perl, especially in such doubtful
situations.
2012-07-28 19:23:37 +02:00
Colomban Wendling
f4eb89cd7d Fix search and replacement of empty matches
Regular expressions might match empty ranges, which weren't handled
properly, but generally simply omitted.

For example, the regular expression "^$" (empty line) never matched
because we assumed empty results were not interesting, and actually
needed more care in the code.  Alike, an expression matching only on
its lookahead part, like "a?(?=b)" against "b", would stop further
search, although it could even match a non-empty range if "ab" is
present later in the input.  This last kind of expressions also lead
to double-replacement because they first matched "ab" and then "b"
alone when re-matching after the "a" replacement.

This commit fixes:
 * searching when the matched range is empty;
 * step-by-step search when matching an empty range;
 * double replacement when the pattern re-matches an empty range
   straight after a replacement;
 * replacement to and empty string when the matching an empty range.

A know issue though is the step-by-step replacement that won't replace
an empty match but rather find the next match.
2012-07-28 00:32:26 +02:00
Colomban Wendling
a091238617 Fix searching out of document range
If a search matched the very last character of the document, next
search attempt started out of the document bounds.  This even lead
to an infinite loop due to an improper sanity check.

By the way, this fixes matching of contiguous results, as the next
search used to improperly skip one character after the result.
Although this looks like a huge issue, it was actually visible almost
only on the match count since the whole matching line was printed.
2012-07-28 00:32:26 +02:00
Nick Treleaven
f90bdc5957 Only set Find in Files directory once per-document
Use the current document's directory unless the directory field has
already been edited and the current document has not changed.
Otherwise, prepend the current document's directory to the drop-down
history in case it is wanted.

This is useful to avoid losing the edited directory when it is less
likely the user wants to use the current document's directory.
2012-07-26 16:13:34 +01:00
Colomban Wendling
1c2c455b1d Update copyright information 2012-06-18 01:15:04 +02:00
Colomban Wendling
78432b5806 Find in files: split extra options like a shell would do
Don't simply split the the extra options string on spaces to build the
grep argument list but rather split it in a shell-style fashion.

This is probably more intuitive for most users, is more consistent with
e.g. custom commands, and allows for spaces in an option or its
argument.

Closes #3516263.
2012-04-10 04:21:59 +02:00
Nick Treleaven
b287553e4a Use 'SETPTR' instead of 'setptr'
This makes it clearer we're using a macro.
2012-01-25 16:26:16 +00:00
Jiří Techet
d4b2b89d00 Maybe != may be 2012-01-11 22:57:31 +01:00
Nick Treleaven
f0ca50cf20 Fix showing Find/Replace regex errors on status bar 2012-01-03 16:21:12 +00:00
Nick Treleaven
387d071b60 Fix escaping replacement text for regex matching (oops) 2011-12-26 13:01:54 +00:00
Matthew Brush
fb8e061242 Prevent warning about comparing signed and unsigned values
The g_match_info_fetch_pos() function uses a signed value for the match_num
parameter, even though values less than 0 are not valid, so a cast is used.
2011-12-25 14:44:32 -08:00
Nick Treleaven
773d7e42d2 Let GRegex handle escape sequences itself 2011-12-25 17:22:06 +00:00
Nick Treleaven
21f0715381 Fix \b regex word boundary always matching at start of search 2011-12-25 13:42:19 +00:00
Nick Treleaven
c2481ccb95 Use GRegex matching for Find & Replace commands 2011-12-25 13:23:06 +00:00
Dimitar Zhekov
4ffbd8f9ad split "always wrap search and hide find dialog" pref into "always wrap search" and "hide find dialog" 2011-12-05 21:54:38 +01:00
Colomban Wendling
36ebb1f2b7 Use canonical macros for stock items rather than plain strings
This makes the code more readable, potentially more future-proof (if
the actual string changes) and better style (catches possible typos at
build-time).
2011-10-30 22:01:49 +01:00
Matthew Brush
82146e953f Remove max length limit of 248 characters on search dialogs 2011-10-23 00:41:50 -07:00
Matthew Brush
182bdc3b17 Replace GTK_BIN(...)->child with gtk_bin_get_child(...) 2011-10-11 21:30:28 -07:00
Colomban Wendling
d06e9f4575 Remove $Id$ and $Date$ SVN keywords 2011-10-09 22:57:35 +02:00
Colomban Wendling
5d606ce351 Deprecate ui_widget_set_tooltip_text() in favor of gtk_widget_set_tooltip_text()
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5840 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-06-13 18:41:50 +00:00
Colomban Wendling
d455e83d6e Also use the actual user search in the combo box history
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5833 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-06-03 13:41:00 +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
Colomban Wendling
6e6b4a61fc Make search.c:on_replace_dialog_response() a little more readable
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5797 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-05-17 13:47:36 +00:00
Colomban Wendling
a0d6a1f618 Fix pattern filtering when not searching in subdirectories
grep's --include option doesn't filter files passed explicitly to grep,
so when we build the file list to search in, take the filters into
account.
Also drop the --include options in this case since they aren't useful.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5755 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-05-01 14:38:57 +00:00
Colomban Wendling
e48def3c68 Use project patterns in the FIF dialog
User can now select what kind of file patterns should be used:
 * all: all files are searched
 * project: project patterns are used (only if a project is open)
 * custom: manually entered custom patterns are used

Based on a patch by Jiří Techet, thanks.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5753 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-30 21:50:37 +00:00
Nick Treleaven
9cd027ac50 Remove old comment, reorder stash prefs (patch by Dimitar Zhekov, thanks).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5701 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-08 16:49:38 +00:00
Nick Treleaven
20bab74fd5 Don't auto-enable case-sensitive option when enabling regex in
Find/Replace dialogs.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5695 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-05 16:16:47 +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
Colomban Wendling
4cfedde35a Fix a few warnings and style
* Don't use strlen(..) > 0 or == 0, simply check the first character
  against 0;
* Fix a return without a value (my bad in last commit);
* Fix storing a literal in a non-const string.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5610 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-20 16:02:52 +00:00
Enrico Tröger
4f6354d434 Respect saved state of 'Case sensitive' option when using the 'Regular expressions' option as well.
Cleanup.


git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5575 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-06 14:36:42 +00:00
Enrico Tröger
56cd8dff87 Remember Find and Replace options across restarts (patch by Dimitar Zhekov, thanks).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5573 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-06 14:18:05 +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
Enrico Tröger
de16fda4f6 Fix off-by-one bug in 'search_mark_all'.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5299 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-10-16 12:37:20 +00:00
Nick Treleaven
df6d46d345 Add hidden pref 'find_selection_type' with option to repeat last
search when there's no selection.
Change default Find Selection behaviour to not let the X selection
override the current word (can be confusing).
Add docs for Find Selection commands.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5253 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-23 12:22:44 +00:00
Nick Treleaven
1f063b535b Make Find Selected commands repeat the last search if the selection
was lost.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5247 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-21 16:25:10 +00:00
Nick Treleaven
ab673d22fd Move find_again() to search.c.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5246 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-21 16:16:15 +00:00
Nick Treleaven
98e6efb3b4 Add msgwin_set_messages_dir() to API (patch by Jiří Techet, thanks).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5237 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-16 15:31:23 +00:00
Nick Treleaven
d840f86a9d Fix some 'possible' NULL pointer dereferences (based on patch by
Erik de Castro Lopo).



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5224 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-13 15:03:18 +00:00
Nick Treleaven
f2770f94c9 Fix 2 minor leaks.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5217 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-09 16:56:42 +00:00
Nick Treleaven
bb2e1cc96e Include all files if the Find in Files pattern field is enabled and
empty.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5195 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-08-24 12:17:33 +00:00
Nick Treleaven
466baa1216 Avoid duplicating string (just for neatness).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5154 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-08-12 17:14:47 +00:00
Frank Lanitz
2364a0d0a3 Fix a memory leak based on input by Daniel Marjamäki. Thanks.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5145 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-08-12 05:49:07 +00:00
Nick Treleaven
67537a9918 Revert (most of) last 2 commits as Grep's --exclude-dir=.?* doesn't seem to be working as expected.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5092 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-07-06 14:20:12 +00:00
Nick Treleaven
ab124475a6 Make Find in Files extra options default to --exclude-dir=.?* to
filter out hidden directories. (Still disabled by default so
non-GNU/older Grep works).



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5091 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-07-06 14:01:26 +00:00