niosus / EasyClangComplete

:boom: Robust C/C++ code completion for Sublime Text 3/4
https://niosus.github.io/EasyClangComplete/
MIT License
575 stars 78 forks source link

Default completions disappear after a split second #55

Closed bonsairobo closed 8 years ago

bonsairobo commented 8 years ago

When I have "autocomplete_all" set to true and "hide_default_completions" set to false, if there are no Clang completions to be shown, default Sublime completions only get shown for a split second before disappearing. This is a huge pain because Clang misses a lot of symbols from the current file that I'd like to autocomplete.

niosus commented 8 years ago

Ok, this is a strange behavior. I will investigate it soon. This definitely should not happen. I have not put much thoughts into "autocomplete_all" before as I did not think it will be used much, but seems like I was wrong. I will tell you when it's done! Thanks for reporting!

niosus commented 8 years ago

Hm, coming back after a week of vacations I cannot reproduce your behavior. Can you please provide more details on what exactly are you doing and what is your setup?

bonsairobo commented 8 years ago

Here's a video of the issue: https://youtu.be/b6U9wbJELfc

My User settings:

{
     // Where should clang search for headers
     // These will be appended to build with `-I` flag each
    "include_dirs" : [
                        "$project_base_path",
                        ],

    // set the standard library flag.
    "std_flag" : "-std=c++11",

    // triggers for auto-completion
    "triggers" : [ ".", "->", "::"],

    // pick the clang binary used by the plugin. This is used to determine the
    // version of the plugin and pick correct libclang bindings.
    "clang_binary" : "clang++",

    // ignore triggers and try to complete after each character
    // WARNING: can be very slow
    "autocomplete_all" : true,

    // hide the completions generated by other plugins
    "hide_default_completions": false,
}

I've had this issue on two separate computers using Sublime Build 3114. Steps to reproduce:

  1. Install EasyClangComplete
  2. Copy-paste those user settings
  3. Restart Sublime
  4. Add a C/C++ folder to your project
  5. Go into the scope of some function and try typing a local variable name (parameter name?) that doesn't get autocompleted by clang. The Sublime autocomplete should behave as you see it in the video.

Here's a big hint. It depends on the type of the variable you're trying to autocomplete.

This will work just fine:

static void foo(int special_param) {
    // start typing "special_param" here
}

This has the issue seen in the video:

static void foo(const unordered_map<string, int>* special_param) {
    // start typing "special_param" here
}
niosus commented 8 years ago

Ok, thanks for a lot of details! I will try to follow your setup exactly.

niosus commented 8 years ago

Hm, still cannot reproduce. I have copied your settings instead of mine, restarted Sublime Text, but I get completions (both default and from clang in both functions you suggested to test out.

bonsairobo commented 8 years ago

That's odd... I guess I'll see if I can get a trace of the sublime event callbacks, though I've never done this before. Never worked on a sublime plugin :/

niosus commented 8 years ago

I will now try to perform this on a clean setup. Wait for it. :)

niosus commented 8 years ago

Still cannot reproduce having a clean setup. The only thing that I did reproduce is that the default completions are indeed hidden, but instead the clang ones are shown and they work for your examples. Can you also try the examples you provided on a clean sublime text?

niosus commented 8 years ago

Maybe your issue appeared when completions from the plugin were empty. Now the plugin respects the hide_default_completions setting when showing its own completions. Please verify that you still have the issue after I update the plugin to the next version

niosus commented 8 years ago

@bonsairobo do you still have this issue?

bonsairobo commented 8 years ago

Sorry about the delay. I do still have this issue after upgrading the plugin. The way I'm reproducing it right now is to try autocompleting a struct name in a parameter list.

void foo(struct bar b) {}

If I'm in the middle of typing bar, the default completions show and then quickly disappear. This of course requires that bar is used elsewhere in the same file for it to show in the default completions.

niosus commented 8 years ago

@bonsairobo just to be sure, on the older examples you can't reproduce it anymore?

bonsairobo commented 8 years ago

No, the older examples will also reproduce the issue.

niosus commented 8 years ago

I am sorry, but I fail to reproduce it here. Both with my settings of choice and having a clean sublime text with settings set to what you suggest. Could you please try it on a clean sublime text (you seem to be on Linux, so just move .config/sublime-text-3/ to something like .config/sublime-text-3_backup) and install this plugin again.

bonsairobo commented 8 years ago

OK I just did as you said and moved my sublime directory out of .config. Did the usual setup again, and still, if clang complete does not recognize the type of a variable and has no suggestions, the default completions are hidden.

I've also tried doing this with the clang binary with -std=c99 instead of clang++ with -std=c++11 and it has the same issue.

niosus commented 8 years ago

Thanks a lot for trying out. However, I am completely puzzled. It works all good on my machine. I see default suggestions in all situations that you have provided. I have to think about it. For now I am out of ideas of what could cause it.

The only thing that comes to mind. Can you open the console of sublime text and paste: sublime.log_commands(True), sublime.log_input(True) and set the plugin setting "verbose": true and paste the log here from the moment you open sublime text to the moment you see the described behavior?

bonsairobo commented 8 years ago

Here's the output. Hope there's some useful info in there.

