aboutsummaryrefslogtreecommitdiff
path: root/contrib/YouCompleteMe
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/YouCompleteMe')
-rw-r--r--contrib/YouCompleteMe/README.md15
-rw-r--r--contrib/YouCompleteMe/ycm_extra_conf.py43
2 files changed, 58 insertions, 0 deletions
diff --git a/contrib/YouCompleteMe/README.md b/contrib/YouCompleteMe/README.md
new file mode 100644
index 0000000000..6560d03d07
--- /dev/null
+++ b/contrib/YouCompleteMe/README.md
@@ -0,0 +1,15 @@
+# YouCompleteMe
+
+## Installation
+
+### Step 1
+
+Install [YouCompleteMe](https://github.com/Valloric/YouCompleteMe).
+
+### Step 2
+
+```bash
+cp ycm_extra_conf.py ../../src/.ycm_extra_conf.py
+echo src/.ycm_extra_conf.py >> ../../.git/info/exclude
+make -C ../.. cmake
+```
diff --git a/contrib/YouCompleteMe/ycm_extra_conf.py b/contrib/YouCompleteMe/ycm_extra_conf.py
new file mode 100644
index 0000000000..9fd2ba8b8d
--- /dev/null
+++ b/contrib/YouCompleteMe/ycm_extra_conf.py
@@ -0,0 +1,43 @@
+# .ycm_extra_conf.py for nvim source code.
+import os, ycm_core
+
+
+def DirectoryOfThisScript():
+ return os.path.dirname(os.path.abspath(__file__))
+
+
+def GetDatabase():
+ compilation_database_folder = DirectoryOfThisScript() + '/../build'
+ if os.path.exists(compilation_database_folder):
+ return ycm_core.CompilationDatabase(compilation_database_folder)
+ return None
+
+
+def IsHeaderFile(filename):
+ extension = os.path.splitext(filename)[1]
+ return extension == '.h'
+
+
+def GetCompilationInfoForFile(filename):
+ database = GetDatabase()
+ if not database:
+ return None
+ if IsHeaderFile(filename):
+ basename = os.path.splitext(filename)[0]
+ replacement_file = basename + '.c'
+ if os.path.exists(replacement_file):
+ compilation_info = database.GetCompilationInfoForFile(replacement_file)
+ if compilation_info.compiler_flags_:
+ return compilation_info
+ return None
+ return database.GetCompilationInfoForFile(filename)
+
+
+def FlagsForFile(filename):
+ compilation_info = GetCompilationInfoForFile(filename)
+ if not compilation_info:
+ return None
+ return {
+ 'flags': compilation_info.compiler_flags_,
+ 'do_cache': True
+ }