mawww / kak-ycmd

YouCompleteMe support script for Kakoune
13 stars 2 forks source link

Is it still working? #1

Closed casimir closed 8 years ago

casimir commented 8 years ago

Tried to use this with C++ and Go. For both I got the message "completed" but no matches proposed. Being my first contact with a kak file I can't figure if I did something wrong.

mawww commented 8 years ago

Hi, I do not use it anymore day to day, clang.kak is a little slower but more maintained. I tried and it does work here, you'll get ycmd output in the *ycmd-output* buffer, its likely that will give you an idea what is going on. In particular, YouCompleteMe wants a .ycm_extra_confg.py file.

casimir commented 8 years ago

Thanks for the buffer tip! After fixing some $PATH issues (gnu-coreutils need some setup to work seamlessly on OSX), I think all run correctly. I still have an error though, from *ycmd-output*:

<some timestamp> - INFO - Dropping request with bad HMAC.

Any insight?

mawww commented 8 years ago

anything in the *debug* buffer ?

casimir commented 8 years ago

Nothing useful. Could it be the version of OpenSSL posing problem?

casimir commented 8 years ago

Looks like it really is a HMAC issue. It is empty for me. I don't find where the variable is supposed to be initialised, there is only one occurence of ${kak_opt_ycmd_hmac_key}.

edit: The variable is initialised this is the base64 call that doesn't work.

## With some debug on line 81 I got the following log.

# echo "HMAC - ${kak_opt_ycmd_hmac_key}"
# key=$(echo -n "${kak_opt_ycmd_hmac_key}" | base64 -d -w0)
# echo "KEY - ${key}"

HMAC - Gb/54Rea9MqDp30ntqPDKQ==
base64: invalid input
KEY - 
base64: invalid input

Regarding version:

$ base64 --version
base64 (GNU coreutils) 8.24
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Simon Josefsson.
mawww commented 8 years ago

Hi, in %sh{ ... } blocks, $kakopt is the syntax to access Kakoune option , so here we access the ycmd_hmac_key option, which is declared line 5 and set line 47. You can display that option value with :echo %opt{ycmd_hmac_key}. the prompt wont provide option name completion for it because that is an hidden option, but the option should exist anyway.

casimir commented 8 years ago

I managed to get a key using openssl base64 instead of base64 but still ycmd considers it a bad HMAC, can't figure out why. Looks like this script isn't compatible with OSX 10.11. I will stop trying for now, thank you for your time.

mawww commented 8 years ago

Hi, Took a small look, I suspect for some reason base64 on your computer adds a final end of line in its output. Thats what the -w0 option is here to avoid, but I guess it just happened to work, I did not find a way to force openssl base64 not to do that, and tries with tr -d '\n' did not work well either.