]>
Commit | Line | Data |
---|---|---|
f3c378e8 AG |
1 | To: vim-dev@vim.org |
2 | Subject: Patch 7.0.104 | |
3 | Fcc: outbox | |
4 | From: Bram Moolenaar <Bram@moolenaar.net> | |
5 | Mime-Version: 1.0 | |
6 | Content-Type: text/plain; charset=ISO-8859-1 | |
7 | Content-Transfer-Encoding: 8bit | |
8 | ------------ | |
9 | ||
10 | Patch 7.0.104 | |
11 | Problem: The CursorHoldI event only triggers once in Insert mode. It also | |
12 | triggers after CTRL-V and other two-key commands. | |
13 | Solution: Set "did_cursorhold" before getting a second key. Reset | |
14 | "did_cursorhold" after handling a command. | |
15 | Files: src/edit.c, src/fileio.c | |
16 | ||
17 | ||
18 | *** ../vim-7.0.103/src/edit.c Tue Aug 29 18:36:55 2006 | |
19 | --- src/edit.c Tue Sep 12 21:12:10 2006 | |
20 | *************** | |
21 | *** 707,712 **** | |
22 | --- 707,717 ---- | |
23 | lastc = c; /* remember previous char for CTRL-D */ | |
24 | c = safe_vgetc(); | |
25 | ||
26 | + #ifdef FEAT_AUTOCMD | |
27 | + /* Don't want K_CURSORHOLD for the second key, e.g., after CTRL-V. */ | |
28 | + did_cursorhold = TRUE; | |
29 | + #endif | |
30 | + | |
31 | #ifdef FEAT_RIGHTLEFT | |
32 | if (p_hkmap && KeyTyped) | |
33 | c = hkmap(c); /* Hebrew mode mapping */ | |
34 | *************** | |
35 | *** 1388,1393 **** | |
36 | --- 1393,1404 ---- | |
37 | #endif | |
38 | break; | |
39 | } /* end of switch (c) */ | |
40 | + | |
41 | + #ifdef FEAT_AUTOCMD | |
42 | + /* If typed something may trigger CursorHoldI again. */ | |
43 | + if (c != K_CURSORHOLD) | |
44 | + did_cursorhold = FALSE; | |
45 | + #endif | |
46 | ||
47 | /* If the cursor was moved we didn't just insert a space */ | |
48 | if (arrow_used) | |
49 | *** ../vim-7.0.103/src/fileio.c Sat Sep 9 14:51:43 2006 | |
50 | --- src/fileio.c Tue Sep 12 20:58:55 2006 | |
51 | *************** | |
52 | *** 8289,8295 **** | |
53 | { | |
54 | int state; | |
55 | ||
56 | ! if (!did_cursorhold && has_cursorhold() && !Recording) | |
57 | { | |
58 | state = get_real_state(); | |
59 | if (state == NORMAL_BUSY || (state & INSERT) != 0) | |
60 | --- 8289,8299 ---- | |
61 | { | |
62 | int state; | |
63 | ||
64 | ! if (!did_cursorhold && has_cursorhold() && !Recording | |
65 | ! #ifdef FEAT_INS_EXPAND | |
66 | ! && !ins_compl_active() | |
67 | ! #endif | |
68 | ! ) | |
69 | { | |
70 | state = get_real_state(); | |
71 | if (state == NORMAL_BUSY || (state & INSERT) != 0) | |
72 | *** ../vim-7.0.103/src/version.c Thu Sep 14 10:48:00 2006 | |
73 | --- src/version.c Thu Sep 14 11:05:33 2006 | |
74 | *************** | |
75 | *** 668,669 **** | |
76 | --- 668,671 ---- | |
77 | { /* Add new patch number below this line */ | |
78 | + /**/ | |
79 | + 104, | |
80 | /**/ | |
81 | ||
82 | -- | |
83 | A hamburger walks into a bar, and the bartender says: "I'm sorry, | |
84 | but we don't serve food here." | |
85 | ||
86 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | |
87 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | |
88 | \\\ download, build and distribute -- http://www.A-A-P.org /// | |
89 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |