changeset 60:d4843752d31f

Clean up lawrencium mess.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 08 Dec 2011 17:44:13 -0800
parents 6df571869f4a
children 8c80aa9bd387 681be11863da
files .hgsubstate vim/bundle/lawrencium/doc/lawrencium.txt vim/bundle/lawrencium/plugin/lawrencium.vim
diffstat 3 files changed, 2 insertions(+), 341 deletions(-) [+]
line wrap: on
line diff
--- a/.hgsubstate	Thu Dec 08 17:16:47 2011 -0800
+++ b/.hgsubstate	Thu Dec 08 17:44:13 2011 -0800
@@ -5,7 +5,7 @@
 c72a689f7f4deb7e7ad9947143383ada000476ae vim/bundle/fugitive
 91190e67720f852c17602504d5225d4e675b6499 vim/bundle/gundo
 a995d4aabb794bd60028537ecb41ca7f2c738e65 vim/bundle/haml
-0a5b490dc35d48b4214172d25e7eba32110b5dab vim/bundle/lawrencium
+b6e4446ed2924a8b6cb93421614617b039fbdb6e vim/bundle/lawrencium
 2b18a534162bc2c3964cb3a8fe42ca8c100bb571 vim/bundle/markdown
 30f6bcc30caf76bc1213f5c3d4001ba5d5fbe7fc vim/bundle/nerdtree
 bdc8b580b5b583aeb43efb19aac2ab8ce5566dff vim/bundle/ragtag
@@ -13,4 +13,5 @@
 528a59f26d12278698bb946f8fb82a63711eec21 vim/bundle/solarized
 688b5d706c21fbc6b2db6499f3cfbdeb35309b5a vim/bundle/supertab
 4eb2cdfccc016889acfa3b5d63e8f390a87863cf vim/bundle/surround
+898981865f3473b5117362d0735c672ca75d39eb vim/bundle/syntastic
 0db7b49ebf86924573d340729e38c18bf78b0e89 vim/bundle/vimroom
