
Quero fazer um script simples no texstudio, que possa usar para pesquisar uma palavra selecionada no meu navegador.
Tudo funciona bem, exceto que não consigo chamar o comando de consulta corretamente.
O "?" parece ser um corte. Mas substituir, urlencoding, o que quer que seja, também não resolve.
Como posso codificar o "?" no URL ou há algum sinalizador que eu possa tentar?
Eu tentei system() e buildManager.runCommand(), ambos fazem o mesmo neste caso.
%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+"\"")
Estas são algumas das combinações que tentei... mas nenhuma funcionou como pretendido. O resultado no log é assim:
Prozess gestartet: "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "https://ecosia.org/search
Qualquer ideia é apreciada. Obrigado
Responder1
Encontrei a resposta sozinho e irei publicá-la para quem possa estar interessado.
Enquanto eu pesquisava o código-fonte em buildmanager.cpp:
else if (str.at(i) == QChar('?')) {
if (str.at(++i) == QChar('?')) add = "?";
Isso significa que meu script de macro funciona quando faço isso:
%SCRIPT
u="https://ecosia.org/search??q="+cursor.selectedText()
system("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\" \""+u+"\"")
Note o "??" torna-se "?" na chamada do sistema. O mesmo para% e @
Agora posso pesquisar o texto destacado diretamente. (me livrei do urlencode, pois ele não se comporta como esperado, devido à falta de%)