• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • applications API Reference
  • KDE Home
  • Contact Us
 

Kate

  • kde-4.14
  • applications
  • kate
  • part
  • vimode
katevivisualmode.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE libraries and the Kate part.
2  *
3  * Copyright (C) 2008 Erlend Hamberg <ehamberg@gmail.com>
4  * Copyright (C) 2011 Svyatoslav Kuzmich <svatoslav1@gmail.com>
5  * Copyright (C) 2012 - 2013 Simon St James <kdedevel@etotheipiplusone.com>
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Library General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Library General Public License for more details.
16  *
17  * You should have received a copy of the GNU Library General Public License
18  * along with this library; see the file COPYING.LIB. If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20  * Boston, MA 02110-1301, USA.
21  */
22 
23 #include "kateglobal.h"
24 #include "kateviglobal.h"
25 #include "katevivisualmode.h"
26 #include "katevirange.h"
27 
28 using KTextEditor::Cursor;
29 using KTextEditor::Range;
30 using KTextEditor::View;
31 
32 #define ADDCMD(STR,FUNC, FLGS) m_commands.push_back( \
33  new KateViCommand( this, STR, &KateViNormalMode::FUNC, FLGS ) );
34 
35 #define ADDMOTION(STR, FUNC, FLGS) m_motions.push_back( new \
36  KateViMotion( this, STR, &KateViNormalMode::FUNC, FLGS ) );
37 
38 KateViVisualMode::KateViVisualMode( KateViInputModeManager* viInputModeManager, KateView *view, KateViewInternal *viewInternal )
39  : KateViNormalMode( viInputModeManager, view, viewInternal )
40 {
41  m_start.setPosition( -1, -1 );
42 
43  m_mode = VisualMode;
44 
45  initializeCommands();
46  connect(m_view, SIGNAL(selectionChanged(KTextEditor::View*)), this, SLOT(updateSelection()));
47 }
48 
49 KateViVisualMode::~KateViVisualMode()
50 {
51 }
52 
53 void KateViVisualMode::SelectInclusive(Cursor c1, Cursor c2) {
54  if ( c1 >= c2 )
55  m_view->setSelection(Range(c1.line(), c1.column() + 1,
56  c2.line(), c2.column()));
57  else
58  m_view->setSelection(Range(c1.line(), c1.column(),
59  c2.line(), c2.column() + 1));
60 }
61 
62 void KateViVisualMode::SelectBlockInclusive(Cursor c1, Cursor c2) {
63  m_view->setBlockSelection(true);
64  if ( c1.column() >= c2.column() )
65  m_view->setSelection(Range(c1.line(), c1.column() + 1,
66  c2.line(), c2.column()));
67  else
68  m_view->setSelection(Range(c1.line(), c1.column(),
69  c2.line(), c2.column() + 1));
70 }
71 
72 
73 
74 void KateViVisualMode::SelectLines(Range range) {
75  int startline = qMin(range.start().line(),range.end().line());
76  int endline = qMax(range.start().line(),range.end().line());
77  m_view->setSelection(Range(Cursor(startline,0),
78  Cursor(endline,m_view->doc()->lineLength(endline)+1)));
79 }
80 
81 void KateViVisualMode::goToPos( const KateViRange &r )
82 {
83  Cursor c = m_view->cursorPosition();
84 
85  if ( r.startLine != -1 && r.startColumn != -1 && c == m_start ) {
86  m_start.setLine( r.startLine );
87  m_start.setColumn( r.startColumn );
88  c.setLine( r.endLine );
89  c.setColumn( r.endColumn );
90  }
91  else if ( r.startLine != -1 && r.startColumn != -1 && m_motionCanChangeWholeVisualModeSelection )
92  {
93  const Cursor textObjectBegin(r.startLine, r.startColumn);
94  if (textObjectBegin < m_start)
95  {
96  m_start.setLine( r.startLine );
97  m_start.setColumn( r.startColumn );
98  c.setLine( r.endLine );
99  c.setColumn( r.endColumn );
100  }
101  }
102  else {
103  c.setLine( r.endLine );
104  c.setColumn( r.endColumn );
105  }
106 
107  if ( c.line() >= doc()->lines() ) {
108  c.setLine( doc()->lines()-1 );
109  }
110 
111  updateCursor( c );
112 
113  // Setting range for a command
114  m_commandRange.startLine = m_start.line();
115  m_commandRange.startColumn = m_start.column();
116  m_commandRange.endLine = c.line();
117  m_commandRange.endColumn = c.column();
118 
119  // If visual mode is blockwise
120  if (isVisualBlock()){
121  SelectBlockInclusive(m_start,c);
122 
123  // Need to correct command range to make it inclusive.
124  if ( (c.line() < m_start.line() && c.column() > m_start.column()) ||
125  (c.line() > m_start.line() && c.column() < m_start.column()) )
126  qSwap(m_commandRange.endColumn, m_commandRange.startColumn);
127 
128  return;
129  } else {
130  m_view->setBlockSelection(false);
131  }
132 
133  // If visual mode is linewise
134  if (isVisualLine()){
135  SelectLines(Range(m_start,c));
136  return;
137  }
138 
139  // If visual mode is charwise
140  SelectInclusive(m_start,c);
141 }
142 
143 void KateViVisualMode::reset()
144 {
145  m_mode = VisualMode;
146 
147  // only switch to normal mode if still in visual mode. commands like c, s, ...
148  // can have switched to insert mode
149  if (m_viInputModeManager->isAnyVisualMode()) {
150 
151  saveRangeMarks();
152  m_lastVisualMode = m_viInputModeManager->getCurrentViMode();
153 
154  // Return the cursor back to start of selection after.
155  if (!m_pendingResetIsDueToExit)
156  {
157  Cursor c = m_view->cursorPosition();
158  if (m_start.line() != -1 && m_start.column() != -1) {
159  if (m_viInputModeManager->getCurrentViMode() == VisualLineMode) {
160  if (m_start.line() < c.line()) {
161  updateCursor(Cursor(m_start.line(),0));
162  m_stickyColumn = -1;
163  }
164  } else {
165  updateCursor(qMin(m_start,c));
166  m_stickyColumn = -1;
167  }
168  }
169  }
170 
171  if (m_viInputModeManager->getPreviousViMode() == InsertMode)
172  startInsertMode();
173  else
174  startNormalMode();
175  }
176 
177  if (!m_commandShouldKeepSelection)
178  m_view->removeSelection();
179  else
180  m_commandShouldKeepSelection = false;
181 
182  m_start.setPosition( -1, -1 );
183 
184  m_pendingResetIsDueToExit = false;
185 }
186 
187 void KateViVisualMode::saveRangeMarks()
188 {
189  // DO NOT save these marks if the
190  // action that exited visual mode deleted the selection
191  if (m_deleteCommand == false) {
192  m_view->getViInputModeManager()->addMark( doc(), '<', m_start );
193  m_view->getViInputModeManager()->addMark( doc(), '>', m_view->cursorPosition() );
194  }
195 }
196 
197 void KateViVisualMode::init()
198 {
199  // when using "gv" we already have a start position
200  if ( !m_start.isValid() ) {
201  m_start = m_view->cursorPosition();
202  }
203 
204  if (isVisualLine()) {
205  Cursor c = m_view->cursorPosition();
206  SelectLines(Range(c,c));
207  }
208 
209  m_commandRange.startLine = m_commandRange.endLine = m_start.line();
210  m_commandRange.startColumn = m_commandRange.endColumn = m_start.column();
211 }
212 
213 void KateViVisualMode::setVisualModeType( ViMode mode )
214 {
215  Q_ASSERT( mode == VisualMode || mode == VisualLineMode || mode == VisualBlockMode );
216  m_mode = mode;
217 }
218 
219 void KateViVisualMode::switchStartEnd()
220 {
221  Cursor c = m_start;
222  m_start = m_view->cursorPosition();
223 
224  updateCursor( c );
225 
226  m_stickyColumn = -1;
227 }
228 
229 void KateViVisualMode::goToPos(const Cursor& c)
230 {
231  KateViRange r;
232  r.endColumn = c.column();
233  r.endLine = c.line();
234  goToPos(r);
235 }
236 
237 void KateViVisualMode::updateSelection( ) {
238  if(!m_view->viInputMode() || (m_viInputModeManager->isHandlingKeypress() && !m_isUndo))
239  return;
240 
241  // If we are there it's already not VisualBlock mode.
242  m_view->setBlockSelection(false);
243 
244  Range r = m_view->selectionRange();
245 
246  // If not valid going back to normal mode
247  if (!r.isValid()) {
248  // Don't screw up the cursor's position. See BUG #337286.
249  m_pendingResetIsDueToExit = true;
250  reset();
251  return;
252  }
253 
254  // If alredy not in visual mode, it's time to go there.
255  if (m_viInputModeManager->getCurrentViMode() != VisualMode)
256  commandEnterVisualMode();
257 
258  if (m_view->cursorPosition() == r.start()) {
259  m_start = r.end();
260  } else {
261  m_start = r.start();
262  }
263 
264  // Set range for commands
265  m_commandRange.startLine = r.start().line();
266  m_commandRange.startColumn = r.start().column();
267  m_commandRange.endLine = r.end().line();
268  // The end of the selectionRange seems to be one space forward of where it should be.
269  m_commandRange.endColumn = r.end().column() - 1;
270 }
271 
272 void KateViVisualMode::initializeCommands()
273 {
274  // Remove the commands put in here by KateViNormalMode
275  qDeleteAll(m_commands);
276  m_commands.clear();
277 
278  // Remove the motions put in here by KateViNormalMode
279  qDeleteAll(m_motions);
280  m_motions.clear();
281 
282  ADDCMD("J", commandJoinLines, IS_CHANGE );
283  ADDCMD("c", commandChange, IS_CHANGE );
284  ADDCMD("s", commandChange, IS_CHANGE );
285  ADDCMD("C", commandChangeToEOL, IS_CHANGE );
286  ADDCMD("S", commandChangeToEOL, IS_CHANGE );
287  ADDCMD("d", commandDelete, IS_CHANGE );
288  ADDCMD("<delete>", commandDelete, IS_CHANGE );
289  ADDCMD("D", commandDeleteToEOL, IS_CHANGE );
290  ADDCMD("x", commandDeleteChar, IS_CHANGE );
291  ADDCMD("X", commandDeleteCharBackward, IS_CHANGE );
292  ADDCMD("gu", commandMakeLowercase, IS_CHANGE );
293  ADDCMD("u", commandMakeLowercase, IS_CHANGE );
294  ADDCMD("gU", commandMakeUppercase, IS_CHANGE );
295  ADDCMD("g~", commandChangeCaseRange, IS_CHANGE );
296  ADDCMD("U", commandMakeUppercase, IS_CHANGE );
297  ADDCMD("y", commandYank, 0 );
298  ADDCMD("Y", commandYankToEOL, 0 );
299  ADDCMD("p", commandPaste, IS_CHANGE );
300  ADDCMD("P", commandPasteBefore, IS_CHANGE );
301  ADDCMD("r.", commandReplaceCharacter, IS_CHANGE | REGEX_PATTERN );
302  ADDCMD(":", commandSwitchToCmdLine, SHOULD_NOT_RESET );
303  ADDCMD("m.", commandSetMark, REGEX_PATTERN | SHOULD_NOT_RESET );
304  ADDCMD(">", commandIndentLines, IS_CHANGE );
305  ADDCMD("<", commandUnindentLines, IS_CHANGE );
306  ADDCMD("<c-c>", commandAbort, 0 );
307  ADDCMD("<c-[>", commandAbort, 0 );
308  ADDCMD("ga", commandPrintCharacterCode, SHOULD_NOT_RESET );
309  ADDCMD("v", commandEnterVisualMode, SHOULD_NOT_RESET );
310  ADDCMD("V", commandEnterVisualLineMode, SHOULD_NOT_RESET );
311  ADDCMD("o", commandToOtherEnd, SHOULD_NOT_RESET );
312  ADDCMD("=", commandAlignLines, SHOULD_NOT_RESET );
313  ADDCMD("~", commandChangeCase, IS_CHANGE );
314  ADDCMD("I", commandPrependToBlock, IS_CHANGE );
315  ADDCMD("A", commandAppendToBlock, IS_CHANGE );
316  ADDCMD("gq", commandFormatLines, IS_CHANGE );
317 
318  ADDCMD("q.", commandStartRecordingMacro, REGEX_PATTERN | SHOULD_NOT_RESET);
319  ADDCMD("@.", commandReplayMacro, REGEX_PATTERN | SHOULD_NOT_RESET);
320  ADDCMD("z.", commandCenterViewOnNonBlank, 0);
321  ADDCMD("zz", commandCenterViewOnCursor, 0);
322  ADDCMD("z<return>", commandTopViewOnNonBlank, 0);
323  ADDCMD("zt", commandTopViewOnCursor, 0);
324  ADDCMD("z-", commandBottomViewOnNonBlank, 0);
325  ADDCMD("zb", commandBottomViewOnCursor, 0);
326 
327  // regular motions
328  ADDMOTION("h", motionLeft, 0 );
329  ADDMOTION("<left>", motionLeft, 0 );
330  ADDMOTION("<backspace>", motionLeft, 0 );
331  ADDMOTION("j", motionDown, 0 );
332  ADDMOTION("<down>", motionDown, 0 );
333  ADDMOTION("k", motionUp, 0 );
334  ADDMOTION("<up>", motionUp, 0 );
335  ADDMOTION("l", motionRight, 0 );
336  ADDMOTION("<right>", motionRight, 0 );
337  ADDMOTION(" ", motionRight, 0 );
338  ADDMOTION("$", motionToEOL, 0 );
339  ADDMOTION("<end>", motionToEOL, 0 );
340  ADDMOTION("0", motionToColumn0, 0 );
341  ADDMOTION("<home>", motionToColumn0, 0 );
342  ADDMOTION("^", motionToFirstCharacterOfLine, 0 );
343  ADDMOTION("f.", motionFindChar, REGEX_PATTERN );
344  ADDMOTION("F.", motionFindCharBackward, REGEX_PATTERN );
345  ADDMOTION("t.", motionToChar, REGEX_PATTERN );
346  ADDMOTION("T.", motionToCharBackward, REGEX_PATTERN );
347  ADDMOTION(";", motionRepeatlastTF, 0 );
348  ADDMOTION(",", motionRepeatlastTFBackward, 0 );
349  ADDMOTION("n", motionFindNext, 0 );
350  ADDMOTION("N", motionFindPrev, 0 );
351  ADDMOTION("gg", motionToLineFirst, 0 );
352  ADDMOTION("G", motionToLineLast, 0 );
353  ADDMOTION("w", motionWordForward, 0 );
354  ADDMOTION("W", motionWORDForward, 0 );
355  ADDMOTION("<c-right>", motionWordForward, IS_NOT_LINEWISE);
356  ADDMOTION("<c-left>", motionWordBackward, IS_NOT_LINEWISE);
357  ADDMOTION("b", motionWordBackward, 0 );
358  ADDMOTION("B", motionWORDBackward, 0 );
359  ADDMOTION("e", motionToEndOfWord, 0 );
360  ADDMOTION("E", motionToEndOfWORD, 0 );
361  ADDMOTION("ge", motionToEndOfPrevWord, 0 );
362  ADDMOTION("gE", motionToEndOfPrevWORD, 0 );
363  ADDMOTION("|", motionToScreenColumn, 0 );
364  ADDMOTION("%", motionToMatchingItem, 0 );
365  ADDMOTION("`.", motionToMark, REGEX_PATTERN );
366  ADDMOTION("'.", motionToMarkLine, REGEX_PATTERN );
367  ADDMOTION("[[", motionToPreviousBraceBlockStart, 0 );
368  ADDMOTION("]]", motionToNextBraceBlockStart, 0 );
369  ADDMOTION("[]", motionToPreviousBraceBlockEnd, 0 );
370  ADDMOTION("][", motionToNextBraceBlockEnd, 0 );
371  ADDMOTION("*", motionToNextOccurrence, 0 );
372  ADDMOTION("#", motionToPrevOccurrence, 0 );
373  ADDMOTION("<c-f>", motionPageDown, 0 );
374  ADDMOTION("<pagedown>", motionPageDown, 0 );
375  ADDMOTION("<c-b>", motionPageUp, 0 );
376  ADDMOTION("<pageup>", motionPageUp, 0 );
377  ADDMOTION("gj", motionToNextVisualLine, 0 );
378  ADDMOTION("gk", motionToPrevVisualLine, 0);
379  ADDMOTION("(", motionToPreviousSentence, 0 );
380  ADDMOTION(")", motionToNextSentence, 0 );
381  ADDMOTION("{", motionToBeforeParagraph, 0 );
382  ADDMOTION("}", motionToAfterParagraph, 0 );
383 
384  // text objects
385  ADDMOTION("iw", textObjectInnerWord, 0 );
386  ADDMOTION("aw", textObjectAWord, 0 );
387  ADDMOTION("iW", textObjectInnerWORD, 0 );
388  ADDMOTION("aW", textObjectAWORD, IS_NOT_LINEWISE );
389  ADDMOTION("is", textObjectInnerSentence, IS_NOT_LINEWISE );
390  ADDMOTION("as", textObjectASentence, IS_NOT_LINEWISE );
391  ADDMOTION("ip", textObjectInnerParagraph, IS_NOT_LINEWISE );
392  ADDMOTION("ap", textObjectAParagraph, IS_NOT_LINEWISE );
393  ADDMOTION("i\"", textObjectInnerQuoteDouble, CAN_CHANGE_WHOLE_VISUAL_MODE_SELECTION);
394  ADDMOTION("a\"", textObjectAQuoteDouble, 0 );
395  ADDMOTION("i'", textObjectInnerQuoteSingle, CAN_CHANGE_WHOLE_VISUAL_MODE_SELECTION );
396  ADDMOTION("a'", textObjectAQuoteSingle, 0 );
397  ADDMOTION("i[()b]", textObjectInnerParen, REGEX_PATTERN | CAN_CHANGE_WHOLE_VISUAL_MODE_SELECTION );
398  ADDMOTION("a[()b]", textObjectAParen, REGEX_PATTERN );
399  ADDMOTION("i[{}B]", textObjectInnerCurlyBracket, REGEX_PATTERN | IS_NOT_LINEWISE | CAN_CHANGE_WHOLE_VISUAL_MODE_SELECTION);
400  ADDMOTION("a[{}B]", textObjectACurlyBracket, REGEX_PATTERN | IS_NOT_LINEWISE);
401  ADDMOTION("i[><]", textObjectInnerInequalitySign, REGEX_PATTERN | IS_NOT_LINEWISE | CAN_CHANGE_WHOLE_VISUAL_MODE_SELECTION);
402  ADDMOTION("i[\\[\\]]", textObjectInnerBracket, REGEX_PATTERN | CAN_CHANGE_WHOLE_VISUAL_MODE_SELECTION);
403  ADDMOTION("a[\\[\\]]", textObjectABracket, REGEX_PATTERN );
404  ADDMOTION("i,", textObjectInnerComma, 0 );
405  ADDMOTION("a,", textObjectAComma, 0 );
406 
407  ADDMOTION("/<enter>", motionToIncrementalSearchMatch, 0);
408  ADDMOTION("?<enter>", motionToIncrementalSearchMatch, 0);
409 }
KateViNormalMode::motionToLineLast
KateViRange motionToLineLast()
Definition: katevinormalmode.cpp:2576
ADDCMD
#define ADDCMD(STR, FUNC, FLGS)
Definition: katevivisualmode.cpp:32
KateViRange::endLine
int endLine
Definition: katevirange.h:44
KateViNormalMode::motionLeft
KateViRange motionLeft()
Definition: katevinormalmode.cpp:2027
KateViNormalMode::commandFormatLines
bool commandFormatLines()
Definition: katevinormalmode.cpp:1922
InsertMode
Definition: kateviinputmodemanager.h:50
KateViNormalMode::textObjectInnerSentence
KateViRange textObjectInnerSentence()
Definition: katevinormalmode.cpp:3439
katevirange.h
KateViNormalMode::commandSetMark
bool commandSetMark()
Definition: katevinormalmode.cpp:1557
KateViVisualMode::reset
void reset()
Definition: katevivisualmode.cpp:143
KateViNormalMode::commandTopViewOnCursor
bool commandTopViewOnCursor()
Definition: katevinormalmode.cpp:1696
KateViNormalMode::m_commandShouldKeepSelection
bool m_commandShouldKeepSelection
Definition: katevinormalmode.h:353
KateViNormalMode::commandPrintCharacterCode
bool commandPrintCharacterCode()
Definition: katevinormalmode.cpp:1732
KateViNormalMode::commandAbort
bool commandAbort()
Definition: katevinormalmode.cpp:1725
KateViNormalMode::motionToEndOfWORD
KateViRange motionToEndOfWORD()
Definition: katevinormalmode.cpp:2218
katevivisualmode.h
KateViNormalMode::motionToNextBraceBlockEnd
KateViRange motionToNextBraceBlockEnd()
Definition: katevinormalmode.cpp:2826
KateViNormalMode::motionToIncrementalSearchMatch
KateViRange motionToIncrementalSearchMatch()
Definition: katevinormalmode.cpp:3083
KateViNormalMode::commandCenterViewOnNonBlank
bool commandCenterViewOnNonBlank()
Definition: katevinormalmode.cpp:1667
KateViVisualMode::SelectInclusive
void SelectInclusive(Cursor c1, Cursor c2)
Definition: katevivisualmode.cpp:53
KateViNormalMode::motionToNextBraceBlockStart
KateViRange motionToNextBraceBlockStart()
Definition: katevinormalmode.cpp:2770
KateViInputModeManager::addMark
void addMark(KateDocument *doc, const QChar &mark, const KTextEditor::Cursor &pos, const bool moveoninsert=true, const bool showmark=true)
Add a mark to the document.
Definition: kateviinputmodemanager.cpp:737
KateViNormalMode::commandMakeUppercase
bool commandMakeUppercase()
Definition: katevinormalmode.cpp:864
KateViModeBase::doc
KateDocument * doc() const
Definition: katevimodebase.h:172
KateViNormalMode::commandEnterVisualLineMode
bool commandEnterVisualLineMode()
Definition: katevinormalmode.cpp:641
KateDocument::lineLength
virtual int lineLength(int line) const
Definition: katedocument.cpp:758
KateViNormalMode::motionToEOL
KateViRange motionToEOL()
Definition: katevinormalmode.cpp:2293
KateViNormalMode::commandEnterVisualMode
bool commandEnterVisualMode()
Definition: katevinormalmode.cpp:696
KateViInputModeManager::getPreviousViMode
ViMode getPreviousViMode() const
Definition: kateviinputmodemanager.cpp:456
KateViNormalMode::commandJoinLines
bool commandJoinLines()
Definition: katevinormalmode.cpp:1079
KateViNormalMode::motionWORDForward
KateViRange motionWORDForward()
Definition: katevinormalmode.cpp:2157
KateViNormalMode::motionToMarkLine
KateViRange motionToMarkLine()
Definition: katevinormalmode.cpp:2636
VisualMode
Definition: kateviinputmodemanager.h:51
KateView::removeSelection
virtual bool removeSelection()
Definition: kateview.h:256
KateViVisualMode::SelectBlockInclusive
void SelectBlockInclusive(Cursor c1, Cursor c2)
Definition: katevivisualmode.cpp:62
KateViInputModeManager
Definition: kateviinputmodemanager.h:68
KateViNormalMode::textObjectAParagraph
KateViRange textObjectAParagraph()
Definition: katevinormalmode.cpp:3496
KateViNormalMode::textObjectAWord
KateViRange textObjectAWord()
Definition: katevinormalmode.cpp:3095
KateViNormalMode::motionToBeforeParagraph
KateViRange motionToBeforeParagraph()
Definition: katevinormalmode.cpp:3024
KateViNormalMode::textObjectAWORD
KateViRange textObjectAWORD()
Definition: katevinormalmode.cpp:3207
KateViNormalMode::textObjectAComma
KateViRange textObjectAComma()
Definition: katevinormalmode.cpp:3659
KateViNormalMode::textObjectInnerWORD
KateViRange textObjectInnerWORD()
Definition: katevinormalmode.cpp:3283
KateViNormalMode::m_pendingResetIsDueToExit
bool m_pendingResetIsDueToExit
Definition: katevinormalmode.h:370
KateViNormalMode::motionToLineFirst
KateViRange motionToLineFirst()
Definition: katevinormalmode.cpp:2563
KateViModeBase::m_commandRange
KateViRange m_commandRange
Definition: katevimodebase.h:160
KateViRange::startColumn
int startColumn
Definition: katevirange.h:41
KateViNormalMode::motionToPrevVisualLine
KateViRange motionToPrevVisualLine()
Definition: katevinormalmode.cpp:2955
KateViNormalMode::commandReplayMacro
bool commandReplayMacro()
Definition: katevinormalmode.cpp:1944
KateViNormalMode::m_commands
QVector< KateViCommand * > m_commands
Definition: katevinormalmode.h:336
KateViNormalMode::motionToFirstCharacterOfLine
KateViRange motionToFirstCharacterOfLine()
Definition: katevinormalmode.cpp:2318
KateViNormalMode::commandReplaceCharacter
bool commandReplaceCharacter()
Definition: katevinormalmode.cpp:1410
KateViNormalMode::textObjectInnerParagraph
KateViRange textObjectInnerParagraph()
Definition: katevinormalmode.cpp:3482
KateViVisualMode::updateSelection
void updateSelection()
Updates the visual mode's range to reflect a new cursor position.
Definition: katevivisualmode.cpp:237
KateView::getViInputModeManager
KateViInputModeManager * getViInputModeManager()
Definition: kateview.cpp:1587
KateViNormalMode::motionPageDown
KateViRange motionPageDown()
Definition: katevinormalmode.cpp:2056
KateViNormalMode::commandToOtherEnd
bool commandToOtherEnd()
Definition: katevinormalmode.cpp:706
KateViVisualMode::goToPos
void goToPos(const Cursor &c)
Definition: katevivisualmode.cpp:229
KateViNormalMode::commandChangeToEOL
bool commandChangeToEOL()
Definition: katevinormalmode.cpp:1172
KateView::selectionRange
virtual const KTextEditor::Range & selectionRange() const
Definition: kateview.cpp:2815
KateViNormalMode::motionPageUp
KateViRange motionPageUp()
Definition: katevinormalmode.cpp:2070
KateViNormalMode::commandChangeCaseRange
bool commandChangeCaseRange()
Definition: katevinormalmode.cpp:985
KateViNormalMode::commandDeleteToEOL
bool commandDeleteToEOL()
Definition: katevinormalmode.cpp:760
QVector::clear
void clear()
KateViNormalMode::motionToScreenColumn
KateViRange motionToScreenColumn()
Definition: katevinormalmode.cpp:2594
KateViNormalMode::motionToNextVisualLine
KateViRange motionToNextVisualLine()
Definition: katevinormalmode.cpp:2951
KateViModeBase::m_view
KateView * m_view
Definition: katevimodebase.h:172
KateViNormalMode::commandBottomViewOnNonBlank
bool commandBottomViewOnNonBlank()
Definition: katevinormalmode.cpp:1715
KateViVisualMode::isVisualBlock
bool isVisualBlock() const
Definition: katevivisualmode.h:45
KateViNormalMode::motionUp
KateViRange motionUp()
Definition: katevinormalmode.cpp:2022
KateViRange
Definition: katevirange.h:33
KateViRange::endColumn
int endColumn
Definition: katevirange.h:44
KateView::setSelection
virtual bool setSelection(const KTextEditor::Range &selection)
Definition: kateview.cpp:1956
KateViVisualMode::init
void init()
Definition: katevivisualmode.cpp:197
KateViNormalMode::motionToPreviousBraceBlockEnd
KateViRange motionToPreviousBraceBlockEnd()
Definition: katevinormalmode.cpp:2857
KateViModeBase::startNormalMode
bool startNormalMode()
Definition: katevimodebase.cpp:1171
KateViNormalMode::textObjectInnerQuoteSingle
KateViRange textObjectInnerQuoteSingle()
Definition: katevinormalmode.cpp:3548
KateViNormalMode::textObjectInnerQuoteDouble
KateViRange textObjectInnerQuoteDouble()
Definition: katevinormalmode.cpp:3538
kateglobal.h
KateViNormalMode::motionToEndOfPrevWORD
KateViRange motionToEndOfPrevWORD()
Definition: katevinormalmode.cpp:2267
KateViewInternal
Definition: kateviewinternal.h:58
KateViNormalMode::motionToPreviousSentence
KateViRange motionToPreviousSentence()
Definition: katevinormalmode.cpp:2959
KateViModeBase::updateCursor
void updateCursor(const Cursor &c) const
Definition: katevimodebase.cpp:932
KateDocument::lines
virtual int lines() const
Definition: katedocument.cpp:753
KateViNormalMode::commandCenterViewOnCursor
bool commandCenterViewOnCursor()
Definition: katevinormalmode.cpp:1672
KateViNormalMode::m_isUndo
bool m_isUndo
Definition: katevinormalmode.h:381
ADDMOTION
#define ADDMOTION(STR, FUNC, FLGS)
Definition: katevivisualmode.cpp:35
KateViNormalMode::commandUnindentLines
bool commandUnindentLines()
Definition: katevinormalmode.cpp:1600
KateViNormalMode::commandYank
bool commandYank()
Definition: katevinormalmode.cpp:1234
ViMode
ViMode
The four vi modes supported by Kate's vi input mode.
Definition: kateviinputmodemanager.h:48
KateViNormalMode::motionToEndOfPrevWord
KateViRange motionToEndOfPrevWord()
Definition: katevinormalmode.cpp:2240
KateViNormalMode::commandPasteBefore
bool commandPasteBefore()
Definition: katevinormalmode.cpp:1327
KateViNormalMode::motionRepeatlastTFBackward
KateViRange motionRepeatlastTFBackward()
Definition: katevinormalmode.cpp:2500
KateViModeBase::startInsertMode
bool startInsertMode()
Definition: katevimodebase.cpp:1190
KateViNormalMode::motionFindPrev
KateViRange motionFindPrev()
Definition: katevinormalmode.cpp:2524
KateViModeBase::m_stickyColumn
int m_stickyColumn
Definition: katevimodebase.h:168
KateViNormalMode::motionToChar
KateViRange motionToChar()
Definition: katevinormalmode.cpp:2398
KateViNormalMode::textObjectASentence
KateViRange textObjectASentence()
Definition: katevinormalmode.cpp:3453
KateView
Definition: kateview.h:77
VisualBlockMode
Definition: kateviinputmodemanager.h:53
KateViNormalMode::motionWordForward
KateViRange motionWordForward()
Definition: katevinormalmode.cpp:2100
KateViNormalMode::motionToNextOccurrence
KateViRange motionToNextOccurrence()
Definition: katevinormalmode.cpp:2881
KateViNormalMode::motionWORDBackward
KateViRange motionWORDBackward()
Definition: katevinormalmode.cpp:2179
KateViNormalMode::commandChangeCase
bool commandChangeCase()
Definition: katevinormalmode.cpp:911
KateViNormalMode
Commands for the vi normal mode.
Definition: katevinormalmode.h:49
KateViNormalMode::commandSwitchToCmdLine
bool commandSwitchToCmdLine()
Definition: katevinormalmode.cpp:1462
KateViNormalMode::m_motions
QVector< KateViMotion * > m_motions
Definition: katevinormalmode.h:337
KateViNormalMode::commandDeleteChar
bool commandDeleteChar()
Definition: katevinormalmode.cpp:1359
KateViVisualMode::setVisualModeType
void setVisualModeType(ViMode mode)
Definition: katevivisualmode.cpp:213
VisualLineMode
Definition: kateviinputmodemanager.h:52
KateViNormalMode::motionToAfterParagraph
KateViRange motionToAfterParagraph()
Definition: katevinormalmode.cpp:3052
KateViNormalMode::motionToCharBackward
KateViRange motionToCharBackward()
Definition: katevinormalmode.cpp:2436
KateViNormalMode::commandPrependToBlock
bool commandPrependToBlock()
Definition: katevinormalmode.cpp:1805
KateViNormalMode::motionDown
KateViRange motionDown()
Definition: katevinormalmode.cpp:2017
KateView::cursorPosition
KTextEditor::Cursor cursorPosition() const
Definition: kateview.cpp:2423
KateViVisualMode::SelectLines
void SelectLines(Range range)
Definition: katevivisualmode.cpp:74
KateViNormalMode::textObjectABracket
KateViRange textObjectABracket()
Definition: katevinormalmode.cpp:3576
KateViNormalMode::commandAlignLines
bool commandAlignLines()
Definition: katevinormalmode.cpp:1778
KateView::viInputMode
bool viInputMode() const
Definition: kateview.cpp:1530
KateViVisualMode::KateViVisualMode
KateViVisualMode(KateViInputModeManager *viInputModeManager, KateView *view, KateViewInternal *viewInternal)
Definition: katevivisualmode.cpp:38
KateViNormalMode::commandDelete
bool commandDelete()
Definition: katevinormalmode.cpp:754
KateViModeBase::m_viInputModeManager
KateViInputModeManager * m_viInputModeManager
Definition: katevimodebase.h:177
KateViNormalMode::textObjectInnerInequalitySign
KateViRange textObjectInnerInequalitySign()
Definition: katevinormalmode.cpp:3653
KateViNormalMode::textObjectAQuoteDouble
KateViRange textObjectAQuoteDouble()
Definition: katevinormalmode.cpp:3533
KateViNormalMode::motionToColumn0
KateViRange motionToColumn0()
Definition: katevinormalmode.cpp:2309
KateViNormalMode::textObjectInnerComma
KateViRange textObjectInnerComma()
Definition: katevinormalmode.cpp:3664
KateViNormalMode::textObjectAParen
KateViRange textObjectAParen()
Definition: katevinormalmode.cpp:3564
KateViNormalMode::m_deleteCommand
bool m_deleteCommand
Definition: katevinormalmode.h:355
KateViNormalMode::m_motionCanChangeWholeVisualModeSelection
bool m_motionCanChangeWholeVisualModeSelection
Definition: katevinormalmode.h:351
KateViNormalMode::textObjectInnerParen
KateViRange textObjectInnerParen()
Definition: katevinormalmode.cpp:3570
KateViNormalMode::commandYankToEOL
bool commandYankToEOL()
Definition: katevinormalmode.cpp:1273
KateViNormalMode::motionToEndOfWord
KateViRange motionToEndOfWord()
Definition: katevinormalmode.cpp:2201
KateViVisualMode::saveRangeMarks
void saveRangeMarks()
Definition: katevivisualmode.cpp:187
KateViNormalMode::motionToMark
KateViRange motionToMark()
Definition: katevinormalmode.cpp:2609
KateViNormalMode::commandTopViewOnNonBlank
bool commandTopViewOnNonBlank()
Definition: katevinormalmode.cpp:1691
KateViVisualMode::switchStartEnd
void switchStartEnd()
Definition: katevivisualmode.cpp:219
KateViNormalMode::commandDeleteCharBackward
bool commandDeleteCharBackward()
Definition: katevinormalmode.cpp:1384
KateViNormalMode::commandBottomViewOnCursor
bool commandBottomViewOnCursor()
Definition: katevinormalmode.cpp:1720
KateViNormalMode::motionToPreviousBraceBlockStart
KateViRange motionToPreviousBraceBlockStart()
Definition: katevinormalmode.cpp:2801
KateViNormalMode::motionFindChar
KateViRange motionFindChar()
Definition: katevinormalmode.cpp:2329
KateViNormalMode::motionToMatchingItem
KateViRange motionToMatchingItem()
Definition: katevinormalmode.cpp:2648
KateView::setBlockSelection
virtual bool setBlockSelection(bool on)
Definition: kateview.cpp:2226
KateView::doc
KateDocument * doc()
accessor to katedocument pointer
Definition: kateview.h:553
KateViNormalMode::motionRight
KateViRange motionRight()
Definition: katevinormalmode.cpp:2041
KateViNormalMode::textObjectInnerCurlyBracket
KateViRange textObjectInnerCurlyBracket()
Definition: katevinormalmode.cpp:3594
KateViNormalMode::textObjectInnerWord
KateViRange textObjectInnerWord()
Definition: katevinormalmode.cpp:3171
KateViVisualMode::~KateViVisualMode
~KateViVisualMode()
Definition: katevivisualmode.cpp:49
KateViNormalMode::commandPaste
bool commandPaste()
Definition: katevinormalmode.cpp:1321
KateViNormalMode::motionFindNext
KateViRange motionFindNext()
Definition: katevinormalmode.cpp:2543
KateViInputModeManager::getCurrentViMode
ViMode getCurrentViMode() const
Definition: kateviinputmodemanager.cpp:451
KateViNormalMode::textObjectACurlyBracket
KateViRange textObjectACurlyBracket()
Definition: katevinormalmode.cpp:3588
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
KateViNormalMode::textObjectInnerBracket
KateViRange textObjectInnerBracket()
Definition: katevinormalmode.cpp:3582
KateViNormalMode::commandStartRecordingMacro
bool commandStartRecordingMacro()
Definition: katevinormalmode.cpp:1937
kateviglobal.h
KateViVisualMode::isVisualLine
bool isVisualLine() const
Definition: katevivisualmode.h:44
KateViNormalMode::commandAppendToBlock
bool commandAppendToBlock()
Definition: katevinormalmode.cpp:1820
KateViNormalMode::motionRepeatlastTF
KateViRange motionRepeatlastTF()
Definition: katevinormalmode.cpp:2477
KateViNormalMode::motionToNextSentence
KateViRange motionToNextSentence()
Definition: katevinormalmode.cpp:2999
KateViNormalMode::motionWordBackward
KateViRange motionWordBackward()
Definition: katevinormalmode.cpp:2134
KateViRange::startLine
int startLine
Definition: katevirange.h:41
KateViInputModeManager::isAnyVisualMode
bool isAnyVisualMode() const
Definition: kateviinputmodemanager.cpp:461
KateViNormalMode::commandChange
bool commandChange()
Definition: katevinormalmode.cpp:1133
KateViNormalMode::commandMakeLowercase
bool commandMakeLowercase()
Definition: katevinormalmode.cpp:821
KateViNormalMode::textObjectAQuoteSingle
KateViRange textObjectAQuoteSingle()
Definition: katevinormalmode.cpp:3543
KateViNormalMode::motionToPrevOccurrence
KateViRange motionToPrevOccurrence()
Definition: katevinormalmode.cpp:2896
KateViInputModeManager::isHandlingKeypress
bool isHandlingKeypress() const
Determines whether we are currently processing a Vi keypress.
Definition: kateviinputmodemanager.cpp:266
KateViNormalMode::commandIndentLines
bool commandIndentLines()
Definition: katevinormalmode.cpp:1585
KateViNormalMode::motionFindCharBackward
KateViRange motionFindCharBackward()
Definition: katevinormalmode.cpp:2360
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Sat May 9 2020 03:56:59 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Kate

Skip menu "Kate"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

applications API Reference

Skip menu "applications API Reference"
  •   kate
  •       kate
  •   KTextEditor
  •   Kate
  • Konsole

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal