From a3918788c0e3560196bddedbdb50f5e79076e0a5 Mon Sep 17 00:00:00 2001 From: Strahinja Val Markovic Date: Sat, 4 Jan 2014 17:26:15 -0800 Subject: [PATCH] FAQ item about dropped Syntastic support --- README.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/README.md b/README.md index 9dc4aa53..9356ecf4 100644 --- a/README.md +++ b/README.md @@ -1501,6 +1501,42 @@ for bug reports and feature requests. This can be a problem on virtual servers with limited memory. A possible solution is to add more swap memory. +### Why did YCM move away from Syntastic for display of diagnostics? + +Previously, YCM would send any diagnostics it would receive from the libclang +semantic engine to Syntastic for display as signs in the gutter, red squiggles +etc. Today, YCM uses its own code to do that. + +Using Syntastic for this was always a kludge. Syntastic assumes its "checker" +plugins behave in a certain way; those assumptions have never fit YCM. For +instance, YCM continuously recompiles your code in the background for C-family +languages and tries to push new diagnostics to the user as fast as possible, +even while the user types. + +Syntastic assumes that a checker only runs on file save ("active" mode) or even +less frequently, when the user explicitly invokes it ("passive" mode). This +mismatch in assumptions causes performance problems since Syntastic code isn't +optimized for this use case of constant diagnostic refreshing. + +Poor support for this use case also led to crash bugs in Vim caused by +Syntastic-Vim interactions (issue #593) and incredibly annoying screen +flickering (issue #669). Attempts were made to resolve these issues in +Syntastic, but ultimately some of them failed (for various reasons). + +Implementing diagnostic display code directly in YCM resolves all of these +problems. Performance should also improve substantially since the relevant code +is now written in Python instead of VimScript (which is very slow) and is +tailored only for YCM's use-cases. We're also able to introduce new features in +this area since we're not limited to the Syntastic checker API. + +We've tried to implement this in the most backwards-compatible way possible; YCM +options that control diagnostic display fall back to Syntastic options that +control the same concepts if the user has those set. + +Still, some Syntastic-specific configuration you might have had might not +be supported by the new code. Please file issues on the tracker for such +cases; if we find the request to be reasonable, we'll find a way to address it. + ### Completion doesn't work with the C++ standard library headers This is caused by an issue with libclang. Compiling from `clang` the binary uses