Karsten Hopp a96f4f
To: vim_dev@googlegroups.com
Karsten Hopp a96f4f
Subject: Patch 7.3.955
Karsten Hopp a96f4f
Fcc: outbox
Karsten Hopp a96f4f
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp a96f4f
Mime-Version: 1.0
Karsten Hopp a96f4f
Content-Type: text/plain; charset=UTF-8
Karsten Hopp a96f4f
Content-Transfer-Encoding: 8bit
Karsten Hopp a96f4f
------------
Karsten Hopp a96f4f
Karsten Hopp a96f4f
Patch 7.3.955
Karsten Hopp a96f4f
Problem:    Python: Not enough tests.
Karsten Hopp a96f4f
Solution:   Add tests for vim.{current,window*,tabpage*}. (ZyX)
Karsten Hopp a96f4f
Files:	    src/testdir/test86.in, src/testdir/test86.ok,
Karsten Hopp a96f4f
	    src/testdir/test87.in, src/testdir/test87.ok
Karsten Hopp a96f4f
Karsten Hopp a96f4f
Karsten Hopp a96f4f
*** ../vim-7.3.954/src/testdir/test86.in	2013-05-15 14:51:31.000000000 +0200
Karsten Hopp a96f4f
--- src/testdir/test86.in	2013-05-15 16:15:25.000000000 +0200
Karsten Hopp a96f4f
***************
Karsten Hopp a96f4f
*** 334,339 ****
Karsten Hopp a96f4f
--- 334,340 ----
Karsten Hopp a96f4f
  :let g:foo = 'bac'
Karsten Hopp a96f4f
  :let w:abc = 'def'
Karsten Hopp a96f4f
  :let b:baz = 'bar'
Karsten Hopp a96f4f
+ :let t:bar = 'jkl'
Karsten Hopp a96f4f
  :try
Karsten Hopp a96f4f
  :  throw "Abc"
Karsten Hopp a96f4f
  :catch
Karsten Hopp a96f4f
***************
Karsten Hopp a96f4f
*** 342,347 ****
Karsten Hopp a96f4f
--- 343,349 ----
Karsten Hopp a96f4f
  :put =pyeval('vim.vars[''foo'']')
Karsten Hopp a96f4f
  :put =pyeval('vim.current.window.vars[''abc'']')
Karsten Hopp a96f4f
  :put =pyeval('vim.current.buffer.vars[''baz'']')
Karsten Hopp a96f4f
+ :put =pyeval('vim.current.tabpage.vars[''bar'']')
Karsten Hopp a96f4f
  :"
Karsten Hopp a96f4f
  :" Options
Karsten Hopp a96f4f
  :" paste:          boolean, global
Karsten Hopp a96f4f
***************
Karsten Hopp a96f4f
*** 561,566 ****
Karsten Hopp a96f4f
--- 563,640 ----
Karsten Hopp a96f4f
  except StopIteration:
Karsten Hopp a96f4f
      cb.append('StopIteration')
Karsten Hopp a96f4f
  EOF
