forked from qt-creator/qt-creator
Locator: Space character in file name index
For the tools es and locate, interpret space as AND operator. Change-Id: I62692ee0d3afed096173bbb789ea1c6b93ce543c Fixes: QTCREATORBUG-26064 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -186,22 +186,25 @@ static QString defaultCommand()
|
|||||||
return "locate";
|
return "locate";
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString defaultArguments()
|
/*!
|
||||||
{
|
For the tools es [1] and locate [2], interpret space as AND operator.
|
||||||
if (HostOsInfo::isMacHost())
|
|
||||||
return "\"kMDItemFSName = '*%{Query:Escaped}*'c\"";
|
|
||||||
if (HostOsInfo::isWindowsHost())
|
|
||||||
return "-n 10000 -r \"%{Query:Regex}\"";
|
|
||||||
return "-i -l 10000 -r \"%{Query:Regex}\"";
|
|
||||||
}
|
|
||||||
|
|
||||||
static QString defaultCaseSensitiveArguments()
|
Currently doesn't support fine picking a file with a space in the path by escaped space.
|
||||||
|
|
||||||
|
[1]: https://www.voidtools.com/support/everything/command_line_interface/
|
||||||
|
[2]: https://www.gnu.org/software/findutils/manual/html_node/find_html/Invoking-locate.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
static QString defaultArguments(Qt::CaseSensitivity sens = Qt::CaseInsensitive)
|
||||||
{
|
{
|
||||||
if (HostOsInfo::isMacHost())
|
if (HostOsInfo::isMacHost())
|
||||||
return "\"kMDItemFSName = '*%{Query:Escaped}*'\"";
|
return QString("\"kMDItemFSName = '*%{Query:Escaped}*'%1\"")
|
||||||
|
.arg(sens == Qt::CaseInsensitive ? QString("c") : "");
|
||||||
if (HostOsInfo::isWindowsHost())
|
if (HostOsInfo::isWindowsHost())
|
||||||
return "-i -n 10000 -r \"%{Query:Regex}\"";
|
return QString("%1 -n 10000 %{Query:Escaped}")
|
||||||
return "-l 10000 -r \"%{Query:Regex}\"";
|
.arg(sens == Qt::CaseInsensitive ? QString() : "-i ");
|
||||||
|
return QString("%1 -A -l 10000 %{Query:Escaped}")
|
||||||
|
.arg(sens == Qt::CaseInsensitive ? QString() : "-i ");
|
||||||
}
|
}
|
||||||
|
|
||||||
const char kCommandKey[] = "command";
|
const char kCommandKey[] = "command";
|
||||||
@@ -230,6 +233,7 @@ static MacroExpander *createMacroExpander(const QString &query)
|
|||||||
[query] {
|
[query] {
|
||||||
QString regex = query;
|
QString regex = query;
|
||||||
regex = regex.replace('*', ".*");
|
regex = regex.replace('*', ".*");
|
||||||
|
regex = regex.replace(' ', ".*");
|
||||||
return regex;
|
return regex;
|
||||||
});
|
});
|
||||||
return expander;
|
return expander;
|
||||||
@@ -306,7 +310,7 @@ void SpotlightLocatorFilter::saveState(QJsonObject &obj) const
|
|||||||
obj.insert(kCommandKey, m_command);
|
obj.insert(kCommandKey, m_command);
|
||||||
if (m_arguments != defaultArguments())
|
if (m_arguments != defaultArguments())
|
||||||
obj.insert(kArgumentsKey, m_arguments);
|
obj.insert(kArgumentsKey, m_arguments);
|
||||||
if (m_caseSensitiveArguments != defaultCaseSensitiveArguments())
|
if (m_caseSensitiveArguments != defaultArguments(Qt::CaseSensitive))
|
||||||
obj.insert(kCaseSensitiveKey, m_caseSensitiveArguments);
|
obj.insert(kCaseSensitiveKey, m_caseSensitiveArguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -314,14 +318,14 @@ void SpotlightLocatorFilter::restoreState(const QJsonObject &obj)
|
|||||||
{
|
{
|
||||||
m_command = obj.value(kCommandKey).toString(defaultCommand());
|
m_command = obj.value(kCommandKey).toString(defaultCommand());
|
||||||
m_arguments = obj.value(kArgumentsKey).toString(defaultArguments());
|
m_arguments = obj.value(kArgumentsKey).toString(defaultArguments());
|
||||||
m_caseSensitiveArguments = obj.value(kCaseSensitiveKey).toString(defaultCaseSensitiveArguments());
|
m_caseSensitiveArguments = obj.value(kCaseSensitiveKey).toString(defaultArguments(Qt::CaseSensitive));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpotlightLocatorFilter::reset()
|
void SpotlightLocatorFilter::reset()
|
||||||
{
|
{
|
||||||
m_command = defaultCommand();
|
m_command = defaultCommand();
|
||||||
m_arguments = defaultArguments();
|
m_arguments = defaultArguments();
|
||||||
m_caseSensitiveArguments = defaultCaseSensitiveArguments();
|
m_caseSensitiveArguments = defaultArguments(Qt::CaseSensitive);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // Internal
|
} // Internal
|
||||||
|
Reference in New Issue
Block a user