Mercurial > octave
annotate libgui/src/m-editor/octave-qscintilla.cc @ 30564:796f54d4ddbf stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
In all .txi and .texi files except gpl.txi and gpl.texi in the
doc/liboctave and doc/interpreter directories, change the copyright
to "Octave Project Developers", the same as used for other source
files. Update copyright notices for 2022 (not done since 2019). For
gpl.txi and gpl.texi, change the copyright notice to be "Free Software
Foundation, Inc." and leave the date at 2007 only because this file
only contains the text of the GPL, not anything created by the Octave
Project Developers.
Add Paul Thomas to contributors.in.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 28 Dec 2021 18:22:40 -0500 |
parents | fffccc353ffc |
children | 754ad6e9c0a5 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
30439
diff
changeset
|
3 // Copyright (C) 2013-2022 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
25 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21578
diff
changeset
|
26 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21203
diff
changeset
|
27 # include "config.h" |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
28 #endif |
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
29 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21578
diff
changeset
|
30 #if defined (HAVE_QSCINTILLA) |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
31 |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
32 #include <Qsci/qscilexer.h> |
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
33 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
34 #include <QDir> |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
35 #include <QKeySequence> |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
36 #include <QMessageBox> |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
37 #include <QMimeData> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
38 #include <QShortcut> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
39 #include <QToolTip> |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
40 #include <QVBoxLayout> |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
41 #if defined (HAVE_QSCI_QSCILEXEROCTAVE_H) |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
42 # define HAVE_LEXER_OCTAVE 1 |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
43 # include <Qsci/qscilexeroctave.h> |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
44 #elif defined (HAVE_QSCI_QSCILEXERMATLAB_H) |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
45 # define HAVE_LEXER_MATLAB 1 |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
46 # include <Qsci/qscilexermatlab.h> |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
47 #endif |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
48 #include <Qsci/qscicommandset.h> |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
49 #include <Qsci/qscilexerbash.h> |
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
50 #include <Qsci/qscilexerbatch.h> |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
51 #include <Qsci/qscilexercpp.h> |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
52 #include <Qsci/qscilexerdiff.h> |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
53 #include <Qsci/qscilexerperl.h> |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
54 |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
55 #include "file-editor-tab.h" |
27560
3fcc650de22f
split gui-preferences.h into one file per widget
John W. Eaton <jwe@octave.org>
parents:
27556
diff
changeset
|
56 #include "gui-preferences-ed.h" |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
57 // FIXME: hardwired marker numbers? |
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
58 #include "marker.h" |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
59 #include "octave-qobject.h" |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
60 #include "octave-qscintilla.h" |
25443
2fa7cd178c4a
new class for miscellaneous interpreter settings
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
61 #include "shortcut-manager.h" |
29613
9367cba2a6d5
allow most dock widgets to be used from command line
John W. Eaton <jwe@octave.org>
parents:
29572
diff
changeset
|
62 #include "workspace-model.h" |
16735
cee305c91e91
show help menu in editors context menu only for octave files
Torsten <ttl@justmail.de>
parents:
16733
diff
changeset
|
63 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
64 #include "builtin-defun-decls.h" |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
65 #include "cmd-edit.h" |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
66 #include "interpreter-private.h" |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
67 #include "interpreter.h" |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
68 |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
69 // Return true if CANDIDATE is a "closing" that matches OPENING, |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
70 // such as "end" or "endif" for "if", or "catch" for "try". |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
71 // Used for testing the last word of an "if" etc. line, |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
72 // or the first word of the following line. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
73 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
74 namespace octave |
18560
26d15a57f45b
add menu entries and shortcuts for zoom functions in the editor (bug #41516)
Torsten <ttl@justmail.de>
parents:
18460
diff
changeset
|
75 { |
27101
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
76 static bool |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
77 is_end (const QString& candidate, const QString& opening) |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
78 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
79 bool retval = false; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
80 |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
81 if (opening == "do") // The only one that can't be ended by "end" |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
82 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
83 if (candidate == "until") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
84 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
85 } |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
86 else |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
87 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
88 if (candidate == "end") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
89 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
90 else |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
91 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
92 if (opening == "try") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
93 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
94 if (candidate == "catch" || candidate == "end_try_catch") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
95 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
96 } |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
97 else if (opening == "unwind_protect") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
98 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
99 if (candidate == "unwind_protect_cleanup" |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
100 || candidate == "end_unwind_protect") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
101 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
102 } |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
103 else if (candidate == "end" + opening) |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
104 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
105 else if (opening == "if" && candidate == "else") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
106 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
107 } |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
108 } |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
109 |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
110 return retval; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
111 } |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
112 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
113 octave_qscintilla::octave_qscintilla (QWidget *p, base_qobject& oct_qobj) |
28798
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
114 : QsciScintilla (p), m_octave_qobj (oct_qobj), m_debug_mode (false), |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
115 m_word_at_cursor (), m_selection (), m_selection_replacement (), |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
116 m_selection_line (-1), m_selection_col (-1), m_indicator_id (1), |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
117 m_tooltip_font (QToolTip::font ()) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
118 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
119 connect (this, SIGNAL (textChanged (void)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
120 this, SLOT (text_changed (void))); |
18689
fac35875f6eb
update enabled status of undo/redo actions in the editor
Torsten <ttl@justmail.de>
parents:
18687
diff
changeset
|
121 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
122 connect (this, SIGNAL (cursorPositionChanged (int, int)), |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
123 this, SLOT (cursor_position_changed (int, int))); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
124 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
125 connect (this, &octave_qscintilla::ctx_menu_run_finished_signal, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
126 this, &octave_qscintilla::ctx_menu_run_finished, |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
127 Qt::QueuedConnection); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
128 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
129 // clear scintilla edit shortcuts that are handled by the editor |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
130 QsciCommandSet *cmd_set = standardCommands (); |
18675
c199304dfb2a
handling qscintilla internal shortcuts and commands depending on qsci version
Torsten <ttl@justmail.de>
parents:
18656
diff
changeset
|
131 |
25523
5daeb4049088
gui: fix editor rendering on some displays, disable QScintilla buffered drawing
Mike Miller <mtmiller@octave.org>
parents:
25103
diff
changeset
|
132 // Disable buffered drawing on all systems |
5daeb4049088
gui: fix editor rendering on some displays, disable QScintilla buffered drawing
Mike Miller <mtmiller@octave.org>
parents:
25103
diff
changeset
|
133 SendScintilla (SCI_SETBUFFEREDDRAW, false); |
5daeb4049088
gui: fix editor rendering on some displays, disable QScintilla buffered drawing
Mike Miller <mtmiller@octave.org>
parents:
25103
diff
changeset
|
134 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21578
diff
changeset
|
135 #if defined (HAVE_QSCI_VERSION_2_6_0) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
136 // find () was added in QScintilla 2.6 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
137 cmd_set->find (QsciCommand::SelectionCopy)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
138 cmd_set->find (QsciCommand::SelectionCut)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
139 cmd_set->find (QsciCommand::Paste)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
140 cmd_set->find (QsciCommand::SelectAll)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
141 cmd_set->find (QsciCommand::SelectionDuplicate)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
142 cmd_set->find (QsciCommand::LineTranspose)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
143 cmd_set->find (QsciCommand::Undo)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
144 cmd_set->find (QsciCommand::Redo)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
145 cmd_set->find (QsciCommand::SelectionUpperCase)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
146 cmd_set->find (QsciCommand::SelectionLowerCase)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
147 cmd_set->find (QsciCommand::ZoomIn)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
148 cmd_set->find (QsciCommand::ZoomOut)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
149 cmd_set->find (QsciCommand::DeleteWordLeft)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
150 cmd_set->find (QsciCommand::DeleteWordRight)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
151 cmd_set->find (QsciCommand::DeleteLineLeft)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
152 cmd_set->find (QsciCommand::DeleteLineRight)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
153 cmd_set->find (QsciCommand::LineDelete)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
154 cmd_set->find (QsciCommand::LineCut)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
155 cmd_set->find (QsciCommand::LineCopy)->setKey (0); |
18675
c199304dfb2a
handling qscintilla internal shortcuts and commands depending on qsci version
Torsten <ttl@justmail.de>
parents:
18656
diff
changeset
|
156 #else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
157 // find commands via its default key (tricky way without find ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
158 QList< QsciCommand * > cmd_list = cmd_set->commands (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
159 for (int i = 0; i < cmd_list.length (); i++) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
160 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
161 int cmd_key = cmd_list.at (i)->key (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
162 switch (cmd_key) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
163 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
164 case Qt::Key_C | Qt::CTRL : // SelectionCopy |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
165 case Qt::Key_X | Qt::CTRL : // SelectionCut |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
166 case Qt::Key_V | Qt::CTRL : // Paste |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
167 case Qt::Key_A | Qt::CTRL : // SelectAll |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
168 case Qt::Key_D | Qt::CTRL : // SelectionDuplicate |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
169 case Qt::Key_T | Qt::CTRL : // LineTranspose |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
170 case Qt::Key_Z | Qt::CTRL : // Undo |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
171 case Qt::Key_Y | Qt::CTRL : // Redo |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
172 case Qt::Key_Z | Qt::CTRL | Qt::SHIFT : // Redo |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
173 case Qt::Key_U | Qt::CTRL : // SelectionLowerCase |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
174 case Qt::Key_U | Qt::CTRL | Qt::SHIFT : // SelectionUpperCase |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
175 case Qt::Key_Plus | Qt::CTRL : // ZoomIn |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
176 case Qt::Key_Minus | Qt::CTRL : // ZoomOut |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
177 case Qt::Key_Backspace | Qt::CTRL | Qt::SHIFT : // DeleteLineLeft |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
178 case Qt::Key_Delete | Qt::CTRL | Qt::SHIFT : // DeleteLineRight |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
179 case Qt::Key_K | Qt::META : // DeleteLineRight |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
180 case Qt::Key_Backspace | Qt::CTRL : // DeleteWordLeft |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
181 case Qt::Key_Delete | Qt::CTRL : // DeleteWordRight |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
182 case Qt::Key_L | Qt::CTRL | Qt::SHIFT : // LineDelete |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
183 case Qt::Key_L | Qt::CTRL : // LineCut |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
184 case Qt::Key_T | Qt::CTRL | Qt::SHIFT : // LineCopy |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
185 cmd_list.at (i)->setKey (0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
186 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
187 } |
18675
c199304dfb2a
handling qscintilla internal shortcuts and commands depending on qsci version
Torsten <ttl@justmail.de>
parents:
18656
diff
changeset
|
188 #endif |
18954
c6b89c4a9e63
Swap Ctrl and Meta in Qscintilla shortcut list for mac (bug #41217)
pantxo <pantxo.diribarne@gmail.com>
parents:
18767
diff
changeset
|
189 |
c6b89c4a9e63
Swap Ctrl and Meta in Qscintilla shortcut list for mac (bug #41217)
pantxo <pantxo.diribarne@gmail.com>
parents:
18767
diff
changeset
|
190 #if defined (Q_OS_MAC) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
191 // Octave interprets Cmd key as Meta whereas Qscintilla interprets it |
27929
265b386f8b20
maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
192 // as Ctrl. We thus invert Meta/Ctrl in Qscintilla's shortcuts list. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
193 QList< QsciCommand * > cmd_list_mac = cmd_set->commands (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
194 for (int i = 0; i < cmd_list_mac.length (); i++) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
195 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
196 // Primary key |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
197 int key = cmd_list_mac.at (i)->key (); |
18954
c6b89c4a9e63
Swap Ctrl and Meta in Qscintilla shortcut list for mac (bug #41217)
pantxo <pantxo.diribarne@gmail.com>
parents:
18767
diff
changeset
|
198 |
25951 | 199 if (static_cast<int> (key | Qt::META) == key |
200 && static_cast<int> (key | Qt::CTRL) != key) | |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
201 key = (key ^ Qt::META) | Qt::CTRL; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
202 else if (static_cast<int> (key | Qt::CTRL) == key) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
203 key = (key ^ Qt::CTRL) | Qt::META; |
18954
c6b89c4a9e63
Swap Ctrl and Meta in Qscintilla shortcut list for mac (bug #41217)
pantxo <pantxo.diribarne@gmail.com>
parents:
18767
diff
changeset
|
204 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
205 cmd_list_mac.at (i)->setKey (key); |
18954
c6b89c4a9e63
Swap Ctrl and Meta in Qscintilla shortcut list for mac (bug #41217)
pantxo <pantxo.diribarne@gmail.com>
parents:
18767
diff
changeset
|
206 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
207 // Alternate key |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
208 key = cmd_list_mac.at (i)->alternateKey (); |
18954
c6b89c4a9e63
Swap Ctrl and Meta in Qscintilla shortcut list for mac (bug #41217)
pantxo <pantxo.diribarne@gmail.com>
parents:
18767
diff
changeset
|
209 |
25951 | 210 if (static_cast<int> (key | Qt::META) == key |
211 && static_cast<int> (key | Qt::CTRL) != key) | |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
212 key = (key ^ Qt::META) | Qt::CTRL; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
213 else if (static_cast<int> (key | Qt::CTRL) == key) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
214 key = (key ^ Qt::CTRL) | Qt::META; |
18954
c6b89c4a9e63
Swap Ctrl and Meta in Qscintilla shortcut list for mac (bug #41217)
pantxo <pantxo.diribarne@gmail.com>
parents:
18767
diff
changeset
|
215 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
216 cmd_list_mac.at (i)->setAlternateKey (key); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
217 } |
18954
c6b89c4a9e63
Swap Ctrl and Meta in Qscintilla shortcut list for mac (bug #41217)
pantxo <pantxo.diribarne@gmail.com>
parents:
18767
diff
changeset
|
218 #endif |
20986
00835323fb44
prevent shortcut ambiguity between main and editor window
Torsten <ttl@justmail.de>
parents:
20955
diff
changeset
|
219 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
220 // selection markers |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
221 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
222 m_indicator_id = indicatorDefine (QsciScintilla::StraightBoxIndicator); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
223 if (m_indicator_id == -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
224 m_indicator_id = 1; |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
225 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
226 setIndicatorDrawUnder (true, m_indicator_id); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
227 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
228 markerDefine (QsciScintilla::Minus, marker::selection); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
229 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
230 // init state of undo/redo action for this tab |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
231 emit status_update (isUndoAvailable (), isRedoAvailable ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
232 } |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
233 |
29716
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
234 void octave_qscintilla::setCursorPosition (int line, int col) |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
235 { |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
236 QsciScintilla::setCursorPosition (line, col); |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
237 emit update_rowcol_indicator_signal (line, col); |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
238 } |
da9c55b3e9fa
fix wring row/col indicator in GUI editor when auto intending (bug #60690)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29707
diff
changeset
|
239 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
240 void octave_qscintilla::set_selection_marker_color (const QColor& c) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
241 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
242 QColor ic = c; |
29498
5384bb4efc51
rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29359
diff
changeset
|
243 ic.setAlphaF (0.45); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
244 setIndicatorForegroundColor (ic, m_indicator_id); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
245 setIndicatorOutlineColor (ic, m_indicator_id); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
246 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
247 setMarkerForegroundColor (c, marker::selection); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
248 setMarkerBackgroundColor (c, marker::selection); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
249 } |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
250 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
251 // context menu requested |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
252 void octave_qscintilla::contextMenuEvent (QContextMenuEvent *e) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
253 { |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21578
diff
changeset
|
254 #if defined (HAVE_QSCI_VERSION_2_6_0) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
255 QPoint global_pos, local_pos; // the menu's position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
256 QMenu *context_menu = createStandardContextMenu (); // standard menu |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
257 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
258 bool in_left_margin = false; |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
259 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
260 // determine position depending on mouse or keyboard event |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
261 if (e->reason () == QContextMenuEvent::Mouse) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
262 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
263 // context menu by mouse |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
264 global_pos = e->globalPos (); // global mouse position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
265 local_pos = e->pos (); // local mouse position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
266 if (e->x () < marginWidth (1) + marginWidth (2)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
267 in_left_margin = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
268 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
269 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
270 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
271 // context menu by keyboard or other: get point of text cursor |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
272 get_global_textcursor_pos (&global_pos, &local_pos); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
273 QRect editor_rect = geometry (); // editor rect mapped to global |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
274 editor_rect.moveTopLeft |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
275 (parentWidget ()->mapToGlobal (editor_rect.topLeft ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
276 if (! editor_rect.contains (global_pos)) // is cursor outside editor? |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
277 global_pos = editor_rect.topLeft (); // yes, take top left corner |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
278 } |
16735
cee305c91e91
show help menu in editors context menu only for octave files
Torsten <ttl@justmail.de>
parents:
16733
diff
changeset
|
279 |
30439
fffccc353ffc
octave-qscintilla.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents:
30398
diff
changeset
|
280 # if defined (HAVE_QSCI_VERSION_2_6_0) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
281 if (! in_left_margin) |
30439
fffccc353ffc
octave-qscintilla.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents:
30398
diff
changeset
|
282 # endif |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
283 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
284 // fill context menu with editor's standard actions |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
285 emit create_context_menu_signal (context_menu); |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
286 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
287 // additional custom entries of the context menu |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
288 context_menu->addSeparator (); // separator before custom entries |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
289 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
290 // help menu: get the position of the mouse or the text cursor |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
291 // (only for octave files) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
292 QString lexer_name = lexer ()->lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
293 if (lexer_name == "octave" || lexer_name == "matlab") |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
294 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
295 m_word_at_cursor = wordAtPoint (local_pos); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
296 if (! m_word_at_cursor.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
297 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
298 context_menu->addAction (tr ("Help on") + ' ' + m_word_at_cursor, |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
299 this, &octave_qscintilla::contextmenu_help); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
300 context_menu->addAction (tr ("Documentation on") |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
301 + ' ' + m_word_at_cursor, |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
302 this, &octave_qscintilla::contextmenu_doc); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
303 context_menu->addAction (tr ("Edit") + ' ' + m_word_at_cursor, |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
304 this, &octave_qscintilla::contextmenu_edit); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
305 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
306 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
307 } |
30439
fffccc353ffc
octave-qscintilla.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents:
30398
diff
changeset
|
308 # if defined (HAVE_QSCI_VERSION_2_6_0) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
309 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
310 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
311 // remove all standard actions from scintilla |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
312 QList<QAction *> all_actions = context_menu->actions (); |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
313 |
27676
ea7d36e9f197
use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents:
27672
diff
changeset
|
314 for (auto *a : all_actions) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
315 context_menu->removeAction (a); |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
316 |
27676
ea7d36e9f197
use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents:
27672
diff
changeset
|
317 QAction *act |
ea7d36e9f197
use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents:
27672
diff
changeset
|
318 = context_menu->addAction (tr ("dbstop if ..."), this, |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
319 &octave_qscintilla::contextmenu_break_condition); |
27676
ea7d36e9f197
use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents:
27672
diff
changeset
|
320 act->setData (local_pos); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
321 } |
30439
fffccc353ffc
octave-qscintilla.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents:
30398
diff
changeset
|
322 # endif |
16735
cee305c91e91
show help menu in editors context menu only for octave files
Torsten <ttl@justmail.de>
parents:
16733
diff
changeset
|
323 |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
324 // finally show the menu |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
325 context_menu->exec (global_pos); |
30439
fffccc353ffc
octave-qscintilla.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents:
30398
diff
changeset
|
326 |
fffccc353ffc
octave-qscintilla.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents:
30398
diff
changeset
|
327 #else |
fffccc353ffc
octave-qscintilla.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents:
30398
diff
changeset
|
328 |
fffccc353ffc
octave-qscintilla.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents:
30398
diff
changeset
|
329 octave_unused_parameter (e); |
fffccc353ffc
octave-qscintilla.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents:
30398
diff
changeset
|
330 |
20277
48d9001bdee3
Avoid HAVE_ macros in header file.
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
331 #endif |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
332 } |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
333 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
334 // common function with flag for documentation |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
335 void octave_qscintilla::contextmenu_help_doc (bool documentation) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
336 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
337 if (documentation) |
29691
67eccd062618
fix calling documentations from terminal and editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29655
diff
changeset
|
338 m_octave_qobj.show_documentation_window (m_word_at_cursor); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
339 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
340 emit execute_command_in_terminal_signal ("help " + m_word_at_cursor); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
341 } |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
342 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
343 // call edit the function related to the current word |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
344 void octave_qscintilla::context_edit (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
345 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
346 if (get_actual_word ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
347 contextmenu_edit (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
348 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
349 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
350 // call edit the function related to the current word |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
351 void octave_qscintilla::context_run (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
352 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
353 if (hasSelectedText ()) |
27753
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
354 { |
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
355 contextmenu_run (true); |
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
356 |
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
357 emit interpreter_event |
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
358 ([] (interpreter&) |
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
359 { command_editor::erase_empty_line (false); }); |
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
360 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
361 } |
17628
99ffa521ecec
Add possibility to edit the function related to the actual keyword in editor
Torsten <ttl@justmail.de>
parents:
17627
diff
changeset
|
362 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
363 void octave_qscintilla::get_global_textcursor_pos (QPoint *global_pos, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
364 QPoint *local_pos) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
365 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
366 long position = SendScintilla (SCI_GETCURRENTPOS); |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
367 long point_x = SendScintilla (SCI_POINTXFROMPOSITION, 0, position); |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
368 long point_y = SendScintilla (SCI_POINTYFROMPOSITION, 0, position); |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
369 *local_pos = QPoint (point_x, point_y); // local cursor position |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
370 *global_pos = mapToGlobal (*local_pos); // global position of cursor |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
371 } |
17635
7945344506ae
Add possibility to run selected text of the editor in the terminal
Torsten <ttl@justmail.de>
parents:
17628
diff
changeset
|
372 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
373 // determine the actual word and whether we are in an octave or matlab script |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
374 bool octave_qscintilla::get_actual_word (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
375 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
376 QPoint global_pos, local_pos; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
377 get_global_textcursor_pos (&global_pos, &local_pos); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
378 m_word_at_cursor = wordAtPoint (local_pos); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
379 QString lexer_name = lexer ()->lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
380 return ((lexer_name == "octave" || lexer_name == "matlab") |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
381 && ! m_word_at_cursor.isEmpty ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
382 } |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
383 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
384 // helper function for clearing all indicators of a specific style |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
385 void octave_qscintilla::clear_selection_markers (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
386 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
387 int end_pos = text ().length (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
388 int end_line, end_col; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
389 lineIndexFromPosition (end_pos, &end_line, &end_col); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
390 clearIndicatorRange (0, 0, end_line, end_col, m_indicator_id); |
24171
1680d425bb38
also place marker in editor margin for lines matching selected word
John W. Eaton <jwe@octave.org>
parents:
24166
diff
changeset
|
391 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
392 markerDeleteAll (marker::selection); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
393 } |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
394 |
28364
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
395 QString octave_qscintilla::eol_string (void) |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
396 { |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
397 switch (eolMode ()) |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
398 { |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
399 case QsciScintilla::EolWindows: |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
400 return ("\r\n"); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
401 case QsciScintilla::EolMac: |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
402 return ("\r"); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
403 case QsciScintilla::EolUnix: |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
404 return ("\n"); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
405 } |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
406 |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
407 // Last resort, if the above goes wrong (should never happen) |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
408 return ("\r\n"); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
409 } |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
410 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
411 // Function returning the true cursor position where the tab length |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
412 // is taken into account. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
413 void octave_qscintilla::get_current_position (int *pos, int *line, int *col) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
414 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
415 *pos = SendScintilla (QsciScintillaBase::SCI_GETCURRENTPOS); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
416 *line = SendScintilla (QsciScintillaBase::SCI_LINEFROMPOSITION, *pos); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
417 *col = SendScintilla (QsciScintillaBase::SCI_GETCOLUMN, *pos); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
418 } |
20986
00835323fb44
prevent shortcut ambiguity between main and editor window
Torsten <ttl@justmail.de>
parents:
20955
diff
changeset
|
419 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
420 // Function returning the comment string of the current lexer |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
421 QStringList octave_qscintilla::comment_string (bool comment) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
422 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
423 int lexer = SendScintilla (SCI_GETLEXER); |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
424 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
425 switch (lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
426 { |
24222
7d1561c9ee48
prevent ignoring octave lexer when determining comment string (bug #52364)
Torsten <mttl@mailbox.org>
parents:
24190
diff
changeset
|
427 #if defined (HAVE_LEXER_OCTAVE) || defined (HAVE_LEXER_MATLAB) |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
428 #if defined (HAVE_LEXER_OCTAVE) |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
429 case SCLEX_OCTAVE: |
24222
7d1561c9ee48
prevent ignoring octave lexer when determining comment string (bug #52364)
Torsten <mttl@mailbox.org>
parents:
24190
diff
changeset
|
430 #else |
7d1561c9ee48
prevent ignoring octave lexer when determining comment string (bug #52364)
Torsten <mttl@mailbox.org>
parents:
24190
diff
changeset
|
431 case SCLEX_MATLAB: |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
432 #endif |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
433 { |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
434 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
435 gui_settings *settings = rmgr.get_settings (); |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
436 int comment_string; |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
437 |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
438 if (comment) |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
439 { |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
440 // The commenting string is requested |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25527
diff
changeset
|
441 if (settings->contains (ed_comment_str.key)) |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
442 // new version (radio buttons) |
27672
a36443e94f8a
simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents:
27652
diff
changeset
|
443 comment_string = settings->value (ed_comment_str).toInt (); |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
444 else |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
445 // old version (combo box) |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25527
diff
changeset
|
446 comment_string = settings->value (ed_comment_str_old.key, |
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25527
diff
changeset
|
447 ed_comment_str.def).toInt (); |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
448 |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25527
diff
changeset
|
449 return (QStringList (ed_comment_strings.at (comment_string))); |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
450 } |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
451 else |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
452 { |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
453 QStringList c_str; |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
454 |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
455 // The possible uncommenting string(s) are requested |
27672
a36443e94f8a
simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents:
27652
diff
changeset
|
456 comment_string = settings->value (ed_uncomment_str).toInt (); |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
457 |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25527
diff
changeset
|
458 for (int i = 0; i < ed_comment_strings_count; i++) |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
459 { |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
460 if (1 << i & comment_string) |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25527
diff
changeset
|
461 c_str.append (ed_comment_strings.at (i)); |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
462 } |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
463 |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
464 return c_str; |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
465 } |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
466 |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
467 } |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
468 #endif |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
469 |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
470 case SCLEX_PERL: |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
471 case SCLEX_BASH: |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
472 case SCLEX_DIFF: |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
473 return QStringList ("#"); |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
474 |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
475 case SCLEX_CPP: |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
476 return QStringList ("//"); |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
477 |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
478 case SCLEX_BATCH: |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
479 return QStringList ("REM "); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
480 } |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
481 |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
482 return QStringList ("%"); // should never happen |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
483 } |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
484 |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
485 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
486 // provide the style at a specific position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
487 int octave_qscintilla::get_style (int pos) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
488 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
489 int position; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
490 if (pos < 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
491 // The positition has to be reduced by 2 for getting the real style (?) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
492 position = SendScintilla (QsciScintillaBase::SCI_GETCURRENTPOS) - 2; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
493 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
494 position = pos; |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
495 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
496 return SendScintilla (QsciScintillaBase::SCI_GETSTYLEAT, position); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
497 } |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
498 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
499 // Is a specific cursor position in a line or block comment? |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
500 int octave_qscintilla::is_style_comment (int pos) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
501 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
502 int lexer = SendScintilla (QsciScintillaBase::SCI_GETLEXER); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
503 int style = get_style (pos); |
23688
cb36684b7a33
In the GUI editor, automatically add "endif" for "if" etc.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
23449
diff
changeset
|
504 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
505 switch (lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
506 { |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
507 case SCLEX_CPP: |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27223
diff
changeset
|
508 return (ST_LINE_COMMENT * (style == QsciLexerCPP::CommentLine |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
509 || style == QsciLexerCPP::CommentLineDoc) |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27223
diff
changeset
|
510 + ST_BLOCK_COMMENT * (style == QsciLexerCPP::Comment |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
511 || style == QsciLexerCPP::CommentDoc |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
512 || style == QsciLexerCPP::CommentDocKeyword |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27223
diff
changeset
|
513 || style == QsciLexerCPP::CommentDocKeywordError)); |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
514 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
515 #if defined (HAVE_LEXER_MATLAB) |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
516 case SCLEX_MATLAB: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
517 return (ST_LINE_COMMENT * (style == QsciLexerMatlab::Comment)); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
518 #endif |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
519 #if defined (HAVE_LEXER_OCTAVE) |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
520 case SCLEX_OCTAVE: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
521 return (ST_LINE_COMMENT * (style == QsciLexerOctave::Comment)); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
522 #endif |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
523 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
524 case SCLEX_PERL: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
525 return (ST_LINE_COMMENT * (style == QsciLexerPerl::Comment)); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
526 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
527 case SCLEX_BATCH: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
528 return (ST_LINE_COMMENT * (style == QsciLexerBatch::Comment)); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
529 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
530 case SCLEX_DIFF: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
531 return (ST_LINE_COMMENT * (style == QsciLexerDiff::Comment)); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
532 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
533 case SCLEX_BASH: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
534 return (ST_LINE_COMMENT * (style == QsciLexerBash::Comment)); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
535 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
536 } |
23688
cb36684b7a33
In the GUI editor, automatically add "endif" for "if" etc.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
23449
diff
changeset
|
537 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
538 return ST_NONE; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
539 } |
23689
b729e97aa8d1
move smart indendation from file_editor_tab to octave_qscintilla
Torsten <mttl@mailbox.org>
parents:
23688
diff
changeset
|
540 |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
541 // Do smart indentation after if, for, ... |
27198
dffdabfd0213
fix cursor position for editor smart indent after keyword (bug #56533)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27133
diff
changeset
|
542 void octave_qscintilla::smart_indent (bool do_smart_indent, int do_auto_close, |
dffdabfd0213
fix cursor position for editor smart indent after keyword (bug #56533)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27133
diff
changeset
|
543 int line, int ind_char_width) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
544 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
545 QString prevline = text (line); |
23771
ed492a5a47fd
eliminate duplicate code in editor smart indentation and auto close
Torsten <mttl@mailbox.org>
parents:
23735
diff
changeset
|
546 |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
547 QRegExp bkey = QRegExp ("^[\t ]*(if|for|while|switch" |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
548 "|do|function|properties|events|classdef" |
26480
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
549 "|unwind_protect|try" |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
550 "|parfor|methods)" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
551 "[\r]?[\n\t #%]"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
552 // last word except for comments, assuming no ' or " in comment. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
553 // rx_end = QRegExp ("(\\w+)[ \t;\r\n]*([%#][^\"']*)?$"); |
23771
ed492a5a47fd
eliminate duplicate code in editor smart indentation and auto close
Torsten <mttl@mailbox.org>
parents:
23735
diff
changeset
|
554 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
555 // last word except for comments, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
556 // allowing % and # in single or double quoted strings |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
557 // FIXME: This will get confused by transpose. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
558 QRegExp ekey = QRegExp ("(?:(?:['\"][^'\"]*['\"])?[^%#]*)*" |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
559 "(\\w+)[ \t;\r\n]*(?:[%#].*)?$"); |
23771
ed492a5a47fd
eliminate duplicate code in editor smart indentation and auto close
Torsten <mttl@mailbox.org>
parents:
23735
diff
changeset
|
560 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
561 int bpos = bkey.indexIn (prevline, 0); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
562 int epos; |
23771
ed492a5a47fd
eliminate duplicate code in editor smart indentation and auto close
Torsten <mttl@mailbox.org>
parents:
23735
diff
changeset
|
563 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
564 if (bpos > -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
565 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
566 // Found keyword after that indentation should be added |
23771
ed492a5a47fd
eliminate duplicate code in editor smart indentation and auto close
Torsten <mttl@mailbox.org>
parents:
23735
diff
changeset
|
567 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
568 // Check for existing end statement in the same line |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
569 epos = ekey.indexIn (prevline, bpos); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
570 QString first_word = bkey.cap(1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
571 bool inline_end = (epos > -1) && is_end (ekey.cap(1), first_word); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
572 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
573 if (do_smart_indent && ! inline_end) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
574 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
575 // Do smart indent in the current line (line+1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
576 indent (line+1); |
27198
dffdabfd0213
fix cursor position for editor smart indent after keyword (bug #56533)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27133
diff
changeset
|
577 setCursorPosition (line+1, indentation (line+1) / ind_char_width); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
578 } |
23771
ed492a5a47fd
eliminate duplicate code in editor smart indentation and auto close
Torsten <mttl@mailbox.org>
parents:
23735
diff
changeset
|
579 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
580 if (do_auto_close |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
581 && ! inline_end |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
582 && ! first_word.contains (QRegExp ("(?:case|otherwise|unwind_protect_cleanup)"))) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
583 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
584 // Do auto close |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
585 auto_close (do_auto_close, line, prevline, first_word); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
586 } |
23689
b729e97aa8d1
move smart indendation from file_editor_tab to octave_qscintilla
Torsten <mttl@mailbox.org>
parents:
23688
diff
changeset
|
587 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
588 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
589 } |
23689
b729e97aa8d1
move smart indendation from file_editor_tab to octave_qscintilla
Torsten <mttl@mailbox.org>
parents:
23688
diff
changeset
|
590 |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
591 QRegExp mkey = QRegExp ("^[\t ]*(?:else|elseif|catch|unwind_protect_cleanup)" |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
592 "[\r]?[\t #%\n]"); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
593 if (prevline.contains (mkey)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
594 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
595 int prev_ind = indentation (line-1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
596 int act_ind = indentation (line); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
597 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
598 if (prev_ind == act_ind) |
23689
b729e97aa8d1
move smart indendation from file_editor_tab to octave_qscintilla
Torsten <mttl@mailbox.org>
parents:
23688
diff
changeset
|
599 unindent (line); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
600 else if (prev_ind > act_ind) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
601 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
602 setIndentation (line+1, prev_ind); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
603 setCursorPosition (line+1, prev_ind); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
604 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
605 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
606 } |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
607 |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
608 QRegExp case_key = QRegExp ("^[\t ]*(?:case|otherwise)[\r]?[\t #%\n]"); |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
609 if (prevline.contains (case_key) && do_smart_indent) |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
610 { |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
611 QString last_line = text (line-1); |
29712
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
612 int prev_ind = indentation (line-1); |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
613 int act_ind = indentation (line); |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
614 |
29712
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
615 if (last_line.contains (QRegExp ("^[\t ]*switch"))) |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
616 { |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
617 indent (line+1); |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
618 act_ind = indentation (line+1); |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
619 } |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
620 else |
29712
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
621 { |
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
622 if (prev_ind == act_ind) |
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
623 unindent (line); |
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
624 else if (prev_ind > act_ind) |
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
625 act_ind = prev_ind; |
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
626 } |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
627 |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
628 setIndentation (line+1, act_ind); |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
629 setCursorPosition (line+1, act_ind); |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
630 } |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
631 |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
632 ekey = QRegExp ("^[\t ]*(?:end|endif|endfor|endwhile|until|endfunction" |
29712
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
633 "|endswitch|end_try_catch|end_unwind_protect)[\r]?[\t #%\n(;]"); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
634 if (prevline.contains (ekey)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
635 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
636 if (indentation (line-1) <= indentation (line)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
637 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
638 unindent (line+1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
639 unindent (line); |
29712
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
640 if (prevline.contains ("endswitch")) |
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
641 { |
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
642 // endswitch has to me unndented twice |
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
643 unindent (line+1); |
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
644 unindent (line); |
0e888d2f79b7
fix auto indentation of switch-strucutre in GUI editor (bug #60649)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29654
diff
changeset
|
645 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
646 setCursorPosition (line+1, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
647 indentation (line)); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
648 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
649 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
650 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
651 } |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
652 |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
653 // Do smart indentation of current selection or line. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
654 void octave_qscintilla::smart_indent_line_or_selected_text (int lineFrom, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
655 int lineTo) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
656 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
657 QRegExp blank_line_regexp = QRegExp ("^[\t ]*$"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
658 |
27912
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
659 // end[xxxxx] [# comment] at end of a line |
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
660 QRegExp end_word_regexp |
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
661 = QRegExp ("(?:(?:['\"][^'\"]*['\"])?[^%#]*)*" |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
662 "(?:end\\w*)[\r\n\t ;]*(?:[%#].*)?$"); |
27912
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
663 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
664 QRegExp begin_block_regexp |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
665 = QRegExp ("^[\t ]*(?:if|elseif|else" |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
666 "|for|while|do|parfor" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
667 "|switch|case|otherwise" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
668 "|function" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
669 "|classdef|properties|events|enumeration|methods" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
670 "|unwind_protect|unwind_protect_cleanup|try|catch)" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
671 "[\r\n\t #%]"); |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
672 |
26480
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
673 QRegExp mid_block_regexp |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
674 = QRegExp ("^[\t ]*(?:elseif|else" |
26480
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
675 "|unwind_protect_cleanup|catch)" |
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
676 "[\r\n\t #%]"); |
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
677 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
678 QRegExp end_block_regexp |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
679 = QRegExp ("^[\t ]*(?:end" |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
680 "|end(for|function|if|parfor|switch|while" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
681 "|classdef|enumeration|events|methods|properties)" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
682 "|end_(try_catch|unwind_protect)" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
683 "|until)" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
684 "[\r\n\t #%]"); |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
685 |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
686 QRegExp case_block_regexp |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
687 = QRegExp ("^[\t ]*(?:case|otherwise)" |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
688 "[\r\n\t #%]"); |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
689 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
690 int indent_column = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
691 int indent_increment = indentationWidth (); |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
692 bool in_switch = false; |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
693 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
694 for (int line = lineFrom-1; line >= 0; line--) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
695 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
696 QString line_text = text (line); |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
697 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
698 if (blank_line_regexp.indexIn (line_text) < 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
699 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
700 // Found first non-blank line above beginning of region or |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
701 // current line. Base indentation from this line, increasing |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
702 // indentation by indentationWidth if it looks like the |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
703 // beginning of a code block. |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
704 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
705 indent_column = indentation (line); |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
706 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
707 if (begin_block_regexp.indexIn (line_text) > -1) |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
708 { |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
709 indent_column += indent_increment; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
710 if (line_text.contains ("switch")) |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
711 in_switch = true; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
712 } |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
713 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
714 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
715 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
716 } |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
717 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
718 if (indent_column < 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
719 indent_column = indentation (lineFrom); |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
720 |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
721 QString prev_line; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
722 for (int line = lineFrom; line <= lineTo; line++) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
723 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
724 QString line_text = text (line); |
23689
b729e97aa8d1
move smart indendation from file_editor_tab to octave_qscintilla
Torsten <mttl@mailbox.org>
parents:
23688
diff
changeset
|
725 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
726 if (end_block_regexp.indexIn (line_text) > -1) |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
727 { |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
728 indent_column -= indent_increment; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
729 if (line_text.contains ("endswitch")) |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
730 { |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
731 // need a double de-indent for endswitch |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
732 if (in_switch) |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
733 indent_column -= indent_increment; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
734 in_switch = false; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
735 } |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
736 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
737 |
26480
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
738 if (mid_block_regexp.indexIn (line_text) > -1) |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
739 indent_column -= indent_increment; |
26480
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
740 |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
741 if (case_block_regexp.indexIn (line_text) > -1) |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
742 { |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
743 if (case_block_regexp.indexIn (prev_line) < 0 |
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
744 && !prev_line.contains("switch")) |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
745 indent_column -= indent_increment; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
746 in_switch = true; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
747 } |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
748 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
749 setIndentation (line, indent_column); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
750 |
27912
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
751 |
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
752 int bpos = begin_block_regexp.indexIn (line_text); |
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
753 if (bpos > -1) |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
754 { |
27912
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
755 // Check for existing end statement in the same line |
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
756 int epos = end_word_regexp.indexIn (line_text, bpos); |
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
757 if (epos == -1) |
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
758 indent_column += indent_increment; |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
759 if (line_text.contains ("switch")) |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
760 in_switch = true; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
761 } |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
762 |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
763 if (blank_line_regexp.indexIn (line_text) < 0) |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
764 prev_line = line_text; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
765 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
766 } |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
767 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
768 void octave_qscintilla::set_word_selection (const QString& word) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
769 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
770 m_selection = word; |
24187
ff9bd559799b
pop up tooltip message for changing selected words in editor
John W. Eaton <jwe@octave.org>
parents:
24172
diff
changeset
|
771 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
772 if (word.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
773 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
774 m_selection_line = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
775 m_selection_col = -1; |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
776 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
777 m_selection_replacement = ""; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
778 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
779 clear_selection_markers (); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
780 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
781 QToolTip::hideText (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
782 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
783 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
784 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
785 int pos; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
786 get_current_position (&pos, &m_selection_line, &m_selection_col); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
787 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
788 } |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
789 |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26634
diff
changeset
|
790 void octave_qscintilla::show_selection_markers (int l1, int c1, int l2, int c2) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
791 { |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26634
diff
changeset
|
792 fillIndicatorRange (l1, c1, l2, c2, m_indicator_id); |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
793 |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26634
diff
changeset
|
794 if (l1 == l2) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26634
diff
changeset
|
795 markerAdd (l1, marker::selection); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
796 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
797 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
798 void octave_qscintilla::contextmenu_help (bool) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
799 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
800 contextmenu_help_doc (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
801 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
802 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
803 void octave_qscintilla::contextmenu_doc (bool) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
804 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
805 contextmenu_help_doc (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
806 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
807 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
808 void octave_qscintilla::context_help_doc (bool documentation) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
809 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
810 if (get_actual_word ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
811 contextmenu_help_doc (documentation); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
812 } |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
813 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
814 void octave_qscintilla::contextmenu_edit (bool) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
815 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
816 emit context_menu_edit_signal (m_word_at_cursor); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
817 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
818 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
819 void octave_qscintilla::contextmenu_run_temp_error (void) |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
820 { |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
821 QMessageBox::critical (this, tr ("Octave Editor"), |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
822 tr ("Creating temporary files failed.\n" |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
823 "Make sure you have write access to temp. directory\n" |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
824 "%1\n\n" |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
825 "\"Run Selection\" requires temporary files.").arg (QDir::tempPath ())); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
826 } |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
827 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
828 void octave_qscintilla::contextmenu_run (bool) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
829 { |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
830 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
831 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
832 // Take selected code and extend it by commands for echoing each |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
833 // evaluated line and for adding the line to the history (use script) |
27678
3a85d8547584
fix executing selected code containing a clear all command (bug #57204)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27676
diff
changeset
|
834 QString code = QString (); |
28544
dc53b7b7af8b
remove block begin/end comments for running selected code lines (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
835 QString hist = QString (); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
836 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
837 // Split contents into single lines and complete commands |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
838 QStringList lines = selectedText ().split (QRegExp ("[\r\n]"), |
29049
461bd8b9ce91
use Qt::SplitBehavior enum and values if available
John W. Eaton <jwe@octave.org>
parents:
28985
diff
changeset
|
839 #if defined (HAVE_QT_SPLITBEHAVIOR_ENUM) |
461bd8b9ce91
use Qt::SplitBehavior enum and values if available
John W. Eaton <jwe@octave.org>
parents:
28985
diff
changeset
|
840 Qt::SkipEmptyParts); |
461bd8b9ce91
use Qt::SplitBehavior enum and values if available
John W. Eaton <jwe@octave.org>
parents:
28985
diff
changeset
|
841 #else |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
842 QString::SkipEmptyParts); |
29049
461bd8b9ce91
use Qt::SplitBehavior enum and values if available
John W. Eaton <jwe@octave.org>
parents:
28985
diff
changeset
|
843 #endif |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
844 for (int i = 0; i < lines.count (); i++) |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
845 { |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
846 QString line = lines.at (i); |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
847 if (line.trimmed ().isEmpty ()) |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
848 continue; |
28095
b0f949055097
Fix parse error when running code with single quotes with F9 (bug #57837).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27978
diff
changeset
|
849 QString line_escaped = line; |
b0f949055097
Fix parse error when running code with single quotes with F9 (bug #57837).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27978
diff
changeset
|
850 line_escaped.replace (QString ("'"), QString ("''")); |
27909
a29db5c46706
fix use of escape sequences when running code with F9 (bug #57469)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27893
diff
changeset
|
851 QString line_history = line; |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
852 |
27684
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
853 // Prevent output of breakpoint in temp. file for keyboard |
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
854 QString next_bp_quiet; |
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
855 QString next_bp_quiet_reset; |
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
856 if (line.contains ("keyboard")) |
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
857 { |
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
858 // Define commands for not showing bp location and for resetting |
28095
b0f949055097
Fix parse error when running code with single quotes with F9 (bug #57837).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27978
diff
changeset
|
859 // this in case "keyboard" was within a comment |
27684
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
860 next_bp_quiet = "__db_next_breakpoint_quiet__;\n"; |
29819
340d6d3dcc94
octave-qscintilla.cc (contextmenu_run): fix keyboard command handling
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29712
diff
changeset
|
861 next_bp_quiet_reset = "\n__db_next_breakpoint_quiet__(false);"; |
27684
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
862 } |
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
863 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
864 // Add codeline |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
865 code += next_bp_quiet + line + next_bp_quiet_reset + "\n"; |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
866 hist += line_history + "\n"; |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
867 } |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
868 |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
869 octave_stdout << hist.toStdString (); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
870 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
871 // Create tmp file with the code to be executed by the interpreter |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
872 QPointer<QTemporaryFile> tmp_file |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
873 = rmgr.create_tmp_file ("m", code); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
874 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
875 bool tmp = (tmp_file && tmp_file->open ()); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
876 if (! tmp) |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
877 { |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
878 // tmp files not working: use old way to run selection |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
879 contextmenu_run_temp_error (); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
880 return; |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
881 } |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
882 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
883 tmp_file->close (); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
884 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
885 // Create tmp file required for adding command to history |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
886 QPointer<QTemporaryFile> tmp_hist |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
887 = rmgr.create_tmp_file ("", hist); // empty tmp file for history |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
888 |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
889 tmp = (tmp_hist && tmp_hist->open ()); |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
890 if (! tmp) |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
891 { |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
892 // tmp files not working: use old way to run selection |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
893 contextmenu_run_temp_error (); |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
894 return; |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
895 } |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
896 |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
897 tmp_hist->close (); |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
898 |
28283
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
899 // Add commands to the history |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
900 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28848
diff
changeset
|
901 ([=] (interpreter& interp) |
28283
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
902 { |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
903 // INTERPRETER THREAD |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
904 |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
905 std::string opt = "-r"; |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
906 std::string path = tmp_hist->fileName ().toStdString (); |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
907 |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
908 Fhistory (interp, ovl (opt, path)); |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
909 }); |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
910 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
911 // Disable opening a file at a breakpoint in case keyboard () is used |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
912 gui_settings *settings = rmgr.get_settings (); |
27672
a36443e94f8a
simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents:
27652
diff
changeset
|
913 bool show_dbg_file = settings->value (ed_show_dbg_file).toBool (); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
914 settings->setValue (ed_show_dbg_file.key, false); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
915 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
916 // Let the interpreter execute the tmp file |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
917 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28848
diff
changeset
|
918 ([=] (interpreter& interp) |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
919 { |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
920 // INTERPRETER THREAD |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
921 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
922 std::string file = tmp_file->fileName ().toStdString (); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
923 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
924 std::string pending_input = command_editor::get_current_line (); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
925 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
926 int err_line = -1; // For storing the line of a poss. error |
27652
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
927 |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
928 // Get current state of auto command repeat in debug mode |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
929 octave_value_list ovl_dbg = Fisdebugmode (interp); |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
930 bool dbg = ovl_dbg(0).bool_value (); |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
931 octave_value_list ovl_auto_repeat = ovl (true); |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
932 if (dbg) |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
933 ovl_auto_repeat = Fauto_repeat_debug_command (interp, ovl (false), 1); |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
934 bool auto_repeat = ovl_auto_repeat(0).bool_value (); |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
935 |
27652
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
936 try |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
937 { |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
938 // Do the job |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
939 interp.source_file (file); |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
940 } |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29054
diff
changeset
|
941 catch (const execution_exception& ee) |
27652
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
942 { |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
943 // Catch errors otherwise the rest of the interpreter |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
944 // will not be executed (cleaning up). |
27684
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
945 |
27696
cf231bc5876f
improve error messages when executing slected code by F9 (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27687
diff
changeset
|
946 // New error message and error stack |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29054
diff
changeset
|
947 QString new_msg = QString::fromStdString (ee.message ()); |
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29054
diff
changeset
|
948 std::list<frame_info> stack = ee.stack_info (); |
27696
cf231bc5876f
improve error messages when executing slected code by F9 (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27687
diff
changeset
|
949 |
cf231bc5876f
improve error messages when executing slected code by F9 (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27687
diff
changeset
|
950 // Remove line and column from first line of error message only |
cf231bc5876f
improve error messages when executing slected code by F9 (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27687
diff
changeset
|
951 // if it is related to the tmp itself, i.e. only if the |
cf231bc5876f
improve error messages when executing slected code by F9 (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27687
diff
changeset
|
952 // the error stack size is 0 or 1 |
cf231bc5876f
improve error messages when executing slected code by F9 (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27687
diff
changeset
|
953 if (stack.size () < 2) |
27684
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
954 { |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
955 QRegExp rx ("source: error sourcing file [^\n]*$"); |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
956 if (new_msg.contains (rx)) |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
957 { |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
958 // Selected code has syntax errors |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
959 new_msg.replace (rx, "error sourcing selected code"); |
28283
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
960 err_line = 0; // Nothing into history? |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
961 } |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
962 else |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
963 { |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
964 // Normal error, detect line and remove file |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
965 // name from message |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
966 QStringList rx_list; |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
967 rx_list << "near line (\\d+),[^\n]*\n"; |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
968 rx_list << "near line (\\d+),[^\n]*$"; |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
969 |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
970 QStringList replace_list; |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
971 replace_list << "\n"; |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
972 replace_list << ""; |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
973 |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
974 for (int i = 0; i < rx_list.length (); i++) |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
975 { |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
976 int pos = 0; |
28283
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
977 rx = QRegExp (rx_list.at (i)); |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
978 pos = rx.indexIn (new_msg, pos); |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
979 if (pos != -1) |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
980 { |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
981 err_line = rx.cap (1).toInt (); |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
982 new_msg = new_msg.replace (rx, replace_list.at (i)); |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
983 } |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
984 } |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
985 } |
27684
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
986 } |
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
987 |
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
988 // Drop first stack level, i.e. temporary function file |
27687
2e988d51e401
fix parse error handling when executing selected code (bug #57227)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27684
diff
changeset
|
989 if (stack.size () > 0) |
2e988d51e401
fix parse error handling when executing selected code (bug #57227)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27684
diff
changeset
|
990 stack.pop_back (); |
27684
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
991 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
992 // Clean up before throwing the modified error. |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
993 emit ctx_menu_run_finished_signal (show_dbg_file, err_line, |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
994 tmp_file, tmp_hist, |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
995 dbg, auto_repeat); |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
996 |
27684
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
997 // New exception with updated message and stack |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29054
diff
changeset
|
998 execution_exception nee (ee.err_type (), ee.identifier (), |
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29054
diff
changeset
|
999 new_msg.toStdString (), stack); |
27684
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
1000 |
becd6267d6d1
hide tmp file in error and bp messages when executing selected code (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27678
diff
changeset
|
1001 // Throw |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29054
diff
changeset
|
1002 throw (nee); |
27652
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
1003 } |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
1004 |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
1005 // Clean up |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1006 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
1007 emit ctx_menu_run_finished_signal (show_dbg_file, err_line, |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1008 tmp_file, tmp_hist, |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1009 dbg, auto_repeat); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1010 |
27753
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
1011 command_editor::erase_empty_line (true); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1012 command_editor::replace_line (""); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1013 command_editor::set_initial_input (pending_input); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1014 command_editor::redisplay (); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1015 command_editor::interrupt_event_loop (); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1016 command_editor::accept_line (); |
27753
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
1017 command_editor::erase_empty_line (true); |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1018 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1019 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1020 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1021 |
28283
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
1022 void octave_qscintilla::ctx_menu_run_finished (bool show_dbg_file, int, |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1023 QTemporaryFile* tmp_file, QTemporaryFile* tmp_hist, |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1024 bool dbg, bool auto_repeat) |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1025 { |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1026 emit focus_console_after_command_signal (); |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1027 |
28283
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
1028 // TODO: Use line nr. (int argument) of possible error for removing |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
1029 // lines from history that were never executed. For this, |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
1030 // possible lines from commands at a debug prompt must be |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
1031 // taken into consideration. |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
1032 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
1033 gui_settings *settings = rmgr.get_settings (); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1034 settings->setValue (ed_show_dbg_file.key, show_dbg_file); |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
1035 rmgr.remove_tmp_file (tmp_file); |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
1036 rmgr.remove_tmp_file (tmp_hist); |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1037 |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1038 emit interpreter_event |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1039 ([this, dbg, auto_repeat] (interpreter& interp) |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1040 { |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1041 // INTERPRETER THREAD |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1042 if (dbg) |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1043 Fauto_repeat_debug_command (interp, ovl (auto_repeat)); |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1044 }); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1045 } |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1046 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1047 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1048 // wrappers for dbstop related context menu items |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1049 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1050 // FIXME: Why can't the data be sent as the argument to the function??? |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1051 void octave_qscintilla::contextmenu_break_condition (bool) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1052 { |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1053 #if defined (HAVE_QSCI_VERSION_2_6_0) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1054 QAction *action = qobject_cast<QAction *>(sender ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1055 QPoint local_pos = action->data ().value<QPoint> (); |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1056 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1057 // pick point just right of margins, so lineAt doesn't give -1 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1058 int margins = marginWidth (1) + marginWidth (2) + marginWidth (3); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1059 local_pos = QPoint (margins + 1, local_pos.y ()); |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1060 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1061 emit context_menu_break_condition_signal (lineAt (local_pos)); |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1062 #endif |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1063 } |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1064 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1065 void octave_qscintilla::contextmenu_break_once (const QPoint& local_pos) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1066 { |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1067 #if defined (HAVE_QSCI_VERSION_2_6_0) |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1068 emit context_menu_break_once (lineAt (local_pos)); |
30439
fffccc353ffc
octave-qscintilla.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents:
30398
diff
changeset
|
1069 #else |
fffccc353ffc
octave-qscintilla.cc: Silence compiler warning about unused parameter.
Markus Mützel <markus.muetzel@gmx.de>
parents:
30398
diff
changeset
|
1070 octave_unused_parameter (local_pos); |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1071 #endif |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1072 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1073 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1074 void octave_qscintilla::text_changed (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1075 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1076 emit status_update (isUndoAvailable (), isRedoAvailable ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1077 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1078 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1079 void octave_qscintilla::cursor_position_changed (int line, int col) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1080 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1081 // Clear the selection if we move away from it. We have to check the |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1082 // position, because we allow entering text at the point of the |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1083 // selection to trigger a search and replace that does not clear the |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1084 // selection until it is complete. |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
1085 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1086 if (! m_selection.isEmpty () |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1087 && (line != m_selection_line || col != m_selection_col)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1088 set_word_selection (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1089 } |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
1090 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1091 // when edit area gets focus update information on undo/redo actions |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1092 void octave_qscintilla::focusInEvent (QFocusEvent *focusEvent) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1093 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1094 emit status_update (isUndoAvailable (), isRedoAvailable ()); |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1095 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1096 QsciScintilla::focusInEvent (focusEvent); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1097 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1098 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1099 void octave_qscintilla::show_replace_action_tooltip (void) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1100 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1101 int pos; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1102 get_current_position (&pos, &m_selection_line, &m_selection_col); |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1103 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1104 // Offer to replace other instances. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1105 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1106 QKeySequence keyseq = Qt::SHIFT + Qt::Key_Return; |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1107 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1108 QString msg = (tr ("Press '%1' to replace all occurrences of '%2' with '%3'.") |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1109 . arg (keyseq.toString ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1110 . arg (m_selection) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1111 . arg (m_selection_replacement)); |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1112 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1113 QPoint global_pos; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1114 QPoint local_pos; |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1115 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1116 get_global_textcursor_pos (&global_pos, &local_pos); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1117 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1118 QFontMetrics ttfm (QToolTip::font ()); |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1119 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1120 // Try to avoid overlapping with the text completion dialog |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1121 // and the text that is currently being edited. |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1122 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1123 global_pos += QPoint (2*ttfm.maxWidth (), -3*ttfm.height ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1124 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1125 QToolTip::showText (global_pos, msg); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1126 } |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1127 |
28364
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1128 void octave_qscintilla::replace_all (const QString& o_str, const QString& n_str, |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1129 bool re, bool cs, bool wo) |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1130 { |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1131 // get the resulting cursor position |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1132 int pos, line, col, nline, ncol; |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1133 get_current_position (&pos, &line, &col); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1134 |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1135 // remember first visible line for restoring the view afterwards |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1136 int first_line = firstVisibleLine (); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1137 |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1138 // search for first occurrence of the detected word |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1139 bool find_result_available = findFirst (o_str, re, cs, wo, |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1140 false, true, 0, 0); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1141 // replace and find more occurrences in a loop |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1142 beginUndoAction (); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1143 while (find_result_available) |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1144 { |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1145 // findNext doesn't work properly if the length of the replacement |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1146 // text is different from the original |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1147 replace (n_str); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1148 get_current_position (&pos, &nline, &ncol); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1149 |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1150 find_result_available = findFirst (o_str, re, cs, wo, |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1151 false, true, nline, ncol); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1152 } |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1153 endUndoAction (); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1154 |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1155 // restore the visible area |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1156 setFirstVisibleLine (first_line); |
28364
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1157 |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1158 // fix cursor column if outside of new line length |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1159 int eol_len = eol_string ().length (); |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1160 if (line == lines () - 1) |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1161 eol_len = 0; |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1162 const int col_max = text (line).length () - eol_len; |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1163 if (col_max < col) |
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1164 col = col_max; |
28364
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1165 |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1166 setCursorPosition (line, col); |
28364
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1167 } |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1168 |
28798
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1169 bool octave_qscintilla::event (QEvent *e) |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1170 { |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1171 if (m_debug_mode && e->type() == QEvent::ToolTip) |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1172 { |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1173 QHelpEvent *help_e = static_cast<QHelpEvent *>(e); |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1174 QString variable = wordAtPoint (help_e->pos()); |
28809
03c0024f95c7
avoid using bare pointers for symbol lists in editor (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28798
diff
changeset
|
1175 QStringList symbol_names |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1176 = m_octave_qobj.get_workspace_model ()->get_symbol_names (); |
28809
03c0024f95c7
avoid using bare pointers for symbol lists in editor (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28798
diff
changeset
|
1177 int symbol_idx = symbol_names.indexOf (variable); |
28798
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1178 if (symbol_idx > -1) |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1179 { |
28809
03c0024f95c7
avoid using bare pointers for symbol lists in editor (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28798
diff
changeset
|
1180 QStringList symbol_values |
30398
d4d83344d653
maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29821
diff
changeset
|
1181 = m_octave_qobj.get_workspace_model ()->get_symbol_values (); |
28798
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1182 QToolTip::showText (help_e->globalPos(), variable |
28809
03c0024f95c7
avoid using bare pointers for symbol lists in editor (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28798
diff
changeset
|
1183 + " = " + symbol_values.at (symbol_idx)); |
28798
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1184 } |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1185 else |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1186 { |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1187 QToolTip::hideText(); |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1188 e->ignore(); |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1189 } |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1190 |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1191 return true; |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1192 } |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1193 |
28848
751afb1ee1d0
avoid GUI crash happening after changeset 82ccc4e69ba3 (bug #56990)
John W. Eaton <jwe@octave.org>
parents:
28809
diff
changeset
|
1194 return QsciScintilla::event(e); |
28798
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1195 } |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1196 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1197 void octave_qscintilla::keyPressEvent (QKeyEvent *key_event) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1198 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1199 if (m_selection.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1200 QsciScintilla::keyPressEvent (key_event); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1201 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1202 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1203 int key = key_event->key (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1204 Qt::KeyboardModifiers modifiers = key_event->modifiers (); |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1205 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1206 if (key == Qt::Key_Return && modifiers == Qt::ShiftModifier) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1207 { |
28365
2969b94cac9f
simplify code for replacing all highlighted occurrences in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28364
diff
changeset
|
1208 replace_all (m_selection, m_selection_replacement, |
2969b94cac9f
simplify code for replacing all highlighted occurrences in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28364
diff
changeset
|
1209 false, true, true); |
24187
ff9bd559799b
pop up tooltip message for changing selected words in editor
John W. Eaton <jwe@octave.org>
parents:
24172
diff
changeset
|
1210 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1211 // Clear the selection. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1212 set_word_selection (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1213 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1214 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1215 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1216 // The idea here is to allow backspace to remove the last |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1217 // character of the replacement text to allow minimal editing |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1218 // and to also end the selection replacement action if text is |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1219 // not valid as a word constituent (control characters, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1220 // etc.). Is there a better way than having special cases for |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1221 // DEL and ESC here? |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1222 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1223 QString text = key_event->text (); |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1224 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1225 bool cancel_replacement = false; |
24187
ff9bd559799b
pop up tooltip message for changing selected words in editor
John W. Eaton <jwe@octave.org>
parents:
24172
diff
changeset
|
1226 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1227 if (key == Qt::Key_Backspace) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1228 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1229 if (m_selection_replacement.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1230 cancel_replacement = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1231 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1232 m_selection_replacement.chop (1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1233 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1234 else if (key == Qt::Key_Delete || key == Qt::Key_Escape) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1235 cancel_replacement = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1236 else if (! text.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1237 m_selection_replacement += text; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1238 else if (modifiers != Qt::ShiftModifier) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1239 cancel_replacement = true; |
24187
ff9bd559799b
pop up tooltip message for changing selected words in editor
John W. Eaton <jwe@octave.org>
parents:
24172
diff
changeset
|
1240 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1241 // Perform default action. |
24187
ff9bd559799b
pop up tooltip message for changing selected words in editor
John W. Eaton <jwe@octave.org>
parents:
24172
diff
changeset
|
1242 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1243 QsciScintilla::keyPressEvent (key_event); |
24187
ff9bd559799b
pop up tooltip message for changing selected words in editor
John W. Eaton <jwe@octave.org>
parents:
24172
diff
changeset
|
1244 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1245 if (cancel_replacement) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1246 set_word_selection (); |
24187
ff9bd559799b
pop up tooltip message for changing selected words in editor
John W. Eaton <jwe@octave.org>
parents:
24172
diff
changeset
|
1247 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1248 if (! m_selection_replacement.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1249 show_replace_action_tooltip (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1250 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1251 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1252 } |
24187
ff9bd559799b
pop up tooltip message for changing selected words in editor
John W. Eaton <jwe@octave.org>
parents:
24172
diff
changeset
|
1253 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1254 void octave_qscintilla::auto_close (int auto_endif, int linenr, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1255 const QString& line, QString& first_word) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1256 { |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27753
diff
changeset
|
1257 // Insert an "end" for an "if" etc., if needed. |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1258 // (Use of "while" allows "return" to skip the rest. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1259 // It may be clearer to use "if" and "goto", |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1260 // but that violates the coding standards.) |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1261 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1262 bool autofill_simple_end = (auto_endif == 2); |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1263 |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
1264 std::size_t start = line.toStdString ().find_first_not_of (" \t"); |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1265 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1266 // Check if following line has the same or less indentation |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1267 // Check if the following line does not start with |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1268 // end* (until) (catch) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1269 if (linenr < lines () - 1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1270 { |
27223
1ae91e5d70cc
fix auto-close feature in editor when using tabs for indentation (bug #56533)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27198
diff
changeset
|
1271 int offset = 2; // linenr is the old line, thus, linnr+1 is the |
1ae91e5d70cc
fix auto-close feature in editor when using tabs for indentation (bug #56533)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27198
diff
changeset
|
1272 // new one and can not be taken into account |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
1273 std::size_t next_start; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1274 QString next_line; |
27117
e14e48e838fa
Don't add extra closing endXXX keywords in GUI Editor (bug #56160).
Rik <rik@octave.org>
parents:
27101
diff
changeset
|
1275 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1276 do // find next non-blank line |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1277 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1278 next_line = text (linenr + offset++); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1279 next_start = next_line.toStdString ().find_first_not_of (" \t\n"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1280 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1281 while (linenr + offset < lines () |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1282 && next_start == std::string::npos); |
27117
e14e48e838fa
Don't add extra closing endXXX keywords in GUI Editor (bug #56160).
Rik <rik@octave.org>
parents:
27101
diff
changeset
|
1283 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1284 if (next_start == std::string::npos) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1285 next_start = 0; |
27117
e14e48e838fa
Don't add extra closing endXXX keywords in GUI Editor (bug #56160).
Rik <rik@octave.org>
parents:
27101
diff
changeset
|
1286 if (start == 0 && next_start == 0) |
e14e48e838fa
Don't add extra closing endXXX keywords in GUI Editor (bug #56160).
Rik <rik@octave.org>
parents:
27101
diff
changeset
|
1287 return; // bug #56160, don't add at 0 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1288 if (next_start > start) // more indented => don't add "end" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1289 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1290 if (next_start == start) // same => check if already is "end" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1291 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1292 QRegExp rx_start = QRegExp (R"((\w+))"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1293 int tmp = rx_start.indexIn (next_line, start); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1294 if (tmp != -1 && is_end (rx_start.cap(1), first_word)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1295 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1296 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1297 } |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1298 |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1299 // If all of the above, insert a new line, with matching indent |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1300 // and either 'end' or 'end...', depending on a flag. |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1301 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1302 // If we insert directly after the last line, the "end" is autoindented, |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1303 // so add a dummy line. |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1304 if (linenr + 2 == lines ()) |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1305 insertAt (QString ("\n"), linenr + 2, 0); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1306 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1307 // For try/catch/end, fill "end" first, so "catch" is top of undo stack |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1308 if (first_word == "try") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1309 insertAt (QString (start, ' ') |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1310 + (autofill_simple_end ? "end\n" : "end_try_catch\n"), |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1311 linenr + 2, 0); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1312 else if (first_word == "unwind_protect") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1313 insertAt (QString (start, ' ') |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1314 + (autofill_simple_end ? "end\n" : "end_unwind_protect\n"), |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1315 linenr + 2, 0); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1316 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1317 QString next_line; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1318 if (first_word == "do") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1319 next_line = "until\n"; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1320 else if (first_word == "try") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1321 next_line = "catch\n"; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1322 else if (first_word == "unwind_protect") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1323 next_line = "unwind_protect_cleanup\n"; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1324 else if (autofill_simple_end) |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1325 next_line = "end\n"; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1326 else |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1327 { |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1328 if (first_word == "unwind_protect") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1329 first_word = '_' + first_word; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1330 next_line = "end" + first_word + "\n"; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1331 } |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1332 |
27223
1ae91e5d70cc
fix auto-close feature in editor when using tabs for indentation (bug #56533)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27198
diff
changeset
|
1333 //insertAt (QString (start, ' ') + next_line, linenr + 2, 0); |
1ae91e5d70cc
fix auto-close feature in editor when using tabs for indentation (bug #56533)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27198
diff
changeset
|
1334 insertAt (next_line, linenr + 2, 0); |
1ae91e5d70cc
fix auto-close feature in editor when using tabs for indentation (bug #56533)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27198
diff
changeset
|
1335 setIndentation (linenr + 2, indentation (linenr)); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1336 } |
25796
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1337 |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1338 void octave_qscintilla::dragEnterEvent (QDragEnterEvent *e) |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1339 { |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1340 // if is not dragging a url, pass to qscintilla to handle, |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1341 // otherwise ignore it so that it will be handled by |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1342 // the parent |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1343 if (!e->mimeData ()->hasUrls ()) |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1344 { |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1345 QsciScintilla::dragEnterEvent (e); |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1346 } |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1347 else |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1348 { |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1349 e->ignore(); |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1350 } |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1351 } |
28798
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1352 |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1353 void octave_qscintilla::handle_enter_debug_mode (void) |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1354 { |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1355 // Set tool tip font to the lexers default font |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1356 m_tooltip_font = QToolTip::font (); // Save current font |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1357 QToolTip::setFont (lexer ()->defaultFont ()); |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1358 |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1359 m_debug_mode = true; |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1360 } |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1361 |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1362 void octave_qscintilla::handle_exit_debug_mode (void) |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1363 { |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1364 m_debug_mode = false; |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1365 |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1366 // Reset tool tip font |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1367 QToolTip::setFont (m_tooltip_font); |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1368 } |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1369 |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1370 } |
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1371 |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
1372 #endif |