dense-analysis / ale

Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support
BSD 2-Clause "Simplified" License
13.43k stars 1.42k forks source link

Balloons not enabled in MacVim on startup #1795

Open dileepfrog opened 5 years ago

dileepfrog commented 5 years ago

Information

VIM version

VIM - Vi IMproved 8.1 (2018 May 17, compiled Jun 17 2018 23:04:26) macOS version

Operating System: macOS 10.13.6

:ALEInfo

Current Filetype: javascript Available Linters: ['eslint', 'flow', 'jscs', 'jshint', 'standard', 'tsserver', 'xo'] Enabled Linters: ['eslint', 'flow'] Suggested Fixers: 'eslint' - Apply eslint --fix to a file. 'importjs' - automatic imports for javascript 'prettier' - Apply prettier to a file. 'prettier_eslint', 'prettier-eslint' - Apply prettier-eslint to a file. 'prettier_standard', 'prettier-standard' - Apply prettier-standard to a file. 'remove_trailing_lines' - Remove all blank lines at the end of a file. 'standard' - Fix JavaScript files using standard --fix 'trim_whitespace' - Remove all trailing whitespace characters at the end of every line. 'xo' - Fix JavaScript files using xo --fix. Linter Variables: let g:ale_javascript_eslint_executable = 'eslint' let g:ale_javascript_eslint_options = '' let g:ale_javascript_eslint_suppress_eslintignore = 0 let g:ale_javascript_eslint_suppress_missing_config = 0 let g:ale_javascript_eslint_use_global = 0 let g:ale_javascript_flow_executable = 'flow' let g:ale_javascript_flow_use_global = 0 let g:ale_javascript_flow_use_home_config = 0 let g:ale_javascript_flow_use_respect_pragma = 1 Global Variables: let g:ale_cache_executable_check_failures = v:null let g:ale_change_sign_column_color = 0 let g:ale_command_wrapper = '' let g:ale_completion_delay = v:null let g:ale_completion_enabled = 0 let g:ale_completion_max_suggestions = v:null let g:ale_echo_cursor = 1 let g:ale_echo_msg_error_str = 'Error' let g:ale_echo_msg_format = '%code: %%s' let g:ale_echo_msg_info_str = 'Info' let g:ale_echo_msg_warning_str = 'Warning' let g:ale_enabled = 1 let g:ale_fix_on_save = 1 let g:ale_fixers = {'javascript': ['remove_trailing_lines', 'trim_whitespace', 'importjs', 'prettier_eslint']} let g:ale_history_enabled = 1 let g:ale_history_log_output = 1 let g:ale_keep_list_window_open = 0 let g:ale_lint_delay = 200 let g:ale_lint_on_enter = 1 let g:ale_lint_on_filetype_changed = 1 let g:ale_lint_on_save = 1 let g:ale_lint_on_text_changed = 'always' let g:ale_lint_on_insert_leave = 0 let g:ale_linter_aliases = {} let g:ale_linters = {'javascript': ['eslint', 'flow', 'flow-language-server']} let g:ale_linters_explicit = 0 let g:ale_list_window_size = 10 let g:ale_list_vertical = 0 let g:ale_loclist_msg_format = '%code: %%s' let g:ale_max_buffer_history_size = 20 let g:ale_max_signs = -1 let g:ale_maximum_file_size = v:null let g:ale_open_list = 0 let g:ale_pattern_options = {} let g:ale_pattern_options_enabled = 0 let g:ale_set_balloons = 1 let g:ale_set_highlights = 1 let g:ale_set_loclist = 1 let g:ale_set_quickfix = 0 let g:ale_set_signs = 1 let g:ale_sign_column_always = 0 let g:ale_sign_error = '>>' let g:ale_sign_info = '--' let g:ale_sign_offset = 1000000 let g:ale_sign_style_error = '>>' let g:ale_sign_style_warning = '--' let g:ale_sign_warning = '--' let g:ale_statusline_format = v:null let g:ale_type_map = {} let g:ale_use_global_executables = v:null let g:ale_warn_about_trailing_blank_lines = 1 let g:ale_warn_about_trailing_whitespace = 1 Command History: (started) ['/bin/zsh', '-c', '''/Users/sdileep/Code/v1/node_modules/eslint/bin/eslint.js'' -f unix --stdin --stdin-filename ''/Users/sdileep/Code/v1/lib/rpc.js' ' < ''/var/folders/x7/87_48qfs5ps0lphhk284f8qw0000gn/T/vKtjEeP/21/rpc.js'''] (finished - exit code 1) ['/bin/zsh', '-c', '''/Users/sdileep/Code/v1/node_modules/eslint/bin/eslint.js'' -f unix --stdin --stdin-filename ''/Users/sdileep/Code /v1/lib/rpc.js'' < ''/var/folders/x7/87_48qfs5ps0lphhk284f8qw0000gn/T/vKtjEeP/22/rpc.js'''] <<>> /Users/sdileep/Code/v1/lib/rpc.js:79:10: Unnecessary 'else' after 'return'. [Error/no-else-return] /Users/sdileep/Code/v1/lib/rpc.js:139:61: Unexpected block statement surrounding arrow body; parenthesize the returned value and move it immediately after the =>. [Error/arrow-body-style] /Users/sdileep/Code/v1/lib/rpc.js:146:61: Unexpected block statement surrounding arrow body; parenthesize the returned value and move it immediately after the =>. [Error/arrow-body-style] /Users/sdileep/Code/v1/lib/rpc.js:250:1: Line 250 exceeds the maximum line length of 100. [Error/max-len] /Users/sdileep/Code/v1/lib/rpc.js:486:68: Unexpected use of comma operator. [Error/no-sequences] /Users/sdileep/Code/v1/lib/rpc.js:567:64: Unexpected use of comma operator. [Error/no-sequences] 6 problems <<>>

