summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/coreplugin/coreplugin.cpp2
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.cpp31
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.h2
-rw-r--r--src/plugins/coreplugin/icore.h2
-rw-r--r--src/plugins/coreplugin/locator/basefilefilter.cpp2
-rw-r--r--src/plugins/coreplugin/locator/filesystemfilter.cpp2
-rw-r--r--src/plugins/coreplugin/locator/opendocumentsfilter.cpp2
-rw-r--r--src/plugins/coreplugin/mainwindow.cpp4
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp2
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)