システムコールと「?」を使用した TeXstudio スクリプト

システムコールと「?」を使用した TeXstudio スクリプト

ブラウザで選択した単語を検索するために使用できる簡単なスクリプトを Texstudio で作成したいと思います。

クエリ コマンドを正しく呼び出すことができないことを除いて、すべて正常に動作します。

「?」は切り取られているようです。しかし、置換、URLエンコードなどを行っても、うまくいきません。

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 を削除しました)

関連情報