Redraw the screen before displaying a message There has been several complaints about the message "ValueError: File is less than 5 lines long; not compiling". See issues #814, #1364, #1544. In fact, I believe the issue is not the message itself but the infamous "Press ENTER or type command to continue" prompt when editing a new C-family file. For example, if I create the file `foo.c`, Vim will display the line `"foo.c" [New file]` and then YouCompleteMe will display `ValueError: File is less than 5 lines long; not compiling`. Since there are now two lines, the hit-enter message is prompted. By redrawing the screen just before displaying the message from YouCompleteMe, only one line appears and we avoid this behavior. Tested on Linux and Windows. CLA signed.
Fix completer available Sorry, I deleted the branch on github by mistake. Here is the same changes from #1530 plus a buffer local variable, so we don't try to set the `omnifunc` everytime we enter insert mode. I signed the CLA.
This reverts commit f5e2fc6.
Another way in which the commit d768447 forced the client to wait for the server to start was the UpdateDiagnosticNotifications call from the FileReadyToParse which is called right after a buffer is loaded. In any way if we don't have any previous FileReadyToParse request done for the current file we bail out, so we we can wait for a FileReadyToParse response to be available before asking if a completer is usable for the current filetype. ref: #1529
When we enter a new buffer we need to know if the ycmd server has a native completer for the current filetype, this means that when we start vim we need to know if the server has a completer available for the buffer which means that we have to wait for the server to be up and running. To mitigate this defer the setting of the omnifunction closer to its need which is when we enter insert mode; this should give room for the ycmd server to start before we ask for anything or at least should reduce the time waiting. ref: #1529
Previously we were checking if the `hook.py` file existed for the given filetype. ycmd has an endpoint for checking if given a filetype a semantic completer is available. To avoid redundant requests we cache those requests for every filetype. A semantic engine cannot be added *after* the ycmd server is started so to avoid redundant requests we cache those requests for every filetype and we clear the cache at server setup, in this way if we issue a `YcmRestartServer` command the server will be setup again and if a semantic completer is available we can use it. Should fix #1284.
…eliable way of detecting terminals in neovim