75 lines · 2.2 KB · Text
RawDownload
" Vim indent file" Language:     Mathematica" Author:       steve layland <layland@wolfram.com>" Last Change:  Sat May  10 18:56:22 CDT 2005" Source:       http://vim.sourceforge.net/scripts/script.php?script_id=1274"               http://members.wolfram.com/layland/vim/indent/mma.vim"" NOTE:" Empty .m files will automatically be presumed to be Matlab files" unless you have the following in your .vimrc:""       let filetype_m="mma""" Credits:" o steve hacked this out of a random indent file in the Vim 6.1"   distribution that he no longer remembers...sh.vim?  Thanks! " Only load this indent file when no other was loaded.if exists("b:did_indent")    finishendiflet b:did_indent = 1 setlocal indentexpr=GetMmaIndent()setlocal indentkeys+=0[,0],0(,0)setlocal nosi "turn off smart indent so we don't over analyze } blocks if exists("*GetMmaIndent")    finishendif function GetMmaIndent()     " Hit the start of the file, use zero indent.    if v:lnum == 0        return 0    endif      " Find a non-blank line above the current line.    let lnum = prevnonblank(v:lnum - 1)     " use indenting as a base    let ind = indent(v:lnum)    let lnum = v:lnum     " if previous line has an unmatched bracket, or ( indent.    " doesn't do multiple parens/blocks/etc...     " also, indent only if this line if this line isn't starting a new    " block... TODO - fix this with indentkeys?    if getline(v:lnum-1) =~ '\\\@<!\%(\[[^\]]*\|([^)]*\|{[^}]*\)$' && getline(v:lnum) !~ '\s\+[\[({]'        let ind = ind+&sw    endif     " if this line had unmatched closing block,    " indent to the matching opening block    if getline(v:lnum) =~ '[^[]*]\s*$'        " move to the closing bracket        call search(']','bW')        " and find it's partner's indent        let ind = indent(searchpair('\[','',']','bWn'))    " same for ( blocks    elseif getline(v:lnum) =~ '[^(]*)$'        call search(')','bW')        let ind = indent(searchpair('(','',')','bWn'))     " and finally, close { blocks if si ain't already set    elseif getline(v:lnum) =~ '[^{]*}'        call search('}','bW')        let ind = indent(searchpair('{','','}','bWn'))    endif     return indendfunction 

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t