Skip to content

Commit

Permalink
Merge branch 'master' of github.com:exdev/exvim
Browse files Browse the repository at this point in the history
  • Loading branch information
Johnny Wu committed Aug 20, 2013
2 parents 4f9963e + 6507abc commit e0d11b0
Show file tree
Hide file tree
Showing 7 changed files with 238 additions and 65 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -9,6 +9,7 @@
# gen by exVim
#/////////////////////////////////////////////////////////////////////////////

.DS_Store
.vimfiles.*/
*.vimentry
quick_gen_project_*_autogen.*
Expand Down
58 changes: 58 additions & 0 deletions README.md
@@ -0,0 +1,58 @@
# Site

+ exVim Official Page: http://www.ex-dev.com/exvim
+ exVim Documentation: http://www.ex-dev.com/exvim/wiki
+ exVim Source Code: https://github.com/exdev/exvim
+ exVim in Vim Script: http://www.vim.org/scripts/script.php?script_id=2627
+ exVim in Google Code (for Download only): http://code.google.com/p/exvim

## Introduction

### What is exVim ?

exVim is a package intgerate ex-vim-plugins, 3rd-vim-plugins and external-tools for developing.
By solving the complex communication problem among plugins, external tools, the exVim make
the vim as an IDE like environment all in vimscript.

### What can exVim do ?

With exVim you can:

+ use one single file ``your_project.vimentry`` to access your project.
+ update tags, IDs and other things you used in your project in one command.
+ browse project files in project window.
+ search files, tags, and words in source code by the builtin method.
+ a powful way to filter search result.
+ trace your code by jump stack.
+ reading code easily by word highlight and macro highlight.
+ view classes hierarchy pictures.
+ compile project in vc/gcc and get error results from them directly through vim.
+ enhanced quick-fix window.
+ communicate with visual studio --- get build errors, open files, add break point and send command make vs.net compiling current file.

### Usage

The exVim use ``your_project.vimentry`` file as the entry of a project. When you put this
file in the root directory of the project, and open it by vim, ex-vim-plugins will awared
and do the rest of the work to help you generate tags, symbols, IDs and other things
could be used in your project.

When edit a project, exVim provides several method to help you locate the code, get global
seach results, also an easy and powerful way to filter the search result!

### Compatible

exVim is compatible with your original vim. The exVim is nothing but several vim-plugins,
there are not too much reasons make it unable to work in your vim.

### Small, Fast and Stable

The principle for solving problem in exVim are:

+ try to interact with user dynamically.
+ if the dynamic interactive sufferred performance issue, go for static method.
+ try the best to fulfill a demand in vimscript.
+ if it can't, try the best to fulfill the demand by external tools.
+ if it still can't, try the best to preprocess the result and return to rule No.1

exVim is designed to follow this principle which make it small, fast and stable.
65 changes: 0 additions & 65 deletions readme.rst

This file was deleted.

2 changes: 2 additions & 0 deletions sync_vimfiles.sh
@@ -0,0 +1,2 @@
rm -rf ./vimfiles/
cp -r ~/.vim/ ./vimfiles/
51 changes: 51 additions & 0 deletions vimfiles/after/ftplugin/mkd.vim
@@ -0,0 +1,51 @@
" folding for Markdown headers, both styles (atx- and setex-)
" http://daringfireball.net/projects/markdown/syntax#header
"
" this code can be placed in file
" $HOME/.vim/after/ftplugin/markdown.vim
"
" original version from Steve Losh's gist: https://gist.github.com/1038710

func! Foldexpr_markdown(lnum)
if (a:lnum == 1)
let l0 = ''
else
let l0 = getline(a:lnum-1)
endif

let l1 = getline(a:lnum)

let l2 = getline(a:lnum+1)

