diff options
-rw-r--r-- | src/plugins/coreplugin/coreplugin.cpp | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/editormanager/editormanager.cpp | 31 | ||||
-rw-r--r-- | src/plugins/coreplugin/editormanager/editormanager.h | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/icore.h | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/locator/basefilefilter.cpp | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/locator/filesystemfilter.cpp | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/locator/opendocumentsfilter.cpp | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/mainwindow.cpp | 4 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.cpp | 2 |
9 files changed, 33 insertions, 16 deletions
diff --git a/src/plugins/coreplugin/coreplugin.cpp b/src/plugins/coreplugin/coreplugin.cpp index 4246dfe729..ac19491576 100644 --- a/src/plugins/coreplugin/coreplugin.cpp +++ b/src/plugins/coreplugin/coreplugin.cpp @@ -229,7 +229,7 @@ bool CorePlugin::delayedInitialize() QObject *CorePlugin::remoteCommand(const QStringList & /* options */, const QStringList &args) { IDocument *res = m_mainWindow->openFiles( - args, ICore::OpenFilesFlags(ICore::SwitchMode | ICore::CanContainLineNumbers)); + args, ICore::OpenFilesFlags(ICore::SwitchMode | ICore::CanContainLineAndColumnNumbers)); m_mainWindow->raiseWindow(); return res; } diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 82a156ab42..93ce68805b 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -173,7 +173,7 @@ void EditorManagerPlaceHolder::currentModeChanged(IMode *mode) static EditorManager *m_instance = 0; static EditorManagerPrivate *d; -static int extractLineNumber(QString *fileName) +static int extractNumericSuffix(QString *fileName) { int i = fileName->length() - 1; for (; i >= 0; --i) { @@ -195,6 +195,22 @@ static int extractLineNumber(QString *fileName) return -1; } +static void extractLineAndColumnNumbers(QString *fileName, int *lineNumber, int *columnNumber) +{ + *lineNumber = -1; + *columnNumber = -1; + int lastSuffix = extractNumericSuffix(fileName); + if (lastSuffix == -1) + return; + int secondToLastSuffix = extractNumericSuffix(fileName); + if (secondToLastSuffix == -1) { + *lineNumber = lastSuffix; + return; + } + *lineNumber = secondToLastSuffix; + *columnNumber = lastSuffix - 1; //column is 0 based, despite line being 1 based +} + static QString autoSaveName(const QString &fileName) { return fileName + QLatin1String(".autosave"); @@ -533,8 +549,9 @@ IEditor *EditorManagerPrivate::openEditor(EditorView *view, const QString &fileN QString fn = fileName; QFileInfo fi(fn); int lineNumber = -1; - if ((flags & EditorManager::CanContainLineNumber) && !fi.exists()) { - lineNumber = extractLineNumber(&fn); + int columnNumber = -1; + if ((flags & EditorManager::CanContainLineAndColumnNumber) && !fi.exists()) { + extractLineAndColumnNumbers(&fn, &lineNumber, &columnNumber); if (lineNumber != -1) fi.setFile(fn); } @@ -549,8 +566,8 @@ IEditor *EditorManagerPrivate::openEditor(EditorView *view, const QString &fileN if (!editors.isEmpty()) { IEditor *editor = editors.first(); editor = activateEditor(view, editor, flags); - if (editor && flags & EditorManager::CanContainLineNumber) - editor->gotoLine(lineNumber, -1); + if (editor && flags & EditorManager::CanContainLineAndColumnNumber) + editor->gotoLine(lineNumber, columnNumber); return editor; } @@ -586,8 +603,8 @@ IEditor *EditorManagerPrivate::openEditor(EditorView *view, const QString &fileN if (editor == result) restoreEditorState(editor); - if (flags & EditorManager::CanContainLineNumber) - editor->gotoLine(lineNumber, -1); + if (flags & EditorManager::CanContainLineAndColumnNumber) + editor->gotoLine(lineNumber, columnNumber); QApplication::restoreOverrideCursor(); return result; diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h index dc94580250..6d0f208f44 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.h +++ b/src/plugins/coreplugin/editormanager/editormanager.h @@ -102,7 +102,7 @@ public: DoNotChangeCurrentEditor = 1, IgnoreNavigationHistory = 2, DoNotMakeVisible = 4, - CanContainLineNumber = 8, + CanContainLineAndColumnNumber = 8, OpenInOtherSplit = 16, DoNotSwitchToDesignMode = 32 }; diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index 1391701cdc..ffb45dcd7c 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -117,7 +117,7 @@ public: enum OpenFilesFlags { None = 0, SwitchMode = 1, - CanContainLineNumbers = 2, + CanContainLineAndColumnNumbers = 2, /// Stop loading once the first file fails to load StopOnLoadFail = 4 }; diff --git a/src/plugins/coreplugin/locator/basefilefilter.cpp b/src/plugins/coreplugin/locator/basefilefilter.cpp index 30ff691ea0..8f28191433 100644 --- a/src/plugins/coreplugin/locator/basefilefilter.cpp +++ b/src/plugins/coreplugin/locator/basefilefilter.cpp @@ -169,7 +169,7 @@ QList<LocatorFilterEntry> BaseFileFilter::matchesFor(QFutureInterface<LocatorFil void BaseFileFilter::accept(LocatorFilterEntry selection) const { EditorManager::openEditor(selection.internalData.toString(), Id(), - EditorManager::CanContainLineNumber); + EditorManager::CanContainLineAndColumnNumber); } /*! diff --git a/src/plugins/coreplugin/locator/filesystemfilter.cpp b/src/plugins/coreplugin/locator/filesystemfilter.cpp index 59ee3827aa..51c79beaf2 100644 --- a/src/plugins/coreplugin/locator/filesystemfilter.cpp +++ b/src/plugins/coreplugin/locator/filesystemfilter.cpp @@ -162,7 +162,7 @@ void FileSystemFilter::accept(LocatorFilterEntry selection) const } const QFileInfo fileInfo(selection.internalData.toString()); const QString cleanedFilePath = QDir::cleanPath(fileInfo.absoluteFilePath()); - EditorManager::openEditor(cleanedFilePath, Id(), EditorManager::CanContainLineNumber); + EditorManager::openEditor(cleanedFilePath, Id(), EditorManager::CanContainLineAndColumnNumber); } bool FileSystemFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) diff --git a/src/plugins/coreplugin/locator/opendocumentsfilter.cpp b/src/plugins/coreplugin/locator/opendocumentsfilter.cpp index 61b9c46117..76a4bc841b 100644 --- a/src/plugins/coreplugin/locator/opendocumentsfilter.cpp +++ b/src/plugins/coreplugin/locator/opendocumentsfilter.cpp @@ -122,5 +122,5 @@ void OpenDocumentsFilter::refresh(QFutureInterface<void> &future) void OpenDocumentsFilter::accept(LocatorFilterEntry selection) const { EditorManager::openEditor(selection.internalData.toString(), Id(), - EditorManager::CanContainLineNumber); + EditorManager::CanContainLineAndColumnNumber); } diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index c8e61cb901..1f1a38f36c 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -787,8 +787,8 @@ IDocument *MainWindow::openFiles(const QStringList &fileNames, ICore::OpenFilesF } } else { QFlags<EditorManager::OpenEditorFlag> emFlags; - if (flags & ICore::CanContainLineNumbers) - emFlags |= EditorManager::CanContainLineNumber; + if (flags & ICore::CanContainLineAndColumnNumbers) + emFlags |= EditorManager::CanContainLineAndColumnNumber; IEditor *editor = EditorManager::openEditor(absoluteFilePath, Id(), emFlags); if (!editor) { if (flags & ICore::StopOnLoadFail) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 78ccc8d269..40dc78deef 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1899,7 +1899,7 @@ void ProjectExplorerPluginPrivate::loadSession(const QString &session) void ProjectExplorerPlugin::restoreSession2() { QApplication::processEvents(QEventLoop::ExcludeUserInputEvents); - ICore::openFiles(dd->m_arguments, ICore::OpenFilesFlags(ICore::CanContainLineNumbers | ICore::SwitchMode)); + ICore::openFiles(dd->m_arguments, ICore::OpenFilesFlags(ICore::CanContainLineAndColumnNumbers | ICore::SwitchMode)); } void ProjectExplorerPluginPrivate::buildStateChanged(Project * pro) |