Mercurial > vim
diff src/misc1.c @ 374:575dacb554d8 v7.0096
updated for version 7.0096
author | vimboss |
---|---|
date | Tue, 28 Jun 2005 23:32:02 +0000 |
parents | 6c62b9b939bd |
children | f14cbd913415 |
line wrap: on
line diff
--- a/src/misc1.c +++ b/src/misc1.c @@ -3085,15 +3085,20 @@ get_keystroke() } /* - * get a number from the user + * Get a number from the user. + * When "mouse_used" is not NULL allow using the mouse. */ int -get_number(colon) - int colon; /* allow colon to abort */ +get_number(colon, mouse_used) + int colon; /* allow colon to abort */ + int *mouse_used; { int n = 0; int c; + if (mouse_used != NULL) + *mouse_used = FALSE; + /* When not printing messages, the user won't know what to type, return a * zero (as if CR was hit). */ if (msg_silent != 0) @@ -3118,6 +3123,14 @@ get_number(colon) n /= 10; MSG_PUTS("\b \b"); } +#ifdef FEAT_MOUSE + else if (mouse_used != NULL && c == K_LEFTMOUSE) + { + *mouse_used = TRUE; + n = mouse_row + 1; + break; + } +#endif else if (n == 0 && c == ':' && colon) { stuffcharReadbuff(':'); @@ -3137,9 +3150,12 @@ get_number(colon) /* * Ask the user to enter a number. + * When "mouse_used" is not NULL allow using the mouse and in that case return + * the line number. */ int -prompt_for_number() +prompt_for_number(mouse_used) + int *mouse_used; { int i; int save_cmdline_row; @@ -3152,12 +3168,16 @@ prompt_for_number() save_cmdline_row = cmdline_row; cmdline_row = Rows - 1; save_State = State; - State = CMDLINE; - - i = get_number(TRUE); - if (KeyTyped) /* don't call wait_return() now */ - { - msg_putchar('\n'); + if (mouse_used == NULL) + State = CMDLINE; + else + State = NORMAL; + + i = get_number(TRUE, mouse_used); + if (KeyTyped) + { + /* don't call wait_return() now */ + /* msg_putchar('\n'); */ cmdline_row = msg_row - 1; need_wait_return = FALSE; msg_didany = FALSE; @@ -3426,24 +3446,30 @@ expand_env(src, dst, dstlen) char_u *dst; /* where to put the result */ int dstlen; /* maximum length of the result */ { - expand_env_esc(src, dst, dstlen, FALSE); + expand_env_esc(src, dst, dstlen, FALSE, NULL); } void -expand_env_esc(src, dst, dstlen, esc) - char_u *src; /* input string e.g. "$HOME/vim.hlp" */ +expand_env_esc(srcp, dst, dstlen, esc, startstr) + char_u *srcp; /* input string e.g. "$HOME/vim.hlp" */ char_u *dst; /* where to put the result */ int dstlen; /* maximum length of the result */ int esc; /* escape spaces in expanded variables */ -{ + char_u *startstr; /* start again after this (can be NULL) */ +{ + char_u *src; char_u *tail; int c; char_u *var; int copy_char; int mustfree; /* var was allocated, need to free it later */ int at_start = TRUE; /* at start of a name */ - - src = skipwhite(src); + int startstr_len = 0; + + if (startstr != NULL) + startstr_len = STRLEN(startstr); + + src = skipwhite(srcp); --dstlen; /* leave one char space for "\," */ while (*src && dstlen > 0) { @@ -3679,6 +3705,10 @@ expand_env_esc(src, dst, dstlen, esc) at_start = TRUE; *dst++ = *src++; --dstlen; + + if (startstr != NULL && src - startstr_len >= srcp + && STRNCMP(src - startstr_len, startstr, startstr_len) == 0) + at_start = TRUE; } } *dst = NUL;