Mercurial > octave
annotate libgui/src/m-editor/octave-qscintilla.cc @ 29572:aef11bb4e6d1
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
Files affected: make_int.cc, file-editor-tab.cc, octave-qscintilla.cc,
Cell.cc, Cell.h, call-stack.cc, call-stack.h, cellfun.cc, data.cc,
debug.cc, dlmread.cc, error.cc, event-queue.h, fcn-info.cc,
fcn-info.h, file-io.cc, ft-text-renderer.cc, gl2ps-print.cc,
graphics.cc, graphics.in.h, help.cc, hex2num.cc, input.cc,
latex-text-renderer.cc, load-path.cc, load-save.cc, load-save.h,
ls-hdf5.cc, ls-mat-ascii.cc, ls-mat5.cc, ls-oct-text.cc, mex.cc,
mexproto.h, mxarray.h, oct-map.cc, oct-stream.cc, oct-stream.h,
pager.cc, pager.h, pr-output.cc, regexp.cc, settings.h,
stack-frame.cc, stack-frame.h, strfns.cc, syminfo.cc, symrec.h,
symscope.cc, symscope.h, symtab.cc, sysdep.cc, toplev.cc, utils.cc,
utils.h, variables.cc, __fltk_uigetfile__.cc, __init_fltk__.cc,
audioread.cc, gzip.cc, cdef-class.cc, cdef-manager.cc, cdef-method.cc,
cdef-object.cc, cdef-object.h, ov-base-diag.cc, ov-base-diag.h,
ov-base-mat.cc, ov-base-mat.h, ov-base-scalar.cc, ov-base-scalar.h,
ov-base-sparse.h, ov-base.cc, ov-base.h, ov-cell.cc, ov-cell.h,
ov-ch-mat.cc, ov-class.cc, ov-class.h, ov-classdef.cc,
ov-fcn-handle.cc, ov-java.cc, ov-lazy-idx.h, ov-perm.cc, ov-perm.h,
ov-range.h, ov-str-mat.cc, ov-struct.cc, ov-struct.h, ov-usr-fcn.cc,
ov-usr-fcn.h, ov.cc, ov.h, ovl.cc, octave.cc, bp-table.cc, jit-ir.cc,
jit-ir.h, jit-typeinfo.cc, jit-typeinfo.h, jit-util.h, lex.h, lex.ll,
oct-lvalue.cc, oct-parse.yy, parse.h, profiler.h, pt-eval.cc,
pt-eval.h, pt-jit.cc, pt-jit.h, pt-pr-code.cc, pt-tm-const.cc,
pt-tm-const.h, Array.h, CMatrix.cc, DiagArray2.h, PermMatrix.h,
Sparse.h, dMatrix.cc, fCMatrix.cc, fMatrix.cc, bsxfun-defs.cc,
oct-fftw.cc, oct-fftw.h, randpoisson.cc, sparse-chol.cc,
mx-inlines.cc, file-ops.cc, lo-sysdep.cc, oct-env.cc, oct-time.cc,
action-container.cc, action-container.h, base-list.h, caseless-str.h,
cmd-edit.cc, cmd-hist.cc, data-conv.cc, data-conv.h, f77-fcn.h,
file-info.cc, file-info.h, kpse.cc, kpse.h, lo-cutils.h, lo-hash.h,
lo-regexp.cc, oct-base64.cc, oct-base64.h, oct-binmap.h, oct-glob.cc,
oct-shlib.cc, oct-shlib.h, oct-sort.cc, oct-sparse.h, oct-string.cc,
quit.cc, unwind-prot.h, url-transfer.cc, main.in.cc, mkoctfile.in.cc,
and shared-fcns.h.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 28 Apr 2021 22:57:42 -0400 |
parents | 3d34b70b5a49 |
children | 9367cba2a6d5 |
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 // |
29358
0a5b15007766
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
29049
diff
changeset
|
3 // Copyright (C) 2013-2021 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" |
16735
cee305c91e91
show help menu in editors context menu only for octave files
Torsten <ttl@justmail.de>
parents:
16733
diff
changeset
|
62 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
63 #include "builtin-defun-decls.h" |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
64 #include "cmd-edit.h" |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
65 #include "interpreter-private.h" |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
66 #include "interpreter.h" |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
67 |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
68 // 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
|
69 // 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
|
70 // 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
|
71 // 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
|
72 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
73 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
|
74 { |
27101
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
75 static bool |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
76 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
|
77 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
78 bool retval = false; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
79 |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
80 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
|
81 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
82 if (candidate == "until") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
83 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
84 } |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
85 else |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
86 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
87 if (candidate == "end") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
88 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
89 else |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
90 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
91 if (opening == "try") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
92 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
93 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
|
94 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
95 } |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
96 else if (opening == "unwind_protect") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
97 { |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
98 if (candidate == "unwind_protect_cleanup" |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
99 || candidate == "end_unwind_protect") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
100 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
101 } |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
102 else if (candidate == "end" + opening) |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
103 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
104 else if (opening == "if" && candidate == "else") |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
105 retval = true; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
106 } |
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 return retval; |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
110 } |
097774bed4ed
move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
26634
diff
changeset
|
111 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
112 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
|
113 : 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
|
114 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
|
115 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
|
116 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
|
117 { |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
118 connect (this, &octave_qscintilla::textChanged, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
119 this, &octave_qscintilla::text_changed); |
18689
fac35875f6eb
update enabled status of undo/redo actions in the editor
Torsten <ttl@justmail.de>
parents:
18687
diff
changeset
|
120 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
121 connect (this, &octave_qscintilla::cursorPositionChanged, |
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
122 this, &octave_qscintilla::cursor_position_changed); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
123 |
29542
3d34b70b5a49
connect many Qt signals and slots without SIGNAL and SLOT macros
John W. Eaton <jwe@octave.org>
parents:
29498
diff
changeset
|
124 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
|
125 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
|
126 Qt::QueuedConnection); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
127 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
128 // 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
|
129 QsciCommandSet *cmd_set = standardCommands (); |
18675
c199304dfb2a
handling qscintilla internal shortcuts and commands depending on qsci version
Torsten <ttl@justmail.de>
parents:
18656
diff
changeset
|
130 |
25523
5daeb4049088
gui: fix editor rendering on some displays, disable QScintilla buffered drawing
Mike Miller <mtmiller@octave.org>
parents:
25103
diff
changeset
|
131 // 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
|
132 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
|
133 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21578
diff
changeset
|
134 #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
|
135 // 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
|
136 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
|
137 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
|
138 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
|
139 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
|
140 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
|
141 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
|
142 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
|
143 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
|
144 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
|
145 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
|
146 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
|
147 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
|
148 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
|
149 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
|
150 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
|
151 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
|
152 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
|
153 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
|
154 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
|
155 #else |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
156 // 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
|
157 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
|
158 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
|
159 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
160 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
|
161 switch (cmd_key) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
162 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
163 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
|
164 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
|
165 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
|
166 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
|
167 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
|
168 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
|
169 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
|
170 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
|
171 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
|
172 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
|
173 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
|
174 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
|
175 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
|
176 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
|
177 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
|
178 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
|
179 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
|
180 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
|
181 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
|
182 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
|
183 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
|
184 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
|
185 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
186 } |
18675
c199304dfb2a
handling qscintilla internal shortcuts and commands depending on qsci version
Torsten <ttl@justmail.de>
parents:
18656
diff
changeset
|
187 #endif |
18954
c6b89c4a9e63
Swap Ctrl and Meta in Qscintilla shortcut list for mac (bug #41217)
pantxo <pantxo.diribarne@gmail.com>
parents:
18767
diff
changeset
|
188 |
c6b89c4a9e63
Swap Ctrl and Meta in Qscintilla shortcut list for mac (bug #41217)
pantxo <pantxo.diribarne@gmail.com>
parents:
18767
diff
changeset
|
189 #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
|
190 // 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
|
191 // 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
|
192 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
|
193 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
|
194 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
195 // Primary key |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
196 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
|
197 |
25951 | 198 if (static_cast<int> (key | Qt::META) == key |
199 && 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
|
200 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
|
201 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
|
202 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
|
203 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
204 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
|
205 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
206 // Alternate key |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
207 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
|
208 |
25951 | 209 if (static_cast<int> (key | Qt::META) == key |
210 && 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
|
211 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
|
212 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
|
213 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
|
214 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
215 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
|
216 } |
18954
c6b89c4a9e63
Swap Ctrl and Meta in Qscintilla shortcut list for mac (bug #41217)
pantxo <pantxo.diribarne@gmail.com>
parents:
18767
diff
changeset
|
217 #endif |
20986
00835323fb44
prevent shortcut ambiguity between main and editor window
Torsten <ttl@justmail.de>
parents:
20955
diff
changeset
|
218 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
219 // selection markers |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
220 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
221 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
|
222 if (m_indicator_id == -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
223 m_indicator_id = 1; |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
224 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
225 setIndicatorDrawUnder (true, m_indicator_id); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
226 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
227 markerDefine (QsciScintilla::Minus, marker::selection); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
228 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
229 // 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
|
230 emit status_update (isUndoAvailable (), isRedoAvailable ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
231 } |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
232 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
233 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
|
234 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
235 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
|
236 ic.setAlphaF (0.45); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
237 setIndicatorForegroundColor (ic, m_indicator_id); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
238 setIndicatorOutlineColor (ic, m_indicator_id); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
239 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
240 setMarkerForegroundColor (c, marker::selection); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
241 setMarkerBackgroundColor (c, marker::selection); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
242 } |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
243 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
244 // context menu requested |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
245 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
|
246 { |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21578
diff
changeset
|
247 #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
|
248 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
|
249 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
|
250 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
251 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
|
252 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
253 // 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
|
254 if (e->reason () == QContextMenuEvent::Mouse) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
255 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
256 // context menu by mouse |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
257 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
|
258 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
|
259 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
|
260 in_left_margin = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
261 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
262 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
263 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
264 // 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
|
265 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
|
266 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
|
267 editor_rect.moveTopLeft |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
268 (parentWidget ()->mapToGlobal (editor_rect.topLeft ())); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
269 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
|
270 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
|
271 } |
16735
cee305c91e91
show help menu in editors context menu only for octave files
Torsten <ttl@justmail.de>
parents:
16733
diff
changeset
|
272 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21578
diff
changeset
|
273 #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
|
274 if (! in_left_margin) |
21371
dc3252099232
Allow GUI build with QScintilla 2.4 (bug #47226).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21301
diff
changeset
|
275 #endif |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
276 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
277 // 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
|
278 emit create_context_menu_signal (context_menu); |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
279 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
280 // 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
|
281 context_menu->addSeparator (); // separator before custom entries |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
282 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
283 // 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
|
284 // (only for octave files) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
285 QString lexer_name = lexer ()->lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
286 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
|
287 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
288 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
|
289 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
|
290 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
291 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
|
292 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
|
293 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
|
294 + ' ' + 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
|
295 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
|
296 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
|
297 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
|
298 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
299 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
300 } |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21578
diff
changeset
|
301 #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
|
302 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
303 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
304 // 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
|
305 QList<QAction *> all_actions = context_menu->actions (); |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
306 |
27676
ea7d36e9f197
use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents:
27672
diff
changeset
|
307 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
|
308 context_menu->removeAction (a); |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
309 |
27676
ea7d36e9f197
use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents:
27672
diff
changeset
|
310 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
|
311 = 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
|
312 &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
|
313 act->setData (local_pos); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
314 } |
21371
dc3252099232
Allow GUI build with QScintilla 2.4 (bug #47226).
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21301
diff
changeset
|
315 #endif |
16735
cee305c91e91
show help menu in editors context menu only for octave files
Torsten <ttl@justmail.de>
parents:
16733
diff
changeset
|
316 |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
317 // finally show the menu |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
318 context_menu->exec (global_pos); |
20277
48d9001bdee3
Avoid HAVE_ macros in header file.
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
319 #endif |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
320 } |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
321 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
322 // 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
|
323 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
|
324 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
325 if (documentation) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
326 emit show_doc_signal (m_word_at_cursor); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
327 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
328 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
|
329 } |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
330 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
331 // 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
|
332 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
|
333 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
334 if (get_actual_word ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
335 contextmenu_edit (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
336 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
337 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
338 // 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
|
339 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
|
340 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
341 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
|
342 { |
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
343 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
|
344 |
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
345 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
|
346 ([] (interpreter&) |
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
347 { 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
|
348 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
349 } |
17628
99ffa521ecec
Add possibility to edit the function related to the actual keyword in editor
Torsten <ttl@justmail.de>
parents:
17627
diff
changeset
|
350 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
351 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
|
352 QPoint *local_pos) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
353 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
354 long position = SendScintilla (SCI_GETCURRENTPOS); |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
355 long point_x = SendScintilla (SCI_POINTXFROMPOSITION,0,position); |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
356 long point_y = SendScintilla (SCI_POINTYFROMPOSITION,0,position); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
357 *local_pos = QPoint (point_x,point_y); // local cursor position |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
358 *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
|
359 } |
17635
7945344506ae
Add possibility to run selected text of the editor in the terminal
Torsten <ttl@justmail.de>
parents:
17628
diff
changeset
|
360 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
361 // 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
|
362 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
|
363 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
364 QPoint global_pos, local_pos; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
365 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
|
366 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
|
367 QString lexer_name = lexer ()->lexer (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
368 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
|
369 && ! m_word_at_cursor.isEmpty ()); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
370 } |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
371 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
372 // 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
|
373 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
|
374 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
375 int end_pos = text ().length (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
376 int end_line, end_col; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
377 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
|
378 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
|
379 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
380 markerDeleteAll (marker::selection); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
381 } |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
20986
diff
changeset
|
382 |
28364
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
383 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
|
384 { |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
385 switch (eolMode ()) |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
386 { |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
387 case QsciScintilla::EolWindows: |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
388 return ("\r\n"); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
389 case QsciScintilla::EolMac: |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
390 return ("\r"); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
391 case QsciScintilla::EolUnix: |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
392 return ("\n"); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
393 } |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
394 |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
395 // 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
|
396 return ("\r\n"); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
397 } |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
398 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
399 // 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
|
400 // is taken into account. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
401 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
|
402 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
403 *pos = SendScintilla (QsciScintillaBase::SCI_GETCURRENTPOS); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
404 *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
|
405 *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
|
406 } |
20986
00835323fb44
prevent shortcut ambiguity between main and editor window
Torsten <ttl@justmail.de>
parents:
20955
diff
changeset
|
407 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
408 // 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
|
409 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
|
410 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
411 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
|
412 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
413 switch (lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
414 { |
24222
7d1561c9ee48
prevent ignoring octave lexer when determining comment string (bug #52364)
Torsten <mttl@mailbox.org>
parents:
24190
diff
changeset
|
415 #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
|
416 #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
|
417 case SCLEX_OCTAVE: |
24222
7d1561c9ee48
prevent ignoring octave lexer when determining comment string (bug #52364)
Torsten <mttl@mailbox.org>
parents:
24190
diff
changeset
|
418 #else |
7d1561c9ee48
prevent ignoring octave lexer when determining comment string (bug #52364)
Torsten <mttl@mailbox.org>
parents:
24190
diff
changeset
|
419 case SCLEX_MATLAB: |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
420 #endif |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
421 { |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
422 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
|
423 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
|
424 int comment_string; |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
425 |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
426 if (comment) |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
427 { |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
428 // The commenting string is requested |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25527
diff
changeset
|
429 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
|
430 // 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
|
431 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
|
432 else |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
433 // old version (combo box) |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25527
diff
changeset
|
434 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
|
435 ed_comment_str.def).toInt (); |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
436 |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25527
diff
changeset
|
437 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
|
438 } |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
439 else |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
440 { |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
441 QStringList c_str; |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
442 |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
443 // 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
|
444 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
|
445 |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25527
diff
changeset
|
446 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
|
447 { |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
448 if (1 << i & comment_string) |
25617
44d638d5eea5
reorganize constants for preferences keys and default values
Torsten <mttl@mailbox.org>
parents:
25527
diff
changeset
|
449 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
|
450 } |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
451 |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
452 return c_str; |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
453 } |
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
454 |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
455 } |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
456 #endif |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
457 |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
458 case SCLEX_PERL: |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
459 case SCLEX_BASH: |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
460 case SCLEX_DIFF: |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
461 return QStringList ("#"); |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
462 |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
463 case SCLEX_CPP: |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
464 return QStringList ("//"); |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
465 |
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
466 case SCLEX_BATCH: |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
467 return QStringList ("REM "); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
468 } |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
469 |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
470 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
|
471 } |
23234
aaf20024db6f
function providing comment strings uses lexer number and not lexer names
Torsten <mttl@mailbox.org>
parents:
23230
diff
changeset
|
472 |
24475
8cb985e362f3
Allow uncommenting with any kind of comment (bug #52695):
Torsten <mttl@mailbox.org>
parents:
24232
diff
changeset
|
473 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
474 // 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
|
475 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
|
476 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
477 int position; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
478 if (pos < 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
479 // 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
|
480 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
|
481 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
482 position = pos; |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
483 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
484 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
|
485 } |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
486 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
487 // 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
|
488 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
|
489 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
490 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
|
491 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
|
492 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
493 switch (lexer) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
494 { |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
495 case SCLEX_CPP: |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27223
diff
changeset
|
496 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
|
497 || style == QsciLexerCPP::CommentLineDoc) |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27223
diff
changeset
|
498 + 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
|
499 || style == QsciLexerCPP::CommentDoc |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
500 || style == QsciLexerCPP::CommentDocKeyword |
27276
7455523fdf01
style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents:
27223
diff
changeset
|
501 || style == QsciLexerCPP::CommentDocKeywordError)); |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
502 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
503 #if defined (HAVE_LEXER_MATLAB) |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
504 case SCLEX_MATLAB: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
505 return (ST_LINE_COMMENT * (style == QsciLexerMatlab::Comment)); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
506 #endif |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
507 #if defined (HAVE_LEXER_OCTAVE) |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
508 case SCLEX_OCTAVE: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
509 return (ST_LINE_COMMENT * (style == QsciLexerOctave::Comment)); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
510 #endif |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
511 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
512 case SCLEX_PERL: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
513 return (ST_LINE_COMMENT * (style == QsciLexerPerl::Comment)); |
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 case SCLEX_BATCH: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
516 return (ST_LINE_COMMENT * (style == QsciLexerBatch::Comment)); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
517 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
518 case SCLEX_DIFF: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
519 return (ST_LINE_COMMENT * (style == QsciLexerDiff::Comment)); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
520 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
521 case SCLEX_BASH: |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
522 return (ST_LINE_COMMENT * (style == QsciLexerBash::Comment)); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
523 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
524 } |
23688
cb36684b7a33
In the GUI editor, automatically add "endif" for "if" etc.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
23449
diff
changeset
|
525 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
526 return ST_NONE; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
527 } |
23689
b729e97aa8d1
move smart indendation from file_editor_tab to octave_qscintilla
Torsten <mttl@mailbox.org>
parents:
23688
diff
changeset
|
528 |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
529 // 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
|
530 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
|
531 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
|
532 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
533 QString prevline = text (line); |
23771
ed492a5a47fd
eliminate duplicate code in editor smart indentation and auto close
Torsten <mttl@mailbox.org>
parents:
23735
diff
changeset
|
534 |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
535 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
|
536 "|do|function|properties|events|classdef" |
26480
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
537 "|unwind_protect|try" |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
538 "|parfor|methods)" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
539 "[\r]?[\n\t #%]"); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
540 // 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
|
541 // 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
|
542 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
543 // last word except for comments, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
544 // allowing % and # in single or double quoted strings |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
545 // 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
|
546 QRegExp ekey = QRegExp ("(?:(?:['\"][^'\"]*['\"])?[^%#]*)*" |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
547 "(\\w+)[ \t;\r\n]*(?:[%#].*)?$"); |
23771
ed492a5a47fd
eliminate duplicate code in editor smart indentation and auto close
Torsten <mttl@mailbox.org>
parents:
23735
diff
changeset
|
548 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
549 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
|
550 int epos; |
23771
ed492a5a47fd
eliminate duplicate code in editor smart indentation and auto close
Torsten <mttl@mailbox.org>
parents:
23735
diff
changeset
|
551 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
552 if (bpos > -1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
553 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
554 // 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
|
555 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
556 // 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
|
557 epos = ekey.indexIn (prevline, bpos); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
558 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
|
559 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
|
560 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
561 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
|
562 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
563 // 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
|
564 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
|
565 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
|
566 } |
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 if (do_auto_close |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
569 && ! inline_end |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
570 && ! 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
|
571 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
572 // Do auto close |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
573 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
|
574 } |
23689
b729e97aa8d1
move smart indendation from file_editor_tab to octave_qscintilla
Torsten <mttl@mailbox.org>
parents:
23688
diff
changeset
|
575 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
576 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
577 } |
23689
b729e97aa8d1
move smart indendation from file_editor_tab to octave_qscintilla
Torsten <mttl@mailbox.org>
parents:
23688
diff
changeset
|
578 |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
579 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
|
580 "[\r]?[\t #%\n]"); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
581 if (prevline.contains (mkey)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
582 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
583 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
|
584 int act_ind = indentation (line); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
585 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
586 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
|
587 unindent (line); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
588 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
|
589 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
590 setIndentation (line+1, prev_ind); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
591 setCursorPosition (line+1, prev_ind); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
592 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
593 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
594 } |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
595 |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
596 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
|
597 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
|
598 { |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
599 QString last_line = text (line-1); |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
600 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
|
601 |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
602 if (last_line.contains ("switch")) |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
603 { |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
604 indent (line+1); |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
605 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
|
606 } |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
607 else |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
608 unindent (line); |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
609 |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
610 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
|
611 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
|
612 } |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
613 |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
614 ekey = QRegExp ("^[\t ]*(?:end|endif|endfor|endwhile|until|endfunction" |
26480
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
615 "|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
|
616 if (prevline.contains (ekey)) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
617 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
618 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
|
619 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
620 unindent (line+1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
621 unindent (line); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
622 setCursorPosition (line+1, |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
623 indentation (line)); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
624 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
625 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
626 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
627 } |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
628 |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
27455
diff
changeset
|
629 // 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
|
630 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
|
631 int lineTo) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
632 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
633 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
|
634 |
27912
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
635 // 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
|
636 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
|
637 = QRegExp ("(?:(?:['\"][^'\"]*['\"])?[^%#]*)*" |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
638 "(?: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
|
639 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
640 QRegExp begin_block_regexp |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
641 = 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
|
642 "|for|while|do|parfor" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
643 "|switch|case|otherwise" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
644 "|function" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
645 "|classdef|properties|events|enumeration|methods" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
646 "|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
|
647 "[\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
|
648 |
26480
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
649 QRegExp mid_block_regexp |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
650 = QRegExp ("^[\t ]*(?:elseif|else" |
26480
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
651 "|otherwise" |
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
652 "|unwind_protect_cleanup|catch)" |
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
653 "[\r\n\t #%]"); |
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
654 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
655 QRegExp end_block_regexp |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
656 = QRegExp ("^[\t ]*(?:end" |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
657 "|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
|
658 "|classdef|enumeration|events|methods|properties)" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
659 "|end_(try_catch|unwind_protect)" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
660 "|until)" |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
661 "[\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
|
662 |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
663 QRegExp case_block_regexp |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
664 = 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
|
665 "[\r\n\t #%]"); |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
666 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
667 int indent_column = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
668 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
|
669 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
|
670 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
671 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
|
672 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
673 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
|
674 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
675 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
|
676 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
677 // 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
|
678 // 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
|
679 // 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
|
680 // 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
|
681 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
682 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
|
683 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
684 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
|
685 { |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
686 indent_column += indent_increment; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
687 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
|
688 in_switch = true; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
689 } |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
690 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
691 break; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
692 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
693 } |
24232
e0bcd17ac070
smart indentation for selections or current line in code editor
John W. Eaton <jwe@octave.org>
parents:
24222
diff
changeset
|
694 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
695 if (indent_column < 0) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
696 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
|
697 |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
698 QString prev_line; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
699 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
|
700 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
701 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
|
702 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
703 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
|
704 { |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
705 indent_column -= indent_increment; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
706 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
|
707 { |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
708 // 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
|
709 if (in_switch) |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
710 indent_column -= indent_increment; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
711 in_switch = false; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
712 } |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
713 } |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
714 |
26480
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
715 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
|
716 indent_column -= indent_increment; |
26480
4203f6e0cd7d
Allow indent of mid block keywords (#55276)
John Donoghue
parents:
26376
diff
changeset
|
717 |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
718 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
|
719 { |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
720 if (case_block_regexp.indexIn (prev_line) < 0 |
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27912
diff
changeset
|
721 && !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
|
722 indent_column -= indent_increment; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
723 in_switch = true; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
724 } |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
725 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
726 setIndentation (line, indent_column); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
727 |
27912
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
728 |
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
729 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
|
730 if (bpos > -1) |
26634
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
731 { |
27912
84d6abff1006
Do not indent next line on single line constructs (Bug #57358).
John Donoghue <john.donoghue@ieee.org>
parents:
27909
diff
changeset
|
732 // 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
|
733 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
|
734 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
|
735 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
|
736 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
|
737 in_switch = true; |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
738 } |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
739 |
48ddf51a6ef7
Update smart indent code for case/otherwise (Bug #55276)
John Donoghue <john.donoghue@ieee.org>
parents:
26480
diff
changeset
|
740 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
|
741 prev_line = line_text; |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
742 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
743 } |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
744 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
745 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
|
746 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
747 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
|
748 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
749 if (word.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
750 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
751 m_selection_line = -1; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
752 m_selection_col = -1; |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
753 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
754 m_selection_replacement = ""; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
755 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
756 clear_selection_markers (); |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
757 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
758 QToolTip::hideText (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
759 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
760 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
761 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
762 int pos; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
763 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
|
764 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
765 } |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
766 |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26634
diff
changeset
|
767 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
|
768 { |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26634
diff
changeset
|
769 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
|
770 |
27455
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26634
diff
changeset
|
771 if (l1 == l2) |
e92bab9a7f26
fix editors search and replace in selection (bug #56405)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
26634
diff
changeset
|
772 markerAdd (l1, marker::selection); |
24716
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 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
775 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
|
776 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
777 contextmenu_help_doc (false); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
778 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
779 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
780 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
|
781 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
782 contextmenu_help_doc (true); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
783 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
784 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
785 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
|
786 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
787 if (get_actual_word ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
788 contextmenu_help_doc (documentation); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
789 } |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
790 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
791 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
|
792 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
793 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
|
794 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
795 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
796 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
|
797 { |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
798 QMessageBox::critical (this, tr ("Octave Editor"), |
27935
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
799 tr ("Creating temporary files failed.\n" |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
800 "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
|
801 "%1\n\n" |
f1844e33f621
maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents:
27929
diff
changeset
|
802 "\"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
|
803 } |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
804 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
805 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
|
806 { |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
807 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
|
808 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
809 // 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
|
810 // 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
|
811 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
|
812 QString hist = QString (); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
813 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
814 // 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
|
815 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
|
816 #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
|
817 Qt::SkipEmptyParts); |
461bd8b9ce91
use Qt::SplitBehavior enum and values if available
John W. Eaton <jwe@octave.org>
parents:
28985
diff
changeset
|
818 #else |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
819 QString::SkipEmptyParts); |
29049
461bd8b9ce91
use Qt::SplitBehavior enum and values if available
John W. Eaton <jwe@octave.org>
parents:
28985
diff
changeset
|
820 #endif |
461bd8b9ce91
use Qt::SplitBehavior enum and values if available
John W. Eaton <jwe@octave.org>
parents:
28985
diff
changeset
|
821 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
|
822 { |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
823 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
|
824 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
|
825 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
|
826 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
|
827 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
|
828 QString line_history = line; |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
829 |
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
|
830 // 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
|
831 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
|
832 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
|
833 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
|
834 { |
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
|
835 // 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
|
836 // 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
|
837 next_bp_quiet = "__db_next_breakpoint_quiet__;\n"; |
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
|
838 next_bp_quiet_reset = "__db_next_breakpoint_quiet__(false);\n"; |
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
|
839 } |
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
|
840 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
841 // 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
|
842 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
|
843 hist += line_history + "\n"; |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
844 } |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
845 |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
846 octave_stdout << hist.toStdString (); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
847 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
848 // 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
|
849 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
|
850 = 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
|
851 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
852 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
|
853 if (! tmp) |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
854 { |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
855 // 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
|
856 contextmenu_run_temp_error (); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
857 return; |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
858 } |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
859 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
860 tmp_file->close (); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
861 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
862 // 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
|
863 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
|
864 = 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
|
865 |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
866 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
|
867 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
|
868 { |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
869 // 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
|
870 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
|
871 return; |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
872 } |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
873 |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
874 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
|
875 |
28283
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
876 // 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
|
877 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28848
diff
changeset
|
878 ([=] (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
|
879 { |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
880 // INTERPRETER THREAD |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
881 |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
882 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
|
883 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
|
884 |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
885 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
|
886 }); |
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
887 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
888 // Disable opening a file at a breakpoint in case keyboard () is used |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
889 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
|
890 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
|
891 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
|
892 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
893 // 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
|
894 emit interpreter_event |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28848
diff
changeset
|
895 ([=] (interpreter& interp) |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
896 { |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
897 // INTERPRETER THREAD |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
898 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
899 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
|
900 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
901 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
|
902 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
903 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
|
904 |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
905 // 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
|
906 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
|
907 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
|
908 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
|
909 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
|
910 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
|
911 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
|
912 |
27652
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
913 try |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
914 { |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
915 // 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
|
916 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
|
917 } |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29054
diff
changeset
|
918 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
|
919 { |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
920 // 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
|
921 // 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
|
922 |
27696
cf231bc5876f
improve error messages when executing slected code by F9 (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27687
diff
changeset
|
923 // 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
|
924 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
|
925 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
|
926 |
cf231bc5876f
improve error messages when executing slected code by F9 (bug #57205)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27687
diff
changeset
|
927 // 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
|
928 // 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
|
929 // 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
|
930 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
|
931 { |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
932 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
|
933 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
|
934 { |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
935 // 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
|
936 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
|
937 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
|
938 } |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
939 else |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
940 { |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
941 // 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
|
942 // 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
|
943 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
|
944 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
|
945 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
|
946 |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
947 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
|
948 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
|
949 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
|
950 |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
951 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
|
952 { |
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
953 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
|
954 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
|
955 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
|
956 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
|
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 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
|
959 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
|
960 } |
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 } |
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
|
963 } |
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
|
964 |
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
|
965 // 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
|
966 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
|
967 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
|
968 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
969 // 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
|
970 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
|
971 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
|
972 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
|
973 |
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
|
974 // 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
|
975 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
|
976 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
|
977 |
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
|
978 // Throw |
29163
8f67ad8b3103
maint: Updating naming conventions for exceptions and use const where possible.
Rik <rik@octave.org>
parents:
29054
diff
changeset
|
979 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
|
980 } |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
981 |
f18e48749a7a
fix running selected code by F9 in case of errors during execution
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27629
diff
changeset
|
982 // 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
|
983 |
28281
12ad6f1dc3b6
run slelected editor code as block, not line by line (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28274
diff
changeset
|
984 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
|
985 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
|
986 dbg, auto_repeat); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
987 |
27753
dcf6569cd973
prevent empty lines when using F9 for executing slected code (bug #57243)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27752
diff
changeset
|
988 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
|
989 command_editor::replace_line (""); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
990 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
|
991 command_editor::redisplay (); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
992 command_editor::interrupt_event_loop (); |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
993 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
|
994 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
|
995 |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
996 }); |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
997 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
998 |
28283
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
999 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
|
1000 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
|
1001 bool dbg, bool auto_repeat) |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1002 { |
28985
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1003 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
|
1004 |
28283
777eb315b004
add selection to history before evaluation of selected code (bug #58323)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28281
diff
changeset
|
1005 // 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
|
1006 // 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
|
1007 // 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
|
1008 // 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
|
1009 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
|
1010 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
|
1011 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
|
1012 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
|
1013 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
|
1014 |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1015 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
|
1016 ([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
|
1017 { |
47107a0979cd
avoid repeating last command when using F9 in debug mode (bug #57634)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28544
diff
changeset
|
1018 // 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
|
1019 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
|
1020 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
|
1021 }); |
27556
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1022 } |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1023 |
410622ac120f
improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27461
diff
changeset
|
1024 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1025 // 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
|
1026 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1027 // 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
|
1028 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
|
1029 { |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1030 #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
|
1031 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
|
1032 QPoint local_pos = action->data ().value<QPoint> (); |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1033 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1034 // 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
|
1035 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
|
1036 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
|
1037 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1038 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
|
1039 #endif |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1040 } |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1041 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1042 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
|
1043 { |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1044 #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
|
1045 emit context_menu_break_once (lineAt (local_pos)); |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1046 #endif |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1047 } |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1048 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1049 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
|
1050 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1051 emit status_update (isUndoAvailable (), isRedoAvailable ()); |
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 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1054 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
|
1055 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1056 // 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
|
1057 // 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
|
1058 // 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
|
1059 // selection until it is complete. |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
1060 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1061 if (! m_selection.isEmpty () |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1062 && (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
|
1063 set_word_selection (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1064 } |
24172
90903d915625
improve handling of selection markers in editor
John W. Eaton <jwe@octave.org>
parents:
24171
diff
changeset
|
1065 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1066 // 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
|
1067 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
|
1068 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1069 emit status_update (isUndoAvailable (), isRedoAvailable ()); |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1070 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1071 QsciScintilla::focusInEvent (focusEvent); |
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::show_replace_action_tooltip (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 int pos; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1077 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
|
1078 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1079 // Offer to replace other instances. |
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 QKeySequence keyseq = Qt::SHIFT + Qt::Key_Return; |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1082 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1083 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
|
1084 . arg (keyseq.toString ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1085 . arg (m_selection) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1086 . arg (m_selection_replacement)); |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1087 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1088 QPoint global_pos; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1089 QPoint local_pos; |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1090 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1091 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
|
1092 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1093 QFontMetrics ttfm (QToolTip::font ()); |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1094 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1095 // 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
|
1096 // 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
|
1097 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1098 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
|
1099 |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1100 QToolTip::showText (global_pos, msg); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1101 } |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1102 |
28364
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1103 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
|
1104 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
|
1105 { |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1106 // 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
|
1107 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
|
1108 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
|
1109 |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1110 // 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
|
1111 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
|
1112 |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1113 // 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
|
1114 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
|
1115 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
|
1116 // 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
|
1117 beginUndoAction (); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1118 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
|
1119 { |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1120 // 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
|
1121 // 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
|
1122 replace (n_str); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1123 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
|
1124 |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1125 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
|
1126 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
|
1127 } |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1128 endUndoAction (); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1129 |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1130 // restore the visible area |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1131 setFirstVisibleLine (first_line); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1132 |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1133 // fix cursor column if outside of new line length |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1134 int eol_len = eol_string ().length (); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1135 if (line == lines () - 1) |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1136 eol_len = 0; |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1137 const int col_max = text (line).length () - eol_len; |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1138 if (col_max < col) |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1139 col = col_max; |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1140 |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1141 setCursorPosition (line, col); |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1142 } |
44f2d73df4b3
remove trailing spaces without replacing full editor text (bug #58417)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28283
diff
changeset
|
1143 |
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
|
1144 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
|
1145 { |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1146 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
|
1147 { |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1148 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
|
1149 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
|
1150 QStringList symbol_names |
03c0024f95c7
avoid using bare pointers for symbol lists in editor (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28798
diff
changeset
|
1151 = m_octave_qobj.get_workspace_model ()->get_symbol_names (); |
03c0024f95c7
avoid using bare pointers for symbol lists in editor (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28798
diff
changeset
|
1152 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
|
1153 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
|
1154 { |
28809
03c0024f95c7
avoid using bare pointers for symbol lists in editor (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28798
diff
changeset
|
1155 QStringList symbol_values |
03c0024f95c7
avoid using bare pointers for symbol lists in editor (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28798
diff
changeset
|
1156 = 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
|
1157 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
|
1158 + " = " + 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
|
1159 } |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1160 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
|
1161 { |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1162 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
|
1163 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
|
1164 } |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1165 |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1166 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
|
1167 } |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1168 |
28848
751afb1ee1d0
avoid GUI crash happening after changeset 82ccc4e69ba3 (bug #56990)
John W. Eaton <jwe@octave.org>
parents:
28809
diff
changeset
|
1169 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
|
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 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1172 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
|
1173 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1174 if (m_selection.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1175 QsciScintilla::keyPressEvent (key_event); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1176 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1177 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1178 int key = key_event->key (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1179 Qt::KeyboardModifiers modifiers = key_event->modifiers (); |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1180 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1181 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
|
1182 { |
28365
2969b94cac9f
simplify code for replacing all highlighted occurrences in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28364
diff
changeset
|
1183 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
|
1184 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
|
1185 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1186 // Clear the selection. |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1187 set_word_selection (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1188 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1189 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1190 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1191 // 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
|
1192 // 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
|
1193 // 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
|
1194 // 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
|
1195 // 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
|
1196 // DEL and ESC here? |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1197 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1198 QString text = key_event->text (); |
24190
90fe16a3a5a1
improve selection replacement in editor
John W. Eaton <jwe@octave.org>
parents:
24187
diff
changeset
|
1199 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1200 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
|
1201 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1202 if (key == Qt::Key_Backspace) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1203 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1204 if (m_selection_replacement.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1205 cancel_replacement = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1206 else |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1207 m_selection_replacement.chop (1); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1208 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1209 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
|
1210 cancel_replacement = true; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1211 else if (! text.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1212 m_selection_replacement += text; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1213 else if (modifiers != Qt::ShiftModifier) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1214 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
|
1215 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1216 // 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
|
1217 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1218 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
|
1219 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1220 if (cancel_replacement) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1221 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
|
1222 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1223 if (! m_selection_replacement.isEmpty ()) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1224 show_replace_action_tooltip (); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1225 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1226 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1227 } |
24187
ff9bd559799b
pop up tooltip message for changing selected words in editor
John W. Eaton <jwe@octave.org>
parents:
24172
diff
changeset
|
1228 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1229 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
|
1230 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
|
1231 { |
27893
465ac679e976
Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents:
27753
diff
changeset
|
1232 // 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
|
1233 // (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
|
1234 // 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
|
1235 // 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
|
1236 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1237 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
|
1238 |
29572
aef11bb4e6d1
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29542
diff
changeset
|
1239 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
|
1240 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1241 // 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
|
1242 // 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
|
1243 // end* (until) (catch) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1244 if (linenr < lines () - 1) |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1245 { |
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
|
1246 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
|
1247 // new one and can not be taken into account |
29572
aef11bb4e6d1
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29542
diff
changeset
|
1248 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
|
1249 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
|
1250 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1251 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
|
1252 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1253 next_line = text (linenr + offset++); |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1254 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
|
1255 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1256 while (linenr + offset < lines () |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1257 && 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
|
1258 |
24716
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1259 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
|
1260 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
|
1261 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
|
1262 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
|
1263 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
|
1264 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1265 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
|
1266 { |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1267 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
|
1268 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
|
1269 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
|
1270 return; |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1271 } |
2b3e0b570e77
move GUI file editor classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24593
diff
changeset
|
1272 } |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1273 |
24020
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1274 // 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
|
1275 // 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
|
1276 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1277 // 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
|
1278 // so add a dummy line. |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1279 if (linenr + 2 == lines ()) |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1280 insertAt (QString ("\n"), linenr + 2, 0); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1281 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1282 // 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
|
1283 if (first_word == "try") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1284 insertAt (QString (start, ' ') |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1285 + (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
|
1286 linenr + 2, 0); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1287 else if (first_word == "unwind_protect") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1288 insertAt (QString (start, ' ') |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1289 + (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
|
1290 linenr + 2, 0); |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1291 |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1292 QString next_line; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1293 if (first_word == "do") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1294 next_line = "until\n"; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1295 else if (first_word == "try") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1296 next_line = "catch\n"; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1297 else if (first_word == "unwind_protect") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1298 next_line = "unwind_protect_cleanup\n"; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1299 else if (autofill_simple_end) |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1300 next_line = "end\n"; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1301 else |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1302 { |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1303 if (first_word == "unwind_protect") |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1304 first_word = '_' + first_word; |
387be1a6c3dc
style fixes for GUI editor
John W. Eaton <jwe@octave.org>
parents:
23807
diff
changeset
|
1305 next_line = "end" + first_word + "\n"; |
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 |
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
|
1308 //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
|
1309 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
|
1310 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
|
1311 } |
25796
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1312 |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1313 void octave_qscintilla::dragEnterEvent (QDragEnterEvent *e) |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1314 { |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1315 // 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
|
1316 // 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
|
1317 // the parent |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1318 if (!e->mimeData ()->hasUrls ()) |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1319 { |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1320 QsciScintilla::dragEnterEvent (e); |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1321 } |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1322 else |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1323 { |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1324 e->ignore(); |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1325 } |
052a0d5dfd2c
Reenable drag and drop of editor text (Bug #54495)
John Donoghue
parents:
25523
diff
changeset
|
1326 } |
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
|
1327 |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1328 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
|
1329 { |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1330 // 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
|
1331 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
|
1332 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
|
1333 |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1334 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
|
1335 } |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1336 |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1337 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
|
1338 { |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1339 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
|
1340 |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1341 // 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
|
1342 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
|
1343 } |
82ccc4e69ba3
show value in editor when hovering over variable in debug mode (bug #56990)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28548
diff
changeset
|
1344 |
23236
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1345 } |
4cd5f975d26c
automatically add a comment string when line breaking in line comments
Torsten <mttl@mailbox.org>
parents:
23234
diff
changeset
|
1346 |
16731
01d523d5f796
add help for word at mouse or text cursor to the editors context menu
Torsten <ttl@justmail.de>
parents:
diff
changeset
|
1347 #endif |