To: Ralf Schandl In-Reply-To: <199907061410.QAA138802@dev.ffm.tc> Subject: patch 5.4n.9 (was: VIM: moving cursor to negative line numbers) Fcc: outbox From: Bram Moolenaar ------------ Ralf Schandl wrote: > I just managed to move the cursor to negativ line numbers. A patch is > included. > > Just do the following: > > Start vim > vim -u NONE -U NONE .profile > > and enter > > :-2 > > then outputs: > ".profile" line -1 of 155 --0%-- col 1 > > The cursor stays in window-line 1, and you can return to file-line 1 > with 'j'. Indeed. Easy to reproduce. > Fix: > Check that that the line number is not smaller or equal to 0 in > function do_one_cmd just after the mark "doend:". See patch below. Good, that fixes the problem. Hmm, I think that an error message is appropriate in this situation. Vi does so too. Not for ":0" though, that is silently interpreted as ":1". Vim did that already. Patch 5.4n.9 Problem: ":-2" moved the cursor to a negative line number. (Ralf Schandl) Solution: Give an error message for a negative line number. Files: src/ex_docmd.c *** ../vim-5.4n/src/ex_docmd.c Sun Jul 4 20:35:46 1999 --- src/ex_docmd.c Tue Jul 6 21:23:25 1999 *************** *** 840,846 **** } else if (ea.addr_count != 0) { ! if (ea.line2 == 0) curwin->w_cursor.lnum = 1; else if (ea.line2 > curbuf->b_ml.ml_line_count) curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count; --- 840,848 ---- } else if (ea.addr_count != 0) { ! if (ea.line2 < 0) ! errormsg = invalid_range(&ea); ! else if (ea.line2 == 0) curwin->w_cursor.lnum = 1; else if (ea.line2 > curbuf->b_ml.ml_line_count) curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count; -- You can be stopped by the police for biking over 65 miles per hour. You are not allowed to walk across a street on your hands. [real standing laws in Connecticut, United States of America] --/-/---- Bram Moolenaar ---- Bram@moolenaar.net ---- Bram@vim.org ---\-\-- \ \ www.vim.org/iccf www.moolenaar.net www.vim.org / / .