Karsten Hopp a96f4f
+ :"
Karsten Hopp a96f4f
+ :" Test vim.{tabpage,window}list and vim.{tabpage,window} objects
Karsten Hopp a96f4f
+ :tabnew 0
Karsten Hopp a96f4f
+ :tabnew 1
Karsten Hopp a96f4f
+ :vnew a.1
Karsten Hopp a96f4f
+ :tabnew 2
Karsten Hopp a96f4f
+ :vnew a.2
Karsten Hopp a96f4f
+ :vnew b.2
Karsten Hopp a96f4f
+ :vnew c.2
Karsten Hopp a96f4f
+ py << EOF
Karsten Hopp a96f4f
+ cb.append('Number of tabs: ' + str(len(vim.tabpages)))
Karsten Hopp a96f4f
+ cb.append('Current tab pages:')
Karsten Hopp a96f4f
+ def W(w):
Karsten Hopp a96f4f
+     if '(unknown)' in repr(w):
Karsten Hopp a96f4f
+         return '<window object (unknown)>'
Karsten Hopp a96f4f
+     else:
Karsten Hopp a96f4f
+         return repr(w)
Karsten Hopp a96f4f
+ for t in vim.tabpages:
Karsten Hopp a96f4f
+     cb.append('  ' + repr(t) + '(' + str(t.number) + ')' + ': ' + str(len(t.windows)) + ' windows, current is ' + W(t.window))
Karsten Hopp a96f4f
+     cb.append('  Windows:')
Karsten Hopp a96f4f
+     for w in t.windows:
Karsten Hopp a96f4f
+         cb.append('    ' + W(w) + '(' + str(w.number) + ')' + ': displays buffer ' + repr(w.buffer) + '; cursor is at ' + repr(w.cursor))
Karsten Hopp a96f4f
+         # Other values depend on the size of the terminal, so they are checked partly:
Karsten Hopp a96f4f
+         for attr in ('height', 'row', 'width', 'col'):
Karsten Hopp a96f4f
+             try:
Karsten Hopp a96f4f
+                 aval = getattr(w, attr)
Karsten Hopp a96f4f
+                 if type(aval) is not long:
Karsten Hopp a96f4f
+                     raise TypeError
Karsten Hopp a96f4f
+                 if aval < 0:
Karsten Hopp a96f4f
+                     raise ValueError
Karsten Hopp a96f4f
+             except Exception:
Karsten Hopp a96f4f
+                 cb.append('!!!!!! Error while getting attribute ' + attr + ': ' + sys.exc_type.__name__)
Karsten Hopp a96f4f
+         w.cursor = (len(w.buffer), 0)
Karsten Hopp a96f4f
+ cb.append('Number of windows in current tab page: ' + str(len(vim.windows)))
Karsten Hopp a96f4f
+ if list(vim.windows) != list(vim.current.tabpage.windows):
Karsten Hopp a96f4f
+     cb.append('!!!!!! Windows differ')
Karsten Hopp a96f4f
+ EOF
Karsten Hopp a96f4f
+ :"
Karsten Hopp a96f4f
+ :" Test vim.current
Karsten Hopp a96f4f
+ py << EOF
Karsten Hopp a96f4f
+ def H(o):
Karsten Hopp a96f4f
+     return repr(o)
Karsten Hopp a96f4f
+ cb.append('Current tab page: ' + repr(vim.current.tabpage))
Karsten Hopp a96f4f
+ cb.append('Current window: ' + repr(vim.current.window) + ': ' + H(vim.current.window) + ' is ' + H(vim.current.tabpage.window))
Karsten Hopp a96f4f
+ cb.append('Current buffer: ' + repr(vim.current.buffer) + ': ' + H(vim.current.buffer) + ' is ' + H(vim.current.window.buffer)+ ' is ' + H(vim.current.tabpage.window.buffer))
Karsten Hopp a96f4f
+ # Assigning: fails
Karsten Hopp a96f4f
+ try:
Karsten Hopp a96f4f
+     vim.current.window = vim.tabpages[0].window
Karsten Hopp a96f4f
+ except ValueError:
Karsten Hopp a96f4f
+     cb.append('ValueError at assigning foreign tab window')
Karsten Hopp a96f4f
+ 
Karsten Hopp a96f4f
+ for attr in ('window', 'tabpage', 'buffer'):
Karsten Hopp a96f4f
+     try:
Karsten Hopp a96f4f
+         setattr(vim.current, attr, None)
Karsten Hopp a96f4f
+     except TypeError:
Karsten Hopp a96f4f
+         cb.append('Type error at assigning None to vim.current.' + attr)
Karsten Hopp a96f4f
+ 
Karsten Hopp a96f4f
+ # Assigning: success
Karsten Hopp a96f4f
+ vim.current.tabpage = vim.tabpages[-2]
Karsten Hopp a96f4f
+ vim.current.buffer = cb
Karsten Hopp a96f4f
+ vim.current.window = vim.windows[0]
Karsten Hopp a96f4f
+ vim.current.window.cursor = (len(vim.current.buffer), 0)
Karsten Hopp a96f4f
+ cb.append('Current tab page: ' + repr(vim.current.tabpage))
Karsten Hopp a96f4f
+ cb.append('Current window: ' + repr(vim.current.window))
Karsten Hopp a96f4f
+ cb.append('Current buffer: ' + repr(vim.current.buffer))
Karsten Hopp a96f4f
+ cb.append('Current line: ' + repr(vim.current.line))
Karsten Hopp a96f4f
+ for b in vim.buffers:
Karsten Hopp a96f4f
+     if b is not cb:
Karsten Hopp a96f4f
+         vim.command('bwipeout! ' + b.number)
Karsten Hopp a96f4f
+ EOF
Karsten Hopp a96f4f
+ :tabonly!
Karsten Hopp a96f4f
+ :only!
Karsten Hopp a96f4f
  :endfun