if l2 =~ '^==\+\s*'
" next line is underlined (level 1)
return '>1'
elseif l2 =~ '^--\+\s*'
" next line is underlined (level 2)
return '>2'
elseif l1 =~ '^#'
" don't include the section title in the fold
return '-1'
elseif l0 =~ '^#'
" current line starts with hashes
return '>'.matchend(l0, '^#\+')
else
" keep previous foldlevel
return '='
endif
endfunc


if !exists("g:vim_markdown_folding_disabled")
setlocal foldexpr=Foldexpr_markdown(v:lnum)
setlocal foldmethod=expr

"---------- everything after this is optional -----------------------
" change the following fold options to your liking
" see ':help fold-options' for more
" setlocal foldenable
" setlocal foldlevel=0
" setlocal foldcolumn=0
" set foldmethod=expr
" set foldopen-=search
endif
3 changes: 3 additions & 0 deletions vimfiles/ftdetect/mkd.vim
@@ -0,0 +1,3 @@
" markdown filetype file
au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn} set filetype=mkd
au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx} set filetype=mkd
123 changes: 123 additions & 0 deletions vimfiles/syntax/mkd.vim
@@ -0,0 +1,123 @@
" Vim syntax file
" Language: Markdown
" Maintainer: Ben Williams <benw@plasticboy.com>
" URL: http://plasticboy.com/markdown-vim-mode/
" Version: 9
" Last Change: 2009 May 18
" Remark: Uses HTML syntax file
" Remark: I don't do anything with angle brackets (<>) because that would too easily
" easily conflict with HTML syntax
" TODO: Handle stuff contained within stuff (e.g. headings within blockquotes)


" Read the HTML syntax to start with
if version < 600
so <sfile>:p:h/html.vim
else
runtime! syntax/html.vim
unlet b:current_syntax
endif

if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif

" don't use standard HiLink, it will not work with included syntax files
if version < 508
command! -nargs=+ HtmlHiLink hi link <args>
else
command! -nargs=+ HtmlHiLink hi def link <args>
endif

syn spell toplevel
syn case ignore
syn sync linebreaks=1

"additions to HTML groups
syn region htmlItalic start="\\\@<!\*\S\@=" end="\S\@<=\\\@<!\*" keepend oneline
syn region htmlItalic start="\(^\|\s\)\@<=_\|\\\@<!_\([^_]\+\s\)\@=" end="\S\@<=_\|_\S\@=" keepend oneline
syn region htmlBold start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend oneline
syn region htmlBold start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend oneline
syn region htmlBoldItalic start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend oneline
syn region htmlBoldItalic start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend oneline

" [link](URL) | [link][id] | [link][]
syn region mkdFootnotes matchgroup=mkdDelimiter start="\[^" end="\]"
syn region mkdID matchgroup=mkdDelimiter start="\[" end="\]" contained oneline
syn region mkdURL matchgroup=mkdDelimiter start="(" end=")" contained oneline
syn region mkdLink matchgroup=mkdDelimiter start="\\\@<!\[" end="\]\ze\s*[[(]" contains=@Spell nextgroup=mkdURL,mkdID skipwhite oneline
" mkd inline links: protocol optional user:pass@ sub/domain .com, .co.uk, etc optional port path/querystring/hash fragment
" ------------ _____________________ --------------------------- ________________________ ----------------- __
syntax match mkdInlineURL /https\?:\/\/\(\w\+\(:\w\+\)\?@\)\?\([A-Za-z][-_0-9A-Za-z]*\.\)\{1,}\(\w\{2,}\.\?\)\{1,}\(:[0-9]\{1,5}\)\?\S*/

" Link definitions: [id]: URL (Optional Title)
" TODO handle automatic links without colliding with htmlTag (<URL>)
syn region mkdLinkDef matchgroup=mkdDelimiter start="^ \{,3}\zs\[" end="]:" oneline nextgroup=mkdLinkDefTarget skipwhite
syn region mkdLinkDefTarget start="<\?\zs\S" excludenl end="\ze[>[:space:]\n]" contained nextgroup=mkdLinkTitle,mkdLinkDef skipwhite skipnl oneline
syn region mkdLinkTitle matchgroup=mkdDelimiter start=+"+ end=+"+ contained
syn region mkdLinkTitle matchgroup=mkdDelimiter start=+'+ end=+'+ contained
syn region mkdLinkTitle matchgroup=mkdDelimiter start=+(+ end=+)+ contained

