Skip to content

Commit

Permalink
Added Mitsuba-specific configuraiton files for 'ag' and 'YouCompleteMe'
Browse files Browse the repository at this point in the history
Ag is an amazing grep replacement which quickly searches the entire codebase for keywords

YouCompleteMe provides code completion in VIM using a Clang backend. The committed configuration file automatically fetches compilation options from config.py.
  • Loading branch information
Wenzel Jakob committed Jun 4, 2014
1 parent 03bb97f commit 62c4eeb
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .agignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
dependencies
build
data
Mitsuba.app
scenes
59 changes: 59 additions & 0 deletions .ycm_extra_conf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import os
import re
import ast

SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__))

flags = []
pattern = re.compile('^([A-Z0-9]+)\s*=\s*(\[.*\])')
with open(os.path.join(SCRIPT_PATH, "config.py")) as f:
for line in f:
result = pattern.search(line)
if result is None:
continue
key = result.group(1)
if 'LINK' in flags or (not 'FLAGS' in key and not 'INCLUDE' in key):
continue
try:
result = ast.literal_eval(result.group(2))
if 'INCLUDE' in key:
flags += [ '-I' + path.replace('#', '') for path in result ]
else:
flags += result
except:
pass

def MakeRelativePathsInFlagsAbsolute(flags, working_directory):
if not working_directory:
return list(flags)
new_flags = []
make_next_absolute = False
path_flags = ['-isystem', '-I', '-iquote', '--sysroot=']
for flag in flags:
new_flag = flag

if make_next_absolute:
make_next_absolute = False
if not flag.startswith('/'):
new_flag = os.path.join(working_directory, flag)

for path_flag in path_flags:
if flag == path_flag:
make_next_absolute = True
break

if flag.startswith(path_flag):
path = flag[len(path_flag):]
new_flag = path_flag + os.path.join(working_directory, path)
break

if new_flag:
new_flags.append(new_flag)
return new_flags

def FlagsForFile(filename, **kwargs):
final_flags = MakeRelativePathsInFlagsAbsolute(flags, SCRIPT_PATH) + ['-x', 'c++']
return {
'flags': final_flags,
'do_cache': True
}

0 comments on commit 62c4eeb

Please sign in to comment.