1Index: src/normal.c 2=================================================================== 3--- src/normal.c (revision 57762) 4+++ src/normal.c (working copy) 5@@ -6566,18 +6566,23 @@ 6 * Imitate strange Vi behaviour: When using "]]" with an operator 7 * we also stop at '}'. 8 */ 9- if (!findpar(&cap->oap->inclusive, cap->arg, cap->count1, flag, 10- (cap->oap->op_type != OP_NOP 11- && cap->arg == FORWARD && flag == '{'))) 12- clearopbeep(cap->oap); 13- else 14- { 15- if (cap->oap->op_type == OP_NOP) 16- beginline(BL_WHITE | BL_FIX); 17+ if (curbuf->b_p_lisp) { 18+ findpar(cap->oap, cap->arg, cap->count1, 19+ '(', FALSE); 20+ } else { 21+ if (!findpar(&cap->oap->inclusive, cap->arg, cap->count1, flag, 22+ (cap->oap->op_type != OP_NOP 23+ && cap->arg == FORWARD && flag == '{'))) 24+ clearopbeep(cap->oap); 25+ else 26+ { 27+ if (cap->oap->op_type == OP_NOP) 28+ beginline(BL_WHITE | BL_FIX); 29 #ifdef FEAT_FOLDING 30- if ((fdo_flags & FDO_BLOCK) && KeyTyped && cap->oap->op_type == OP_NOP) 31- foldOpenCursor(); 32+ if ((fdo_flags & FDO_BLOCK) && KeyTyped && cap->oap->op_type == OP_NOP) 33+ foldOpenCursor(); 34 #endif 35+ } 36 } 37 } 38 39@@ -6747,6 +6752,11 @@ 40 nv_brace(cap) 41 cmdarg_T *cap; 42 { 43+ if (curbuf->b_p_lisp) { 44+ cap->nchar = '('; 45+ nv_csearch(cap); 46+ return; 47+ } 48 cap->oap->motion_type = MCHAR; 49 cap->oap->use_reg_one = TRUE; 50 /* The motion used to be inclusive for "(", but that is not what Vi does. */ 51Index: src/search.c 52=================================================================== 53--- src/search.c (revision 57762) 54+++ src/search.c (working copy) 55@@ -2787,6 +2787,10 @@ 56 char_u *s; 57 58 s = ml_get(lnum); 59+ if (para == '(') 60+ return *s == '('; 61+ if (para == ')') 62+ return *s == ')'; 63 if (*s == para || *s == '\f' || (both && *s == '}')) 64 return TRUE; 65 if (*s == '.' && (inmacro(p_sections, s + 1) || 66