vim-clang-format icon indicating copy to clipboard operation
vim-clang-format copied to clipboard

Fixed a bug caused by paths with spaces in Windows.

Open nicber opened this issue 9 years ago • 10 comments

If I specify g:clang_format='"C:/Program Files (x86)/LLVM/bin/clang-format.exe"' (For example) then the call to executable() fails because the executable function gets confused by the quotes, which are necessary to escape the spaces. This patch removes those quotes before testing if it is executable.

nicber avatar Oct 01 '16 18:10 nicber

I think quoting command name is not good. Does escaping white spaces such as some\ dir work well?

rhysd avatar Oct 02 '16 12:10 rhysd

Unfortunatelly, escaping whitespace with \ does not work.

nicber avatar Oct 02 '16 16:10 nicber

I noticed that this is a problem when the command is run. I'll commit a fix for it tomorrow. Could you try it before merging this PR?

rhysd avatar Oct 02 '16 17:10 rhysd

Sure, I'll test it. My clang-command is '"C:/Program Files (x86)/LLVM/bin/clang-format.exe"' I investigated this issue and found the following:

  • Quoting the path is necessary for system() to work.
  • Quoting makes the call to executable() fail.
  • If I don't quote the path, the failures are inversed. So, the solution I found was to remove the quotes before calling executable.

nicber avatar Oct 02 '16 17:10 nicber

@nicber

Please try latest with below config (removing quotes)

let g:clang_format#command = 'C:/Program Files (x86)/LLVM/bin/clang-format.exe'

rhysd avatar Oct 03 '16 00:10 rhysd

Error detected while processing function clang_format#replace[2]..<SNR>45_verify_command[1]..clang_format#is_invalid:
line   10:
E684: list index out of range: 0
E15: Invalid expression: v[0] < 3 || (v[0] == 3 && v[1] < 4)
Error detected while processing function clang_format#replace[42]..<SNR>45_error_message:
line    1:
clang-format has failed to format.       

I get this error with the latest commit.

nicber avatar Oct 03 '16 12:10 nicber

Thank you for the report. It looks to resolve the quoting problem on Windows :smile: And it seems to fail to check clang version. I'll fix version check more strict. Could you show the output of clang-format.exe --version?

rhysd avatar Oct 04 '16 02:10 rhysd

Could you try the latest? (and please let me know the output of clang-format --version to fix skipping version check)

rhysd avatar Oct 05 '16 00:10 rhysd

Sorry for the delay I get this error with latest

Error detected while processing function clang_format#replace[42]..<SNR>45_error_message:
line    1:
clang-format has failed to format.   

This is the result of clang-format --version

C:\Users\nicol>"C:/Program Files (x86)/LLVM/bin/clang-format.exe" --version
clang-format version 3.9.0 (branches/release_39)

nicber avatar Oct 05 '16 15:10 nicber

Thank you for confirmation. Hmm... I think clang-format command failed by some reason. I'll investigate it on my Windows machine (I actually don't have Windows machine for development...)

Please ensure that your code can be formatted correctly from command line.

rhysd avatar Oct 05 '16 15:10 rhysd