KTextEditor

commandmode.h
1/*
2 SPDX-FileCopyrightText: 2013-2016 Simon St James <kdedevel@etotheipiplusone.com>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#ifndef KATEVI_EMULATED_COMMAND_BAR_COMMANDMODE_H
8#define KATEVI_EMULATED_COMMAND_BAR_COMMANDMODE_H
9
10#include "activemode.h"
11
12#include <QHash>
13
14#include <KCompletion>
15
16namespace KTextEditor
17{
18class ViewPrivate;
19class Command;
20}
21
22namespace KateVi
23{
25class MatchHighlighter;
26class InteractiveSedReplaceMode;
27class Completer;
28class InputModeManager;
29
30class CommandMode : public ActiveMode
31{
32public:
33 CommandMode(EmulatedCommandBar *emulatedCommandBar,
34 MatchHighlighter *matchHighlighter,
35 InputModeManager *viInputModeManager,
36 KTextEditor::ViewPrivate *view,
37 QLineEdit *edit,
38 InteractiveSedReplaceMode *interactiveSedReplaceMode,
39 Completer *completer);
40 ~CommandMode() override
41 {
42 }
43 bool handleKeyPress(const QKeyEvent *keyEvent) override;
44 void editTextChanged(const QString &newText) override;
45 CompletionStartParams completionInvoked(Completer::CompletionInvocation invocationType) override;
46 void completionChosen() override;
47 void deactivate(bool wasAborted) override;
48 QString executeCommand(const QString &commandToExecute);
49
50private:
51 CompletionStartParams activateCommandCompletion();
52 CompletionStartParams activateCommandHistoryCompletion();
53 CompletionStartParams activateSedFindHistoryCompletion();
54 CompletionStartParams activateSedReplaceHistoryCompletion();
55 QString withoutRangeExpression();
56 QString rangeExpression();
57 QString withSedFindTermReplacedWith(const QString &newFindTerm);
58 QString withSedDelimiterEscaped(const QString &text);
59 bool isCursorInFindTermOfSed();
60 bool isCursorInReplaceTermOfSed();
61 QString sedFindTerm();
62 QString sedReplaceTerm();
63 /**
64 * Stuff to do with expressions of the form:
65 *
66 * s/find/replace/<sedflags>
67 */
68 struct ParsedSedExpression {
69 bool parsedSuccessfully;
70 int findBeginPos;
71 int findEndPos;
72 int replaceBeginPos;
73 int replaceEndPos;
74 QChar delimiter;
75 };
76 /**
77 * The "range expression" is the (optional) expression before the command that describes
78 * the range over which the command should be run e.g. '<,'>. @see CommandRangeExpressionParser
79 */
80 CommandMode::ParsedSedExpression parseAsSedExpression();
81 int commandBeforeCursorBegin();
82 QLineEdit *m_edit;
83 InteractiveSedReplaceMode *m_interactiveSedReplaceMode;
84 Completer *m_completer;
85 KCompletion m_cmdCompletion;
86 QHash<QString, KTextEditor::Command *> m_cmdDict;
87 KTextEditor::Command *queryCommand(const QString &cmd) const;
88};
89}
90
91#endif
An Editor command line command.
A KateViewBarWidget that attempts to emulate some of the features of Vim's own command bar,...
The KTextEditor namespace contains all the public API that is required to use the KTextEditor compone...
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Jan 24 2025 11:55:25 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.