diff --git a/autoload/startify.vim b/autoload/startify.vim index 13e46de..93b2839 100644 --- a/autoload/startify.vim +++ b/autoload/startify.vim @@ -113,6 +113,7 @@ function! startify#insane_in_the_membrane() abort \ [' MRU '. getcwd()], 'dir', \ [' Sessions'], 'sessions', \ [' Bookmarks'], 'bookmarks', + \ [' Commands'], 'commands', \ ]) for item in s:lists @@ -621,6 +622,36 @@ function! s:show_bookmarks() abort call append('$', '') endfunction +" Function: s:show_commands {{{1 +function! s:show_commands() abort + if !exists('g:startify_commands') || empty(g:startify_commands) + return + endif + + if exists('s:last_message') + call s:print_section_header() + endif + + for entry in g:startify_commands + if type(entry) == type({}) " with custom index + let [index, command] = items(entry)[0] + else + let command = entry + let index = s:get_index_as_string(s:entry_number) + let s:entry_number += 1 + endif + " If no list is given, the description is the command itself. + let [desc, cmd] = type(command) == type([]) ? command : [command, command] + + call append('$', ' ['. index .']'. repeat(' ', (3 - strlen(index))) . desc) + call s:register(line('$'), index, 'special', cmd, '', s:nowait_string) + + unlet entry command + endfor + + call append('$', '') +endfunction + " Function: s:is_in_skiplist {{{1 function! s:is_in_skiplist(arg) abort for regexp in s:skiplist diff --git a/doc/startify.txt b/doc/startify.txt index 1c28f85..07958b4 100644 --- a/doc/startify.txt +++ b/doc/startify.txt @@ -36,7 +36,7 @@ CONTENTS *startify-contents* ============================================================================== INTRO *startify-intro* -Startify is a plugin that shows recently used files, bookmarks and +Startify is a plugin that shows recently used files, bookmarks, commands and sessions that were saved to a certain directory. ============================================================================== @@ -48,8 +48,8 @@ Startify basically provides two things: it reads from STDIN), startify will show a small but pretty start screen that shows recently used files (using viminfo) and sessions by default. - Additionally, you can define bookmarks, thus entries for files that always - should be available on the start screen. + Additionally, you can define bookmarks (thus entries for files) and + commands that always should be available on the start screen. You can either navigate to a certain menu entry and hit enter or you just key in whatever is written between the square brackets on that line. You @@ -97,6 +97,7 @@ default values. |g:startify_update_oldfiles| Misc options:~ + |g:startify_commands| |g:startify_custom_footer| |g:startify_custom_header_quotes| |g:startify_custom_indices| @@ -128,7 +129,8 @@ The default for Windows systems is '$HOME\vimfiles\session'. ------------------------------------------------------------------------------ *g:startify_list_order* > - let g:startify_list_order = ['files', 'dir', 'bookmarks', 'sessions'] + let g:startify_list_order = ['files', 'dir', 'bookmarks', 'sessions', + \ 'commands'] < At the moment startify supports these lists:~ @@ -151,6 +153,10 @@ At the moment startify supports these lists:~ This lists all the sessions saved in the directory |g:startify_session_dir|. +5) "commands" + + This lists commands defined in |g:startify_commands|. + Section headers:~ Additionally you can add lists of strings to that list. These will be shown @@ -174,6 +180,8 @@ Section headers example:~ \ 'sessions', \ [' These are my bookmarks:'], \ 'bookmarks', + \ [' These are my commands:'], + \ 'commands', \ ] < Feel free to add some cool ASCII action! @@ -193,6 +201,25 @@ Example: < NOTE: Avoid using keys from |startify-mappings| if providing custom indices. +------------------------------------------------------------------------------ + *g:startify_commands* +> + let g:startify_commands = [] +< +A list of commands to execute on selection. Leading colons are optional. It +supports optional custom indices and/or command descriptions. + +Example: +> + let g:startify_commands = [ + \ ':help reference', + \ ['Vim Reference', 'h ref'], + \ {'h': 'h ref'}, + \ {'m': ['My magical function', 'call Magic()']}, + \ ] +< +NOTE: Avoid using keys from |startify-mappings| if providing custom indices. + ------------------------------------------------------------------------------ *g:startify_files_number* > @@ -880,17 +907,6 @@ This is my configuration.. let g:startify_session_persistence = 1 let g:startify_session_delete_buffers = 1 - let g:startify_list_order = [ - \ [' LRU:'], - \ 'files', - \ [' LRU within this dir:'], - \ 'dir', - \ [' Sessions:'], - \ 'sessions', - \ [' Bookmarks:'], - \ 'bookmarks', - \ ] - let g:startify_skiplist = [ \ 'COMMIT_EDITMSG', \ 'bundle/.*/doc',