From 8846a8860f39027c0c2a7aba9e49ad2fdacd5428 Mon Sep 17 00:00:00 2001 From: w0rp Date: Wed, 28 Jun 2017 16:20:01 +0100 Subject: Use a new window for the ALEFixSuggest command, and document it better --- autoload/ale/fix/registry.vim | 60 ++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 24 deletions(-) (limited to 'autoload') diff --git a/autoload/ale/fix/registry.vim b/autoload/ale/fix/registry.vim index 7219410d..0dbbc0c5 100644 --- a/autoload/ale/fix/registry.vim +++ b/autoload/ale/fix/registry.vim @@ -116,44 +116,56 @@ endfunction " Suggest functions to use from the registry. function! ale#fix#registry#Suggest(filetype) abort let l:type_list = split(a:filetype, '\.') - let l:first_for_filetype = 1 - let l:first_generic = 1 + let l:filetype_fixer_list = [] for l:key in sort(keys(s:entries)) let l:suggested_filetypes = s:entries[l:key].suggested_filetypes if s:ShouldSuggestForType(l:suggested_filetypes, l:type_list) - if l:first_for_filetype - let l:first_for_filetype = 0 - echom 'Try the following fixers appropriate for the filetype:' - echom '' - endif - - echom printf('%s - %s', string(l:key), s:entries[l:key].description) + call add( + \ l:filetype_fixer_list, + \ printf('%s - %s', string(l:key), s:entries[l:key].description), + \) endif endfor + let l:generic_fixer_list = [] for l:key in sort(keys(s:entries)) if empty(s:entries[l:key].suggested_filetypes) - if l:first_generic - if !l:first_for_filetype - echom '' - endif - - let l:first_generic = 0 - echom 'Try the following generic fixers:' - echom '' - endif - - echom printf('%s - %s', string(l:key), s:entries[l:key].description) + call add( + \ l:generic_fixer_list, + \ printf('%s - %s', string(l:key), s:entries[l:key].description), + \) endif endfor - if l:first_for_filetype && l:first_generic - echom 'There is nothing in the registry to suggest.' + let l:filetype_fixer_header = !empty(l:filetype_fixer_list) + \ ? ['Try the following fixers appropriate for the filetype:', ''] + \ : [] + let l:generic_fixer_header = !empty(l:generic_fixer_list) + \ ? ['Try the following generic fixers:', ''] + \ : [] + + let l:has_both_lists = !empty(l:filetype_fixer_list) && !empty(l:generic_fixer_list) + + let l:lines = + \ l:filetype_fixer_header + \ + l:filetype_fixer_list + \ + (l:has_both_lists ? [''] : []) + \ + l:generic_fixer_header + \ + l:generic_fixer_list + + if empty(l:lines) + let l:lines = ['There is nothing in the registry to suggest.'] else - echom '' - echom 'See :help ale-fix-configuration' + let l:lines += ['', 'See :help ale-fix-configuration'] endif + + let l:lines += ['', 'Press q to close this window'] + + new +set\ filetype=ale-fix-suggest + call setline(1, l:lines) + setlocal nomodified + setlocal nomodifiable endfunction -- cgit v1.2.3