--- a/vim/bundle/lawrencium/doc/lawrencium.txt	Thu Dec 08 17:16:47 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-*lawrencium.txt*  Mercurial wrapper for VIM
-
-Author:  Ludovic Chabant <http://ludovic.chabant.com>
-License: Same terms as Vim itself (see |license|)
-
-This plugin is only available if 'compatible' is not set.
-
-INTRODUCTION                                    *lawrencium*
-
-When a file from a Mercurial repository is open in a buffer, that buffer gets
-new commands defined.
-
-COMMANDS                                        *lawrencium-commands*
-
-All commands defined by |lawrencium| are local to each buffer.
-
-                                                *lawrencium-:Hg*
-:Hg [args]              Run an arbitrary Mercurial command. Similar to :!hg
-                        [args] but the '--repository' is automatically
-                        specified with the root of the repository the current
-                        file belongs to.
-
-                                                *lawrencium-:Hg!*
-:Hg! [args]             Like |:Hg|, but the output of the command is placed in
-                        a temp file and edited in the |preview-window|.
-
-                                                *lawrencium-:Hgcd*
-:Hgcd [directory]       |:cd| relative to the root of the repository.
-
-                                                *lawrencium-:Hglcd*
-:Hglcd [directory]      |:lcd| relative to the root of the repository.
-
-                                                *lawrencium-:Hgstatus*
-:Hgstatus               Shows the output of 'hg status' in the
-                        |preview-window|.
-
-
-ABOUT                                           *lawrencium-about*
-
-Grab the latest version or report a bug on BitBucket:
-
-http://bitbucket.org/ludovicchabant/lawrencium
-
-
- vim:tw=78:et:ft=help:norl:
--- a/vim/bundle/lawrencium/plugin/lawrencium.vim	Thu Dec 08 17:16:47 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,295 +0,0 @@
-" lawrencium.vim - A Mercurial wrapper
-" Maintainer:   Ludovic Chabant <http://ludovic.chabant.com>
-" Version:      0.1
-
-" Globals {{{
-
-if !exists('g:lawrencium_debug')
-    let g:lawrencium_debug = 0
-endif
-
-if (exists('g:loaded_lawrencium') || &cp) && !g:lawrencium_debug
-    finish
-endif
-let g:loaded_lawrencium = 1
-
-if !exists('g:lawrencium_hg_executable')
-    let g:lawrencium_hg_executable = 'hg'
-endif
-
-if !exists('g:lawrencium_trace')
-    let g:lawrencium_trace = 0
-endif
-
-if g:lawrencium_debug
-    echom "Loaded Lawrencium."
-endif
-
-" }}}
-
-" Utility {{{
-
-" Strips the ending slash in a path.
-function! s:stripslash(path)
-    return fnamemodify(a:path, ':s?[/\\]$??')
-endfunction
-
-" Normalizes the slashes in a path.
-function! s:normalizepath(path)
-    if exists('+shellslash') && &shellslash
-        return substitute(a:path, '\\', '/', '')
-    elseif has('win32')
-        return substitute(a:path, '/', '\\', '')
-    else
-        return a:path
-    endif
-endfunction
-
-" Prints a message if debug tracing is enabled.
-function! s:trace(message)
-   if g:lawrencium_trace 
-       let l:message = "lawrencium: " . a:message
-       echom l:message
-   endif
-endfunction
-
-" Throw a Lawrencium exception message.
-function! s:throw(message)
-    let v:errmsg = "lawrencium: " . a:message
-    throw v:errmsg
-endfunction
-
-" Finds the repository root given a path inside that repository.
-" Throw an error if not repository is found.
-function! s:find_repo_root(path)
-    let l:path = s:stripslash(a:path)
-    let l:previous_path = ""
-    while l:path != l:previous_path
-        if isdirectory(l:path . '/.hg/store')
-            return simplify(fnamemodify(l:path, ':p'))
-        endif
-        let l:previous_path = l:path
-        let l:path = fnamemodify(l:path, ':h')
-    endwhile
-    call s:throw("No Mercurial repository found above: " . a:path)
-endfunction
-
-" }}}
-
-" Mercurial Repository {{{
-
-" Let's define a Mercurial repo 'class' using prototype-based object-oriented
-" programming.
-"
-" The prototype dictionary.
-let s:HgRepo = {}
-
-" Constructor
-function! s:HgRepo.New(path) abort
-    let l:newRepo = copy(self)
-    let l:newRepo.root_dir = s:find_repo_root(a:path)
-    call s:trace("Built new Mercurial repository object at : " . l:newRepo.root_dir)
-    return l:newRepo
-endfunction
-
-" Gets a full path given a repo-relative path
-function! s:HgRepo.GetFullPath(path) abort
-    let l:root_dir = self.root_dir
-    if a:path =~# '^[/\\]'
-        let l:root_dir = s:stripslash(l:root_dir)
-    endif
-    return l:root_dir . a:path
-endfunction
-
-" Gets a list of files matching a root-relative pattern.
-" If a flag is passed and is TRUE, a slash will be appended to all
-" directories.
-function! s:HgRepo.Glob(pattern, ...) abort
-    let l:root_dir = self.root_dir
-    if (a:pattern =~# '^[/\\]')
-        let l:root_dir = s:stripslash(l:root_dir)
-    endif
-    let l:matches = split(glob(l:root_dir . a:pattern), '\n')
-    if a:0 && a:1
-        for l:idx in range(len(l:matches))
-            if !filereadable(l:matches[l:idx])
-                let l:matches[l:idx] = l:matches[l:idx] . '/'
-            endif
-        endfor
-    endif
-    let l:strip_len = len(l:root_dir)
-    call map(l:matches, 'v:val[l:strip_len : -1]')
-    return l:matches
-endfunction
-
-" Runs a Mercurial command in the repo
-function! s:HgRepo.RunCommand(command, ...) abort
-    let l:hg_command = g:lawrencium_hg_executable . ' --repository ' . shellescape(s:stripslash(self.root_dir))
-    let l:hg_command = l:hg_command . ' ' . a:command . ' ' . join(a:000, ' ')
-    call s:trace("Running Mercurial command: " . l:hg_command)
-    return system(l:hg_command)
-endfunction
-
-" Repo cache map
-let s:buffer_repos = {}
-
-" Get a cached repo
-function! s:hg_repo(...) abort
-    " Use the given path, or the mercurial directory of the current buffer.
-    if a:0 == 0
-        if exists('b:mercurial_dir')
-            let l:path = b:mercurial_dir
-        else
-            let l:path = s:find_repo_root(expand('%:p'))
-        endif
-    else
-        let l:path = a:1
-    endif
-    " Find a cache repo instance, or make a new one.
-    if has_key(s:buffer_repos, l:path)
-        return get(s:buffer_repos, l:path)
-    else
-        let l:repo = s:HgRepo.New(l:path)
-        let s:buffer_repos[l:path] = l:repo
-        return l:repo
-    endif
-endfunction
-
-" Sets up the current buffer with Lawrencium commands if it contains a file from a Mercurial repo.
-" If the file is not in a Mercurial repo, just exit silently.
-function! s:setup_buffer_commands() abort
-    call s:trace("Scanning buffer '" . bufname('%') . "' for Lawrencium setup...")
-    let l:do_setup = 1
-    if exists('b:mercurial_dir')
-        if b:mercurial_dir =~# '/^\s*$/'
-            unlet b:mercurial_dir
-        else
-            let l:do_setup = 0
-        endif
-    endif
-    try
-        let l:repo = s:hg_repo()
-    catch /^lawrencium\:/
-        return
-    endtry
-    let b:mercurial_dir = l:repo.root_dir
-    if exists('b:mercurial_dir') && l:do_setup
-        call s:trace("Setting Mercurial commands for buffer '" . bufname('%'))
-        call s:trace("  with repo : " . expand(b:mercurial_dir))
-        silent doautocmd User Lawrencium
-    endif
-endfunction
-
-augroup lawrencium_detect
-    autocmd!
-    autocmd BufNewFile,BufReadPost *     call s:setup_buffer_commands()
-    autocmd VimEnter               *     if expand('<amatch>')==''|call s:setup_buffer_commands()|endif
-augroup end
-
-" }}}
-
-" Commands {{{
-
-let s:main_commands = []
-
-function! s:AddMainCommand(command) abort
-    let s:main_commands += [a:command]
-endfunction
-
-function! s:DefineMainCommands()
-    for l:command in s:main_commands
-        execute 'command! -buffer ' . l:command
-    endfor
-endfunction
-
-augroup lawrencium_main
-    autocmd!
-    autocmd User Lawrencium call s:DefineMainCommands()
-augroup end
-
-" }}}
-
-" HgExecute {{{
-
-function! s:HgExecute(...) abort
-    let l:repo = s:hg_repo()
-    echo call(l:repo.RunCommand, a:000, l:repo)
-endfunction
-
-call s:AddMainCommand("-nargs=* Hg :execute s:HgExecute(<f-args>)")
-
-" }}}
-
-" HgStatus {{{
-
-function! s:HgStatus() abort
-    echo s:hg_repo().RunCommand('status')
-endfunction
-
-call s:AddMainCommand("HgStatus :execute s:HgStatus()")
-
-" }}}
-
-" Hgcd, Hglcd {{{
-
-function! s:ListRepoDirs(ArgLead, CmdLine, CursorPos) abort
-    let l:matches = s:hg_repo().Glob(a:ArgLead . '*/')
-    call map(l:matches, 's:normalizepath(v:val)')
-    return l:matches
-endfunction
-
-call s:AddMainCommand("-bang -nargs=? -complete=customlist,s:ListRepoDirs Hgcd :cd<bang> `=s:hg_repo().GetFullPath(<q-args>)`")
-call s:AddMainCommand("-bang -nargs=? -complete=customlist,s:ListRepoDirs Hglcd :lcd<bang> `=s:hg_repo().GetFullPath(<q-args>)`")
-
-" }}}
-
-" Hgedit {{{
-
-function! s:ListRepoFiles(ArgLead, CmdLine, CursorPos) abort
-    let l:matches = s:hg_repo().Glob(a:ArgLead . '*', 1)
-    call map(l:matches, 's:normalizepath(v:val)')
-    return l:matches
-endfunction
-
-call s:AddMainCommand("-bang -nargs=? -complete=customlist,s:ListRepoFiles Hgedit :edit<bang> `=s:hg_repo().GetFullPath(<q-args>)`")
-
-" }}}
-
-" Autoload Functions {{{
-
-" Prints a summary of the current repo (if any) that's appropriate for
-" displaying on the status line.
-function! lawrencium#statusline(...)
-    if !exists('b:mercurial_dir')
-        return ''
-    endif
-    let l:summary = s:hg_repo().RunCommand('summary')
-    let l:parent_rev = matchstr(l:summary, 'parent\: \d+\:[0-9a-f]+')
-    let l:branch = matchstr(l:summary, 'branch\: [\d\w\-_\.]+')
-    return l:branch . ', ' . l:parent_rev
-endfunction
-
-" Rescans the current buffer for setting up Mercurial commands.
-" Passing '1' as the parameter enables debug traces temporarily.
-function! lawrencium#rescan(...)
-    if exists('b:mercurial_dir')
-        unlet b:mercurial_dir
-    endif
-    if a:0 && a:1
-        let l:trace_backup = g:lawrencium_trace
-        let g:lawrencium_trace = 1
-    endif
-    call s:setup_buffer_commands()
-    if a:0 && a:1
-        let g:lawrencium_trace = l:trace_backup
-    endif
-endfunction
-
-" Enables/disables the debug trace.
-function! lawrencium#debugtrace(...)
-    let g:lawrencium_trace = (a:0 == 0 || (a:0 && a:1))
-    echom "Lawrencium debug trace is now " . (g:lawrencium_trace ? "enabled." : "disabled.")
-endfunction
-
-" }}}
-