2015-08-23 15 views
13

Recentemente mi sono imbattuto in questo strano plugin per Vim e non sono riuscito a capire quale sia il suo utilizzo.Per che cosa è il plug-in V9 di L9?

Non è quasi documentato e nobile parla davvero di questo, ma sembra importante per alcuni altri plugin.

Tutto quello che ho trovato è qui:

http://www.vim.org/scripts/script.php?script_id=3252

e

https://github.com/eparreno/vim-l9

ma solo dire "Si tratta di una libreria" e "Vedere il codice sorgente".

Qualcuno sa a cosa serve questa libreria, se necessario, a quale scopo, o se posso semplicemente eliminarla finché qualche dipendenza non è stata risolta in qualche altro plugin?

+5

Beh, che altro avete bisogno di sapere al di là " è una biblioteca "? L9 è una libreria usata da altri plugin quindi è gestita come qualsiasi altra dipendenza: tu * dovresti * aggiungerla quando è necessaria e tu * potresti * lasciarla o cancellarla quando non lo è. Se non sei un sviluppatore di plugin, ciò che la libreria fa o non è di nessun interesse ma, se sei solo curioso, leggere il codice sorgente dovrebbe essere sufficiente. – romainl

+5

@romaini "è una libreria" dice tanto quanto: "un po 'di codice": assolutamente nulla. Un buon prodotto software dovrebbe avere una descrizione a cosa serve e come usarlo, farà parte del pacchetto di rilascio. Essere un asino intelligente dicendo "basta leggere il codice" va bene se il codice non è lungo. – eddy147

risposta

14

Ho notato riferimenti a L9 in un paio di posti, recentemente da Vundle. È vero, non è documentato all'inizio. Ma ci sono commenti decenti nel file sorgente principale, autoload/l9.vim. È un insieme di funzioni di utilità generale. Ecco il grosso delle sue API, aumentando il trattamento di Vim di liste, numeri, stringhe, linee, percorsi, file, buffer, finestre, di ricerca, e di più:

" returns false if the caller script should finish. 
" a:vimVersion: if 0, don't check vim version 
" a:l9Version: same rule as v:version 
function l9#guardScriptLoading(path, vimVersion, l9Version, exprs) 

" Removes duplicates (unstable) 
" This function doesn't change the list of argument. 
function l9#unique(items) 

" [ [0], [1,2], [3] ] -> [ 0, 1, 2, 3 ] 
" This function doesn't change the list of argument. 
function l9#concat(items) 

" [ [0,1,2], [3,4], [5,6,7,8] ] -> [ [0,3,5],[1,4,6] ] 
" This function doesn't change the list of argument. 
function l9#zip(items) 

" filter() with the maximum number of items 
" This function doesn't change the list of argument. 
function l9#filterWithLimit(items, expr, limit) 

" Removes if a:expr is evaluated as non-zero and returns removed items. 
" This function change the list of argument. 
function l9#removeIf(items, expr) 

" Snips a:str and add a:mask if the length of a:str is more than a:len 
function l9#snipHead(str, len, mask) 

" Snips a:str and add a:mask if the length of a:str is more than a:len 
function l9#snipTail(str, len, mask) 

" Snips a:str and add a:mask if the length of a:str is more than a:len 
function l9#snipMid(str, len, mask) 

" wildcard -> regexp 
function l9#convertWildcardToRegexp(expr) 

" Removes from the line matching with a:begin first to the line matching with 
" a:end next and returns removed lines. 
" If matching range is not found, returns [] 
function l9#removeLinesBetween(lines, begin, end) 

" returns the path separator charactor. 
function l9#getPathSeparator() 

" [ 'a', 'b/', '/c' ] -> 'a/b/c' 
function l9#concatPaths(paths) 

" path: '/a/b/c/d', dir: '/a/b' => 'c/d' 
function l9#modifyPathRelativeToDir(path, dir) 

" Almost same as readfile(). 
function l9#readFile(...) 

" Almost same as writefile(). 
function l9#writeFile(...) 

" :wall/:wall! wrapper. Useful for writing readonly buffers. 
function l9#writeAll() 

" Loads given files with :edit command 
function l9#loadFilesToBuffers(files) 

" Deletes all buffers except given files with :bdelete command 
function l9#deleteAllBuffersExcept(files) 

" move current window to next tabpage. 
function l9#shiftWinNextTabpage() 

" move current window to previous tabpage. 
function l9#shiftWinPrevTabpage() 

" move to a window containing specified buffer. 
" returns 0 if the buffer is not found. 
function l9#moveToBufferWindowInCurrentTabpage(bufNr) 

" returns 0 if the buffer is not found. 
function s:moveToOtherTabpageOpeningBuffer(bufNr) 

" move to a window containing specified buffer. 
" returns 0 if the buffer is not found. 
function l9#moveToBufferWindowInOtherTabpage(bufNr) 

" echo/echomsg with highlighting. 
function l9#echoHl(hl, msg, prefix, addingHistory) 

" input() with highlighting. 
" This function can take list as {completion} argument. 
function l9#inputHl(hl, ...) 

" only called by l9#inputHl() for completion. 
function l9#completeForInputHl(lead, line, pos) 

" returns last selected text in Visual mode. 
function l9#getSelectedText() 

" loads given text as Vim script with :source command 
function l9#loadScript(text) 

" Execute :vimgrep and opens the quickfix window if matches are found. 
" 
" a:pattern: search pattern. If ommitted, last search pattern (@/) is used. 
" a:files: List of files 
function l9#grepFiles(pattern, files) 

" Execute :vimgrep for buffers using l9#grepFiles() 
" See also: :L9GrepBuffer :L9GrepBufferAll 
function l9#grepBuffers(pattern, bufNrs) 

" Highlights lines using :sign define and :sign place. 
" a:linehl, a:text, a:texthl: See |signs|. Ignored if empty string. 
" a:locations: List of [{buffer number}, {line number}] for highlighting 
function l9#placeSign(linehl, text, texthl, locations) 

" Notify a message using an external program. 
" Currently supports Balloonly, Screen, and Tmux. 
function l9#notifyExternally(msg)