Recently, I was trying to configure my neovim. I use coc plugin to do golang code auto-completion work and youcompleteme plugin to do c liked code auto-completion.
I need to add my headers to youcompleteme, however, the loading progress is taking too much time due to the performance limitation of python. Here are two solutions, the first one is porting the python code to c. the second one is let cython do the dirty work for me.
My code is super simple
Use the following cython command to generate c code
cython vobs_include.pyx --embed
Compile the c code to shared library using gcc
gcc -shared -o vobs_include.so vobs_include.c -I/usr/local/Frameworks/Python.framework/Versions/3.8/include/python3.8 -L/usr/local/Frameworks/Python.framework/Versions/3.8/lib -lpython3.8 -lpthread -lm -lutil -ldl
Let’s make a python package.
I create a directory called vobs_include and an empty __init__.py file. In Python language, the __init__.py plays vita role in package. You can’t import function unless you have an __init__.py file on the directory. The package looks like the following image.
Importing the function globally and extend the flags list on .ycm_extra_conf.py then restart the ycmd server