Karsten Hopp 9b4429
To: vim_dev@googlegroups.com
Karsten Hopp 9b4429
Subject: Patch 7.4.734
Karsten Hopp 9b4429
Fcc: outbox
Karsten Hopp 9b4429
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 9b4429
Mime-Version: 1.0
Karsten Hopp 9b4429
Content-Type: text/plain; charset=UTF-8
Karsten Hopp 9b4429
Content-Transfer-Encoding: 8bit
Karsten Hopp 9b4429
------------
Karsten Hopp 9b4429
Karsten Hopp 9b4429
Patch 7.4.734
Karsten Hopp 9b4429
Problem:    ml_get error when using "p" in a Visual selection in the last
Karsten Hopp 9b4429
            line.
Karsten Hopp 9b4429
Solution:   Change the behavior at the last line. (Yukihiro Nakadaira)
Karsten Hopp 9b4429
Files:      src/normal.c, src/ops.c, src/testdir/test94.in,
Karsten Hopp 9b4429
            src/testdir/test94.ok
Karsten Hopp 9b4429
Karsten Hopp 9b4429
Karsten Hopp 9b4429
*** ../vim-7.4.733/src/normal.c	2015-06-09 19:23:39.675159547 +0200
Karsten Hopp 9b4429
--- src/normal.c	2015-06-09 20:08:53.853761282 +0200
Karsten Hopp 9b4429
***************
Karsten Hopp 9b4429
*** 1547,1554 ****
Karsten Hopp 9b4429
  	    }
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
  	    /* In Select mode, a linewise selection is operated upon like a
Karsten Hopp 9b4429
! 	     * characterwise selection. */
Karsten Hopp 9b4429
! 	    if (VIsual_select && VIsual_mode == 'V')
Karsten Hopp 9b4429
  	    {
Karsten Hopp 9b4429
  		if (lt(VIsual, curwin->w_cursor))
Karsten Hopp 9b4429
  		{
Karsten Hopp 9b4429
--- 1547,1556 ----
Karsten Hopp 9b4429
  	    }
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
  	    /* In Select mode, a linewise selection is operated upon like a
Karsten Hopp 9b4429
! 	     * characterwise selection.
Karsten Hopp 9b4429
! 	     * Special case: gH deletes the last line. */
Karsten Hopp 9b4429
! 	    if (VIsual_select && VIsual_mode == 'V'
Karsten Hopp 9b4429
! 					    && cap->oap->op_type != OP_DELETE)
Karsten Hopp 9b4429
  	    {
Karsten Hopp 9b4429
  		if (lt(VIsual, curwin->w_cursor))
Karsten Hopp 9b4429
  		{
Karsten Hopp 9b4429
***************
Karsten Hopp 9b4429
*** 1770,1793 ****
Karsten Hopp 9b4429
  		    oap->inclusive = FALSE;
Karsten Hopp 9b4429
  		    /* Try to include the newline, unless it's an operator
Karsten Hopp 9b4429
  		     * that works on lines only. */
Karsten Hopp 9b4429
! 		    if (*p_sel != 'o' && !op_on_lines(oap->op_type))
Karsten Hopp 9b4429
  		    {
Karsten Hopp 9b4429
! 			if (oap->end.lnum < curbuf->b_ml.ml_line_count)
Karsten Hopp 9b4429
! 			{
Karsten Hopp 9b4429
! 			    ++oap->end.lnum;
Karsten Hopp 9b4429
! 			    oap->end.col = 0;
Karsten Hopp 9b4429
  #ifdef FEAT_VIRTUALEDIT
Karsten Hopp 9b4429
! 			    oap->end.coladd = 0;
Karsten Hopp 9b4429
  #endif
Karsten Hopp 9b4429
! 			    ++oap->line_count;
Karsten Hopp 9b4429
! 			}
Karsten Hopp 9b4429
! 			else
Karsten Hopp 9b4429
! 			{
Karsten Hopp 9b4429
! 			    /* Cannot move below the last line, make the op
Karsten Hopp 9b4429
! 			     * inclusive to tell the operation to include the
Karsten Hopp 9b4429
! 			     * line break. */
Karsten Hopp 9b4429
! 			    oap->inclusive = TRUE;
Karsten Hopp 9b4429
! 			}
Karsten Hopp 9b4429
  		    }
Karsten Hopp 9b4429
  		}
Karsten Hopp 9b4429
  	    }
Karsten Hopp 9b4429
--- 1772,1787 ----
Karsten Hopp 9b4429
  		    oap->inclusive = FALSE;
Karsten Hopp 9b4429
  		    /* Try to include the newline, unless it's an operator
Karsten Hopp 9b4429
  		     * that works on lines only. */
Karsten Hopp 9b4429
! 		    if (*p_sel != 'o'
Karsten Hopp 9b4429
! 			    && !op_on_lines(oap->op_type)
Karsten Hopp 9b4429
! 			    && oap->end.lnum < curbuf->b_ml.ml_line_count)
Karsten Hopp 9b4429
  		    {
Karsten Hopp 9b4429
! 			++oap->end.lnum;
Karsten Hopp 9b4429
! 			oap->end.col = 0;
Karsten Hopp 9b4429
  #ifdef FEAT_VIRTUALEDIT
Karsten Hopp 9b4429
! 			oap->end.coladd = 0;
Karsten Hopp 9b4429
  #endif
Karsten Hopp 9b4429
! 			++oap->line_count;
Karsten Hopp 9b4429
  		    }
Karsten Hopp 9b4429
  		}