DPI scale: 1
startup, version: 3114 linux x64 channel: stable
executable: /opt/sublime_text_3/sublime_text
working dir: /
packages path: /home/duncan/.config/sublime-text-3/Packages
state path: /home/duncan/.config/sublime-text-3/Local
zip path: /opt/sublime_text_3/Packages
zip path: /home/duncan/.config/sublime-text-3/Installed Packages
ignored_packages: ["Vintage"]
pre session restore time: 0.106454
startup time: 0.183338
first paint time: 0.188821
first paint time: 0.189113
reloading plugin Default.auto_indent_tag
reloading plugin Default.block
reloading plugin Default.comment
reloading plugin Default.convert_syntax
reloading plugin Default.copy_path
reloading plugin Default.delete_word
reloading plugin Default.detect_indentation
reloading plugin Default.duplicate_line
reloading plugin Default.echo
reloading plugin Default.exec
reloading plugin Default.fold
reloading plugin Default.font
reloading plugin Default.goto_line
reloading plugin Default.history_list
reloading plugin Default.indentation
reloading plugin Default.kill_ring
reloading plugin Default.mark
reloading plugin Default.new_templates
reloading plugin Default.open_context_url
reloading plugin Default.open_file_settings
reloading plugin Default.open_in_browser
reloading plugin Default.pane
reloading plugin Default.paragraph
reloading plugin Default.paste_from_history
reloading plugin Default.profile
reloading plugin Default.quick_panel
reloading plugin Default.run_syntax_tests
reloading plugin Default.save_on_focus_lost
reloading plugin Default.scroll
reloading plugin Default.set_unsaved_view_name
reloading plugin Default.show_scope_name
reloading plugin Default.side_bar
reloading plugin Default.sort
reloading plugin Default.swap_line
reloading plugin Default.switch_file
reloading plugin Default.symbol
reloading plugin Default.transform
reloading plugin Default.transpose
reloading plugin Default.trim_trailing_white_space
reloading plugin CSS.css_completions
reloading plugin Diff.diff
reloading plugin HTML.encode_html_entities
reloading plugin HTML.html_completions
reloading plugin 0_package_control_loader.00-package_control
reloading plugin 0_package_control_loader.01-ssl-linux
Package Control: Linux SSL: successfully loaded _ssl module for libssl.so.1.0.0
reloading plugin 0_package_control_loader.02-bz2
reloading plugin Clang Format.clang_format
reloading plugin Haxe.HaxeComplete
hello
Haxe : Reloading haxe module
Haxe : Reloading haxelib module
HAXE : haxelib list 
HAXE : haxelib install 
HAXE : haxelib search 
HAXE : haxelib upgrade 
reloading plugin Package Control.1_reloader
reloading plugin Package Control.2_bootstrap
reloading plugin Package Control.Package Control
reloading plugin TrailingSpaces.trailing_spaces
reloading plugin WordCount.WordCount
reloading plugin EasyClangComplete.EasyClangComplete
reloading plugin Figlet Big ASCII Text.figlet
plugins loaded
INFO:EasyClangComplete.EasyClangComplete: init completer based on libclang
INFO:EasyClangComplete.plugin.completion.base_complete: Getting version from command: `clang++ --version`
INFO:EasyClangComplete.plugin.completion.base_complete: Found clang version: 3.8
DEBUG:EasyClangComplete.plugin.completion.lib_complete: using bundled cindex: EasyClangComplete.clang.cindex38
DEBUG:EasyClangComplete.clang.utils: platform: ('64bit', '')
DEBUG:EasyClangComplete.clang.utils: python version: 3.3.6
INFO:EasyClangComplete.clang.utils: we are on 'Linux'
INFO:EasyClangComplete.clang.utils: searching for: 'libclang.so'
INFO:EasyClangComplete.clang.utils: libclang search output = '/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.1.1/../../../../lib64/libclang.so'
DEBUG:EasyClangComplete.clang.utils: real output: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.1.1/../../../../lib64/libclang.so
INFO:EasyClangComplete.clang.utils: found libclang dir: '/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.1.1/../../../../lib64'
INFO:EasyClangComplete.clang.utils: found library file: 'libclang.so'
DEBUG:EasyClangComplete.EasyClangComplete: on_activated_async view id 5
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.EasyClangComplete: on_activated_async view id 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.completion.base_complete: .clang_complete file handler not initialized.
DEBUG:EasyClangComplete.EasyClangComplete:init completer for view id: 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.plugin_settings: populating include dirs with current variables:
DEBUG:EasyClangComplete.plugin.plugin_settings: project_base_name = 
DEBUG:EasyClangComplete.plugin.plugin_settings: project_base_folder = 
DEBUG:EasyClangComplete.plugin.plugin_settings: file_parent_folder = /home/duncan/code/old_ref/SOTE/src
DEBUG:EasyClangComplete.plugin.plugin_settings: include_dirs = ['/opt/sublime_text_3', '/home/duncan/code/old_ref/SOTE/src/DCE', '/home/duncan/code/old_ref/SOTE/src']
DEBUG:EasyClangComplete.plugin.completion.lib_complete: This is a C++ file. Adding `-x c++` to flags
DEBUG:EasyClangComplete.plugin.completion.lib_complete: clang flags are: ['-x', 'c++', '-std=c++11', '-I/opt/sublime_text_3', '-I/home/duncan/code/old_ref/SOTE/src/DCE', '-I/home/duncan/code/old_ref/SOTE/src']
DEBUG:EasyClangComplete.plugin.completion.lib_complete: compilation started for view id: 31
DEBUG:EasyClangComplete.plugin.completion.lib_complete: compilation done in 0.10348224639892578 seconds
DEBUG:EasyClangComplete.plugin.error_vis: generating error regions for view 31
DEBUG:EasyClangComplete.plugin.error_vis: 1 error regions ready
DEBUG:EasyClangComplete.plugin.error_vis: showing error regions: []
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.error_vis: no error regions for row: 32
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.EasyClangComplete: on_modified_async view id 31
DEBUG:EasyClangComplete.plugin.error_vis: erasing error regions for view 31
DEBUG:EasyClangComplete.EasyClangComplete: on_query_completions view id 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.EasyClangComplete: starting async auto_complete at pos: 559
DEBUG:EasyClangComplete.plugin.completion.lib_complete: started code complete for view 31
DEBUG:EasyClangComplete.plugin.completion.lib_complete: code complete done in 0.08802533149719238 seconds
DEBUG:EasyClangComplete.plugin.completion.lib_complete:[['Interval\tInterval', 'Interval'], ['std\tstd::', 'std::'], ['DCE\tDCE::', 'DCE::'], ['float_t\tfloat_t', 'float_t'], ['double_t\tdouble_t', 'double_t'], ['type\ttype<typename _Ptr, typename _Args>', 'type<${1:typename _Ptr}, ${2:typename _Args}>'], ['move_iterator\tmove_iterator<typename _Iterator>', 'move_iterator<${1:typename _Iterator}>'], ['output_iterator_tag\toutput_iterator_tag', 'output_iterator_tag'], ['forward_iterator_tag\tforward_iterator_tag', 'forward_iterator_tag'], ['insert_iterator\tinsert_iterator<typename _Container>', 'insert_iterator<${1:typename _Container}>'], ['bidirectional_iterator_tag\tbidirectional_iterator_tag', 'bidirectional_iterator_tag'], ['front_insert_iterator\tfront_insert_iterator<typename _Container>', 'front_insert_iterator<${1:typename _Container}>'], ['input_iterator_tag\tinput_iterator_tag', 'input_iterator_tag'], ['initializer_list\tinitializer_list<class _E>', 'initializer_list<${1:class _E}>'], ['piecewise_construct_t\tpiecewise_construct_t', 'piecewise_construct_t'], ['pair\tpair<typename _T1, typename _T2>', 'pair<${1:typename _T1}, ${2:typename _T2}>'], ['tuple\ttuple<typename>', 'tuple<${1:typename}>'], ['pointer_traits\tpointer_traits<typename _Ptr>', 'pointer_traits<${1:typename _Ptr}>'], ['back_insert_iterator\tback_insert_iterator<typename _Container>', 'back_insert_iterator<${1:typename _Container}>'], ['iterator\titerator<typename _Category, typename _Tp>', 'iterator<${1:typename _Category}, ${2:typename _Tp}>'], ['random_access_iterator_tag\trandom_access_iterator_tag', 'random_access_iterator_tag'], ['reverse_iterator\treverse_iterator<typename _Iterator>', 'reverse_iterator<${1:typename _Iterator}>'], ['iterator_traits\titerator_traits<typename _Iterator>', 'iterator_traits<${1:typename _Iterator}>'], ['nothrow_t\tnothrow_t', 'nothrow_t'], ['is_signed\tis_signed<typename _Tp>', 'is_signed<${1:typename _Tp}>'], ['bad_array_new_length\tbad_array_new_length', 'bad_array_new_length'], ['is_unsigned\tis_unsigned<typename _Tp>', 'is_unsigned<${1:typename _Tp}>'], ['is_abstract\tis_abstract<typename _Tp>', 'is_abstract<${1:typename _Tp}>'], ['bad_alloc\tbad_alloc', 'bad_alloc'], ['remove_all_extents\tremove_all_extents<typename>', 'remove_all_extents<${1:typename}>'], ['add_rvalue_reference\tadd_rvalue_reference<typename>', 'add_rvalue_reference<${1:typename}>'], ['new_handler\tnew_handler', 'new_handler'], ['extent\textent<typename>', 'extent<${1:typename}>'], ['is_trivial\tis_trivial<typename _Tp>', 'is_trivial<${1:typename _Tp}>'], ['is_trivially_copyable\tis_trivially_copyable<typename _Tp>', 'is_trivially_copyable<${1:typename _Tp}>'], ['is_const\tis_const<typename>', 'is_const<${1:typename}>'], ['is_volatile\tis_volatile<typename>', 'is_volatile<${1:typename}>'], ['is_empty\tis_empty<typename _Tp>', 'is_empty<${1:typename _Tp}>'], ['is_polymorphic\tis_polymorphic<typename _Tp>', 'is_polymorphic<${1:typename _Tp}>'], ['is_standard_layout\tis_standard_layout<typename _Tp>', 'is_standard_layout<${1:typename _Tp}>'], ['is_literal_type\tis_literal_type<typename _Tp>', 'is_literal_type<${1:typename _Tp}>'], ['is_pod\tis_pod<typename _Tp>', 'is_pod<${1:typename _Tp}>'], ['is_nothrow_destructible\tis_nothrow_destructible<typename _Tp>', 'is_nothrow_destructible<${1:typename _Tp}>'], ['is_default_constructible\tis_default_constructible<typename _Tp>', 'is_default_constructible<${1:typename _Tp}>'], ['false_type\tfalse_type', 'false_type'], ['true_type\ttrue_type', 'true_type'], ['type\tstd::type<typename _Tp>', 'std::type<${1:typename _Tp}>'], ['type\tstd::type<typename _Tp, size_t _Nm>', 'std::type<${1:typename _Tp}, ${2:size_t _Nm}>'], ['type\tstd::type<typename _Tp>', 'std::type<${1:typename _Tp}>'], ['type\tstd::type<typename _Tp, size_t _Nm>', 'std::type<${1:typename _Tp}, ${2:size_t _Nm}>'], ['integral_constant\tintegral_constant<typename _Tp, _Tp __v>', 'integral_constant<${1:typename _Tp}, ${2:_Tp __v}>'], ['uint_least32_t\tuint_least32_t', 'uint_least32_t'], ['is_destructible\tis_destructible<typename _Tp>', 'is_destructible<${1:typename _Tp}>'], ['uint_least16_t\tuint_least16_t', 'uint_least16_t'], ['is_base_of\tis_base_of<typename, typename>', 'is_base_of<${1:typename}, ${2:typename}>'], ['vector\tvector<typename _Tp>', 'vector<${1:typename _Tp}>'], ['is_same\tis_same<typename, typename>', 'is_same<${1:typename}, ${2:typename}>'], ['remove_reference\tremove_reference<typename>', 'remove_reference<${1:typename}>'], ['is_member_object_pointer\tis_member_object_pointer<typename _Tp>', 'is_member_object_pointer<${1:typename _Tp}>'], ['is_move_constructible\tis_move_constructible<typename _Tp>', 'is_move_constructible<${1:typename _Tp}>'], ['allocator_traits\tallocator_traits<typename _Alloc>', 'allocator_traits<${1:typename _Alloc}>'], ['is_enum\tis_enum<typename _Tp>', 'is_enum<${1:typename _Tp}>'], ['is_member_function_pointer\tis_member_function_pointer<typename _Tp>', 'is_member_function_pointer<${1:typename _Tp}>'], ['is_union\tis_union<typename _Tp>', 'is_union<${1:typename _Tp}>'], ['is_class\tis_class<typename _Tp>', 'is_class<${1:typename _Tp}>'], ['is_constructible\tis_constructible<typename _Tp, typename _Args>', 'is_constructible<${1:typename _Tp}, ${2:typename _Args}>'], ['is_copy_constructible\tis_copy_constructible<typename _Tp>', 'is_copy_constructible<${1:typename _Tp}>'], ['is_array\tis_array<typename>', 'is_array<${1:typename}>'], ['is_pointer\tis_pointer<typename _Tp>', 'is_pointer<${1:typename _Tp}>'], ['is_lvalue_reference\tis_lvalue_reference<typename>', 'is_lvalue_reference<${1:typename}>'], ['is_rvalue_reference\tis_rvalue_reference<typename>', 'is_rvalue_reference<${1:typename}>'], ['is_function\tis_function<typename>', 'is_function<${1:typename}>'], ['remove_cv\tremove_cv<typename>', 'remove_cv<${1:typename}>'], ['is_void\tis_void<typename _Tp>', 'is_void<${1:typename _Tp}>'], ['is_integral\tis_integral<typename _Tp>', 'is_integral<${1:typename _Tp}>'], ['is_floating_point\tis_floating_point<typename _Tp>', 'is_floating_point<${1:typename _Tp}>'], ['conditional\tconditional<bool, typename, typename>', 'conditional<${1:bool}, ${2:typename}, ${3:typename}>'], ['allocator\tallocator<typename>', 'allocator<${1:typename}>'], ['nullptr_t\tnullptr_t', 'nullptr_t'], ['char_traits\tchar_traits<typename _CharT>', 'char_traits<${1:typename _CharT}>'], ['nested_exception\tnested_exception', 'nested_exception'], ['uses_allocator\tuses_allocator<typename, typename>', 'uses_allocator<${1:typename}, ${2:typename}>'], ['istreambuf_iterator\tistreambuf_iterator<typename _CharT, typename _Traits>', 'istreambuf_iterator<${1:typename _CharT}, ${2:typename _Traits}>'], ['ostreambuf_iterator\tostreambuf_iterator<typename _CharT, typename _Traits>', 'ostreambuf_iterator<${1:typename _CharT}, ${2:typename _Traits}>'], ['is_compound\tis_compound<typename _Tp>', 'is_compound<${1:typename _Tp}>'], ['is_scalar\tis_scalar<typename _Tp>', 'is_scalar<${1:typename _Tp}>'], ['add_lvalue_reference\tadd_lvalue_reference<typename _Tp>', 'add_lvalue_reference<${1:typename _Tp}>'], ['size_t\tsize_t', 'size_t'], ['ptrdiff_t\tptrdiff_t', 'ptrdiff_t'], ['is_null_pointer\tis_null_pointer<typename _Tp>', 'is_null_pointer<${1:typename _Tp}>'], ['is_arithmetic\tis_arithmetic<typename _Tp>', 'is_arithmetic<${1:typename _Tp}>'], ['is_fundamental\tis_fundamental<typename _Tp>', 'is_fundamental<${1:typename _Tp}>'], ['is_reference\tis_reference<typename _Tp>', 'is_reference<${1:typename _Tp}>'], ['is_member_pointer\tis_member_pointer<typename>', 'is_member_pointer<${1:typename}>'], ['is_object\tis_object<typename _Tp>', 'is_object<${1:typename _Tp}>'], ['exception\texception', 'exception'], ['bad_exception\tbad_exception', 'bad_exception'], ['decay\tdecay<typename _Tp>', 'decay<${1:typename _Tp}>'], ['has_virtual_destructor\thas_virtual_destructor<typename _Tp>', 'has_virtual_destructor<${1:typename _Tp}>'], ['unexpected_handler\tunexpected_handler', 'unexpected_handler'], ['has_trivial_copy_assign\thas_trivial_copy_assign<typename _Tp>', 'has_trivial_copy_assign<${1:typename _Tp}>'], ['terminate_handler\tterminate_handler', 'terminate_handler'], ['rank\trank<typename>', 'rank<${1:typename}>'], ['reference_wrapper\treference_wrapper<typename _Tp>', 'reference_wrapper<${1:typename _Tp}>'], ['alignment_of\talignment_of<typename _Tp>', 'alignment_of<${1:typename _Tp}>'], ['add_volatile\tadd_volatile<typename _Tp>', 'add_volatile<${1:typename _Tp}>'], ['add_const\tadd_const<typename _Tp>', 'add_const<${1:typename _Tp}>'], ['aligned_storage\taligned_storage<std::size_t _Len>', 'aligned_storage<${1:std::size_t _Len}>'], ['add_cv\tadd_cv<typename _Tp>', 'add_cv<${1:typename _Tp}>'], ['remove_volatile\tremove_volatile<typename _Tp>', 'remove_volatile<${1:typename _Tp}>'], ['aligned_union\taligned_union<size_t _Len, typename _Types>', 'aligned_union<${1:size_t _Len}, ${2:typename _Types}>'], ['remove_const\tremove_const<typename _Tp>', 'remove_const<${1:typename _Tp}>'], ['is_convertible\tis_convertible<typename _From, typename _To>', 'is_convertible<${1:typename _From}, ${2:typename _To}>'], ['exception_ptr\texception_ptr', 'exception_ptr'], ['underlying_type\tunderlying_type<typename _Tp>', 'underlying_type<${1:typename _Tp}>'], ['is_trivially_default_constructible\tis_trivially_default_constructible<typename _Tp>', 'is_trivially_default_constructible<${1:typename _Tp}>'], ['result_of\tresult_of<typename _Signature>', 'result_of<${1:typename _Signature}>'], ['is_trivially_destructible\tis_trivially_destructible<typename _Tp>', 'is_trivially_destructible<${1:typename _Tp}>'], ['is_trivially_move_assignable\tis_trivially_move_assignable<typename _Tp>', 'is_trivially_move_assignable<${1:typename _Tp}>'], ['common_type\tcommon_type<typename _Tp>', 'common_type<${1:typename _Tp}>'], ['has_trivial_copy_constructor\thas_trivial_copy_constructor<typename _Tp>', 'has_trivial_copy_constructor<${1:typename _Tp}>'], ['has_trivial_default_constructor\thas_trivial_default_constructor<typename _Tp>', 'has_trivial_default_constructor<${1:typename _Tp}>'], ['is_trivially_move_constructible\tis_trivially_move_constructible<typename _Tp>', 'is_trivially_move_constructible<${1:typename _Tp}>'], ['enable_if\tenable_if<bool>', 'enable_if<${1:bool}>'], ['is_trivially_copy_constructible\tis_trivially_copy_constructible<typename _Tp>', 'is_trivially_copy_constructible<${1:typename _Tp}>'], ['is_trivially_copy_assignable\tis_trivially_copy_assignable<typename _Tp>', 'is_trivially_copy_assignable<${1:typename _Tp}>'], ['is_trivially_assignable\tis_trivially_assignable<typename _Tp, typename _Up>', 'is_trivially_assignable<${1:typename _Tp}, ${2:typename _Up}>'], ['type_info\ttype_info', 'type_info'], ['is_copy_assignable\tis_copy_assignable<typename _Tp>', 'is_copy_assignable<${1:typename _Tp}>'], ['hash\thash<typename _Tp>', 'hash<${1:typename _Tp}>'], ['is_move_assignable\tis_move_assignable<typename _Tp>', 'is_move_assignable<${1:typename _Tp}>'], ['is_nothrow_move_constructible\tis_nothrow_move_constructible<typename _Tp>', 'is_nothrow_move_constructible<${1:typename _Tp}>'], ['is_assignable\tis_assignable<typename _Tp, typename _Up>', 'is_assignable<${1:typename _Tp}, ${2:typename _Up}>'], ['is_nothrow_copy_assignable\tis_nothrow_copy_assignable<typename _Tp>', 'is_nothrow_copy_assignable<${1:typename _Tp}>'], ['is_nothrow_move_assignable\tis_nothrow_move_assignable<typename _Tp>', 'is_nothrow_move_assignable<${1:typename _Tp}>'], ['is_trivially_constructible\tis_trivially_constructible<typename _Tp, typename _Args>', 'is_trivially_constructible<${1:typename _Tp}, ${2:typename _Args}>'], ['is_nothrow_assignable\tis_nothrow_assignable<typename _Tp, typename _Up>', 'is_nothrow_assignable<${1:typename _Tp}, ${2:typename _Up}>'], ['make_signed\tmake_signed<typename _Tp>', 'make_signed<${1:typename _Tp}>'], ['remove_extent\tremove_extent<typename _Tp>', 'remove_extent<${1:typename _Tp}>'], ['remove_pointer\tremove_pointer<typename _Tp>', 'remove_pointer<${1:typename _Tp}>'], ['add_pointer\tadd_pointer<typename _Tp>', 'add_pointer<${1:typename _Tp}>'], ['is_nothrow_copy_constructible\tis_nothrow_copy_constructible<typename _Tp>', 'is_nothrow_copy_constructible<${1:typename _Tp}>'], ['make_unsigned\tmake_unsigned<typename _Tp>', 'make_unsigned<${1:typename _Tp}>'], ['is_nothrow_default_constructible\tis_nothrow_default_constructible<typename _Tp>', 'is_nothrow_default_constructible<${1:typename _Tp}>'], ['is_nothrow_constructible\tis_nothrow_constructible<typename _Tp, typename _Args>', 'is_nothrow_constructible<${1:typename _Tp}, ${2:typename _Args}>'], ['namespace\tnamespace name=namespace', 'namespace ${1:name}=${2:namespace}'], ['using\tusing namespace identifier', 'using namespace ${1:identifier}'], ['asm\tasm(string-literal)', 'asm(${1:string-literal})'], ['typedef\ttypedef type name', 'typedef ${1:type} ${2:name}'], ['using\tusing qualifier::name', 'using ${1:qualifier}::${2:name}'], ['extern\textern', 'extern'], ['static\tstatic', 'static'], ['inline\tinline', 'inline'], ['short\tshort', 'short'], ['long\tlong', 'long'], ['signed\tsigned', 'signed'], ['unsigned\tunsigned', 'unsigned'], ['void\tvoid', 'void'], ['char\tchar', 'char'], ['int\tint', 'int'], ['float\tfloat', 'float'], ['double\tdouble', 'double'], ['enum\tenum', 'enum'], ['struct\tstruct', 'struct'], ['union\tunion', 'union'], ['const\tconst', 'const'], ['volatile\tvolatile', 'volatile'], ['bool\tbool', 'bool'], ['class\tclass', 'class'], ['wchar_t\twchar_t', 'wchar_t'], ['typename\ttypename qualifier::name', 'typename ${1:qualifier}::${2:name}'], ['auto\tauto', 'auto'], ['char16_t\tchar16_t', 'char16_t'], ['char32_t\tchar32_t', 'char32_t'], ['decltype\tdecltype(expression)', 'decltype(${1:expression})'], ['_Nonnull\t_Nonnull', '_Nonnull'], ['_Null_unspecified\t_Null_unspecified', '_Null_unspecified'], ['_Nullable\t_Nullable', '_Nullable'], ['operator\toperator', 'operator']]
DEBUG:EasyClangComplete.plugin.completion.base_complete: reload completion tooltip
DEBUG:EasyClangComplete.EasyClangComplete: on_query_completions view id 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.error_vis: generating error regions for view 31
DEBUG:EasyClangComplete.plugin.error_vis: removing old error regions
DEBUG:EasyClangComplete.plugin.error_vis: 1 error regions ready
DEBUG:EasyClangComplete.plugin.error_vis: showing error regions: []
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.error_vis: no error regions for row: 32
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.EasyClangComplete: on_modified_async view id 31
DEBUG:EasyClangComplete.plugin.error_vis: erasing error regions for view 31
DEBUG:EasyClangComplete.EasyClangComplete: on_query_completions view id 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.EasyClangComplete: starting async auto_complete at pos: 560
DEBUG:EasyClangComplete.plugin.completion.lib_complete: started code complete for view 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.error_vis: no error regions for row: 32
DEBUG:EasyClangComplete.plugin.completion.lib_complete: code complete done in 0.10285258293151855 seconds
DEBUG:EasyClangComplete.plugin.completion.lib_complete:[['Interval\tInterval', 'Interval'], ['std\tstd::', 'std::'], ['double_t\tdouble_t', 'double_t'], ['float_t\tfloat_t', 'float_t'], ['DCE\tDCE::', 'DCE::'], ['type\ttype<typename _Ptr, typename _Args>', 'type<${1:typename _Ptr}, ${2:typename _Args}>'], ['move_iterator\tmove_iterator<typename _Iterator>', 'move_iterator<${1:typename _Iterator}>'], ['front_insert_iterator\tfront_insert_iterator<typename _Container>', 'front_insert_iterator<${1:typename _Container}>'], ['input_iterator_tag\tinput_iterator_tag', 'input_iterator_tag'], ['insert_iterator\tinsert_iterator<typename _Container>', 'insert_iterator<${1:typename _Container}>'], ['output_iterator_tag\toutput_iterator_tag', 'output_iterator_tag'], ['forward_iterator_tag\tforward_iterator_tag', 'forward_iterator_tag'], ['pair\tpair<typename _T1, typename _T2>', 'pair<${1:typename _T1}, ${2:typename _T2}>'], ['tuple\ttuple<typename>', 'tuple<${1:typename}>'], ['initializer_list\tinitializer_list<class _E>', 'initializer_list<${1:class _E}>'], ['piecewise_construct_t\tpiecewise_construct_t', 'piecewise_construct_t'], ['pointer_traits\tpointer_traits<typename _Ptr>', 'pointer_traits<${1:typename _Ptr}>'], ['iterator\titerator<typename _Category, typename _Tp>', 'iterator<${1:typename _Category}, ${2:typename _Tp}>'], ['back_insert_iterator\tback_insert_iterator<typename _Container>', 'back_insert_iterator<${1:typename _Container}>'], ['random_access_iterator_tag\trandom_access_iterator_tag', 'random_access_iterator_tag'], ['bidirectional_iterator_tag\tbidirectional_iterator_tag', 'bidirectional_iterator_tag'], ['reverse_iterator\treverse_iterator<typename _Iterator>', 'reverse_iterator<${1:typename _Iterator}>'], ['iterator_traits\titerator_traits<typename _Iterator>', 'iterator_traits<${1:typename _Iterator}>'], ['is_signed\tis_signed<typename _Tp>', 'is_signed<${1:typename _Tp}>'], ['is_unsigned\tis_unsigned<typename _Tp>', 'is_unsigned<${1:typename _Tp}>'], ['is_polymorphic\tis_polymorphic<typename _Tp>', 'is_polymorphic<${1:typename _Tp}>'], ['is_abstract\tis_abstract<typename _Tp>', 'is_abstract<${1:typename _Tp}>'], ['extent\textent<typename>', 'extent<${1:typename}>'], ['remove_all_extents\tremove_all_extents<typename>', 'remove_all_extents<${1:typename}>'], ['nothrow_t\tnothrow_t', 'nothrow_t'], ['add_rvalue_reference\tadd_rvalue_reference<typename>', 'add_rvalue_reference<${1:typename}>'], ['bad_array_new_length\tbad_array_new_length', 'bad_array_new_length'], ['bad_alloc\tbad_alloc', 'bad_alloc'], ['is_trivial\tis_trivial<typename _Tp>', 'is_trivial<${1:typename _Tp}>'], ['is_trivially_copyable\tis_trivially_copyable<typename _Tp>', 'is_trivially_copyable<${1:typename _Tp}>'], ['is_volatile\tis_volatile<typename>', 'is_volatile<${1:typename}>'], ['is_const\tis_const<typename>', 'is_const<${1:typename}>'], ['new_handler\tnew_handler', 'new_handler'], ['is_literal_type\tis_literal_type<typename _Tp>', 'is_literal_type<${1:typename _Tp}>'], ['is_empty\tis_empty<typename _Tp>', 'is_empty<${1:typename _Tp}>'], ['is_standard_layout\tis_standard_layout<typename _Tp>', 'is_standard_layout<${1:typename _Tp}>'], ['is_pod\tis_pod<typename _Tp>', 'is_pod<${1:typename _Tp}>'], ['is_nothrow_destructible\tis_nothrow_destructible<typename _Tp>', 'is_nothrow_destructible<${1:typename _Tp}>'], ['uint_least32_t\tuint_least32_t', 'uint_least32_t'], ['uint_least16_t\tuint_least16_t', 'uint_least16_t'], ['vector\tvector<typename _Tp>', 'vector<${1:typename _Tp}>'], ['is_destructible\tis_destructible<typename _Tp>', 'is_destructible<${1:typename _Tp}>'], ['is_same\tis_same<typename, typename>', 'is_same<${1:typename}, ${2:typename}>'], ['remove_reference\tremove_reference<typename>', 'remove_reference<${1:typename}>'], ['is_base_of\tis_base_of<typename, typename>', 'is_base_of<${1:typename}, ${2:typename}>'], ['is_default_constructible\tis_default_constructible<typename _Tp>', 'is_default_constructible<${1:typename _Tp}>'], ['is_pointer\tis_pointer<typename _Tp>', 'is_pointer<${1:typename _Tp}>'], ['is_lvalue_reference\tis_lvalue_reference<typename>', 'is_lvalue_reference<${1:typename}>'], ['is_move_constructible\tis_move_constructible<typename _Tp>', 'is_move_constructible<${1:typename _Tp}>'], ['is_rvalue_reference\tis_rvalue_reference<typename>', 'is_rvalue_reference<${1:typename}>'], ['is_function\tis_function<typename>', 'is_function<${1:typename}>'], ['is_constructible\tis_constructible<typename _Tp, typename _Args>', 'is_constructible<${1:typename _Tp}, ${2:typename _Args}>'], ['is_member_object_pointer\tis_member_object_pointer<typename _Tp>', 'is_member_object_pointer<${1:typename _Tp}>'], ['is_copy_constructible\tis_copy_constructible<typename _Tp>', 'is_copy_constructible<${1:typename _Tp}>'], ['is_void\tis_void<typename _Tp>', 'is_void<${1:typename _Tp}>'], ['is_integral\tis_integral<typename _Tp>', 'is_integral<${1:typename _Tp}>'], ['is_array\tis_array<typename>', 'is_array<${1:typename}>'], ['is_floating_point\tis_floating_point<typename _Tp>', 'is_floating_point<${1:typename _Tp}>'], ['allocator_traits\tallocator_traits<typename _Alloc>', 'allocator_traits<${1:typename _Alloc}>'], ['remove_cv\tremove_cv<typename>', 'remove_cv<${1:typename}>'], ['integral_constant\tintegral_constant<typename _Tp, _Tp __v>', 'integral_constant<${1:typename _Tp}, ${2:_Tp __v}>'], ['type\tstd::type<typename _Tp>', 'std::type<${1:typename _Tp}>'], ['type\tstd::type<typename _Tp, size_t _Nm>', 'std::type<${1:typename _Tp}, ${2:size_t _Nm}>'], ['type\tstd::type<typename _Tp>', 'std::type<${1:typename _Tp}>'], ['type\tstd::type<typename _Tp, size_t _Nm>', 'std::type<${1:typename _Tp}, ${2:size_t _Nm}>'], ['true_type\ttrue_type', 'true_type'], ['false_type\tfalse_type', 'false_type'], ['conditional\tconditional<bool, typename, typename>', 'conditional<${1:bool}, ${2:typename}, ${3:typename}>'], ['hash\thash<typename _Tp>', 'hash<${1:typename _Tp}>'], ['nullptr_t\tnullptr_t', 'nullptr_t'], ['result_of\tresult_of<typename _Signature>', 'result_of<${1:typename _Signature}>'], ['nested_exception\tnested_exception', 'nested_exception'], ['char_traits\tchar_traits<typename _CharT>', 'char_traits<${1:typename _CharT}>'], ['allocator\tallocator<typename>', 'allocator<${1:typename}>'], ['istreambuf_iterator\tistreambuf_iterator<typename _CharT, typename _Traits>', 'istreambuf_iterator<${1:typename _CharT}, ${2:typename _Traits}>'], ['uses_allocator\tuses_allocator<typename, typename>', 'uses_allocator<${1:typename}, ${2:typename}>'], ['ostreambuf_iterator\tostreambuf_iterator<typename _CharT, typename _Traits>', 'ostreambuf_iterator<${1:typename _CharT}, ${2:typename _Traits}>'], ['is_reference\tis_reference<typename _Tp>', 'is_reference<${1:typename _Tp}>'], ['is_null_pointer\tis_null_pointer<typename _Tp>', 'is_null_pointer<${1:typename _Tp}>'], ['is_fundamental\tis_fundamental<typename _Tp>', 'is_fundamental<${1:typename _Tp}>'], ['is_arithmetic\tis_arithmetic<typename _Tp>', 'is_arithmetic<${1:typename _Tp}>'], ['is_member_pointer\tis_member_pointer<typename>', 'is_member_pointer<${1:typename}>'], ['add_lvalue_reference\tadd_lvalue_reference<typename _Tp>', 'add_lvalue_reference<${1:typename _Tp}>'], ['is_compound\tis_compound<typename _Tp>', 'is_compound<${1:typename _Tp}>'], ['add_volatile\tadd_volatile<typename _Tp>', 'add_volatile<${1:typename _Tp}>'], ['is_scalar\tis_scalar<typename _Tp>', 'is_scalar<${1:typename _Tp}>'], ['is_object\tis_object<typename _Tp>', 'is_object<${1:typename _Tp}>'], ['add_cv\tadd_cv<typename _Tp>', 'add_cv<${1:typename _Tp}>'], ['is_enum\tis_enum<typename _Tp>', 'is_enum<${1:typename _Tp}>'], ['size_t\tsize_t', 'size_t'], ['ptrdiff_t\tptrdiff_t', 'ptrdiff_t'], ['is_member_function_pointer\tis_member_function_pointer<typename _Tp>', 'is_member_function_pointer<${1:typename _Tp}>'], ['is_class\tis_class<typename _Tp>', 'is_class<${1:typename _Tp}>'], ['is_union\tis_union<typename _Tp>', 'is_union<${1:typename _Tp}>'], ['alignment_of\talignment_of<typename _Tp>', 'alignment_of<${1:typename _Tp}>'], ['has_virtual_destructor\thas_virtual_destructor<typename _Tp>', 'has_virtual_destructor<${1:typename _Tp}>'], ['rank\trank<typename>', 'rank<${1:typename}>'], ['aligned_union\taligned_union<size_t _Len, typename _Types>', 'aligned_union<${1:size_t _Len}, ${2:typename _Types}>'], ['has_trivial_default_constructor\thas_trivial_default_constructor<typename _Tp>', 'has_trivial_default_constructor<${1:typename _Tp}>'], ['is_trivially_destructible\tis_trivially_destructible<typename _Tp>', 'is_trivially_destructible<${1:typename _Tp}>'], ['has_trivial_copy_assign\thas_trivial_copy_assign<typename _Tp>', 'has_trivial_copy_assign<${1:typename _Tp}>'], ['has_trivial_copy_constructor\thas_trivial_copy_constructor<typename _Tp>', 'has_trivial_copy_constructor<${1:typename _Tp}>'], ['is_convertible\tis_convertible<typename _From, typename _To>', 'is_convertible<${1:typename _From}, ${2:typename _To}>'], ['add_pointer\tadd_pointer<typename _Tp>', 'add_pointer<${1:typename _Tp}>'], ['add_const\tadd_const<typename _Tp>', 'add_const<${1:typename _Tp}>'], ['exception\texception', 'exception'], ['remove_volatile\tremove_volatile<typename _Tp>', 'remove_volatile<${1:typename _Tp}>'], ['remove_const\tremove_const<typename _Tp>', 'remove_const<${1:typename _Tp}>'], ['bad_exception\tbad_exception', 'bad_exception'], ['unexpected_handler\tunexpected_handler', 'unexpected_handler'], ['aligned_storage\taligned_storage<std::size_t _Len>', 'aligned_storage<${1:std::size_t _Len}>'], ['terminate_handler\tterminate_handler', 'terminate_handler'], ['is_nothrow_move_assignable\tis_nothrow_move_assignable<typename _Tp>', 'is_nothrow_move_assignable<${1:typename _Tp}>'], ['is_trivially_default_constructible\tis_trivially_default_constructible<typename _Tp>', 'is_trivially_default_constructible<${1:typename _Tp}>'], ['underlying_type\tunderlying_type<typename _Tp>', 'underlying_type<${1:typename _Tp}>'], ['is_trivially_constructible\tis_trivially_constructible<typename _Tp, typename _Args>', 'is_trivially_constructible<${1:typename _Tp}, ${2:typename _Args}>'], ['is_trivially_assignable\tis_trivially_assignable<typename _Tp, typename _Up>', 'is_trivially_assignable<${1:typename _Tp}, ${2:typename _Up}>'], ['is_trivially_move_constructible\tis_trivially_move_constructible<typename _Tp>', 'is_trivially_move_constructible<${1:typename _Tp}>'], ['type_info\ttype_info', 'type_info'], ['decay\tdecay<typename _Tp>', 'decay<${1:typename _Tp}>'], ['exception_ptr\texception_ptr', 'exception_ptr'], ['is_trivially_move_assignable\tis_trivially_move_assignable<typename _Tp>', 'is_trivially_move_assignable<${1:typename _Tp}>'], ['is_trivially_copy_assignable\tis_trivially_copy_assignable<typename _Tp>', 'is_trivially_copy_assignable<${1:typename _Tp}>'], ['reference_wrapper\treference_wrapper<typename _Tp>', 'reference_wrapper<${1:typename _Tp}>'], ['enable_if\tenable_if<bool>', 'enable_if<${1:bool}>'], ['is_trivially_copy_constructible\tis_trivially_copy_constructible<typename _Tp>', 'is_trivially_copy_constructible<${1:typename _Tp}>'], ['common_type\tcommon_type<typename _Tp>', 'common_type<${1:typename _Tp}>'], ['is_assignable\tis_assignable<typename _Tp, typename _Up>', 'is_assignable<${1:typename _Tp}, ${2:typename _Up}>'], ['is_nothrow_copy_constructible\tis_nothrow_copy_constructible<typename _Tp>', 'is_nothrow_copy_constructible<${1:typename _Tp}>'], ['is_nothrow_move_constructible\tis_nothrow_move_constructible<typename _Tp>', 'is_nothrow_move_constructible<${1:typename _Tp}>'], ['is_nothrow_assignable\tis_nothrow_assignable<typename _Tp, typename _Up>', 'is_nothrow_assignable<${1:typename _Tp}, ${2:typename _Up}>'], ['is_copy_assignable\tis_copy_assignable<typename _Tp>', 'is_copy_assignable<${1:typename _Tp}>'], ['is_nothrow_copy_assignable\tis_nothrow_copy_assignable<typename _Tp>', 'is_nothrow_copy_assignable<${1:typename _Tp}>'], ['is_move_assignable\tis_move_assignable<typename _Tp>', 'is_move_assignable<${1:typename _Tp}>'], ['make_signed\tmake_signed<typename _Tp>', 'make_signed<${1:typename _Tp}>'], ['remove_extent\tremove_extent<typename _Tp>', 'remove_extent<${1:typename _Tp}>'], ['remove_pointer\tremove_pointer<typename _Tp>', 'remove_pointer<${1:typename _Tp}>'], ['is_nothrow_default_constructible\tis_nothrow_default_constructible<typename _Tp>', 'is_nothrow_default_constructible<${1:typename _Tp}>'], ['is_nothrow_constructible\tis_nothrow_constructible<typename _Tp, typename _Args>', 'is_nothrow_constructible<${1:typename _Tp}, ${2:typename _Args}>'], ['make_unsigned\tmake_unsigned<typename _Tp>', 'make_unsigned<${1:typename _Tp}>'], ['namespace\tnamespace name=namespace', 'namespace ${1:name}=${2:namespace}'], ['using\tusing namespace identifier', 'using namespace ${1:identifier}'], ['asm\tasm(string-literal)', 'asm(${1:string-literal})'], ['typedef\ttypedef type name', 'typedef ${1:type} ${2:name}'], ['using\tusing qualifier::name', 'using ${1:qualifier}::${2:name}'], ['extern\textern', 'extern'], ['static\tstatic', 'static'], ['inline\tinline', 'inline'], ['short\tshort', 'short'], ['long\tlong', 'long'], ['signed\tsigned', 'signed'], ['unsigned\tunsigned', 'unsigned'], ['void\tvoid', 'void'], ['char\tchar', 'char'], ['int\tint', 'int'], ['float\tfloat', 'float'], ['double\tdouble', 'double'], ['enum\tenum', 'enum'], ['struct\tstruct', 'struct'], ['union\tunion', 'union'], ['const\tconst', 'const'], ['volatile\tvolatile', 'volatile'], ['bool\tbool', 'bool'], ['class\tclass', 'class'], ['wchar_t\twchar_t', 'wchar_t'], ['typename\ttypename qualifier::name', 'typename ${1:qualifier}::${2:name}'], ['auto\tauto', 'auto'], ['char16_t\tchar16_t', 'char16_t'], ['char32_t\tchar32_t', 'char32_t'], ['decltype\tdecltype(expression)', 'decltype(${1:expression})'], ['_Nonnull\t_Nonnull', '_Nonnull'], ['_Null_unspecified\t_Null_unspecified', '_Null_unspecified'], ['_Nullable\t_Nullable', '_Nullable'], ['operator\toperator', 'operator']]
DEBUG:EasyClangComplete.plugin.completion.base_complete: reload completion tooltip
DEBUG:EasyClangComplete.EasyClangComplete: on_query_completions view id 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.error_vis: generating error regions for view 31
DEBUG:EasyClangComplete.plugin.error_vis: removing old error regions
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.error_vis: 1 error regions ready
DEBUG:EasyClangComplete.EasyClangComplete: on_modified_async view id 31
DEBUG:EasyClangComplete.plugin.error_vis: showing error regions: []
DEBUG:EasyClangComplete.plugin.error_vis: erasing error regions for view 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.error_vis: no error regions for row: 32
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.EasyClangComplete: on_query_completions view id 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.EasyClangComplete: starting async auto_complete at pos: 562
DEBUG:EasyClangComplete.EasyClangComplete: on_modified_async view id 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.error_vis: no error regions for row: 32
DEBUG:EasyClangComplete.plugin.error_vis: erasing error regions for view 31
DEBUG:EasyClangComplete.plugin.completion.lib_complete: started code complete for view 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.EasyClangComplete: on_modified_async view id 31
DEBUG:EasyClangComplete.plugin.error_vis: erasing error regions for view 31
DEBUG:EasyClangComplete.plugin.completion.lib_complete: code complete done in 0.09934568405151367 seconds
DEBUG:EasyClangComplete.plugin.completion.lib_complete:[['Interval\tInterval', 'Interval'], ['std\tstd::', 'std::'], ['DCE\tDCE::', 'DCE::'], ['float_t\tfloat_t', 'float_t'], ['double_t\tdouble_t', 'double_t'], ['type\ttype<typename _Ptr, typename _Args>', 'type<${1:typename _Ptr}, ${2:typename _Args}>'], ['pair\tpair<typename _T1, typename _T2>', 'pair<${1:typename _T1}, ${2:typename _T2}>'], ['reverse_iterator\treverse_iterator<typename _Iterator>', 'reverse_iterator<${1:typename _Iterator}>'], ['pointer_traits\tpointer_traits<typename _Ptr>', 'pointer_traits<${1:typename _Ptr}>'], ['piecewise_construct_t\tpiecewise_construct_t', 'piecewise_construct_t'], ['vector\tvector<typename _Tp>', 'vector<${1:typename _Tp}>'], ['random_access_iterator_tag\trandom_access_iterator_tag', 'random_access_iterator_tag'], ['forward_iterator_tag\tforward_iterator_tag', 'forward_iterator_tag'], ['bidirectional_iterator_tag\tbidirectional_iterator_tag', 'bidirectional_iterator_tag'], ['input_iterator_tag\tinput_iterator_tag', 'input_iterator_tag'], ['output_iterator_tag\toutput_iterator_tag', 'output_iterator_tag'], ['iterator_traits\titerator_traits<typename _Iterator>', 'iterator_traits<${1:typename _Iterator}>'], ['iterator\titerator<typename _Category, typename _Tp>', 'iterator<${1:typename _Category}, ${2:typename _Tp}>'], ['is_abstract\tis_abstract<typename _Tp>', 'is_abstract<${1:typename _Tp}>'], ['is_polymorphic\tis_polymorphic<typename _Tp>', 'is_polymorphic<${1:typename _Tp}>'], ['is_empty\tis_empty<typename _Tp>', 'is_empty<${1:typename _Tp}>'], ['is_literal_type\tis_literal_type<typename _Tp>', 'is_literal_type<${1:typename _Tp}>'], ['add_rvalue_reference\tadd_rvalue_reference<typename>', 'add_rvalue_reference<${1:typename}>'], ['is_unsigned\tis_unsigned<typename _Tp>', 'is_unsigned<${1:typename _Tp}>'], ['is_signed\tis_signed<typename _Tp>', 'is_signed<${1:typename _Tp}>'], ['is_const\tis_const<typename>', 'is_const<${1:typename}>'], ['initializer_list\tinitializer_list<class _E>', 'initializer_list<${1:class _E}>'], ['is_pod\tis_pod<typename _Tp>', 'is_pod<${1:typename _Tp}>'], ['is_standard_layout\tis_standard_layout<typename _Tp>', 'is_standard_layout<${1:typename _Tp}>'], ['is_trivially_copyable\tis_trivially_copyable<typename _Tp>', 'is_trivially_copyable<${1:typename _Tp}>'], ['is_trivial\tis_trivial<typename _Tp>', 'is_trivial<${1:typename _Tp}>'], ['is_volatile\tis_volatile<typename>', 'is_volatile<${1:typename}>'], ['is_nothrow_destructible\tis_nothrow_destructible<typename _Tp>', 'is_nothrow_destructible<${1:typename _Tp}>'], ['is_destructible\tis_destructible<typename _Tp>', 'is_destructible<${1:typename _Tp}>'], ['nullptr_t\tnullptr_t', 'nullptr_t'], ['ptrdiff_t\tptrdiff_t', 'ptrdiff_t'], ['hash\thash<typename _Tp>', 'hash<${1:typename _Tp}>'], ['size_t\tsize_t', 'size_t'], ['uses_allocator\tuses_allocator<typename, typename>', 'uses_allocator<${1:typename}, ${2:typename}>'], ['allocator\tallocator<typename>', 'allocator<${1:typename}>'], ['underlying_type\tunderlying_type<typename _Tp>', 'underlying_type<${1:typename _Tp}>'], ['extent\textent<typename>', 'extent<${1:typename}>'], ['remove_all_extents\tremove_all_extents<typename>', 'remove_all_extents<${1:typename}>'], ['result_of\tresult_of<typename _Signature>', 'result_of<${1:typename _Signature}>'], ['istreambuf_iterator\tistreambuf_iterator<typename _CharT, typename _Traits>', 'istreambuf_iterator<${1:typename _CharT}, ${2:typename _Traits}>'], ['char_traits\tchar_traits<typename _CharT>', 'char_traits<${1:typename _CharT}>'], ['nested_exception\tnested_exception', 'nested_exception'], ['is_same\tis_same<typename, typename>', 'is_same<${1:typename}, ${2:typename}>'], ['add_lvalue_reference\tadd_lvalue_reference<typename _Tp>', 'add_lvalue_reference<${1:typename _Tp}>'], ['is_base_of\tis_base_of<typename, typename>', 'is_base_of<${1:typename}, ${2:typename}>'], ['remove_reference\tremove_reference<typename>', 'remove_reference<${1:typename}>'], ['add_cv\tadd_cv<typename _Tp>', 'add_cv<${1:typename _Tp}>'], ['add_const\tadd_const<typename _Tp>', 'add_const<${1:typename _Tp}>'], ['add_volatile\tadd_volatile<typename _Tp>', 'add_volatile<${1:typename _Tp}>'], ['remove_volatile\tremove_volatile<typename _Tp>', 'remove_volatile<${1:typename _Tp}>'], ['remove_const\tremove_const<typename _Tp>', 'remove_const<${1:typename _Tp}>'], ['is_default_constructible\tis_default_constructible<typename _Tp>', 'is_default_constructible<${1:typename _Tp}>'], ['has_trivial_copy_assign\thas_trivial_copy_assign<typename _Tp>', 'has_trivial_copy_assign<${1:typename _Tp}>'], ['has_virtual_destructor\thas_virtual_destructor<typename _Tp>', 'has_virtual_destructor<${1:typename _Tp}>'], ['is_integral\tis_integral<typename _Tp>', 'is_integral<${1:typename _Tp}>'], ['aligned_storage\taligned_storage<std::size_t _Len>', 'aligned_storage<${1:std::size_t _Len}>'], ['has_trivial_default_constructor\thas_trivial_default_constructor<typename _Tp>', 'has_trivial_default_constructor<${1:typename _Tp}>'], ['is_array\tis_array<typename>', 'is_array<${1:typename}>'], ['bad_exception\tbad_exception', 'bad_exception'], ['is_copy_constructible\tis_copy_constructible<typename _Tp>', 'is_copy_constructible<${1:typename _Tp}>'], ['is_floating_point\tis_floating_point<typename _Tp>', 'is_floating_point<${1:typename _Tp}>'], ['has_trivial_copy_constructor\thas_trivial_copy_constructor<typename _Tp>', 'has_trivial_copy_constructor<${1:typename _Tp}>'], ['is_pointer\tis_pointer<typename _Tp>', 'is_pointer<${1:typename _Tp}>'], ['is_trivially_destructible\tis_trivially_destructible<typename _Tp>', 'is_trivially_destructible<${1:typename _Tp}>'], ['terminate_handler\tterminate_handler', 'terminate_handler'], ['is_rvalue_reference\tis_rvalue_reference<typename>', 'is_rvalue_reference<${1:typename}>'], ['is_trivially_copy_assignable\tis_trivially_copy_assignable<typename _Tp>', 'is_trivially_copy_assignable<${1:typename _Tp}>'], ['is_constructible\tis_constructible<typename _Tp, typename _Args>', 'is_constructible<${1:typename _Tp}, ${2:typename _Args}>'], ['aligned_union\taligned_union<size_t _Len, typename _Types>', 'aligned_union<${1:size_t _Len}, ${2:typename _Types}>'], ['is_lvalue_reference\tis_lvalue_reference<typename>', 'is_lvalue_reference<${1:typename}>'], ['is_trivially_move_assignable\tis_trivially_move_assignable<typename _Tp>', 'is_trivially_move_assignable<${1:typename _Tp}>'], ['unexpected_handler\tunexpected_handler', 'unexpected_handler'], ['add_pointer\tadd_pointer<typename _Tp>', 'add_pointer<${1:typename _Tp}>'], ['is_convertible\tis_convertible<typename _From, typename _To>', 'is_convertible<${1:typename _From}, ${2:typename _To}>'], ['remove_pointer\tremove_pointer<typename _Tp>', 'remove_pointer<${1:typename _Tp}>'], ['exception\texception', 'exception'], ['remove_cv\tremove_cv<typename>', 'remove_cv<${1:typename}>'], ['rank\trank<typename>', 'rank<${1:typename}>'], ['alignment_of\talignment_of<typename _Tp>', 'alignment_of<${1:typename _Tp}>'], ['is_void\tis_void<typename _Tp>', 'is_void<${1:typename _Tp}>'], ['true_type\ttrue_type', 'true_type'], ['is_trivially_default_constructible\tis_trivially_default_constructible<typename _Tp>', 'is_trivially_default_constructible<${1:typename _Tp}>'], ['type\tstd::type<typename _Tp>', 'std::type<${1:typename _Tp}>'], ['type\tstd::type<typename _Tp, size_t _Nm>', 'std::type<${1:typename _Tp}, ${2:size_t _Nm}>'], ['type\tstd::type<typename _Tp>', 'std::type<${1:typename _Tp}>'], ['type\tstd::type<typename _Tp, size_t _Nm>', 'std::type<${1:typename _Tp}, ${2:size_t _Nm}>'], ['conditional\tconditional<bool, typename, typename>', 'conditional<${1:bool}, ${2:typename}, ${3:typename}>'], ['is_trivially_constructible\tis_trivially_constructible<typename _Tp, typename _Args>', 'is_trivially_constructible<${1:typename _Tp}, ${2:typename _Args}>'], ['bad_alloc\tbad_alloc', 'bad_alloc'], ['false_type\tfalse_type', 'false_type'], ['common_type\tcommon_type<typename _Tp>', 'common_type<${1:typename _Tp}>'], ['is_nothrow_move_assignable\tis_nothrow_move_assignable<typename _Tp>', 'is_nothrow_move_assignable<${1:typename _Tp}>'], ['is_nothrow_copy_assignable\tis_nothrow_copy_assignable<typename _Tp>', 'is_nothrow_copy_assignable<${1:typename _Tp}>'], ['decay\tdecay<typename _Tp>', 'decay<${1:typename _Tp}>'], ['is_trivially_move_constructible\tis_trivially_move_constructible<typename _Tp>', 'is_trivially_move_constructible<${1:typename _Tp}>'], ['uint_least16_t\tuint_least16_t', 'uint_least16_t'], ['is_trivially_assignable\tis_trivially_assignable<typename _Tp, typename _Up>', 'is_trivially_assignable<${1:typename _Tp}, ${2:typename _Up}>'], ['is_trivially_copy_constructible\tis_trivially_copy_constructible<typename _Tp>', 'is_trivially_copy_constructible<${1:typename _Tp}>'], ['bad_array_new_length\tbad_array_new_length', 'bad_array_new_length'], ['exception_ptr\texception_ptr', 'exception_ptr'], ['uint_least32_t\tuint_least32_t', 'uint_least32_t'], ['is_move_constructible\tis_move_constructible<typename _Tp>', 'is_move_constructible<${1:typename _Tp}>'], ['enable_if\tenable_if<bool>', 'enable_if<${1:bool}>'], ['type_info\ttype_info', 'type_info'], ['reference_wrapper\treference_wrapper<typename _Tp>', 'reference_wrapper<${1:typename _Tp}>'], ['integral_constant\tintegral_constant<typename _Tp, _Tp __v>', 'integral_constant<${1:typename _Tp}, ${2:_Tp __v}>'], ['is_nothrow_move_constructible\tis_nothrow_move_constructible<typename _Tp>', 'is_nothrow_move_constructible<${1:typename _Tp}>'], ['nothrow_t\tnothrow_t', 'nothrow_t'], ['new_handler\tnew_handler', 'new_handler'], ['is_nothrow_constructible\tis_nothrow_constructible<typename _Tp, typename _Args>', 'is_nothrow_constructible<${1:typename _Tp}, ${2:typename _Args}>'], ['tuple\ttuple<typename>', 'tuple<${1:typename}>'], ['is_nothrow_copy_constructible\tis_nothrow_copy_constructible<typename _Tp>', 'is_nothrow_copy_constructible<${1:typename _Tp}>'], ['is_member_pointer\tis_member_pointer<typename>', 'is_member_pointer<${1:typename}>'], ['is_move_assignable\tis_move_assignable<typename _Tp>', 'is_move_assignable<${1:typename _Tp}>'], ['is_scalar\tis_scalar<typename _Tp>', 'is_scalar<${1:typename _Tp}>'], ['is_arithmetic\tis_arithmetic<typename _Tp>', 'is_arithmetic<${1:typename _Tp}>'], ['is_nothrow_assignable\tis_nothrow_assignable<typename _Tp, typename _Up>', 'is_nothrow_assignable<${1:typename _Tp}, ${2:typename _Up}>'], ['is_fundamental\tis_fundamental<typename _Tp>', 'is_fundamental<${1:typename _Tp}>'], ['is_object\tis_object<typename _Tp>', 'is_object<${1:typename _Tp}>'], ['is_assignable\tis_assignable<typename _Tp, typename _Up>', 'is_assignable<${1:typename _Tp}, ${2:typename _Up}>'], ['is_compound\tis_compound<typename _Tp>', 'is_compound<${1:typename _Tp}>'], ['is_copy_assignable\tis_copy_assignable<typename _Tp>', 'is_copy_assignable<${1:typename _Tp}>'], ['make_unsigned\tmake_unsigned<typename _Tp>', 'make_unsigned<${1:typename _Tp}>'], ['is_class\tis_class<typename _Tp>', 'is_class<${1:typename _Tp}>'], ['make_signed\tmake_signed<typename _Tp>', 'make_signed<${1:typename _Tp}>'], ['is_reference\tis_reference<typename _Tp>', 'is_reference<${1:typename _Tp}>'], ['is_null_pointer\tis_null_pointer<typename _Tp>', 'is_null_pointer<${1:typename _Tp}>'], ['remove_extent\tremove_extent<typename _Tp>', 'remove_extent<${1:typename _Tp}>'], ['is_member_object_pointer\tis_member_object_pointer<typename _Tp>', 'is_member_object_pointer<${1:typename _Tp}>'], ['is_function\tis_function<typename>', 'is_function<${1:typename}>'], ['is_member_function_pointer\tis_member_function_pointer<typename _Tp>', 'is_member_function_pointer<${1:typename _Tp}>'], ['is_nothrow_default_constructible\tis_nothrow_default_constructible<typename _Tp>', 'is_nothrow_default_constructible<${1:typename _Tp}>'], ['is_enum\tis_enum<typename _Tp>', 'is_enum<${1:typename _Tp}>'], ['is_union\tis_union<typename _Tp>', 'is_union<${1:typename _Tp}>'], ['back_insert_iterator\tback_insert_iterator<typename _Container>', 'back_insert_iterator<${1:typename _Container}>'], ['front_insert_iterator\tfront_insert_iterator<typename _Container>', 'front_insert_iterator<${1:typename _Container}>'], ['insert_iterator\tinsert_iterator<typename _Container>', 'insert_iterator<${1:typename _Container}>'], ['allocator_traits\tallocator_traits<typename _Alloc>', 'allocator_traits<${1:typename _Alloc}>'], ['move_iterator\tmove_iterator<typename _Iterator>', 'move_iterator<${1:typename _Iterator}>'], ['ostreambuf_iterator\tostreambuf_iterator<typename _CharT, typename _Traits>', 'ostreambuf_iterator<${1:typename _CharT}, ${2:typename _Traits}>'], ['namespace\tnamespace name=namespace', 'namespace ${1:name}=${2:namespace}'], ['using\tusing namespace identifier', 'using namespace ${1:identifier}'], ['asm\tasm(string-literal)', 'asm(${1:string-literal})'], ['typedef\ttypedef type name', 'typedef ${1:type} ${2:name}'], ['using\tusing qualifier::name', 'using ${1:qualifier}::${2:name}'], ['extern\textern', 'extern'], ['static\tstatic', 'static'], ['inline\tinline', 'inline'], ['short\tshort', 'short'], ['long\tlong', 'long'], ['signed\tsigned', 'signed'], ['unsigned\tunsigned', 'unsigned'], ['void\tvoid', 'void'], ['char\tchar', 'char'], ['int\tint', 'int'], ['float\tfloat', 'float'], ['double\tdouble', 'double'], ['enum\tenum', 'enum'], ['struct\tstruct', 'struct'], ['union\tunion', 'union'], ['const\tconst', 'const'], ['volatile\tvolatile', 'volatile'], ['bool\tbool', 'bool'], ['class\tclass', 'class'], ['wchar_t\twchar_t', 'wchar_t'], ['typename\ttypename qualifier::name', 'typename ${1:qualifier}::${2:name}'], ['auto\tauto', 'auto'], ['char16_t\tchar16_t', 'char16_t'], ['char32_t\tchar32_t', 'char32_t'], ['decltype\tdecltype(expression)', 'decltype(${1:expression})'], ['_Nonnull\t_Nonnull', '_Nonnull'], ['_Null_unspecified\t_Null_unspecified', '_Null_unspecified'], ['_Nullable\t_Nullable', '_Nullable'], ['operator\toperator', 'operator']]
DEBUG:EasyClangComplete.plugin.completion.base_complete: reload completion tooltip
DEBUG:EasyClangComplete.EasyClangComplete: on_query_completions view id 31
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.error_vis: generating error regions for view 31
DEBUG:EasyClangComplete.plugin.error_vis: removing old error regions
DEBUG:EasyClangComplete.plugin.error_vis: 1 error regions ready
DEBUG:EasyClangComplete.plugin.error_vis: showing error regions: []
Package Control: No updated packages
niosus commented 8 years ago