What went wrong

Linter output, in this case from eslint, should show in a balloon on mouse hover but it does not unless I explicitly run :call ale#balloon#Enable() myself.

Reproducing the bug

  1. Open a JS file with some lint errors like missing semicolon, whitespace, etc with eslint set as one of your linters.
  2. Hover the mouse over the error in the source or the >> symbols in the margin
  3. No balloon tooltip with the error will appear
  4. :call ale#balloon#Enable() and then hover again, and you will see the tooltips fine
w0rp commented 5 years ago

Did you set g:ale_set_balloons to 1 before ALE was loaded? You should either do that, or call ale#balloon#Enable() yourself after loading ALE.

mikew commented 5 years ago

I'm able to get ale/macvim to show balloons for lint errors, but not for type information. ale-lsp is working, as it's giving the correct info with :ALEHover. Seems like that information should come through, it does in gvim at least.

dileepfrog commented 5 years ago

Sorry for the extreme lag time here but I just confirmed with the latest code this is still an issue as originally described.

To answer your questions @w0rp yes g:ale_set_balloons is set to 1 in my .vimrc prior to loading ale with pathogen and indeed calling ale#balloon#Enable() myself after startup does make lint error balloons appear but no LSP hover, just as @mikew described

w0rp commented 5 years ago

Are you using Vim in a terminal or as a GUI? If you're using a terminal, you may have to adjust your Vim and terminal settings for mice to work properly.

johnelliott commented 5 years ago

+1 here same as @mikew and @dileepfrog : macvim 8.1.950 via homebrew. Seems to has the balloons features :) I also see the balloons for errors when mousing over, but no balloon when I would expect the LSP ALEHover text to be there in a bubble.

w0rp commented 5 years ago

Is that in a GUI, or in a terminal?

johnelliott commented 5 years ago

Hi. It’s in GUI macvim.

Sorry my mistake. I wasn’t even aware I could run macvim without GUI mode. My version of terminal vim does not support showing balloons as far as I could tell from testing features in the vim command line.

pbnj commented 5 years ago

This issue is also related to #2442 , where I reported the same problem with vim and macvim.

In macvim, balloons show for linting errors, but not for type information

Screen Shot 2019-05-01 at 12 14 55 AM

In vim, ballons do not show for either linting errors or type information. But, if I :call balloon_show(bufname('%')) (as a test), balloon shows under the cursor.

For both vim and macvim, I set:

... snip
set ballooneval
set balloonevalterm
set mouse=a
set ttymouse=sgr " also tried xterm

let g:ale_set_balloon = 1
Plug 'w0rp/ale'
... snip
w0rp commented 5 years ago

What's the result of :set balloonexpr?

johnelliott commented 5 years ago

Hi, nice to see more activity on this one. I am just about to head to work, later today I will be more free and I may be able to help reproduce with enough detail to help find the cause.

pbnj commented 5 years ago

@w0rp - sorry for jumping back and forth between the two related issues.

The output of :set balloonexpr is ale#balloon#Expr()

w0rp commented 5 years ago

If it doesn't work for you in the MacVim GUI, I don't know. It works for me in my daily uses in GVim. You might have to debug the issue, and submit a pull request if you can fix it.

johnelliott commented 5 years ago

moving my comment to #2442 where it belongs

gagbo commented 5 years ago

But, if I :call balloon_show(bufname('%')) (as a test), balloon shows under the cursor.

In which terminal did you test this ? I wasn't able to make balloonexpr work in some terminals using the snippet I put in that other issue. Also, did you install Vim from brew or from source ?

As @w0rp said in #2442, maybe it's an issue of communication between terminal and vim (aka, the term is not aware / does not send the cursor position)

Jorengarenar commented 8 months ago

@dileepfrog Hi! Since it was quite few years since the issue was reported and (potentially) related #2442 was long resolved, could you please verify if the problem still occurs?