OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 # Autocompletion config for YouCompleteMe in Chromium. | 5 # Autocompletion config for YouCompleteMe in Chromium. |
6 # | 6 # |
7 # USAGE: | 7 # USAGE: |
8 # | 8 # |
9 # 1. Install YCM [https://github.com/Valloric/YouCompleteMe] | 9 # 1. Install YCM [https://github.com/Valloric/YouCompleteMe] |
10 # (Googlers should check out [go/ycm]) | 10 # (Googlers should check out [go/ycm]) |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 import os | 51 import os |
52 import os.path | 52 import os.path |
53 import re | 53 import re |
54 import shlex | 54 import shlex |
55 import subprocess | 55 import subprocess |
56 import sys | 56 import sys |
57 | 57 |
58 # Flags from YCM's default config. | 58 # Flags from YCM's default config. |
59 _default_flags = [ | 59 _default_flags = [ |
60 '-DUSE_CLANG_COMPLETER', | 60 '-DUSE_CLANG_COMPLETER', |
61 '-std=c++11', | |
62 '-x', | |
63 'c++', | |
64 ] | 61 ] |
65 | 62 |
66 | 63 |
67 def PathExists(*args): | 64 def PathExists(*args): |
68 return os.path.exists(os.path.join(*args)) | 65 return os.path.exists(os.path.join(*args)) |
69 | 66 |
70 | 67 |
71 def FindChromeSrcFromFilename(filename): | 68 def FindChromeSrcFromFilename(filename): |
72 """Searches for the root of the Chromium checkout. | 69 """Searches for the root of the Chromium checkout. |
73 | 70 |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 Args: | 237 Args: |
241 clang_commandline: (String) Full Clang invocation. | 238 clang_commandline: (String) Full Clang invocation. |
242 out_dir: (String) Absolute path to ninja build directory. Relative paths in | 239 out_dir: (String) Absolute path to ninja build directory. Relative paths in |
243 the command line are relative to |out_dir|. | 240 the command line are relative to |out_dir|. |
244 additional_flags: (List of String) Additional flags to return. | 241 additional_flags: (List of String) Additional flags to return. |
245 | 242 |
246 Returns: | 243 Returns: |
247 (List of Strings) The list of command line flags for this source file. Can | 244 (List of Strings) The list of command line flags for this source file. Can |
248 be empty. | 245 be empty. |
249 """ | 246 """ |
| 247 print clang_commandline, out_dir, additional_flags |
250 clang_flags = [] + additional_flags | 248 clang_flags = [] + additional_flags |
251 | 249 |
252 # Parse flags that are important for YCM's purposes. | 250 # Parse flags that are important for YCM's purposes. |
253 clang_tokens = shlex.split(clang_commandline) | 251 clang_tokens = shlex.split(clang_commandline) |
254 for flag_index, flag in enumerate(clang_tokens): | 252 for flag_index, flag in enumerate(clang_tokens): |
255 if flag.startswith('-I'): | 253 if flag.startswith('-I'): |
256 # Relative paths need to be resolved, because they're relative to the | 254 # Relative paths need to be resolved, because they're relative to the |
257 # output dir, not the source. | 255 # output dir, not the source. |
258 if flag[2] == '/': | 256 if flag[2] == '/': |
259 clang_flags.append(flag) | 257 clang_flags.append(flag) |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 # transient failure. Preventing YCM from caching the flags allows us to try to | 343 # transient failure. Preventing YCM from caching the flags allows us to try to |
346 # determine the flags again. | 344 # determine the flags again. |
347 should_cache_flags_for_file = bool(clang_flags) | 345 should_cache_flags_for_file = bool(clang_flags) |
348 | 346 |
349 final_flags = _default_flags + clang_flags | 347 final_flags = _default_flags + clang_flags |
350 | 348 |
351 return { | 349 return { |
352 'flags': final_flags, | 350 'flags': final_flags, |
353 'do_cache': should_cache_flags_for_file | 351 'do_cache': should_cache_flags_for_file |
354 } | 352 } |
OLD | NEW |