Makefile.in | 2 ++ bin/gbuild-to-ide | 44 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-)
New commits: commit 6d5e69072e7c37f8ff4adb49062218ab17373e7d Author: Markus Mohrhard <[email protected]> Date: Thu Aug 7 23:06:22 2014 +0200 write directly files understood by YCM Change-Id: I262050f625a0b3ff04a274c88b446d1c2b2aa19d Reviewed-on: https://gerrit.libreoffice.org/10821 Reviewed-by: Markus Mohrhard <[email protected]> Tested-by: Markus Mohrhard <[email protected]> diff --git a/bin/gbuild-to-ide b/bin/gbuild-to-ide index 0e9ab7c..f005cf2 100755 --- a/bin/gbuild-to-ide +++ b/bin/gbuild-to-ide @@ -236,7 +236,7 @@ class VimIntegrationGenerator(IdeIntegrationGenerator): entry = {'directory': lib.location, 'file': filePath, 'command': self.generateCommand(lib, filePath)} entries.append(entry) global_list.extend(entries) - export_file = open('database.txt','w') + export_file = open('compile_commands.json','w') json.dump(global_list, export_file) def generateCommand(self, lib, file): commit 071c09d7d9092a83194ae9d5082cde6ca4ef87ce Author: Markus Mohrhard <[email protected]> Date: Thu Aug 7 22:11:50 2014 +0200 add a IDE generator for clang json database format This can be used for YouCompleteMe a vim plugin that allows auto-completition based on clang. This is much better than the normal static analyzer based auto-completition. Change-Id: I4872d2cb3b3a404af55eacf5c71d6a2715771ab6 Reviewed-on: https://gerrit.libreoffice.org/10820 Reviewed-by: Markus Mohrhard <[email protected]> Tested-by: Markus Mohrhard <[email protected]> diff --git a/Makefile.in b/Makefile.in index 0c9893c..3de0845 100644 --- a/Makefile.in +++ b/Makefile.in @@ -340,8 +340,10 @@ $(1)-ide-integration: endef $(foreach ide,\ + debug \ kdevelop \ vs2012 \ + vim \ xcode, \ $(eval $(call gb_Top_GbuildToIdeIntegration,$(ide)))) diff --git a/bin/gbuild-to-ide b/bin/gbuild-to-ide index fcc1236..0e9ab7c 100755 --- a/bin/gbuild-to-ide +++ b/bin/gbuild-to-ide @@ -15,6 +15,7 @@ import shutil import re import sys import uuid +import json import xml.etree.ElementTree as ET @@ -222,6 +223,43 @@ class DebugIntegrationGenerator(IdeIntegrationGenerator): print(exe) +class VimIntegrationGenerator(IdeIntegrationGenerator): + def __init__(self, gbuildparser): + IdeIntegrationGenerator.__init__(self, gbuildparser) + + def emit(self): + global_list = [] + for lib in self.gbuildparser.libs: + entries = [] + for file in lib.cxxobjects: + filePath = os.path.join(self.gbuildparser.srcdir, file) + ".cxx" + entry = {'directory': lib.location, 'file': filePath, 'command': self.generateCommand(lib, filePath)} + entries.append(entry) + global_list.extend(entries) + export_file = open('database.txt','w') + json.dump(global_list, export_file) + + def generateCommand(self, lib, file): + command = 'clang++ ' + for key, value in lib.defs.items(): + command += ' -D' + command += key + if value is not None: + command += '=' + command += value + for include in lib.include: + command += ' -I' + command += include + for isystem in lib.include_sys: + command += ' -isystem ' + command += isystem + for cxxflag in lib.cxxflags: + command += ' ' + command += cxxflag + command += ' -c ' + command += file + return command + class KdevelopIntegrationGenerator(IdeIntegrationGenerator): def encode_int(self, i): temp = '%08x' % i @@ -838,13 +876,17 @@ if __name__ == '__main__': gbuildparser = GbuildParser().parse(open(args.input, 'r')) else: gbuildparser = GbuildParser().parse(sys.stdin) - #DebugIntegrationGenerator(gbuildparser).emit() + if args.ide == 'kdevelop': KdevelopIntegrationGenerator(gbuildparser).emit() elif args.ide == 'xcode': XcodeIntegrationGenerator(gbuildparser).emit() elif args.ide == 'vs2012': VisualStudioIntegrationGenerator(gbuildparser).emit() + elif args.ide == 'vim': + VimIntegrationGenerator(gbuildparser).emit() + elif args.ide == 'debug': + DebugIntegrationGenerator(gbuildparser).emit() else: parser.print_help() sys.exit(1) _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
