Want to change the google search to customer search.
-
My
shortcuts.xml
has a few customized searches, all of which work for me:<Command name="Get perldoc info" Ctrl="no" Alt="yes" Shift="no" Key="112">http://perldoc.perl.org/search.html?q=$(CURRENT_WORD)</Command> <Command name="Get perl module info" Ctrl="no" Alt="yes" Shift="no" Key="113">https://metacpan.org/search?q=$(CURRENT_WORD)</Command> <Command name="Wikipedia Search" Ctrl="no" Alt="yes" Shift="no" Key="114">https://en.wikipedia.org/wiki/Special:Search?search=$(CURRENT_WORD)</Command>
If I duplicate your search URL, replacing the Test with $(CURRENT_WORD):
<Command name="CaryKornSearch" Ctrl="no" Alt="yes" Shift="no" Key="0">https://test.my.testforce.com/_ui/search/ui/UnifiedSearchResults?searchType=2&sen=a0T&sen=0WO&sen=a0W&sen=ka&sen=00O&sen=00P&sen=a0b&sen=00T&sen=015&sen=00U&sen=a4j&sen=a1F&sen=a0h&sen=00a&sen=a1S&sen=0F9&sen=a1U&sen=08p&sen=a1X&sen=a3c&sen=02s&sen=001&sen=068&sen=003&sen=500&sen=005&sen=501&sen=006&sen=a6M&sen=a0L&sen=a0M&str=$(CURRENT_WORD)</Command>
and save that in my
shortcuts.xml
, then exit/reload, highlight a word, and try to go to that URL, it tries to actually go to “https://test.my.testforce.com/_ui/search/ui/UnifiedSearchResults?searchType=2&sen=a0T&sen=0WO&sen=a0W&sen=ka&sen=00O&sen=00P&sen=a0b&sen=00T&sen=015&sen=00U&sen=a4j&sen=a1F&sen=a0h&sen=00a&sen=a1S&sen=0F9&sen=a1U&sen=08p&sen=a1X&sen=a3c&sen=02s&sen=001&sen=06” – it looks like it’s hitting a URL-length limit.If I shorten that to:
<Command name="CaryKornShortURL" Ctrl="no" Alt="yes" Shift="no" Key="0">https://test.my.testforce.com/_ui/search/ui/UnifiedSearchResults?searchType=2&str=$(CURRENT_WORD)</Command>
and have the word
NPP_FULL_FILE_PATH
highlighted after my reload, then Run > CaryKornShortURL takes me tohttps://test.my.testforce.com/_ui/search/ui/UnifiedSearchResults?searchType=2&str=NPP_FULL_FILE_PATH
, which is what I’d expect. (Admittedly, the test.my.testforce.com is a dummy-domain, so I get an error result, but that’s the URL that’s tried to go to)Do you really need so many of the same
sen=...
keyword, with so many values? Often times, search engines add extra keyword/value pairs after doing a redirection, but you don’t really need to include all of those in a manual search. Would the shortened version I show take you to the right search results? If not, can you come up with a minimum-length URL that will get you to the right search results? You might just try moving the&str=...
term earlier in the search URL, like<Command name="CaryKornReorderedURL" Ctrl="no" Alt="yes" Shift="no" Key="0">https://test.my.testforce.com/_ui/search/ui/UnifiedSearchResults?searchType=2&str=$(CURRENT_WORD)&sen=a0T&sen=0WO&sen=a0W&sen=ka&sen=00O&sen=00P&sen=a0b&sen=00T&sen=015&sen=00U&sen=a4j&sen=a1F&sen=a0h&sen=00a&sen=a1S&sen=0F9&sen=a1U&sen=08p&sen=a1X&sen=a3c&sen=02s&sen=001&sen=068&sen=003&sen=500&sen=005&sen=501&sen=006&sen=a6M&sen=a0L&sen=a0M</Command>
-
a bet (0,01€) :-D
you haven’t replaced & with&
in the shortcuts.xml -
I second that…32 times…or if I’m “2nding” it, should that be 16x ??
-
@Ekopalypse said:
you haven’t replaced & with & in the shortcuts.xml
A seemingly good bet, but when I converted the longest version I showed above to use
&
instead of&
:<Command name="CaryKornSearch" Ctrl="no" Alt="yes" Shift="no" Key="0">https://test.my.testforce.com/_ui/search/ui/UnifiedSearchResults?searchType=2&sen=a0T&sen=0WO&sen=a0W&sen=ka&sen=00O&sen=00P&sen=a0b&sen=00T&sen=015&sen=00U&sen=a4j&sen=a1F&sen=a0h&sen=00a&sen=a1S&sen=0F9&sen=a1U&sen=08p&sen=a1X&sen=a3c&sen=02s&sen=001&sen=068&sen=003&sen=500&sen=005&sen=501&sen=006&sen=a6M&sen=a0L&sen=a0M&str=$(CURRENT_WORD)</Command>
it still resolves to the URL
https://test.my.testforce.com/_ui/search/ui/UnifiedSearchResults?searchType=2&sen=a0T&sen=0WO&sen=a0W&sen=ka&sen=00O&sen=00P&sen=a0b&sen=00T&sen=015&sen=00U&sen=a4j&sen=a1F&sen=a0h&sen=00a&sen=a1S&sen=0F9&sen=a1U&sen=08p&sen=a1X&sen=a3c&sen=02s&sen=001&sen=06
– so I think it’s hitting a character limit somewhere – and that somewhere is after it’s parsed the XML and converted it into normal&
internally, because it stopped in the same place it did in my example above.If I use
<Command name="SuperLongSearch" Ctrl="no" Alt="yes" Shift="no" Key="0">https://dummy.example/?search=$(CURRENT_WORD);long=123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k123456789l123456789m123456789n123456789o123456789p123456789q123456789r123456789s123456789t123456789u123456789v123456789w123456789z123456789w123456789z</Command>
so the URL is 296 characters plus the search term (260 for the 10*26, plus 36 fixed, plus however long
$(CURRENT_WORD)
resolves to, and highlight the wordWORD
, it tries to go to the URLhttps://dummy.example/?search=WORD;long=123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k123456789l123456789m123456789n123456789o123456789p123456789q123456789r123456789s123456789t12345678
– so it stripped 52 characters from the URL I would expect.With
SUPERCALIFRAGILISTICEXPIALIDOCIOUS
highlighted, it went tohttps://dummy.example/?search=SUPERCALIFRAGILISTICEXPIALIDOCIOUS;long=123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k123456789l123456789m123456789n123456789o123456789p123456789q123456789r123456789
, so it stripped 61 characters… which is odd, sinceSUPERCALIFRAGILISTICEXPIALIDOCIOUS
is more than 9 characters more thanWORD
.(edits clarified a couple things)
-
@PeterJones
You hit my language barrier :-)
I don’t get what you are saying.
As far as I can understand, you think that there is a limit how long a command can be, right?
A brief look in the source code didn’t reveal this limit but might be somewhere else set and
because you tested it and I’m certain you did it correctly I assume it is set somewhere else indeed.
What confuses me is our conversation about escaping the ampersand.
From xml point of view there is a need to escape it, don’t you agree? -
Sorry, your English here is so fluent, I forget it’s not your native language.
Regarding escaping ampersands in XML: yes, technically, the ampersands should be escaped (made into
&
entities) in the XML. However, many XML parsers realize that it’s not an entity once they get to the=
without having come across a valid entity name, and so decide that the&sel=
was meant as literal text rather than as an attempt at a named entity. My experiment above, where the URL was the same (whether the&sel=
were raw or&sel=
) seems to indicate that the XML-parser that Notepad++ is using implements the fallback condition rather than complaining that it cannot parse the XML.Regarding the length: Yes, I think there’s a limit to how long the command can be. I’m not sure how else to interpret the experiments I did with dummy.example, which didn’t use any ampersands, but show the URL getting truncated by the time it reaches the browser. I don’t know whether the limit is
- when reading the XML file – I don’t think so, because the truncated length seemed to be the same whether I used raw
&
or entity&
in the XML file - sometime after converting the entities into plain text inside Notepad++ – I think this is more likely, though where that “somewhere” is would be more complicated
- sometime between when Notepad++ sends the URL to the browser and the browser receives it – this is also possible
- windows is truncating it in the between-time
- the browser (in my experiment, chrome) has a limit as to how many characters it accepts from whatever mechanism it receives the URL from windows
I may have to look into the code, and/or try some more experiments, to try to pin down where the problem lies.
- when reading the XML file – I don’t think so, because the truncated length seemed to be the same whether I used raw
-
fluent English !? :-D - thanks to deepl
Ok - finally, I guess, I’ve understood.
The limit you’ve discovered is near to 260 which is a known limit for path length, as far as I remember.
I read that in Win10 this limit has been eliminated but if it is set in source …
Thx for the hint about the xml parser, I wasn’t aware that this is even possible.
I always thought escaping these 5 special chars is a must have.
Learned something new :-) -
Google translate usually generates passable English, but I thought I would be able to recognize text that had gone thru translator as compared to even a non-native trying to translate his language into English. I guess deepl is pretty convincing. :-)
Don’t let my laziness of letting the xml-parser handle my malformed XML corrupt you into to taking shortcuts. I don’t use XML for more than editing config files here and elsewhere, and such applications often follow the adage “Be conservative in what you send, be liberal in what you accept” (Postel’s Law). If I were writing XML for a living, I’d be much more strict in any XML example I gave. It’s best to always use entities for those 5 characters in XML when you are writing XML.
-
To be honest, I don’t know if I’m using it correctly at all because I let it translate from English into German
and I’m changing it until the German translation makes sense to me.
But it looks like it generates a much better English translation this way than the other way around.
Which, of course, could mean, that I constantly produce English text with German grammar :-)With google translate I wasn’t able to get a proper result using it this way
but have to admit that I haven’t used it for quite some time now.
And if used in the normal way, it always made me feel that there is something wrong.
But who knows, maybe it is much better nowadays. -
Back on topic:
I was curious, so I followed these directions to create a fake URL protocol/scheme (“alert:xxx”), but I just passed it to
cmd /c "echo %1 && pause"
. After refreshing my login, I then updatedshortcuts.xml
to add an Run > alert using Alt+F5:<Command name="alert" Ctrl="no" Alt="yes" Shift="no" Key="116">alert:$(CURRENT_WORD)</Command>
When running that, with the text
123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x123456789x
selected, it stops at 259 characters, including thealert:
protocol prefix. I hadn’t realized that the 260-character limitation would apply to commands as well as filenames.I haven’t found anywhere where there’s a 260+/-1 hardcoded in Notepad++ source code that would influence this (one of the Lexers apparently hardcodes a 260-character limit in one of its buffers, but none others that appeared to deal with strings), so maybe it’s really in the libraries that NPP chose to handoff to windows, or something.
Adding a command-based rather than URL-based:
<Command name="alertcmd" Ctrl="no" Alt="yes" Shift="no" Key="118">cmd /c "echo $(CURRENT_WORD) && pause"</Command>
I successfully passed that up to 2047 characters in $(CURRENT_WORD).
With that in mind, and the launch in browser syntax, I created
<Command name="cmdurl" Ctrl="no" Alt="yes" Shift="no" Key="119">chrome file:$(CURRENT_WORD)"</Command>
which launches chrome with the given file: URL. I was able to pass it 2047 characters no problem
So edit cmdurl to the @Cary-Korn’s original long-URL example, with proper
&
-entities:<Command name="cmdurl" Ctrl="no" Alt="yes" Shift="no" Key="119">chrome https://test.my.testforce.com/_ui/search/ui/UnifiedSearchResults?searchType=2&sen=a0T&sen=0WO&sen=a0W&sen=ka&sen=00O&sen=00P&sen=a0b&sen=00T&sen=015&sen=00U&sen=a4j&sen=a1F&sen=a0h&sen=00a&sen=a1S&sen=0F9&sen=a1U&sen=08p&sen=a1X&sen=a3c&sen=02s&sen=001&sen=068&sen=003&sen=500&sen=005&sen=501&sen=006&sen=a6M&sen=a0L&sen=a0M&str=$(CURRENT_WORD)</Command>
When I did that, it hit a limit of the ~260 characters again. (Though, this time, instead of clipping, it wrapped around and started the URL over for a few more characters; it was weird). I think that the way that command-line arguments are being sent to ShellExecute, and/or how ShellExecute is handling them, is limiting the argument to a command to be ~260 characters.
-
So, the end-result is: @Cary-Korn, try to pare down your URL to be able to be significantly less than 260 characters without the $(CURRENT_WORD) value, so that it will stay <260-characters with that value embedded in the URL. Or use some sort of URL-shrinking service that allows passing parameters, so you could use
https://fake.url/shortener?str=$(CURRENT_WORD)
, where all the other parameters are internal to the url-shortener service. -
I guess you are on the right track. I assume the underlying create process is the culprit.
As stated on msdnThe maximum length of this string is 32,768 characters, including the Unicode terminating null character.
If lpApplicationName is NULL, the module name portion of lpCommandLine is limited to MAX_PATH characters. -
Thanks for all the help. I have played with the url trying to shorten it but it seems to glitch the search. It keeps asking for the search to be more than 2 characters long. The url shorten might work just not sure of any service that can parse the search term to make it work. This might be something that is just not possible with this site.
-
just a thought, to get the line shorter within notepad++:
can you perform a search from a test.cmd batch file ?
if yes, you can try to callyour_path_to\test.cmd $(CURRENT_WORD)
oryour_path_to\test.cmd "$(CURRENT_WORD)"
inside shortcuts.xml, to keep the notepad++ executable line as short as possible.shortcuts.xml example:
<Command name="test" Ctrl="no" Alt="no" Shift="no" Key="0">C:\Users\user\test.cmd $(CURRENT_WORD)</Command>
inside the batch file $(CURRENT_WORD) will be reflected as
%1
-
Does NppExec suffer from the same character limitations? Seems like that would work or I’m sure you could use a python script.
-
Python is beyond my skill.
-
I tried the .bat option and it looks like it still cuts off the url. It will not take the highlight search term and parse it into the url. I though this was going to be an easy thing.
-
if it does not even work from a .bat or .cmd with the length of your url, i suppose it is beyond of anything that can be started from a command line.
if this url is that long, you could try to run it through the windows explorer api, by creating a link shortcut (.lnk file) by right clicking on your desktop, and creating new > shortcut, with the parameters
"path_to_your\browser.exe" "https://your_long_url"
if your url would work from a desktop shortcut (.lnk), you could use a script, or one of the available exe tools on the internet, to create a .lnk file programmatically.
-
@Cary-Korn said:
I tried the .bat option and it looks like it still cuts off the url. It will not take the highlight search term and parse it into the url. I though this was going to be an easy thing.
It would have been easy, except you’re dealing with the interface between an application and windows and another application; there are some things that are out of your control.
However, I think I found a .bat variant that will work.
Create a batchfile at a known location (I made mine as
c:\usr\local\scripts\longurl.bat
), containing the single line"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "https://test.my.testforce.com/_ui/search/ui/UnifiedSearchResults?searchType=2&sen=a0T&sen=0WO&sen=a0W&sen=ka&sen=00O&sen=00P&sen=a0b&sen=00T&sen=015&sen=00U&sen=a4j&sen=a1F&sen=a0h&sen=00a&sen=a1S&sen=0F9&sen=a1U&sen=08p&sen=a1X&sen=a3c&sen=02s&sen=001&sen=068&sen=003&sen=500&sen=005&sen=501&sen=006&sen=a6M&sen=a0L&sen=a0M&str=%1"
The first part is the full path to the chrome browser, in quotes (because of the spaces in the path); the second part is all of the long url, except the search term; use the %1 instead of the search term. (If you don’t want to use chrome, use the full path to your browser executable of choice.)
Second, edit
shortcuts.xml
and add<Command name="longurl" Ctrl="no" Alt="yes" Shift="no" Key="116">c:\usr\local\scripts\longurl.bat $(CURRENT_WORD)</Command>
(making sure to use your batchfile path, not mine.)
Save, exit Notepad++, reload. Highlight a word (I highlighted
TestString
) and hitAlt+F5
(which is the alias I used in the command above): this properly opened chrome with the full URL, including the search string; because it was a dummy URL, it didn’t go anywhere, but chrome displayed the full URL through the end of theTestString
, which is something that hadn’t happened in my previous experiments. -
@PeterJones said:
On what site do you want to search from Notepad++?
This site does not exist"https://test.my.testforce.com/