Karsten Hopp a96f4f
  :"
Karsten Hopp a96f4f
  :call Test()
Karsten Hopp a96f4f
*** ../vim-7.3.954/src/testdir/test86.ok	2013-05-15 15:44:24.000000000 +0200
Karsten Hopp a96f4f
--- src/testdir/test86.ok	2013-05-15 16:22:06.000000000 +0200
Karsten Hopp a96f4f
***************
Karsten Hopp a96f4f
*** 80,85 ****
Karsten Hopp a96f4f
--- 80,86 ----
Karsten Hopp a96f4f
  bac
Karsten Hopp a96f4f
  def
Karsten Hopp a96f4f
  bar
Karsten Hopp a96f4f
+ jkl
Karsten Hopp a96f4f
  >>> paste
Karsten Hopp a96f4f
    p/gopts1: False
Karsten Hopp a96f4f
    p/wopts1! KeyError
Karsten Hopp a96f4f
***************
Karsten Hopp a96f4f
*** 328,330 ****
Karsten Hopp a96f4f
--- 329,361 ----
Karsten Hopp a96f4f
  i4:<buffer test86.in>
Karsten Hopp a96f4f
  i4:<buffer test86.in>
Karsten Hopp a96f4f
  StopIteration
Karsten Hopp a96f4f
+ Number of tabs: 4
Karsten Hopp a96f4f
+ Current tab pages:
Karsten Hopp a96f4f
+   <tabpage 0>(1): 1 windows, current is <window object (unknown)>
Karsten Hopp a96f4f
+   Windows:
Karsten Hopp a96f4f
+     <window object (unknown)>(0): displays buffer <buffer test86.in>; cursor is at (954, 0)
Karsten Hopp a96f4f
+   <tabpage 1>(2): 1 windows, current is <window object (unknown)>
Karsten Hopp a96f4f
+   Windows:
Karsten Hopp a96f4f
+     <window object (unknown)>(0): displays buffer <buffer 0>; cursor is at (1, 0)
Karsten Hopp a96f4f
+   <tabpage 2>(3): 2 windows, current is <window object (unknown)>
Karsten Hopp a96f4f
+   Windows:
Karsten Hopp a96f4f
+     <window object (unknown)>(0): displays buffer <buffer a.1>; cursor is at (1, 0)
Karsten Hopp a96f4f
+     <window object (unknown)>(0): displays buffer <buffer 1>; cursor is at (1, 0)
Karsten Hopp a96f4f
+   <tabpage 3>(4): 4 windows, current is <window 0>
Karsten Hopp a96f4f
+   Windows:
Karsten Hopp a96f4f
+     <window 0>(1): displays buffer <buffer c.2>; cursor is at (1, 0)
Karsten Hopp a96f4f
+     <window 1>(2): displays buffer <buffer b.2>; cursor is at (1, 0)
Karsten Hopp a96f4f
+     <window 2>(3): displays buffer <buffer a.2>; cursor is at (1, 0)
Karsten Hopp a96f4f
+     <window 3>(4): displays buffer <buffer 2>; cursor is at (1, 0)
Karsten Hopp a96f4f
+ Number of windows in current tab page: 4
Karsten Hopp a96f4f
+ Current tab page: <tabpage 3>
Karsten Hopp a96f4f
+ Current window: <window 0>: <window 0> is <window 0>
Karsten Hopp a96f4f
+ Current buffer: <buffer c.2>: <buffer c.2> is <buffer c.2> is <buffer c.2>
Karsten Hopp a96f4f
+ ValueError at assigning foreign tab window
Karsten Hopp a96f4f
+ Type error at assigning None to vim.current.window
Karsten Hopp a96f4f
+ Type error at assigning None to vim.current.tabpage
Karsten Hopp a96f4f
+ Type error at assigning None to vim.current.buffer
Karsten Hopp a96f4f
+ Current tab page: <tabpage 2>
Karsten Hopp a96f4f
+ Current window: <window 0>
Karsten Hopp a96f4f
+ Current buffer: <buffer test86.in>
Karsten Hopp a96f4f
+ Current line: 'Type error at assigning None to vim.current.buffer'
Karsten Hopp a96f4f
*** ../vim-7.3.954/src/testdir/test87.in	2013-05-15 14:39:47.000000000 +0200
Karsten Hopp a96f4f
--- src/testdir/test87.in	2013-05-15 16:15:25.000000000 +0200
Karsten Hopp a96f4f
***************
Karsten Hopp a96f4f
*** 320,325 ****
Karsten Hopp a96f4f
--- 320,326 ----
Karsten Hopp a96f4f
  :let g:foo = 'bac'
Karsten Hopp a96f4f
  :let w:abc = 'def'
Karsten Hopp a96f4f
  :let b:baz = 'bar'
Karsten Hopp a96f4f
+ :let t:bar = 'jkl'
Karsten Hopp a96f4f
  :try
Karsten Hopp a96f4f
  :  throw "Abc"
Karsten Hopp a96f4f
  :catch
Karsten Hopp a96f4f
***************
Karsten Hopp a96f4f
*** 328,333 ****
Karsten Hopp a96f4f
--- 329,335 ----
Karsten Hopp a96f4f
  :put =py3eval('vim.vars[''foo'']')
Karsten Hopp a96f4f
  :put =py3eval('vim.current.window.vars[''abc'']')
Karsten Hopp a96f4f
  :put =py3eval('vim.current.buffer.vars[''baz'']')
Karsten Hopp a96f4f
+ :put =py3eval('vim.current.tabpage.vars[''bar'']')
Karsten Hopp a96f4f
  :"
Karsten Hopp a96f4f
  :" Options
Karsten Hopp a96f4f
  :" paste:          boolean, global
Karsten Hopp a96f4f
***************
Karsten Hopp a96f4f
*** 547,552 ****
Karsten Hopp a96f4f
--- 549,626 ----
Karsten Hopp a96f4f
  except StopIteration:
Karsten Hopp a96f4f
      cb.append('StopIteration')
Karsten Hopp a96f4f
  EOF
