home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / runtime / dos / indent / tf.vim < prev    next >
Encoding:
Text File  |  2010-08-15  |  1.5 KB  |  73 lines

  1. " Vim indent file
  2. " Language:     tf (TinyFugue)
  3. " Maintainer:   Christian J. Robinson <heptite@gmail.com>
  4. " URL:          http://christianrobinson.name/vim/indent/tf.vim
  5. " Last Change:  2002 May 29
  6.  
  7. " Only load this indent file when no other was loaded.
  8. if exists("b:did_indent")
  9.   finish
  10. endif
  11. let b:did_indent = 1
  12.  
  13. setlocal indentexpr=GetTFIndent()
  14. setlocal indentkeys-=0{,0} indentkeys-=0# indentkeys-=:
  15. setlocal indentkeys+==/endif,=/then,=/else,=/done,0;
  16.  
  17. " Only define the function once:
  18. if exists("*GetTFIndent")
  19.   finish
  20. endif
  21.  
  22. function GetTFIndent()
  23.     " Find a non-blank line above the current line:
  24.     let lnum = prevnonblank(v:lnum - 1)
  25.  
  26.     " No indent for the start of the file:
  27.     if lnum == 0
  28.         return 0
  29.     endif
  30.  
  31.     let ind = indent(lnum)
  32.     let line = getline(lnum)
  33.  
  34.     " No indentation if the previous line didn't end with "\":
  35.     " (Could be annoying, but it lets you know if you made a mistake.)
  36.     if line !~ '\\$'
  37.         return 0
  38.     endif
  39.  
  40.     if line =~ '\(/def.*\\\|/for.*\(%;\s*\)\@\<!\\\)$'
  41.         let ind = ind + &sw
  42.     elseif line =~ '\(/if\|/else\|/then\)'
  43.         if line !~ '/endif'
  44.             let ind = ind + &sw
  45.         endif
  46.     elseif line =~ '/while'
  47.         if line !~ '/done'
  48.             let ind = ind + &sw
  49.         endif
  50.     endif
  51.  
  52.     let line = getline(v:lnum)
  53.  
  54.     if line =~ '\(/else\|/endif\|/then\)'
  55.         if line !~ '/if'
  56.             let ind = ind - &sw
  57.         endif
  58.     elseif line =~ '/done'
  59.         if line !~ '/while'
  60.             let ind = ind - &sw
  61.         endif
  62.     endif
  63.  
  64.     " Comments at the beginning of a line:
  65.     if line =~ '^\s*;'
  66.         let ind = 0
  67.     endif
  68.  
  69.  
  70.     return ind
  71.  
  72. endfunction
  73.