Karsten Hopp 9b4429
  	    }
Karsten Hopp 9b4429
*** ../vim-7.4.733/src/ops.c	2015-05-04 20:19:16.937521201 +0200
Karsten Hopp 9b4429
--- src/ops.c	2015-06-09 20:08:53.857761240 +0200
Karsten Hopp 9b4429
***************
Karsten Hopp 9b4429
*** 1959,2018 ****
Karsten Hopp 9b4429
  		    curwin->w_cursor.coladd = 0;
Karsten Hopp 9b4429
  	    }
Karsten Hopp 9b4429
  #endif
Karsten Hopp 9b4429
! 	    if (oap->op_type == OP_DELETE
Karsten Hopp 9b4429
! 		    && oap->inclusive
Karsten Hopp 9b4429
! 		    && oap->end.lnum == curbuf->b_ml.ml_line_count
Karsten Hopp 9b4429
! 		    && n > (int)STRLEN(ml_get(oap->end.lnum)))
Karsten Hopp 9b4429
! 	    {
Karsten Hopp 9b4429
! 		/* Special case: gH deletes the last line. */
Karsten Hopp 9b4429
! 		del_lines(1L, FALSE);
Karsten Hopp 9b4429
! 	    }
Karsten Hopp 9b4429
! 	    else
Karsten Hopp 9b4429
! 	    {
Karsten Hopp 9b4429
! 		(void)del_bytes((long)n, !virtual_op,
Karsten Hopp 9b4429
! 				oap->op_type == OP_DELETE && !oap->is_VIsual);
Karsten Hopp 9b4429
! 	    }
Karsten Hopp 9b4429
  	}
Karsten Hopp 9b4429
  	else				/* delete characters between lines */
Karsten Hopp 9b4429
  	{
Karsten Hopp 9b4429
  	    pos_T   curpos;
Karsten Hopp 9b4429
- 	    int     delete_last_line;
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
  	    /* save deleted and changed lines for undo */
Karsten Hopp 9b4429
  	    if (u_save((linenr_T)(curwin->w_cursor.lnum - 1),
Karsten Hopp 9b4429
  		 (linenr_T)(curwin->w_cursor.lnum + oap->line_count)) == FAIL)
Karsten Hopp 9b4429
  		return FAIL;
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
- 	    delete_last_line = (oap->end.lnum == curbuf->b_ml.ml_line_count);
Karsten Hopp 9b4429
  	    truncate_line(TRUE);	/* delete from cursor to end of line */
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
  	    curpos = curwin->w_cursor;	/* remember curwin->w_cursor */
Karsten Hopp 9b4429
  	    ++curwin->w_cursor.lnum;
Karsten Hopp 9b4429
  	    del_lines((long)(oap->line_count - 2), FALSE);
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
! 	    if (delete_last_line)
Karsten Hopp 9b4429
! 		oap->end.lnum = curbuf->b_ml.ml_line_count;
Karsten Hopp 9b4429
! 
Karsten Hopp 9b4429
  	    n = (oap->end.col + 1 - !oap->inclusive);
Karsten Hopp 9b4429
! 	    if (oap->inclusive && delete_last_line
Karsten Hopp 9b4429
! 		    && n > (int)STRLEN(ml_get(oap->end.lnum)))
Karsten Hopp 9b4429
! 	    {
Karsten Hopp 9b4429
! 		/* Special case: gH deletes the last line. */
Karsten Hopp 9b4429
! 		del_lines(1L, FALSE);
Karsten Hopp 9b4429
! 		curwin->w_cursor = curpos;	/* restore curwin->w_cursor */
Karsten Hopp 9b4429
! 		if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
Karsten Hopp 9b4429
! 		    curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
Karsten Hopp 9b4429
! 	    }
Karsten Hopp 9b4429
! 	    else
Karsten Hopp 9b4429
! 	    {
Karsten Hopp 9b4429
! 		/* delete from start of line until op_end */
Karsten Hopp 9b4429
! 		curwin->w_cursor.col = 0;
Karsten Hopp 9b4429
! 		(void)del_bytes((long)n, !virtual_op,
Karsten Hopp 9b4429
! 				oap->op_type == OP_DELETE && !oap->is_VIsual);
Karsten Hopp 9b4429
! 		curwin->w_cursor = curpos;	/* restore curwin->w_cursor */
Karsten Hopp 9b4429
! 	    }
Karsten Hopp 9b4429
! 	    if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
Karsten Hopp 9b4429
! 		(void)do_join(2, FALSE, FALSE, FALSE, FALSE);
Karsten Hopp 9b4429
  	}
