From a22b697c087f2e41141294a393d5f45fabc870c0 Mon Sep 17 00:00:00 2001 From: "Andrew R. M" Date: Thu, 6 Apr 2017 07:35:27 -0400 Subject: [PATCH] Added vim sleuth as a git submodule --- .gitmodules | 5 +- vim/.vim/bundle/sleuth | 1 + vim/.vim/bundle/sleuth/CONTRIBUTING.markdown | 1 - vim/.vim/bundle/sleuth/README.markdown | 48 ------ vim/.vim/bundle/sleuth/doc/sleuth.txt | 17 -- vim/.vim/bundle/sleuth/plugin/sleuth.vim | 171 ------------------- 6 files changed, 5 insertions(+), 238 deletions(-) create mode 160000 vim/.vim/bundle/sleuth delete mode 100644 vim/.vim/bundle/sleuth/CONTRIBUTING.markdown delete mode 100644 vim/.vim/bundle/sleuth/README.markdown delete mode 100644 vim/.vim/bundle/sleuth/doc/sleuth.txt delete mode 100644 vim/.vim/bundle/sleuth/plugin/sleuth.vim diff --git a/.gitmodules b/.gitmodules index 15eafc1..b52d7d2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,9 @@ [submodule "vim/.vim/bundle/slime"] path = vim/.vim/bundle/slime - url = http://github.com/jpalardy/vim-slime + url = https://github.com/jpalardy/vim-slime [submodule "vim/.vim/bundle/filetype-nix"] path = vim/.vim/bundle/filetype-nix url = https://github.com/LnL7/vim-nix +[submodule "vim/.vim/bundle/sleuth"] + path = vim/.vim/bundle/sleuth + url = https://github.com/tpope/vim-sleuth diff --git a/vim/.vim/bundle/sleuth b/vim/.vim/bundle/sleuth new file mode 160000 index 0000000..2826bc1 --- /dev/null +++ b/vim/.vim/bundle/sleuth @@ -0,0 +1 @@ +Subproject commit 2826bc17ef1820f68dfe6e43574a567e3c67a56d diff --git a/vim/.vim/bundle/sleuth/CONTRIBUTING.markdown b/vim/.vim/bundle/sleuth/CONTRIBUTING.markdown deleted file mode 100644 index b3f0095..0000000 --- a/vim/.vim/bundle/sleuth/CONTRIBUTING.markdown +++ /dev/null @@ -1 +0,0 @@ -See the [contribution guidelines for pathogen.vim](https://github.com/tpope/vim-pathogen/blob/master/CONTRIBUTING.markdown). diff --git a/vim/.vim/bundle/sleuth/README.markdown b/vim/.vim/bundle/sleuth/README.markdown deleted file mode 100644 index b76d16a..0000000 --- a/vim/.vim/bundle/sleuth/README.markdown +++ /dev/null @@ -1,48 +0,0 @@ -# sleuth.vim - -This plugin automatically adjusts `'shiftwidth'` and `'expandtab'` -heuristically based on the current file, or, in the case the current file is -new, blank, or otherwise insufficient, by looking at other files of the same -type in the current and parent directories. In lieu of adjusting -`'softtabstop'`, `'smarttab'` is enabled. - -Compare to [DetectIndent][]. I wrote this because I wanted something fully -automatic. My goal is that by installing this plugin, you can remove all -indenting related configuration from your vimrc. - -[DetectIndent]: http://www.vim.org/scripts/script.php?script_id=1171 - -## Installation - -If you don't have a preferred installation method, I recommend -installing [pathogen.vim](https://github.com/tpope/vim-pathogen), and -then simply copy and paste: - - cd ~/.vim/bundle - git clone git://github.com/tpope/vim-sleuth.git - -## Notes - -* Searching for other files of the same type continues up the directory - hierarchy until a match is found. This means, for example, the indent for - the first file in a brand new Ruby project might very well be derived from - your `.irbrc`. I consider this a feature. -* If your file is consistently indented with hard tabs, `'shiftwidth'` will be - set to your `'tabstop'`. Otherwise, a `'tabstop'` of 8 is enforced. -* The algorithm is rolled from scratch, fairly simplistic, and only lightly - battle tested. It's probably not (yet) as good as [DetectIndent][]. - Let me know what it fails on for you. - -## Self-Promotion - -Like sleuth.vim? Follow the repository on -[GitHub](https://github.com/tpope/vim-sleuth) and vote for it on -[vim.org](http://www.vim.org/scripts/script.php?script_id=4375). And if -you're feeling especially charitable, follow [tpope](http://tpo.pe/) on -[Twitter](http://twitter.com/tpope) and -[GitHub](https://github.com/tpope). - -## License - -Copyright © Tim Pope. Distributed under the same terms as Vim itself. -See `:help license`. diff --git a/vim/.vim/bundle/sleuth/doc/sleuth.txt b/vim/.vim/bundle/sleuth/doc/sleuth.txt deleted file mode 100644 index d79a7fe..0000000 --- a/vim/.vim/bundle/sleuth/doc/sleuth.txt +++ /dev/null @@ -1,17 +0,0 @@ -*sleuth.txt* Heuristically set buffer options - -Author: Tim Pope -Repo: https://github.com/tpope/vim-sleuth -License: Same terms as Vim itself (see |license|) - -This plugin is only available if 'compatible' is not set. - -SUMMARY *sleuth* - -This plugin automatically adjusts 'shiftwidth' and 'expandtab' heuristically -based on the current file, or, in the case the current file is new, blank, or -otherwise insufficient, by looking at other files of the same type in the -current and parent directories. In lieu of adjusting 'softtabstop', -'smarttab' is enabled. - - vim:tw=78:et:ft=help:norl: diff --git a/vim/.vim/bundle/sleuth/plugin/sleuth.vim b/vim/.vim/bundle/sleuth/plugin/sleuth.vim deleted file mode 100644 index 560135e..0000000 --- a/vim/.vim/bundle/sleuth/plugin/sleuth.vim +++ /dev/null @@ -1,171 +0,0 @@ -" sleuth.vim - Heuristically set buffer options -" Maintainer: Tim Pope -" Version: 1.1 -" GetLatestVimScripts: 4375 1 :AutoInstall: sleuth.vim - -if exists("g:loaded_sleuth") || v:version < 700 || &cp - finish -endif -let g:loaded_sleuth = 1 - -function! s:guess(lines) abort - let options = {} - let heuristics = {'spaces': 0, 'hard': 0, 'soft': 0} - let ccomment = 0 - let podcomment = 0 - let triplequote = 0 - let backtick = 0 - - for line in a:lines - - if line =~# '^\s*$' - continue - endif - - if line =~# '^\s*/\*' - let ccomment = 1 - endif - if ccomment - if line =~# '\*/' - let ccomment = 0 - endif - continue - endif - - if line =~# '^=\w' - let podcomment = 1 - endif - if podcomment - if line =~# '^=\%(end\|cut\)\>' - let podcomment = 0 - endif - continue - endif - - if triplequote - if line =~# '^[^"]*"""[^"]*$' - let triplequote = 0 - endif - continue - elseif line =~# '^[^"]*"""[^"]*$' - let triplequote = 1 - endif - - if backtick - if line =~# '^[^`]*`[^`]*$' - let backtick = 0 - endif - continue - elseif line =~# '^[^`]*`[^`]*$' - let backtick = 1 - endif - - let softtab = repeat(' ', 8) - if line =~# '^\t' - let heuristics.hard += 1 - elseif line =~# '^' . softtab - let heuristics.soft += 1 - endif - if line =~# '^ ' - let heuristics.spaces += 1 - endif - let indent = len(matchstr(substitute(line, '\t', softtab, 'g'), '^ *')) - if indent > 1 && get(options, 'shiftwidth', 99) > indent - let options.shiftwidth = indent - endif - - endfor - - if heuristics.hard && !heuristics.spaces - return {'expandtab': 0, 'shiftwidth': &tabstop} - elseif heuristics.soft != heuristics.hard - let options.expandtab = heuristics.soft > heuristics.hard - if heuristics.hard - let options.tabstop = 8 - endif - endif - - return options -endfunction - -function! s:patterns_for(type) abort - if a:type ==# '' - return [] - endif - if !exists('s:patterns') - redir => capture - silent autocmd BufRead - redir END - let patterns = { - \ 'c': ['*.c'], - \ 'html': ['*.html'], - \ 'sh': ['*.sh'], - \ } - let setfpattern = '\s\+\%(setf\%[iletype]\s\+\|set\%[local]\s\+\%(ft\|filetype\)=\|call SetFileTypeSH(["'']\%(ba\|k\)\=\%(sh\)\@=\)' - for line in split(capture, "\n") - let match = matchlist(line, '^\s*\(\S\+\)\='.setfpattern.'\(\w\+\)') - if !empty(match) - call extend(patterns, {match[2]: []}, 'keep') - call extend(patterns[match[2]], [match[1] ==# '' ? last : match[1]]) - endif - let last = matchstr(line, '\S.*') - endfor - let s:patterns = patterns - endif - return copy(get(s:patterns, a:type, [])) -endfunction - -function! s:apply_if_ready(options) abort - if !has_key(a:options, 'expandtab') || !has_key(a:options, 'shiftwidth') - return 0 - else - for [option, value] in items(a:options) - call setbufvar('', '&'.option, value) - endfor - return 1 - endif -endfunction - -function! s:detect() abort - if &modifiable == 0 - return - endif - - let options = s:guess(getline(1, 1024)) - if s:apply_if_ready(options) - return - endif - let patterns = s:patterns_for(&filetype) - call filter(patterns, 'v:val !~# "/"') - let dir = expand('%:p:h') - while isdirectory(dir) && dir !=# fnamemodify(dir, ':h') - for pattern in patterns - for neighbor in split(glob(dir.'/'.pattern), "\n")[0:7] - if neighbor !=# expand('%:p') && filereadable(neighbor) - call extend(options, s:guess(readfile(neighbor, '', 256)), 'keep') - endif - if s:apply_if_ready(options) - let b:sleuth_culprit = neighbor - return - endif - endfor - endfor - let dir = fnamemodify(dir, ':h') - endwhile - if has_key(options, 'shiftwidth') - return s:apply_if_ready(extend({'expandtab': 1}, options)) - endif -endfunction - -setglobal smarttab - -if !exists('g:did_indent_on') - filetype indent on -endif - -augroup sleuth - autocmd! - autocmd FileType * call s:detect() -augroup END - -" vim:set et sw=2: