Want to change the google search to customer search.
-
@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/
-
I was just using the OP’s dummy query, which was obfuscated to prevent us from knowing what site they were actually searching. (My guess is it is one of the services that provides cloud-based services for corporations, and the OP was trying to obscure which one.)
Given that the root cause of the problem was not the website, but the interface between Notepad++, Windows, and the browser, it doesn’t bother me that the OP used a dummy website (though really, using the .example top-level domain is a better choice than trying to fake a .com; you never know when creating a dummy URL with a legal-style domain will accidentally intersect with a real machine).
The fake URL given was sufficient to show us the problem; and using that fake URL, I was able to present a solution that would allow the entire more-than-260-character URL to be passed to the browser, so it was a reasonable choice.
-
@PeterJones
I did a search on the site from Notepad++, it is necessary to see how the search engine makes a request. Each machine has different requests. Here are my examples (my code does not insert, says it’s spam and I took a screenshot ) -
Maybe I’m dumb here, but why wouldn’t all sites do it differently? I mean, they could do it the same way (sometimes “standards” develop by imitation), but…
-
Based on the thread as a whole, I am confident we have provided enough information for @Cary-Korn to know where in the URL the
$(CURRENT_WORD)
needs to go (ie, in the place of the “str=test” in the example dummy URL that @Cary-Korn provided), regardless of what search engine is used. If @Cary-Korn obfuscated the real URL being used, I am working under the assumption that there will be no difficulty un-obfuscating the URL back to something that is functional.The problem being asked about in this thread was not “what is the right URL for such-and-such a search engine?” The question was how to transmit said URL to the browser without the end being cut off. That’s the problem I attacked, and has worked in my tests of my solution.