TeXstudio 脚本带有系统调用和“?”

TeXstudio 脚本带有系统调用和“?”

我想在 texstudio 中制作一个简单的脚本,可以用来在浏览器中搜索选定的单词。

一切都正常,只是我无法正确调用查询命令。

“?”似乎被截断了。但是替换、urlencoding 等也不起作用。

我该如何对 URL 中的“?”进行编码,或者是否有我可以尝试的标志?

我尝试了 system() 和 buildManager.runCommand(),在这种情况下,两者执行的操作相同。

%SCRIPT
u=encodeURI("https://ecosia.org/search?q="+cursor.selectedText())
//u=encodeURI("https://ecosia.org/search\?q="+cursor.selectedText())
//u="https://ecosia.org/search\\%3Fq="+cursor.selectedText()
//u="https://ecosia.org/search%3Fq="+cursor.selectedText()
//u="https://ecosia.org/search?q="+cursor.selectedText()
//u="https://ecosia.org/search\?q="+cursor.selectedText()
//buildManager.runCommand("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\" \""+u+"\"")
system("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\" \""+u+"\"")

这些是我尝试过的一些组合……但没有一个能达到预期的效果。日志中的结果如下:

Prozess gestartet: "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "https://ecosia.org/search

任何想法都值得赞赏。谢谢

答案1

我自己找到了答案并将其发布给那些可能感兴趣的人。

当我深入研究 buildmanager.cpp 中的源代码时:

else if (str.at(i) == QChar('?')) {
if (str.at(++i) == QChar('?')) add = "?";

这意味着,当我执行以下操作时,我的宏脚本有效:

%SCRIPT
u="https://ecosia.org/search??q="+cursor.selectedText()
system("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\" \""+u+"\"")

注意:在系统调用中,“??” 变为“?”。% 和 @ 也一样

现在我可以直接搜索突出显示的文本。(我摆脱了 urlencode,因为缺少 % 导致它的行为不符合预期)

相关内容