[geany/geany] d289e3: Fix comment toggling in PHP and HTML with bottom-up selection
Colomban Wendling
git-noreply at xxxxx
Fri Mar 1 14:26:39 UTC 2013
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Fri, 01 Mar 2013 14:26:39 UTC
Commit: d289e3da20a046283e7ead405bc93e00405b9251
https://github.com/geany/geany/commit/d289e3da20a046283e7ead405bc93e00405b9251
Log Message:
-----------
Fix comment toggling in PHP and HTML with bottom-up selection
If current position is not at selection start (e.g. bottom-up
selection), editor_get_filetype_at_current_pos() will start returning
improper result as soon as the first buffer change since the style at
the actual current position will have been invalidated and not yet
recomputed.
Modified Paths:
--------------
src/editor.c
Modified: src/editor.c
21 files changed, 10 insertions(+), 11 deletions(-)
===================================================================
@@ -108,7 +108,7 @@ static void read_current_word(GeanyEditor *editor, gint pos, gchar *word, gsize
static const gchar *snippets_find_completion_by_name(const gchar *type, const gchar *name);
static void snippets_make_replacements(GeanyEditor *editor, GString *pattern);
static gssize replace_cursor_markers(GeanyEditor *editor, GString *pattern);
-static GeanyFiletype *editor_get_filetype_at_current_pos(GeanyEditor *editor);
+static GeanyFiletype *editor_get_filetype_at_line(GeanyEditor *editor, gint line);
static gboolean sci_is_blank_line(ScintillaObject *sci, gint line);
@@ -2741,7 +2741,7 @@ static gsize count_indent_size(GeanyEditor *editor, const gchar *base_indent)
/* Handles special cases where HTML is embedded in another language or
* another language is embedded in HTML */
-static GeanyFiletype *editor_get_filetype_at_current_pos(GeanyEditor *editor)
+static GeanyFiletype *editor_get_filetype_at_line(GeanyEditor *editor, gint line)
{
gint style, line_start;
GeanyFiletype *current_ft;
@@ -2750,7 +2750,7 @@ static GeanyFiletype *editor_get_filetype_at_current_pos(GeanyEditor *editor)
g_return_val_if_fail(editor->document->file_type != NULL, NULL);
current_ft = editor->document->file_type;
- line_start = sci_get_position_from_line(editor->sci, sci_get_current_line(editor->sci));
+ line_start = sci_get_position_from_line(editor->sci, line);
style = sci_get_style_at(editor->sci, line_start);
/* Handle PHP filetype with embedded HTML */
@@ -2803,7 +2803,7 @@ static void real_comment_multiline(GeanyEditor *editor, gint line_start, gint la
g_return_if_fail(editor != NULL && editor->document->file_type != NULL);
- ft = editor_get_filetype_at_current_pos(editor);
+ ft = editor_get_filetype_at_line(editor, line_start);
eol = editor_get_eol_char(editor);
if (! filetype_get_comment_open_close(ft, FALSE, &co, &cc))
@@ -2859,7 +2859,7 @@ static gboolean real_uncomment_multiline(GeanyEditor *editor)
g_return_val_if_fail(editor != NULL && editor->document->file_type != NULL, FALSE);
- ft = editor_get_filetype_at_current_pos(editor);
+ ft = editor_get_filetype_at_line(editor, sci_get_current_line(editor->sci));
if (! filetype_get_comment_open_close(ft, FALSE, &co, &cc))
g_return_val_if_reached(FALSE);
@@ -2951,7 +2951,7 @@ gint editor_do_uncomment(GeanyEditor *editor, gint line, gboolean toggle)
sel_start = sel_end = sci_get_position_from_line(editor->sci, line);
}
- ft = editor_get_filetype_at_current_pos(editor);
+ ft = editor_get_filetype_at_line(editor, first_line);
eol_char_len = editor_get_eol_char_len(editor);
if (! filetype_get_comment_open_close(ft, TRUE, &co, &cc))
@@ -3068,16 +3068,15 @@ void editor_do_comment_toggle(GeanyEditor *editor)
eol_char_len = editor_get_eol_char_len(editor);
- first_line = sci_get_line_from_position(editor->sci,
- sci_get_selection_start(editor->sci));
+ first_line = sci_get_line_from_position(editor->sci, sel_start);
/* Find the last line with chars selected (not EOL char) */
last_line = sci_get_line_from_position(editor->sci,
- sci_get_selection_end(editor->sci) - editor_get_eol_char_len(editor));
+ sel_end - editor_get_eol_char_len(editor));
last_line = MAX(first_line, last_line);
first_line_start = sci_get_position_from_line(editor->sci, first_line);
- ft = editor_get_filetype_at_current_pos(editor);
+ ft = editor_get_filetype_at_line(editor, first_line);
if (! filetype_get_comment_open_close(ft, TRUE, &co, &cc))
return;
@@ -3228,7 +3227,7 @@ void editor_do_comment(GeanyEditor *editor, gint line, gboolean allow_empty_line
eol_char_len = editor_get_eol_char_len(editor);
- ft = editor_get_filetype_at_current_pos(editor);
+ ft = editor_get_filetype_at_line(editor, first_line);
if (! filetype_get_comment_open_close(ft, single_comment, &co, &cc))
return;
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list