diff options
| -rw-r--r-- | slicer/json/.ycm_extra_conf.py | 109 | ||||
| -rw-r--r-- | slicer/test/.ycm_extra_conf.py | 113 | ||||
| -rw-r--r-- | slicer/tool/.ycm_extra_conf.py | 109 | ||||
| -rw-r--r-- | slicer/xml/.ycm_extra_conf.py | 111 | 
4 files changed, 442 insertions, 0 deletions
diff --git a/slicer/json/.ycm_extra_conf.py b/slicer/json/.ycm_extra_conf.py new file mode 100644 index 0000000..873e639 --- /dev/null +++ b/slicer/json/.ycm_extra_conf.py @@ -0,0 +1,109 @@ +import os +import ycm_core + +flags = [ +'-Wall', +'-Wextra', +'-Werror', +'-DNDEBUG', +'-std=c++11', +'-x', +'c++', +'-I', +'/usr/include', +'-I', +'..', +'-I', +'/usr/include/glibmm-2.4', +] + +# Set this to the absolute path to the folder (NOT the file!) containing the +# compile_commands.json file to use that instead of 'flags'. See here for +# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html +# +# Most projects will NOT need to set this to anything; you can just change the +# 'flags' list of compilation flags. Notice that YCM itself uses that approach. +compilation_database_folder = '' + +if os.path.exists( compilation_database_folder ): +  database = ycm_core.CompilationDatabase( compilation_database_folder ) +else: +  database = None + +SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ] + +def DirectoryOfThisScript(): +  return os.path.dirname( os.path.abspath( __file__ ) ) + + +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 IsHeaderFile( filename ): +  extension = os.path.splitext( filename )[ 1 ] +  return extension in [ '.h', '.hxx', '.hpp', '.hh' ] + + +def GetCompilationInfoForFile( filename ): +  # The compilation_commands.json file generated by CMake does not have entries +  # for header files. So we do our best by asking the db for flags for a +  # corresponding source file, if any. If one exists, the flags for that file +  # should be good enough. +  if IsHeaderFile( filename ): +    basename = os.path.splitext( filename )[ 0 ] +    for extension in SOURCE_EXTENSIONS: +      replacement_file = basename + extension +      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, **kwargs ): +  if database: +    # Bear in mind that compilation_info.compiler_flags_ does NOT return a +    # python list, but a "list-like" StringVec object +    compilation_info = GetCompilationInfoForFile( filename ) +    if not compilation_info: +      return None + +    final_flags = MakeRelativePathsInFlagsAbsolute( +      compilation_info.compiler_flags_, +      compilation_info.compiler_working_dir_ ) +  else: +    relative_to = DirectoryOfThisScript() +    final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to ) + +  return { +    'flags': final_flags, +    'do_cache': True +  } diff --git a/slicer/test/.ycm_extra_conf.py b/slicer/test/.ycm_extra_conf.py new file mode 100644 index 0000000..8f3b518 --- /dev/null +++ b/slicer/test/.ycm_extra_conf.py @@ -0,0 +1,113 @@ +import os +import ycm_core + +flags = [ +'-Wall', +'-Wextra', +'-Werror', +'-DNDEBUG', +'-std=c++11', +'-x', +'c++', +'-I', +'/usr/include', +'-I', +'..', +'-I', +'../../libmisc', +'-I', +'bin/gcc-4.8.4/debug', +'-I', +'/usr/include/glibmm-2.4', +] + +# Set this to the absolute path to the folder (NOT the file!) containing the +# compile_commands.json file to use that instead of 'flags'. See here for +# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html +# +# Most projects will NOT need to set this to anything; you can just change the +# 'flags' list of compilation flags. Notice that YCM itself uses that approach. +compilation_database_folder = '' + +if os.path.exists( compilation_database_folder ): +  database = ycm_core.CompilationDatabase( compilation_database_folder ) +else: +  database = None + +SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ] + +def DirectoryOfThisScript(): +  return os.path.dirname( os.path.abspath( __file__ ) ) + + +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 IsHeaderFile( filename ): +  extension = os.path.splitext( filename )[ 1 ] +  return extension in [ '.h', '.hxx', '.hpp', '.hh' ] + + +def GetCompilationInfoForFile( filename ): +  # The compilation_commands.json file generated by CMake does not have entries +  # for header files. So we do our best by asking the db for flags for a +  # corresponding source file, if any. If one exists, the flags for that file +  # should be good enough. +  if IsHeaderFile( filename ): +    basename = os.path.splitext( filename )[ 0 ] +    for extension in SOURCE_EXTENSIONS: +      replacement_file = basename + extension +      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, **kwargs ): +  if database: +    # Bear in mind that compilation_info.compiler_flags_ does NOT return a +    # python list, but a "list-like" StringVec object +    compilation_info = GetCompilationInfoForFile( filename ) +    if not compilation_info: +      return None + +    final_flags = MakeRelativePathsInFlagsAbsolute( +      compilation_info.compiler_flags_, +      compilation_info.compiler_working_dir_ ) +  else: +    relative_to = DirectoryOfThisScript() +    final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to ) + +  return { +    'flags': final_flags, +    'do_cache': True +  } diff --git a/slicer/tool/.ycm_extra_conf.py b/slicer/tool/.ycm_extra_conf.py new file mode 100644 index 0000000..873e639 --- /dev/null +++ b/slicer/tool/.ycm_extra_conf.py @@ -0,0 +1,109 @@ +import os +import ycm_core + +flags = [ +'-Wall', +'-Wextra', +'-Werror', +'-DNDEBUG', +'-std=c++11', +'-x', +'c++', +'-I', +'/usr/include', +'-I', +'..', +'-I', +'/usr/include/glibmm-2.4', +] + +# Set this to the absolute path to the folder (NOT the file!) containing the +# compile_commands.json file to use that instead of 'flags'. See here for +# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html +# +# Most projects will NOT need to set this to anything; you can just change the +# 'flags' list of compilation flags. Notice that YCM itself uses that approach. +compilation_database_folder = '' + +if os.path.exists( compilation_database_folder ): +  database = ycm_core.CompilationDatabase( compilation_database_folder ) +else: +  database = None + +SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ] + +def DirectoryOfThisScript(): +  return os.path.dirname( os.path.abspath( __file__ ) ) + + +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 IsHeaderFile( filename ): +  extension = os.path.splitext( filename )[ 1 ] +  return extension in [ '.h', '.hxx', '.hpp', '.hh' ] + + +def GetCompilationInfoForFile( filename ): +  # The compilation_commands.json file generated by CMake does not have entries +  # for header files. So we do our best by asking the db for flags for a +  # corresponding source file, if any. If one exists, the flags for that file +  # should be good enough. +  if IsHeaderFile( filename ): +    basename = os.path.splitext( filename )[ 0 ] +    for extension in SOURCE_EXTENSIONS: +      replacement_file = basename + extension +      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, **kwargs ): +  if database: +    # Bear in mind that compilation_info.compiler_flags_ does NOT return a +    # python list, but a "list-like" StringVec object +    compilation_info = GetCompilationInfoForFile( filename ) +    if not compilation_info: +      return None + +    final_flags = MakeRelativePathsInFlagsAbsolute( +      compilation_info.compiler_flags_, +      compilation_info.compiler_working_dir_ ) +  else: +    relative_to = DirectoryOfThisScript() +    final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to ) + +  return { +    'flags': final_flags, +    'do_cache': True +  } diff --git a/slicer/xml/.ycm_extra_conf.py b/slicer/xml/.ycm_extra_conf.py new file mode 100644 index 0000000..d5600aa --- /dev/null +++ b/slicer/xml/.ycm_extra_conf.py @@ -0,0 +1,111 @@ +import os +import ycm_core + +flags = [ +'-Wall', +'-Wextra', +'-Werror', +'-DNDEBUG', +'-std=c++11', +'-x', +'c++', +'-I', +'/usr/include', +'-I', +'..', +'-I', +'/usr/include/libxml++-2.6', +'-I', +'/usr/include/glibmm-2.4', +] + +# Set this to the absolute path to the folder (NOT the file!) containing the +# compile_commands.json file to use that instead of 'flags'. See here for +# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html +# +# Most projects will NOT need to set this to anything; you can just change the +# 'flags' list of compilation flags. Notice that YCM itself uses that approach. +compilation_database_folder = '' + +if os.path.exists( compilation_database_folder ): +  database = ycm_core.CompilationDatabase( compilation_database_folder ) +else: +  database = None + +SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ] + +def DirectoryOfThisScript(): +  return os.path.dirname( os.path.abspath( __file__ ) ) + + +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 IsHeaderFile( filename ): +  extension = os.path.splitext( filename )[ 1 ] +  return extension in [ '.h', '.hxx', '.hpp', '.hh' ] + + +def GetCompilationInfoForFile( filename ): +  # The compilation_commands.json file generated by CMake does not have entries +  # for header files. So we do our best by asking the db for flags for a +  # corresponding source file, if any. If one exists, the flags for that file +  # should be good enough. +  if IsHeaderFile( filename ): +    basename = os.path.splitext( filename )[ 0 ] +    for extension in SOURCE_EXTENSIONS: +      replacement_file = basename + extension +      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, **kwargs ): +  if database: +    # Bear in mind that compilation_info.compiler_flags_ does NOT return a +    # python list, but a "list-like" StringVec object +    compilation_info = GetCompilationInfoForFile( filename ) +    if not compilation_info: +      return None + +    final_flags = MakeRelativePathsInFlagsAbsolute( +      compilation_info.compiler_flags_, +      compilation_info.compiler_working_dir_ ) +  else: +    relative_to = DirectoryOfThisScript() +    final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to ) + +  return { +    'flags': final_flags, +    'do_cache': True +  }  | 
