diff --git a/st_cc.py b/st_cc.py index 02fcaa0..d91dccc 100644 --- a/st_cc.py +++ b/st_cc.py @@ -7,7 +7,13 @@ from .cc import * -language_regex = re.compile("(?<=source\.)[\w+#]+") +files = { + ".c" : "c", + ".cpp" : "c++", + ".m" : "objc", + ".mm" : "objc++", +} + drivers = { "c++": "-xc++", "c": "-xc", @@ -21,16 +27,15 @@ def get_unsaved_files(view): buffer = [(view.file_name(), view.substr(sublime.Region(0, view.size())))] return buffer -def get_language(view): - caret = view.sel()[0].a - language = language_regex.search(view.scope_name(caret)) - if language != None: - language = language.group(0) +def get_language(): + filename = sublime.active_window().active_view().file_name() + filename, file_extension = os.path.splitext(filename) + language = files[file_extension] return language -def can_complete(view): - language = get_language(view) +def can_complete(): + language = get_language() return language in drivers @@ -156,7 +161,7 @@ def get_settings(): def get_opt(view): settings = Complete.get_settings() additional_lang_opts = settings.get("additional_language_options", {}) - language = get_language(view) + language = get_language() include_opts = settings.get("include_options", []) project_data = sublime.active_window().project_data() if "cc_include_options" in project_data: @@ -218,7 +223,7 @@ def is_member_completion(view): class ClangClean(sublime_plugin.TextCommand): def run(self, edit): - if not can_complete(self.view): + if not can_complete(): return Complete.clean() @@ -226,7 +231,7 @@ def run(self, edit): class ClangGotoDef(sublime_plugin.TextCommand): def run(self, edit): - if not can_complete(self.view): + if not can_complete(): return filename = self.view.file_name() @@ -249,7 +254,7 @@ class CCAutoComplete(sublime_plugin.EventListener): def on_modified(self, view): self.dirty = True - if can_complete(view) and Complete.is_member_completion(view): + if can_complete() and Complete.is_member_completion(view): self.per_complete() @@ -265,7 +270,7 @@ def hack2(): def on_post_save_async(self, view): - if not can_complete(view): + if not can_complete(): return settings = Complete.get_settings() @@ -297,7 +302,7 @@ def on_query_completions(self, view, prefix, locations): file_name = view.file_name() - if not can_complete(view) or file_name==None: + if not can_complete() or file_name==None: return # flag = sublime.INHIBIT_WORD_COMPLETIONS | sublime.INHIBIT_EXPLICIT_COMPLETIONS