Mercurial > octave
changeset 27912:84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
* octave-qscintilla.cc (octave_qscintilla::smart_indent_line_or_selected_text):
Use QRegExp to check for presence of begin, and absencse of end keyword, in
same line before indenting.
author | John Donoghue <john.donoghue@ieee.org> |
---|---|
date | Sat, 04 Jan 2020 09:51:26 -0500 |
parents | 703156b6d602 |
children | 8df92c17bb5c |
files | libgui/src/m-editor/octave-qscintilla.cc |
diffstat | 1 files changed, 12 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/m-editor/octave-qscintilla.cc Sun Jan 05 16:16:53 2020 -0800 +++ b/libgui/src/m-editor/octave-qscintilla.cc Sat Jan 04 09:51:26 2020 -0500 @@ -615,6 +615,11 @@ { QRegExp blank_line_regexp = QRegExp ("^[\t ]*$"); + // end[xxxxx] [# comment] at end of a line + QRegExp end_word_regexp + = QRegExp ("(?:(?:['\"][^'\"]*['\"])?[^%#]*)*" + "(end\\w*)[\r\n\t ;]*([%#].*)?$"); + QRegExp begin_block_regexp = QRegExp ("^([\t ]*)(if|elseif|else" "|for|while|do|parfor" @@ -702,9 +707,14 @@ setIndentation (line, indent_column); - if (begin_block_regexp.indexIn (line_text) > -1) + + int bpos = begin_block_regexp.indexIn (line_text); + if (bpos > -1) { - indent_column += indent_increment; + // Check for existing end statement in the same line + int epos = end_word_regexp.indexIn (line_text, bpos); + if (epos == -1) + indent_column += indent_increment; if (line_text.contains ("switch")) in_switch = true; }