Compview plugin.
[profile.git] / .vimrc
diff --git a/.vimrc b/.vimrc
index a715a77..f16235a 100644 (file)
--- a/.vimrc
+++ b/.vimrc
@@ -28,10 +28,15 @@ se ts=2
 se expandtab
 " And << and >> indent by 2.
 se sw=2
+" Backspace deletes full tab width at the start of a line.
+se smarttab
 
 " Allow backspace to delete before start of line.
 se bs=2
 
+" Don't jump to the start of the line when using H, L etc.
+se nosol
+
 " Show the ruler.
 se ruler
 " Show partial commands in the ruler.
@@ -69,6 +74,10 @@ inoremap <C-b> <C-p>
 " Use ^L to show matching completions but don't select one.
 inoremap <C-l> <C-n><C-p>
 
+" Swap jump keys.
+noremap ' `
+noremap ` '
+
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 " Handle options only available in Vim 5 and above.
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -102,6 +111,9 @@ se suffixes-=*.o,*.obj
 " cross-platform.
 se ssop+=unix,slash
 
+" How often do we need to use ^A/^X on octals?
+se nf=hex
+
 " Nuke any pre-existing autocommands.
 augroup Display
 autocmd!
@@ -218,9 +230,18 @@ fun! Show_TitleString()
   if bufname("") == ""
     let l:ts1='Vim'
   else
-    let l:ts1=printf("%2d: %s", bufnr(""), expand('%t'))
+    " Vim 5 doesn't have printf.
+    let l:ts1=bufnr("")
+    if l:ts1 < 10
+      let l:ts1=" " . l:ts1
+    endif
+    let l:ts1=l:ts1 . ": " . expand('%t')
   endif
-  return printf("%s (%s) %s", l:ts1, getcwd(), v:servername)
+  let l:ts1=l:ts1 . " (" .  getcwd() . ")"
+  if has("clientserver")
+    let l:ts1=l:ts1 . " " . v:servername
+  endif
+  return l:ts1
 endfun
 
 " Show the status line.
@@ -427,6 +448,9 @@ endfun
 
 " Show numbers by default.
 au Display VimEnter * if ! Uncluttered_Buffer() | call Number(0) | endif
+
+" Position the compview plugin window.
+au Display BufEnter -SearchResults- set buftype=nowrite | set nonumber | wincmd J
 endif
 
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -435,6 +459,10 @@ endif
 if version >= "600"
 version 6.0
 
+if has("win32")
+  se encoding=utf-8
+endif
+
 " Remember quickfix state.
 let g:quickfixing=0
 
@@ -620,9 +648,15 @@ fun! <SID>Cycle_Signs(resize)
   if g:marksigns
     " Signs to highlight marks.
     " Syntax won't work properly in Vim 6.
-    sign define MarkDash text=' texthl=MarkSign
-    sign define MarkDot text=* texthl=MarkDot
-    sign define MarkQuote text=" texthl=MarkSign
+    if <SID>Has_Unicode()
+      sign define MarkDash text=’ texthl=MarkSign
+      sign define MarkDot text=• texthl=MarkDot
+      sign define MarkQuote text=” texthl=MarkSign
+    else
+      sign define MarkDash text=' texthl=MarkSign
+      sign define MarkDot text=* texthl=MarkDot
+      sign define MarkQuote text=" texthl=MarkSign
+    endif
     sign define MarkCaret text=^ texthl=MarkDot
     sign define MarkLess text=< texthl=MarkSign
     sign define MarkGreater text=> texthl=MarkSign
@@ -708,12 +742,46 @@ fun! <SID>Cycle_Signs(resize)
   endif
 endfun
 
+fun! <SID>Has_Unicode()
+  if ! has('multi_byte')
+    return 0
+  endif
+
+  if version < "602"
+    return 0
+  endif
+
+  if &tenc =~? '^u\(tf\|cs\)'
+    return 1
+  endif
+
+  if ! strlen(&tenc) && &enc =~? '^u\(tf\|cs\)'
+    return 1
+  endif
+
+  return 0
+endfun
+
 " Change list mode.
 fun! Cycle_List()
-  let basic='tab:\\_,trail:_,extends:<,precedes:>'
+  " Pretty UTF-8 listchars.
+  if <SID>Has_Unicode()
+    let basic='tab:»·,trail:…,extends:«,precedes:»'
+    let eol='eol:¶'
+    if version >= "700"
+      let basic=basic . ',nbsp:•'
+    endif
+  else
+    let basic='tab:\\_,trail:_,extends:<,precedes:>'
+    let eol='eol:$'
+    if version >= "700"
+      let basic=basic . ',nbsp:+'
+    endif
+  endif
   call Iain_Vars()
   let b:iainlist = b:iainlist + 1
   if b:iainlist > 2
+    call Resize_Columns("-", 1)
     let b:iainlist = 0
   endif
   if b:iainlist == 0
@@ -722,7 +790,8 @@ fun! Cycle_List()
     exec "set lcs=" . basic
     set list
   else
-    exec "set lcs=" . basic . ",eol:$"
+    call Resize_Columns("+", 1)
+    exec "set lcs=" . basic . "," . eol
     set list
   endif
 endfun