Karsten Hopp a96f4f
+ :"
Karsten Hopp a96f4f
+ :" Test vim.{tabpage,window}list and vim.{tabpage,window} objects
Karsten Hopp a96f4f
+ :tabnew 0
Karsten Hopp a96f4f
+ :tabnew 1
Karsten Hopp a96f4f
+ :vnew a.1
Karsten Hopp a96f4f
+ :tabnew 2
Karsten Hopp a96f4f
+ :vnew a.2
Karsten Hopp a96f4f
+ :vnew b.2
Karsten Hopp a96f4f
+ :vnew c.2
Karsten Hopp a96f4f
+ py3 << EOF
Karsten Hopp a96f4f
+ def W(w):
Karsten Hopp a96f4f
+     if '(unknown)' in repr(w):
Karsten Hopp a96f4f
+         return '<window object (unknown)>'
Karsten Hopp a96f4f
+     else:
Karsten Hopp a96f4f
+         return repr(w)
Karsten Hopp a96f4f
+ cb.append('Number of tabs: ' + str(len(vim.tabpages)))
Karsten Hopp a96f4f
+ cb.append('Current tab pages:')
Karsten Hopp a96f4f
+ for t in vim.tabpages:
Karsten Hopp a96f4f
+     cb.append('  ' + repr(t) + '(' + str(t.number) + ')' + ': ' + str(len(t.windows)) + ' windows, current is ' + W(t.window))
Karsten Hopp a96f4f
+     cb.append('  Windows:')
Karsten Hopp a96f4f
+     for w in t.windows:
Karsten Hopp a96f4f
+         cb.append('    ' + W(w) + '(' + str(w.number) + ')' + ': displays buffer ' + repr(w.buffer) + '; cursor is at ' + repr(w.cursor))
Karsten Hopp a96f4f
+         # Other values depend on the size of the terminal, so they are checked partly:
Karsten Hopp a96f4f
+         for attr in ('height', 'row', 'width', 'col'):
Karsten Hopp a96f4f
+             try:
Karsten Hopp a96f4f
+                 aval = getattr(w, attr)
Karsten Hopp a96f4f
+                 if type(aval) is not int:
Karsten Hopp a96f4f
+                     raise TypeError
Karsten Hopp a96f4f
+                 if aval < 0:
Karsten Hopp a96f4f
+                     raise ValueError
Karsten Hopp a96f4f
+             except Exception as e:
Karsten Hopp a96f4f
+                 cb.append('!!!!!! Error while getting attribute ' + attr + ': ' + e.__class__.__name__)
Karsten Hopp a96f4f
+         w.cursor = (len(w.buffer), 0)
Karsten Hopp a96f4f
+ cb.append('Number of windows in current tab page: ' + str(len(vim.windows)))
Karsten Hopp a96f4f
+ if list(vim.windows) != list(vim.current.tabpage.windows):
Karsten Hopp a96f4f
+     cb.append('!!!!!! Windows differ')
Karsten Hopp a96f4f
+ EOF
Karsten Hopp a96f4f
+ :"
Karsten Hopp a96f4f
+ :" Test vim.current
Karsten Hopp a96f4f
+ py3 << EOF
Karsten Hopp a96f4f
+ def H(o):
Karsten Hopp a96f4f
+     return repr(o)
Karsten Hopp a96f4f
+ cb.append('Current tab page: ' + repr(vim.current.tabpage))
Karsten Hopp a96f4f
+ cb.append('Current window: ' + repr(vim.current.window) + ': ' + H(vim.current.window) + ' is ' + H(vim.current.tabpage.window))
Karsten Hopp a96f4f
+ cb.append('Current buffer: ' + repr(vim.current.buffer) + ': ' + H(vim.current.buffer) + ' is ' + H(vim.current.window.buffer)+ ' is ' + H(vim.current.tabpage.window.buffer))
Karsten Hopp a96f4f
+ # Assigning: fails
Karsten Hopp a96f4f
+ try:
Karsten Hopp a96f4f
+     vim.current.window = vim.tabpages[0].window
Karsten Hopp a96f4f
+ except ValueError:
Karsten Hopp a96f4f
+     cb.append('ValueError at assigning foreign tab window')
Karsten Hopp a96f4f
+ 
Karsten Hopp a96f4f
+ for attr in ('window', 'tabpage', 'buffer'):
Karsten Hopp a96f4f
+     try:
Karsten Hopp a96f4f
+         setattr(vim.current, attr, None)
Karsten Hopp a96f4f
+     except TypeError:
Karsten Hopp a96f4f
+         cb.append('Type error at assigning None to vim.current.' + attr)
Karsten Hopp a96f4f
+ 
Karsten Hopp a96f4f
+ # Assigning: success
Karsten Hopp a96f4f
+ vim.current.tabpage = vim.tabpages[-2]
Karsten Hopp a96f4f
+ vim.current.buffer = cb
Karsten Hopp a96f4f
+ vim.current.window = vim.windows[0]
Karsten Hopp a96f4f
+ vim.current.window.cursor = (len(vim.current.buffer), 0)
Karsten Hopp a96f4f
+ cb.append('Current tab page: ' + repr(vim.current.tabpage))
Karsten Hopp a96f4f
+ cb.append('Current window: ' + repr(vim.current.window))
Karsten Hopp a96f4f
+ cb.append('Current buffer: ' + repr(vim.current.buffer))
Karsten Hopp a96f4f
+ cb.append('Current line: ' + repr(vim.current.line))
Karsten Hopp a96f4f
+ for b in vim.buffers:
Karsten Hopp a96f4f
+     if b is not cb:
Karsten Hopp a96f4f
+         vim.command('bwipeout! ' + str(b.number))
Karsten Hopp a96f4f
+ EOF
Karsten Hopp a96f4f
+ :tabonly!
Karsten Hopp a96f4f
+ :only!
Karsten Hopp a96f4f
  :endfun
Karsten Hopp a96f4f
  :"
Karsten Hopp a96f4f
  :call Test()
Karsten Hopp a96f4f
*** ../vim-7.3.954/src/testdir/test87.ok	2013-05-15 15:44:24.000000000 +0200
Karsten Hopp a96f4f
--- src/testdir/test87.ok	2013-05-15 16:21:39.000000000 +0200
Karsten Hopp a96f4f
***************
Karsten Hopp a96f4f
*** 69,74 ****
Karsten Hopp a96f4f
--- 69,75 ----
Karsten Hopp a96f4f
  bac
Karsten Hopp a96f4f
  def
Karsten Hopp a96f4f
  bar
Karsten Hopp a96f4f
+ jkl
Karsten Hopp a96f4f
  >>> paste
Karsten Hopp a96f4f
    p/gopts1: False
Karsten Hopp a96f4f
    p/wopts1! KeyError
Karsten Hopp a96f4f
***************
Karsten Hopp a96f4f
*** 317,319 ****
Karsten Hopp a96f4f
--- 318,350 ----
Karsten Hopp a96f4f
  i4:<buffer test87.in>
Karsten Hopp a96f4f
  i4:<buffer test87.in>
Karsten Hopp a96f4f
  StopIteration
Karsten Hopp a96f4f
+ Number of tabs: 4
Karsten Hopp a96f4f
+ Current tab pages:
Karsten Hopp a96f4f
+   <tabpage 0>(1): 1 windows, current is <window object (unknown)>
Karsten Hopp a96f4f
+   Windows:
Karsten Hopp a96f4f
+     <window object (unknown)>(0): displays buffer <buffer test87.in>; cursor is at (929, 0)
Karsten Hopp a96f4f
+   <tabpage 1>(2): 1 windows, current is <window object (unknown)>
Karsten Hopp a96f4f
+   Windows:
Karsten Hopp a96f4f
+     <window object (unknown)>(0): displays buffer <buffer 0>; cursor is at (1, 0)
Karsten Hopp a96f4f
+   <tabpage 2>(3): 2 windows, current is <window object (unknown)>
Karsten Hopp a96f4f
+   Windows:
Karsten Hopp a96f4f
+     <window object (unknown)>(0): displays buffer <buffer a.1>; cursor is at (1, 0)
Karsten Hopp a96f4f
+     <window object (unknown)>(0): displays buffer <buffer 1>; cursor is at (1, 0)
Karsten Hopp a96f4f
+   <tabpage 3>(4): 4 windows, current is <window 0>
Karsten Hopp a96f4f
+   Windows:
Karsten Hopp a96f4f
+     <window 0>(1): displays buffer <buffer c.2>; cursor is at (1, 0)
Karsten Hopp a96f4f
+     <window 1>(2): displays buffer <buffer b.2>; cursor is at (1, 0)
Karsten Hopp a96f4f
+     <window 2>(3): displays buffer <buffer a.2>; cursor is at (1, 0)
Karsten Hopp a96f4f
+     <window 3>(4): displays buffer <buffer 2>; cursor is at (1, 0)
Karsten Hopp a96f4f
+ Number of windows in current tab page: 4
Karsten Hopp a96f4f
+ Current tab page: <tabpage 3>
Karsten Hopp a96f4f
+ Current window: <window 0>: <window 0> is <window 0>
Karsten Hopp a96f4f
+ Current buffer: <buffer c.2>: <buffer c.2> is <buffer c.2> is <buffer c.2>
Karsten Hopp a96f4f
+ ValueError at assigning foreign tab window
Karsten Hopp a96f4f
+ Type error at assigning None to vim.current.window
Karsten Hopp a96f4f
+ Type error at assigning None to vim.current.tabpage
Karsten Hopp a96f4f
+ Type error at assigning None to vim.current.buffer
Karsten Hopp a96f4f
+ Current tab page: <tabpage 2>
Karsten Hopp a96f4f
+ Current window: <window 0>
Karsten Hopp a96f4f
+ Current buffer: <buffer test87.in>
Karsten Hopp a96f4f
+ Current line: 'Type error at assigning None to vim.current.buffer'
Karsten Hopp a96f4f
*** ../vim-7.3.954/src/version.c	2013-05-15 16:11:46.000000000 +0200
Karsten Hopp a96f4f
--- src/version.c	2013-05-15 16:14:46.000000000 +0200
Karsten Hopp a96f4f
***************
Karsten Hopp a96f4f
*** 730,731 ****
Karsten Hopp a96f4f
--- 730,733 ----
Karsten Hopp a96f4f
  {   /* Add new patch number below this line */
Karsten Hopp a96f4f
+ /**/
Karsten Hopp a96f4f
+     955,
Karsten Hopp a96f4f
  /**/
Karsten Hopp a96f4f
Karsten Hopp a96f4f
-- 
Karsten Hopp a96f4f
FATHER:    You only killed the bride's father - that's all -
Karsten Hopp a96f4f
LAUNCELOT: Oh dear, I didn't really mean to...
Karsten Hopp a96f4f
FATHER:    Didn't mean to?  You put your sword right through his head!
Karsten Hopp a96f4f
LAUNCELOT: Gosh - Is he all right?
Karsten Hopp a96f4f
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
Karsten Hopp a96f4f
Karsten Hopp a96f4f
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp a96f4f
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp a96f4f
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp a96f4f
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///