"define Markdown groups
syn match mkdLineContinue ".$" contained
syn match mkdLineBreak / \+$/
syn region mkdBlockquote start=/^\s*>/ end=/$/ contains=mkdLineBreak,mkdLineContinue,@Spell
syn region mkdCode start=/\(\([^\\]\|^\)\\\)\@<!`/ end=/\(\([^\\]\|^\)\\\)\@<!`/
syn region mkdCode start=/\s*``[^`]*/ end=/[^`]*``\s*/
syn region mkdCode start=/^```\s*\w*\s*$/ end=/^```\s*$/
syn region mkdCode start="<pre[^>]*>" end="</pre>"
syn region mkdCode start="<code[^>]*>" end="</code>"
syn region mkdFootnote start="\[^" end="\]"
syn match mkdCode /^\s*\n\(\(\s\{4,}[^ ]\|\t\+[^\t]\).*\n\)\+/
syn match mkdListItem "^\s*[-*+]\s\+"
syn match mkdListItem "^\s*\d\+\.\s\+"
syn match mkdRule /^\s*\*\s\{0,1}\*\s\{0,1}\*$/
syn match mkdRule /^\s*-\s\{0,1}-\s\{0,1}-$/
syn match mkdRule /^\s*_\s\{0,1}_\s\{0,1}_$/
syn match mkdRule /^\s*-\{3,}$/
syn match mkdRule /^\s*\*\{3,5}$/

" jwu ADD {
syn region mkdFrontMatter start=/\%^---$/ end=/^---$/
syn match mkdFrontMatter /\%^---\_.\{-}---$/ contains=@Spell
" } jwu ADD end

"HTML headings
syn region htmlH1 start="^\s*#" end="\($\|#\+\)" contains=@Spell
syn region htmlH2 start="^\s*##" end="\($\|#\+\)" contains=@Spell
syn region htmlH3 start="^\s*###" end="\($\|#\+\)" contains=@Spell
syn region htmlH4 start="^\s*####" end="\($\|#\+\)" contains=@Spell
syn region htmlH5 start="^\s*#####" end="\($\|#\+\)" contains=@Spell
syn region htmlH6 start="^\s*######" end="\($\|#\+\)" contains=@Spell
syn match htmlH1 /^.\+\n=\+$/ contains=@Spell
syn match htmlH2 /^.\+\n-\+$/ contains=@Spell

"highlighting for Markdown groups
HtmlHiLink mkdString String
HtmlHiLink mkdCode String
HtmlHiLink mkdFootnote Comment
HtmlHiLink mkdBlockquote Comment
HtmlHiLink mkdLineContinue Comment
HtmlHiLink mkdListItem Identifier
" jwu ADD {
HtmlHiLink mkdFrontMatter Comment
" } jwu ADD end
HtmlHiLink mkdRule Identifier
HtmlHiLink mkdLineBreak Todo
HtmlHiLink mkdFootnotes htmlLink
HtmlHiLink mkdLink htmlLink
HtmlHiLink mkdURL htmlString
HtmlHiLink mkdInlineURL htmlLink
HtmlHiLink mkdID Identifier
HtmlHiLink mkdLinkDef mkdID
HtmlHiLink mkdLinkDefTarget mkdURL
HtmlHiLink mkdLinkTitle htmlString

HtmlHiLink mkdDelimiter Delimiter

let b:current_syntax = "mkd"

delcommand HtmlHiLink
" vim: ts=8

0 comments on commit e0d11b0

Please sign in to comment.