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:
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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
|
||||
|
28
src/spell.c
28
src/spell.c
@@ -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];
|
||||
|
Reference in New Issue
Block a user