On 03 May 2006, at 20:48, Allan Odgaard wrote:
On 3/5/2006, at 20:28, Fred B. wrote:
eval "$TM_HG" log -v $HG_LIMIT --style "'$HG_STYLE'" $TM_SELECTED_FILES 2>&1
I’m not sure why Ollivier gets an error, would indicate that there is a ' in the value of HG_STYLE.
That would be strange as HG_STYLE="${TM_BUNDLE_SUPPORT}/map- cmdline.changelog" so "/Library/Application Support/TextMate/Bundles/Mercurial.tmbundle/ Support/map-cmdline.changelog" or "~/Library/Application Support/TextMate/Bundles/Mercurial.tmbundle/ Support/map-cmdline.changelog" If I'm not missing something. Or there is a single quote in the user name. Is such an horror possible? :)
(It was Brad, btw)
However, there are some problems with this line. First, $TM_SELECTED_FILES should be quoted. Second, the eval causes the line to be re-interpreted after initial variable expansion, this is why you get an error without the single quotes.
I didn't quote $TM_SELECTED_FILES because it was not quoted in the svn bundle and I didn't have any problem even with paths with space in them. It works when quoted too, so I'll quote it anyway.
So, the two solutions which spring to mind is 1) keep the single quotes and escape any potential single quotes in HG_STYLE, if bash wasn’t broken (to the best of my knowledge) that would make it "'$ {HG_STYLE//'/'''}'", or 2) use one level of indirection, like this:
dummy='$HG_STYLE' eval "$TM_HG" log -v $HG_LIMIT --style "$dummy" "$TM_SELECTED_FILES" 2>&1
Now $dummy will expand to $HG_STYLE, and the eval will again expand that to the actual value.
None of the solutions work. The first needs or has an unneeded single quote. But as I don't have the problem here and don't even understand that escape nightmare I can't tell. The second doesn't escape the path, as if there wasn't the dummy variable.
But, I just found that $HG_STYLE was 'too' escaped in the other line (without eval), maybe that was the problem. I fixed that, quoted $TM_SELECTED_FILES and TM_HG. I leave it like that for now.
Brad could you try again?
Thanks
-- FredB