0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

updated for version 7.0118

This commit is contained in:
Bram Moolenaar
2005-07-28 22:28:16 +00:00
parent 87e25fdf80
commit cfc7d63267
6 changed files with 112 additions and 24 deletions

View File

@@ -1,4 +1,4 @@
*index.txt* For Vim version 7.0aa. Last change: 2005 Jul 27
*index.txt* For Vim version 7.0aa. Last change: 2005 Jul 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -684,6 +684,7 @@ tag char note action in Normal mode ~
of the current screen line
|g8| g8 print hex value of bytes used in UTF-8
character under the cursor
|g<| g< display previous command output
|g?| g? 2 Rot13 encoding operator
|g?g?| g?? 2 Rot13 encode current line
|g?g?| g?g? 2 Rot13 encode current line

View File

@@ -1,4 +1,4 @@
*message.txt* For Vim version 7.0aa. Last change: 2005 Jul 27
*message.txt* For Vim version 7.0aa. Last change: 2005 Jul 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -21,6 +21,14 @@ depends on the 'shortmess' option.
The number of remembered messages is fixed at 20.
*g<*
The "g<" command can be used to see the last page of previous command output.
This is especially useful if you accidentally typed <Space> at the hit-return
prompt.
Note: when you stopped the output with "q" at the more prompt only up to that
point will be displayed.
The previous command output is cleared when another command produces output.
If you are using translated messages, the first printed line tells who
maintains the messages or the translations. You can use this to contact the
maintainer when you spot a mistake.
@@ -728,8 +736,8 @@ and the screen is about to be redrawn:
-> Press <Enter> or <Space> to redraw the screen and continue, without that
key being used otherwise.
-> Press ':' or any other Normal mode command character to start that command.
-> Press 'k', 'u' or 'b' to scroll back in the messages. This works the same
way as at the |more-prompt|. Only works when 'compatible' is off and
-> Press 'k', 'u', 'b' or 'g' to scroll back in the messages. This works the
same way as at the |more-prompt|. Only works when 'compatible' is off and
'more' is on.
-> Press <C-Y> to copy (yank) a modeless selection to the clipboard register.
-> Use a menu. The characters defined for Cmdline-mode are used.
@@ -739,6 +747,9 @@ and the screen is about to be redrawn:
pressing <Space>.
{Vi: only ":" commands are interpreted}
If you accidentally hit <Enter> or <Space> and you want to see the displayed
text then use |g<|. This only works when 'more' is set.
To reduce the number of hit-enter prompts:
- Set 'cmdheight' to 2 or higher.
- Add flags to 'shortmess'.
@@ -760,10 +771,13 @@ Type effect ~
<CR> or <NL> or j or <Down> one more line
d down a page (half a screen)
<Space> or <PageDown> down a screen
G down all the way, until the hit-enter
prompt
<BS> or k or <Up> one line back (*)
u up a page (half a screen) (*)
b or <PageUp> back a screen (*)
g back to the start (*)
q, <Esc> or CTRL-C stop the listing
: stop the listing and enter a

View File

@@ -13,11 +13,11 @@ all: $(SPELLDIR)/fr.latin1.spl $(SPELLDIR)/fr.utf-8.spl ../README_fr.txt
$(SPELLDIR)/fr.latin1.spl : $(VIM) $(FILES)
:sys env LANG=fr_FR.ISO8859-1
$(VIM) -e -c "mkspell! $(SPELLDIR)/fr fr_FR" -c q
$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/fr fr_FR" -c q
$(SPELLDIR)/fr.utf-8.spl : $(VIM) $(FILES)
:sys env LANG=fr_FR.UTF-8
$(VIM) -e -c "mkspell! $(SPELLDIR)/fr fr_FR" -c q
$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/fr fr_FR" -c q
../README_fr.txt : README_fr_FR.txt
:copy $source $target

View File