Hmm, @bonsairobo I guess you still haven't enabled sublime.log_commands(True) and sublime.log_input(True). Also, what is Haxe.HaxeComplete? Are you 100% sure it does not disrupt the work of other plugins?

polyclick commented 8 years ago

+1

I have the same bug.

I happen to notice that this is only the case if you try to autocomplete with .. Autocompleting with -> works.

niosus commented 8 years ago

@polyclick do you still experience it? Can you follow all the instructions I have provided? For now I am clueless of what could cause it.

SubhamoyS commented 8 years ago

I am also experiencing this problem. New 64bit sublime install. Ubuntu 16.04.

niosus commented 8 years ago

Guys, may I ask you to record more example videos? I still do not understand what is happening. So that would help a lot, so that at least we are sure we are talking about the same issue.

So can anyone please record a video a link it here stating all settings used during the recording? Thanks!

rchl commented 8 years ago

This is one example where default completions disappear (only affects bin_complete I think):

c:\llvm-build\Release+Asserts\bin\clang-cl.exe -c -fsyntax-only  -Xclang -code-completion-at=c:\users\rchl\appdata\local\temp\EasyClangComplete\foo.cc:39:22 ....
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.plugin.tools: file has valid syntax: `C++`
DEBUG:EasyClangComplete.EasyClangComplete: on_modified_async view id 31
DEBUG:EasyClangComplete.plugin.completion.base_complete: clang process finished with code: 1
DEBUG:EasyClangComplete.plugin.completion.base_complete: clang process output: 
c:\users\rchl\appdata\local\temp\EasyClangComplete\foo.cc(10,10):  fatal error: 'api/foo.h' file not found

