本文整理汇总了C++中ktexteditor::Cursor::column方法的典型用法代码示例。如果您正苦于以下问题:C++ Cursor::column方法的具体用法?C++ Cursor::column怎么用?C++ Cursor::column使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ktexteditor::Cursor
的用法示例。
在下文中一共展示了Cursor::column方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: shouldStartCompletion
bool PythonCodeCompletionModel::shouldStartCompletion(KTextEditor::View* view, const QString& inserted,
bool userInsertion, const KTextEditor::Cursor& position)
{
QList<QString> words;
words << "for" << "raise" << "except" << "in";
foreach ( const QString& word, words ) {
if ( view->document()->line(position.line()).mid(0, position.column()).endsWith(word + " ") ) {
return true;
}
}
// shebang / encoding lines
if ( view->document()->line(position.line()).mid(0, position.column()).endsWith("#") &&
position.line() < 2 )
{
return true;
}
// we're probably dealing with string formatting completion
// is there any other case where this condition is true?
if ( ! userInsertion && inserted.startsWith('{') ) {
return true;
}
return KDevelop::CodeCompletionModel::shouldStartCompletion(view, inserted, userInsertion, position);
}
示例2: viewLine
/**
* This returns the view line upon which realCursor is situated.
* The view line is the number of lines in the view from the first line
* The supplied cursor should be in real lines.
*/
int KateLayoutCache::viewLine(const KTextEditor::Cursor& realCursor)
{
if (realCursor.column() <= 0 || realCursor.line() < 0) return 0;
KateLineLayoutPtr thisLine = line(realCursor.line());
for (int i = 0; i < thisLine->viewLineCount(); ++i) {
const KateTextLayout& l = thisLine->viewLine(i);
if (realCursor.column() >= l.startCol() && realCursor.column() < l.endCol())
return i;
}
return thisLine->viewLineCount() - 1;
}
示例3: shouldStartCompletion
/**
* Initiate completion when there is \c #include on a line (\c m_range
* in a result of \c parseIncludeDirective() not empty -- i.e. there is some file present)
* and cursor placed within that range... despite of completeness of the whole line.
*/
bool IncludeHelperCompletionModel::shouldStartCompletion(
KTextEditor::View* view
, const QString& inserted_text
, bool user_insertion
, const KTextEditor::Cursor& position
)
{
kDebug(DEBUG_AREA) << "position=" << position << ", inserted_text=" << inserted_text << ", ui=" << user_insertion;
m_should_complete = false;
auto* doc = view->document(); // get current document
auto line = doc->line(position.line()); // get current line
auto* iface = qobject_cast<KTextEditor::HighlightInterface*>(doc);
// Do nothing if no highlighting interface or not suitable document or
// a place within it... (we won't to complete smth in non C++ files or comments for example)
if (!iface || !isSuitableDocumentAndHighlighting(doc->mimeType(), iface->highlightingModeAt(position)))
return m_should_complete;
// Try to parse it...
auto r = parseIncludeDirective(line, false);
m_should_complete = r.m_range.isValid();
if (m_should_complete)
{
kDebug(DEBUG_AREA) << "range=" << r.m_range;
m_should_complete = position.column() >= r.m_range.start().column()
&& position.column() <= r.m_range.end().column();
if (m_should_complete)
{
m_closer = r.close_char();
kDebug(DEBUG_AREA) << "closer=" << m_closer;
}
}
else if (position.column() == line.length())
{
auto text = tryToCompleteIncludeDirective(line.mid(0, position.column()).trimmed());
m_should_complete = !text.isEmpty();
if (m_should_complete)
{
/// \todo Hardcoded angle bracket! Better to check what file was selected
/// (from system path or session specific) and replace it accordingly...
text += QLatin1String(" <");
auto start = position;
start.setColumn(0);
auto range = KTextEditor::Range{start, position};
view->document()->replaceText(range, text);
}
}
return m_should_complete;
}
示例4: setPosition
void TextCursor::setPosition(const KTextEditor::Cursor& position, bool init)
{
// any change or init? else do nothing
if (!init && position.line() == line() && position.column() == m_column)
return;
// remove cursor from old block in any case
if (m_block)
m_block->removeCursor (this);
// first: validate the line and column, else invalid
if (position.column() < 0 || position.line () < 0 || position.line () >= m_buffer.lines ()) {
if (!m_range)
m_buffer.m_invalidCursors.insert (this);
m_block = 0;
m_line = m_column = -1;
return;
}
// else, find block
TextBlock *block = m_buffer.blockForIndex (m_buffer.blockForLine (position.line()));
Q_ASSERT(block);
// get line
TextLine textLine = block->line (position.line());
#if 0 // this is no good idea, smart cursors don't do that, too, for non-wrapping cursors
// now, validate column, else stay invalid
if (position.column() > textLine->text().size()) {
if (!m_range)
m_buffer.m_invalidCursors.insert (this);
m_block = 0;
m_line = m_column = -1;
return;
}
#endif
// if cursor was invalid before, remove it from invalid cursor list
if (!m_range && !m_block && !init) {
Q_ASSERT(m_buffer.m_invalidCursors.contains (this));
m_buffer.m_invalidCursors.remove (this);
}
// else: valid cursor
m_block = block;
m_line = position.line () - m_block->startLine ();
m_column = position.column ();
m_block->insertCursor (this);
}
示例5: getKeyword
QString Help::getKeyword(KTextEditor::View *view)
{
if(!view) {
return QString();
}
// get current position
int row, col, col1, col2;
QString word;
KTextEditor::Document *doc = view->document();
KTextEditor::Cursor cursor = view->cursorPosition();
row = cursor.line();
col = cursor.column();
if (m_edit->getCurrentWord(doc, row, col, KileDocument::EditorExtension::smTex, word, col1, col2)) {
// There is no starred keyword in the references. So if // dani 04.08.2004
// we find one, we better try the unstarred keyword.
if(word.right(1) == "*") {
return word.left(word.length() - 1);
}
else {
return word;
}
}
else {
return QString();
}
}
示例6: displayViewLine
int KateLayoutCache::displayViewLine(const KTextEditor::Cursor& virtualCursor, bool limitToVisible)
{
KTextEditor::Cursor work = viewCacheStart();
// only try this with valid lines!
if (work.isValid())
work.setLine(m_renderer->folding().lineToVisibleLine(work.line()));
if (!work.isValid())
return virtualCursor.line();
int limit = m_textLayouts.count();
// Efficient non-word-wrapped path
if (!m_renderer->view()->dynWordWrap()) {
int ret = virtualCursor.line() - work.line();
if (limitToVisible && (ret < 0 || ret > limit))
return -1;
else
return ret;
}
if (work == virtualCursor) {
return 0;
}
int ret = -(int)viewLine(viewCacheStart());
bool forwards = (work < virtualCursor);
// FIXME switch to using ranges? faster?
if (forwards) {
while (work.line() != virtualCursor.line()) {
ret += viewLineCount(m_renderer->folding().visibleLineToLine(work.line()));
work.setLine(work.line() + 1);
if (limitToVisible && ret > limit)
return -1;
}
} else {
while (work.line() != virtualCursor.line()) {
work.setLine(work.line() - 1);
ret -= viewLineCount(m_renderer->folding().visibleLineToLine(work.line()));
if (limitToVisible && ret < 0)
return -1;
}
}
// final difference
KTextEditor::Cursor realCursor = virtualCursor;
realCursor.setLine(m_renderer->folding().visibleLineToLine(realCursor.line()));
if (realCursor.column() == -1) realCursor.setColumn(m_renderer->doc()->lineLength(realCursor.line()));
ret += viewLine(realCursor);
if (limitToVisible && (ret < 0 || ret > limit))
return -1;
return ret;
}
示例7: wrapLine
void TextHistory::wrapLine(const KTextEditor::Cursor &position)
{
// create and add new entry
Entry entry;
entry.type = Entry::WrapLine;
entry.line = position.line();
entry.column = position.column();
addEntry(entry);
}
示例8: testCursorStringConversion
void RangeTest::testCursorStringConversion()
{
using KTextEditor::Cursor;
KTextEditor::Cursor c;
QCOMPARE(c.line(), 0);
QCOMPARE(c.column(), 0);
QCOMPARE(c.toString(), QStringLiteral("(0, 0)"));
c = Cursor::fromString(QStringLiteral("(0, 0)"));
QCOMPARE(c.toString(), QStringLiteral("(0, 0)"));
c = Cursor::fromString(QStringLiteral("(0,0)"));
QCOMPARE(c.toString(), QStringLiteral("(0, 0)"));
c.setPosition(-1, -1);
QCOMPARE(c.toString(), QStringLiteral("(-1, -1)"));
c = Cursor::fromString(QStringLiteral("(-1, -1)"));
QCOMPARE(c.toString(), QStringLiteral("(-1, -1)"));
c = Cursor::fromString(QStringLiteral("(-1,-1)"));
QCOMPARE(c.toString(), QStringLiteral("(-1, -1)"));
c.setPosition(12, 42);
QCOMPARE(c.toString(), QStringLiteral("(12, 42)"));
c = Cursor::fromString(QStringLiteral("(12, 42)"));
QCOMPARE(c.toString(), QStringLiteral("(12, 42)"));
c = Cursor::fromString(QStringLiteral("( 12,42)"));
QCOMPARE(c.toString(), QStringLiteral("(12, 42)"));
c.setPosition(12, 42);
QCOMPARE(c.toString(), QStringLiteral("(12, 42)"));
c = Cursor::fromString(QStringLiteral("(12, 42)"));
QCOMPARE(c.toString(), QStringLiteral("(12, 42)"));
c.setPosition(-12, 42);
QCOMPARE(c.toString(), QStringLiteral("(-12, 42)"));
c = Cursor::fromString(QStringLiteral("(-12, 42)"));
QCOMPARE(c.toString(), QStringLiteral("(-12, 42)"));
c = Cursor::fromString(QStringLiteral("(-12, +42)"));
QCOMPARE(c.toString(), QStringLiteral("(-12, 42)"));
c = Cursor::fromString(QStringLiteral("( -12 , +42)"));
QCOMPARE(c.toString(), QStringLiteral("(-12, 42)"));
c = Cursor::fromString(QStringLiteral("(-12 , 42 )"));
QCOMPARE(c.toString(), QStringLiteral("(-12, 42)"));
// test invalid input
c = Cursor::fromString(QStringLiteral("( - 12 , + 42)"));
QCOMPARE(c.toString(), QStringLiteral("(-1, -1)"));
c = Cursor::fromString(QStringLiteral("(, 42)"));
QCOMPARE(c.toString(), QStringLiteral("(-1, -1)"));
c = Cursor::fromString(QStringLiteral("(-, -)"));
QCOMPARE(c.toString(), QStringLiteral("(-1, -1)"));
c = Cursor::fromString(QStringLiteral("(-, -)"));
QCOMPARE(c.toString(), QStringLiteral("(-1, -1)"));
c = Cursor::fromString(QStringLiteral("(-x,y)"));
QCOMPARE(c.toString(), QStringLiteral("(-1, -1)"));
c = Cursor::fromString(QStringLiteral("(-3,-2y)"));
QCOMPARE(c.toString(), QStringLiteral("(-1, -1)"));
}
示例9: cursorToOffset_kte
unsigned int KDocumentTextBuffer::cursorToOffset_kte( const KTextEditor::Cursor &cursor )
{
unsigned int offset = 0;
for( int i = 0; i < cursor.line(); i++ ) {
offset += countUnicodeCharacters(kDocument()->line(i)) + 1; // Add newline
}
offset += countUnicodeCharacters(kDocument()->line(cursor.line()).left(cursor.column()));
return offset;
}
示例10: offsetRelativeTo_kte
KTextEditor::Cursor KDocumentTextBuffer::offsetRelativeTo_kte(const KTextEditor::Cursor& cursor, unsigned int offset)
{
int lineno = cursor.line();
const QString& firstLine = kDocument()->line(lineno).mid(cursor.column());
unsigned int remaining = offset;
int surrogates = surrogatesForCodePoints(firstLine, remaining);
while ( remaining > 0 ) {
remaining -= 1; // for the newline character
lineno += 1;
if ( remaining == 0 ) {
surrogates = 0;
break;
}
const QString& line = kDocument()->line(lineno);
Q_ASSERT( lineno < kDocument()->lines() );
surrogates = surrogatesForCodePoints(line, remaining);
}
return KTextEditor::Cursor(lineno, lineno == cursor.line() ? cursor.column() + surrogates : surrogates);
}
示例11: QObject
Recorder::Recorder(KTextEditor::View *view, Manager *manager) : QObject(view), m_manager(manager), m_view(view)
{
connect(m_manager, SIGNAL(watchedKeySequencesChanged()), this, SLOT(reloadWatchedKeySequences()));
connect(this, SIGNAL(detectedTypedKeySequence(const QString&)), m_manager, SLOT(keySequenceTyped(const QString&)));
KTextEditor::Cursor cursor = m_view->cursorPosition();
m_oldLine = cursor.line();
m_oldCol = cursor.column();
reloadWatchedKeySequences();
}
示例12: insertText
void SwapFile::insertText (const KTextEditor::Cursor &position, const QString &text)
{
// skip if not open
if (!m_swapfile.isOpen ())
return;
// format: qint8, int, int, bytearray
m_stream << EA_InsertText << position.line() << position.column() << text.toUtf8 ();
m_needSync = true;
}
示例13: wrapLine
void SwapFile::wrapLine (const KTextEditor::Cursor &position)
{
// skip if not open
if (!m_swapfile.isOpen ())
return;
// format: qint8, int, int
m_stream << EA_WrapLine << position.line() << position.column();
m_needSync = true;
}
示例14: insertText
void TextHistory::insertText(const KTextEditor::Cursor &position, int length, int oldLineLength)
{
// create and add new entry
Entry entry;
entry.type = Entry::InsertText;
entry.line = position.line();
entry.column = position.column();
entry.length = length;
entry.oldLineLength = oldLineLength;
addEntry(entry);
}
示例15: completionRange
// Return the range containing the word left of the cursor
KTextEditor::Range KateNewCompletionModel::completionRange(KTextEditor::View* view, const KTextEditor::Cursor &position)
{
int line = position.line();
int col = position.column();
KTextEditor::Document *doc = view->document();
// ktuan java case: new List<Integer>
// yieldXXX, Ent::load('XXX, genXXX, getXXX
{
QString text = view->document()->line(position.line()).left(position.column());
const static QRegExp ktuan_new_class("((new \\w*)|(gen\\w*)|(get\\w*))$");
int pos = ktuan_new_class.indexIn(text);
if (pos >= 0) {
return KTextEditor::Range( KTextEditor::Cursor( line, pos ), position );
}
}
return KTextEditor::Range( KTextEditor::Cursor( line, col ), position );
}