# HG changeset patch # User John Donoghue # Date 1578149486 18000 # Node ID 84d6abff10060fa318f4e52348dfd772b44168fb # Parent 703156b6d6028bd2cd08cc0264a38caf72da3fcc 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. diff -r 703156b6d602 -r 84d6abff1006 libgui/src/m-editor/octave-qscintilla.cc --- 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; }