@@ -929,7 +929,8 @@ wait_return(redraw)
c = K_IGNORE;
}
#endif
if (p_more && !p_cp && (c == 'b' || c == 'k' || c == 'u'))
if (p_more && !p_cp && (c == 'b' || c == 'k' || c == 'u'
|| c == 'g' || c == K_UP))
{
/* scroll back to show older messages */
do_more_prompt(c);
@@ -2057,6 +2058,8 @@ static msgchunk_T *last_msgchunk = NULL; /* last displayed text */
static msgchunk_T *msg_sb_start __ARGS((msgchunk_T *mps));
static msgchunk_T *disp_sb_line __ARGS((int row, msgchunk_T *smp));
static int do_clear_sb_text = FALSE; /* clear text on next msg */
/*
* Store part of a printed message for displaying when scrolling back.
*/
@@ -2070,6 +2073,12 @@ store_sb_text(sb_str, s, attr, sb_col, finish)
{
msgchunk_T *mp;
if (do_clear_sb_text)
{
clear_sb_text();
do_clear_sb_text = FALSE;
}
if (s > *sb_str)
{
mp = (msgchunk_T *)alloc((int)(sizeof(msgchunk_T) + (s - *sb_str)));
@@ -2101,6 +2110,15 @@ store_sb_text(sb_str, s, attr, sb_col, finish)
*sb_col = 0;
}
/*
* Finished showing messages, clear the scroll-back text on the next message.
*/
void
may_clear_sb_text()
{
do_clear_sb_text = TRUE;
}
/*
* Clear any text remembered for scrolling back.
* Called when redrawing the screen.
@@ -2119,6 +2137,26 @@ clear_sb_text()
last_msgchunk = NULL;
}
/*
* "g<" command.
*/
void
show_sb_text()
{
msgchunk_T *mp;
/* Only show somethign if there is more than one line, otherwise it looks
* weird, typing a command without output results in one line. */
mp = msg_sb_start(last_msgchunk);
if (mp == NULL || mp->sb_prev == NULL)
vim_beep();
else
{
do_more_prompt('G');
wait_return(FALSE);
}
}
/*
* Move to the start of screen line in already displayed text.
*/
@@ -2273,7 +2311,8 @@ msg_puts_printf(str, maxlen)
/*
* Show the more-prompt and handle the user response.
* This takes care of scrolling back and displaying previously displayed text.
* When at hit-enter prompt "typed_char" is the already typed character.
* When at hit-enter prompt "typed_char" is the already typed character,
* otherwise it's NUL.
* Returns TRUE when jumping ahead to "confirm_msg_tail".
*/
static int
@@ -2291,10 +2330,20 @@ do_more_prompt(typed_char)
msgchunk_T *mp;
int i;
if (typed_char == 'G')
{
/* "g<": Find first line on the last page. */
mp_last = msg_sb_start(last_msgchunk);
for (i = 0; i < Rows - 2 && mp_last != NULL
&& mp_last->sb_prev != NULL; ++i)
mp_last = msg_sb_start(mp_last->sb_prev);
}
State = ASKMORE;
#ifdef FEAT_MOUSE
setmouse();
#endif
if (typed_char == NUL)
msg_moremsg(FALSE);
for (;;)
{
@@ -2363,6 +2412,15 @@ do_more_prompt(typed_char)
scroll = Rows - 1;
break;
case 'g': /* all the way back to the start */
scroll = -999999;
break;
case 'G': /* all the way to the end */
scroll = 999999;
lines_left = 999999;
break;
case ':': /* start new command line */
#ifdef FEAT_CON_DIALOG
if (!confirm_msg_used)
@@ -2444,14 +2502,12 @@ do_more_prompt(typed_char)
if (scroll == -1 && screen_ins_lines(0, 0, 1,
(int)Rows, NULL) == OK)
{
/* clear last line, display line at top */
screen_fill((int)Rows - 1, (int)Rows, 0,
(int)Columns, ' ', ' ', 0);
/* display line at top */
(void)disp_sb_line(0, mp);
}
else
{
/* redisplay */
/* redisplay all lines */
screenclear();
for (i = 0; i < Rows - 1; ++i)
mp = disp_sb_line(i, mp);
@@ -2466,6 +2522,7 @@ do_more_prompt(typed_char)
{
/* scroll up, display line at bottom */
msg_scroll_up();
++msg_scrolled;
screen_fill((int)Rows - 2, (int)Rows - 1, 0,
(int)Columns, ' ', ' ', 0);
mp_last = disp_sb_line((int)Rows - 2, mp_last);
@@ -2473,9 +2530,11 @@ do_more_prompt(typed_char)
}
}
if (scroll <= 0)
if (scroll < 0 || (scroll == 0 && mp_last != NULL))
{
/* displayed the requested text, more prompt again */
screen_fill((int)Rows - 1, (int)Rows, 0,
(int)Columns, ' ', ' ', 0);
msg_moremsg(FALSE);
continue;
}

View File

@@ -7564,6 +7564,10 @@ nv_g_cmd(cap)
break;
#endif
case '<':
show_sb_text();
break;
/*
* "gg": Goto the first line in file. With a count it goes to
* that line number like for "G". -- webb

View File

@@ -672,6 +672,9 @@ static linenr_T apply_prefixes __ARGS((slang_T *slang, char_u *word, int round,
# define SPELL_TOUPPER(c) ((c) < 256 ? spelltab.st_upper[c] : (c))
# define SPELL_ISUPPER(c) ((c) < 256 ? spelltab.st_isu[c] : FALSE)
#else
# if defined(HAVE_WCHAR_H)
# include <wchar.h> /* for towupper() and towlower() */
# endif
/* Multi-byte implementation. For Unicode we can call utf_*(), but don't do
* that for ASCII, because we don't want to use 'casemap' here. Otherwise use
* the "w" library function for characters above 255 if available. */
@@ -3147,7 +3150,7 @@ static int spell_read_dic __ARGS((char_u *fname, spellinfo_T *spin, afffile_T *a
static char_u *get_pfxlist __ARGS((afffile_T *affile, char_u *afflist, sblock_T **blp));
static int store_aff_word __ARGS((char_u *word, spellinfo_T *spin, char_u *afflist, afffile_T *affile, hashtab_T *ht, hashtab_T *xht, int comb, int flags, char_u *pfxlist));
static int spell_read_wordfile __ARGS((char_u *fname, spellinfo_T *spin));
static void *getroom __ARGS((sblock_T **blp, size_t len));
static void *getroom __ARGS((sblock_T **blp, size_t len, int align));
static char_u *getroom_save __ARGS((sblock_T **blp, char_u *s));
static void free_blocks __ARGS((sblock_T *bl));
static wordnode_T *wordtree_alloc __ARGS((sblock_T **blp));
@@ -3240,7 +3243,7 @@ spell_read_aff(fname, spin)
/*
* Allocate and init the afffile_T structure.
*/
aff = (afffile_T *)getroom(&spin->si_blocks, sizeof(afffile_T));
aff = (afffile_T *)getroom(&spin->si_blocks, sizeof(afffile_T), TRUE);
if (aff == NULL)
return NULL;
hash_init(&aff->af_pref);
@@ -3368,7 +3371,7 @@ spell_read_aff(fname, spin)
/* New affix letter. */
cur_aff = (affheader_T *)getroom(&spin->si_blocks,
sizeof(affheader_T));
sizeof(affheader_T), TRUE);
if (cur_aff == NULL)
break;
cur_aff->ah_key[0] = *items[1]; /* TODO: multi-byte? */
@@ -3428,7 +3431,7 @@ spell_read_aff(fname, spin)
/* New item for an affix letter. */
--aff_todo;
aff_entry = (affentry_T *)getroom(&spin->si_blocks,
sizeof(affentry_T));
sizeof(affentry_T), TRUE);
if (aff_entry == NULL)
break;
aff_entry->ae_rare = rare;
@@ -4003,7 +4006,7 @@ get_pfxlist(affile, afflist, blp)
}
}
if (round == 1 && cnt > 0)
res = getroom(blp, cnt + 1);
res = getroom(blp, cnt + 1, FALSE);
if (res == NULL)
break;
}
@@ -4379,13 +4382,20 @@ spell_read_wordfile(fname, spin)
* Returns NULL when out of memory.
*/
static void *
getroom(blp, len)
getroom(blp, len, align)
sblock_T **blp;
size_t len; /* length needed */
int align; /* align for pointer */
{
char_u *p;
sblock_T *bl = *blp;
if (align && bl != NULL)
/* Round size up for alignment. On some systems structures need to be
* aligned to the size of a pointer (e.g., SPARC). */
bl->sb_used = (bl->sb_used + sizeof(char *) - 1)
& ~(sizeof(char *) - 1);
if (bl == NULL || bl->sb_used + len > SBLOCKSIZE)
{
/* Allocate a block of memory. This is not freed until much later. */
@@ -4413,7 +4423,7 @@ getroom_save(blp, s)
{
char_u *sc;
sc = (char_u *)getroom(blp, STRLEN(s) + 1);
sc = (char_u *)getroom(blp, STRLEN(s) + 1, FALSE);
if (sc != NULL)
STRCPY(sc, s);
return sc;
@@ -4444,7 +4454,7 @@ free_blocks(bl)
wordtree_alloc(blp)
sblock_T **blp;
{
return (wordnode_T *)getroom(blp, sizeof(wordnode_T));
return (wordnode_T *)getroom(blp, sizeof(wordnode_T), TRUE);
}
/*
@@ -4541,7 +4551,7 @@ tree_add_word(word, root, flags, region, prefixID, blp)
|| node->wn_prefixID != prefixID)))
{
/* Allocate a new node. */
np = (wordnode_T *)getroom(blp, sizeof(wordnode_T));
np = (wordnode_T *)getroom(blp, sizeof(wordnode_T), TRUE);
if (np == NULL)
return FAIL;
np->wn_byte = word[i];