#include "api/foo.h"

         ^

1 error generated.

COMPLETION: y0 : [#double#]y0(<#double _X#>)
COMPLETION: y1 : [#double#]y1(<#double _X#>)
COMPLETION: yn : [#double#]yn(<#int _X#>, <#double _Y#>)
OVERLOAD: [#ResponseAction#]RespondNow(<#ResponseValue result#>)

DEBUG:EasyClangComplete.plugin.completion.bin_complete: code complete done in 3.104773998260498 seconds
DEBUG:EasyClangComplete.plugin.completion.bin_complete: completion 'c:\users\rchl\appdata\local\temp\EasyClangComplete\foo.cc(10,10):  fatal error: 'api/foo.h' file not found' did not match pattern 'COMPLETION:\s(?P<name>.*)\s:\s(?P<content>.*)'
DEBUG:EasyClangComplete.plugin.completion.bin_complete: completion '#include "api/foo.h"' did not match pattern 'COMPLETION:\s(?P<name>.*)\s:\s(?P<content>.*)'
DEBUG:EasyClangComplete.plugin.completion.bin_complete: completion '         ^' did not match pattern 'COMPLETION:\s(?P<name>.*)\s:\s(?P<content>.*)'
DEBUG:EasyClangComplete.plugin.completion.bin_complete: completion '1 error generated.' did not match pattern 'COMPLETION:\s(?P<name>.*)\s:\s(?P<content>.*)'
DEBUG:EasyClangComplete.plugin.completion.bin_complete: completion 'OVERLOAD: [#ResponseAction#]RespondNow(<#ResponseValue result#>)' did not match pattern 'COMPLETION:\s(?P<name>.*)\s:\s(?P<content>.*)'
DEBUG:EasyClangComplete.plugin.completion.base_complete: reload completion tooltip
niosus commented 8 years ago

Should be fixed by @rchl . Closing for now.