Karsten Hopp 9b4429
      }
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
--- 1959,1989 ----
Karsten Hopp 9b4429
  		    curwin->w_cursor.coladd = 0;
Karsten Hopp 9b4429
  	    }
Karsten Hopp 9b4429
  #endif
Karsten Hopp 9b4429
! 	    (void)del_bytes((long)n, !virtual_op,
Karsten Hopp 9b4429
! 			    oap->op_type == OP_DELETE && !oap->is_VIsual);
Karsten Hopp 9b4429
  	}
Karsten Hopp 9b4429
  	else				/* delete characters between lines */
Karsten Hopp 9b4429
  	{
Karsten Hopp 9b4429
  	    pos_T   curpos;
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
  	    /* save deleted and changed lines for undo */
Karsten Hopp 9b4429
  	    if (u_save((linenr_T)(curwin->w_cursor.lnum - 1),
Karsten Hopp 9b4429
  		 (linenr_T)(curwin->w_cursor.lnum + oap->line_count)) == FAIL)
Karsten Hopp 9b4429
  		return FAIL;
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
  	    truncate_line(TRUE);	/* delete from cursor to end of line */
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
  	    curpos = curwin->w_cursor;	/* remember curwin->w_cursor */
Karsten Hopp 9b4429
  	    ++curwin->w_cursor.lnum;
Karsten Hopp 9b4429
  	    del_lines((long)(oap->line_count - 2), FALSE);
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
! 	    /* delete from start of line until op_end */
Karsten Hopp 9b4429
  	    n = (oap->end.col + 1 - !oap->inclusive);
Karsten Hopp 9b4429
! 	    curwin->w_cursor.col = 0;
Karsten Hopp 9b4429
! 	    (void)del_bytes((long)n, !virtual_op,
Karsten Hopp 9b4429
! 			    oap->op_type == OP_DELETE && !oap->is_VIsual);
Karsten Hopp 9b4429
! 	    curwin->w_cursor = curpos;	/* restore curwin->w_cursor */
Karsten Hopp 9b4429
! 	    (void)do_join(2, FALSE, FALSE, FALSE, FALSE);
Karsten Hopp 9b4429
  	}
Karsten Hopp 9b4429
      }
Karsten Hopp 9b4429
  
Karsten Hopp 9b4429
*** ../vim-7.4.733/src/testdir/test94.in	2013-05-04 04:03:02.000000000 +0200
Karsten Hopp 9b4429
--- src/testdir/test94.in	2015-06-09 20:08:08.058244848 +0200
Karsten Hopp 9b4429
***************
Karsten Hopp 9b4429
*** 64,69 ****
Karsten Hopp 9b4429
--- 64,179 ----
Karsten Hopp 9b4429
  d:
:set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'
Karsten Hopp 9b4429
  dv:?dV:?:set noma | let v:errmsg = ''
Karsten Hopp 9b4429
  d:?:set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='characterwise visual mode: replace last line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :let @" = 'x'
Karsten Hopp 9b4429
+ :let v:errmsg = ''
Karsten Hopp 9b4429
+ v$p
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :$put ='v:errmsg='.v:errmsg
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='characterwise visual mode: delete middle line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ kkv$d
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='characterwise visual mode: delete middle two line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ kkvj$d
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='characterwise visual mode: delete last line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ v$d
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='characterwise visual mode: delete last two line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ kvj$d
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :" Select mode maps
Karsten Hopp 9b4429
+ :snoremap <lt>End> <End>
Karsten Hopp 9b4429
+ :snoremap <lt>Down> <Down>
Karsten Hopp 9b4429
+ :snoremap <lt>Del> 
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='characterwise select mode: delete middle line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ kkgh<End>
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='characterwise select mode: delete middle two line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ kkgh<Down><End>
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='characterwise select mode: delete last line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ gh<End>
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='characterwise select mode: delete last two line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ kgh<Down><End>
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='linewise select mode: delete middle line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ kkgH
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='linewise select mode: delete middle two line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ kkgH<Down>
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='linewise select mode: delete last line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ gH
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
+ :
Karsten Hopp 9b4429
+ :$put =''
Karsten Hopp 9b4429
+ :$put ='linewise select mode: delete last two line'
Karsten Hopp 9b4429
+ :$put ='a'
Karsten Hopp 9b4429
+ :$put ='b'
Karsten Hopp 9b4429
+ :$put ='c'
Karsten Hopp 9b4429
+ kgH<Down>
Karsten Hopp 9b4429
+ :$put ='---'
Karsten Hopp 9b4429
  :/^start:/+2,$w! test.out
Karsten Hopp 9b4429
  :q!
Karsten Hopp 9b4429
  ENDTEST
Karsten Hopp 9b4429
*** ../vim-7.4.733/src/testdir/test94.ok	2013-05-04 04:06:46.000000000 +0200
Karsten Hopp 9b4429
--- src/testdir/test94.ok	2015-06-09 20:08:08.058244848 +0200
Karsten Hopp 9b4429
***************
Karsten Hopp 9b4429
*** 18,20 ****
Karsten Hopp 9b4429
--- 18,83 ----
Karsten Hopp 9b4429
  zzz
Karsten Hopp 9b4429
  ok
Karsten Hopp 9b4429
  ok
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ characterwise visual mode: replace last line
Karsten Hopp 9b4429
+ x
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ v:errmsg=
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ characterwise visual mode: delete middle line
Karsten Hopp 9b4429
+ b
Karsten Hopp 9b4429
+ c
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ characterwise visual mode: delete middle two line
Karsten Hopp 9b4429
+ c
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ characterwise visual mode: delete last line
Karsten Hopp 9b4429
+ a
Karsten Hopp 9b4429
+ b
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ characterwise visual mode: delete last two line
Karsten Hopp 9b4429
+ a
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ characterwise select mode: delete middle line
Karsten Hopp 9b4429
+ b
Karsten Hopp 9b4429
+ c
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ characterwise select mode: delete middle two line
Karsten Hopp 9b4429
+ c
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ characterwise select mode: delete last line
Karsten Hopp 9b4429
+ a
Karsten Hopp 9b4429
+ b
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ characterwise select mode: delete last two line
Karsten Hopp 9b4429
+ a
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ linewise select mode: delete middle line
Karsten Hopp 9b4429
+ b
Karsten Hopp 9b4429
+ c
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ linewise select mode: delete middle two line
Karsten Hopp 9b4429
+ c
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ linewise select mode: delete last line
Karsten Hopp 9b4429
+ a
Karsten Hopp 9b4429
+ b
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
+ 
Karsten Hopp 9b4429
+ linewise select mode: delete last two line
Karsten Hopp 9b4429
+ a
Karsten Hopp 9b4429
+ ---
Karsten Hopp 9b4429
*** ../vim-7.4.733/src/version.c	2015-06-09 19:58:13.664658549 +0200
Karsten Hopp 9b4429
--- src/version.c	2015-06-09 20:19:16.815166372 +0200
Karsten Hopp 9b4429
***************
Karsten Hopp 9b4429
*** 743,744 ****
Karsten Hopp 9b4429
--- 743,746 ----
Karsten Hopp 9b4429
  {   /* Add new patch number below this line */
Karsten Hopp 9b4429
+ /**/
Karsten Hopp 9b4429
+     734,
Karsten Hopp 9b4429
  /**/
Karsten Hopp 9b4429
Karsten Hopp 9b4429
-- 
Karsten Hopp 9b4429
From "know your smileys":
Karsten Hopp 9b4429
 <>:-)	Bishop
Karsten Hopp 9b4429
Karsten Hopp 9b4429
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 9b4429
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 9b4429
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp 9b4429
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///