Mercurial > vim
comparison src/option.c @ 2360:d8e4b27cef80 vim73
Change 'cryptmethod' from a number to a string option. Make it global-local.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Tue, 20 Jul 2010 17:32:38 +0200 |
parents | 8878a9f8db87 |
children | 6cee3bf00495 |
comparison
equal
deleted
inserted
replaced
2359:496feb41b83f | 2360:d8e4b27cef80 |
---|---|
75 # define PV_CINO OPT_BUF(BV_CINO) | 75 # define PV_CINO OPT_BUF(BV_CINO) |
76 #endif | 76 #endif |
77 #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT) | 77 #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT) |
78 # define PV_CINW OPT_BUF(BV_CINW) | 78 # define PV_CINW OPT_BUF(BV_CINW) |
79 #endif | 79 #endif |
80 #define PV_CM OPT_BUF(BV_CM) | 80 #define PV_CM OPT_BOTH(OPT_BUF(BV_CM)) |
81 #ifdef FEAT_FOLDING | 81 #ifdef FEAT_FOLDING |
82 # define PV_CMS OPT_BUF(BV_CMS) | 82 # define PV_CMS OPT_BUF(BV_CMS) |
83 #endif | 83 #endif |
84 #ifdef FEAT_COMMENTS | 84 #ifdef FEAT_COMMENTS |
85 # define PV_COM OPT_BUF(BV_COM) | 85 # define PV_COM OPT_BUF(BV_COM) |
284 static char_u *p_cink; | 284 static char_u *p_cink; |
285 static char_u *p_cino; | 285 static char_u *p_cino; |
286 #endif | 286 #endif |
287 #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT) | 287 #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT) |
288 static char_u *p_cinw; | 288 static char_u *p_cinw; |
289 #endif | |
290 #ifdef FEAT_CRYPT | |
291 static long p_cm; | |
292 #endif | 289 #endif |
293 #ifdef FEAT_COMMENTS | 290 #ifdef FEAT_COMMENTS |
294 static char_u *p_com; | 291 static char_u *p_com; |
295 #endif | 292 #endif |
296 #ifdef FEAT_FOLDING | 293 #ifdef FEAT_FOLDING |
864 {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, | 861 {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, |
865 {"cpoptions", "cpo", P_STRING|P_VIM|P_RALL|P_FLAGLIST, | 862 {"cpoptions", "cpo", P_STRING|P_VIM|P_RALL|P_FLAGLIST, |
866 (char_u *)&p_cpo, PV_NONE, | 863 (char_u *)&p_cpo, PV_NONE, |
867 {(char_u *)CPO_VI, (char_u *)CPO_VIM} | 864 {(char_u *)CPO_VI, (char_u *)CPO_VIM} |
868 SCRIPTID_INIT}, | 865 SCRIPTID_INIT}, |
869 {"cryptmethod", "cm", P_NUM|P_VI_DEF|P_VIM, | 866 {"cryptmethod", "cm", P_STRING|P_ALLOCED|P_VI_DEF, |
870 #ifdef FEAT_CRYPT | 867 #ifdef FEAT_CRYPT |
871 (char_u *)&p_cm, PV_CM, | 868 (char_u *)&p_cm, PV_CM, |
872 #else | 869 {(char_u *)"zip", (char_u *)0L} |
873 (char_u *)NULL, PV_NONE, | 870 #else |
874 #endif | 871 (char_u *)NULL, PV_NONE, |
875 {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT}, | 872 {(char_u *)0L, (char_u *)0L} |
873 #endif | |
874 SCRIPTID_INIT}, | |
876 {"cscopepathcomp", "cspc", P_NUM|P_VI_DEF|P_VIM, | 875 {"cscopepathcomp", "cspc", P_NUM|P_VI_DEF|P_VIM, |
877 #ifdef FEAT_CSCOPE | 876 #ifdef FEAT_CSCOPE |
878 (char_u *)&p_cspc, PV_NONE, | 877 (char_u *)&p_cspc, PV_NONE, |
879 #else | 878 #else |
880 (char_u *)NULL, PV_NONE, | 879 (char_u *)NULL, PV_NONE, |
2913 static char *(p_ambw_values[]) = {"single", "double", NULL}; | 2912 static char *(p_ambw_values[]) = {"single", "double", NULL}; |
2914 #endif | 2913 #endif |
2915 static char *(p_bg_values[]) = {"light", "dark", NULL}; | 2914 static char *(p_bg_values[]) = {"light", "dark", NULL}; |
2916 static char *(p_nf_values[]) = {"octal", "hex", "alpha", NULL}; | 2915 static char *(p_nf_values[]) = {"octal", "hex", "alpha", NULL}; |
2917 static char *(p_ff_values[]) = {FF_UNIX, FF_DOS, FF_MAC, NULL}; | 2916 static char *(p_ff_values[]) = {FF_UNIX, FF_DOS, FF_MAC, NULL}; |
2917 #ifdef FEAT_CRYPT | |
2918 static char *(p_cm_values[]) = {"zip", "blowfish", NULL}; | |
2919 #endif | |
2918 #ifdef FEAT_CMDL_COMPL | 2920 #ifdef FEAT_CMDL_COMPL |
2919 static char *(p_wop_values[]) = {"tagfile", NULL}; | 2921 static char *(p_wop_values[]) = {"tagfile", NULL}; |
2920 #endif | 2922 #endif |
2921 #ifdef FEAT_WAK | 2923 #ifdef FEAT_WAK |
2922 static char *(p_wak_values[]) = {"yes", "menu", "no", NULL}; | 2924 static char *(p_wak_values[]) = {"yes", "menu", "no", NULL}; |
5213 check_string_option(&buf->b_p_indk); | 5215 check_string_option(&buf->b_p_indk); |
5214 #endif | 5216 #endif |
5215 #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) | 5217 #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) |
5216 check_string_option(&buf->b_p_bexpr); | 5218 check_string_option(&buf->b_p_bexpr); |
5217 #endif | 5219 #endif |
5220 #if defined(FEAT_CRYPT) | |
5221 check_string_option(&buf->b_p_cm); | |
5222 #endif | |
5218 #if defined(FEAT_EVAL) | 5223 #if defined(FEAT_EVAL) |
5219 check_string_option(&buf->b_p_fex); | 5224 check_string_option(&buf->b_p_fex); |
5220 #endif | 5225 #endif |
5221 #ifdef FEAT_CRYPT | 5226 #ifdef FEAT_CRYPT |
5222 check_string_option(&buf->b_p_key); | 5227 check_string_option(&buf->b_p_key); |
5996 * history. */ | 6001 * history. */ |
5997 remove_key_from_history(); | 6002 remove_key_from_history(); |
5998 # endif | 6003 # endif |
5999 if (STRCMP(curbuf->b_p_key, oldval) != 0) | 6004 if (STRCMP(curbuf->b_p_key, oldval) != 0) |
6000 /* Need to update the swapfile. */ | 6005 /* Need to update the swapfile. */ |
6001 ml_set_crypt_key(curbuf, oldval, curbuf->b_p_cm); | 6006 ml_set_crypt_key(curbuf, oldval, get_crypt_method(curbuf)); |
6007 } | |
6008 | |
6009 else if (gvarp == &p_cm) | |
6010 { | |
6011 if (opt_flags & OPT_LOCAL) | |
6012 p = curbuf->b_p_cm; | |
6013 else | |
6014 p = p_cm; | |
6015 if (check_opt_strings(p, p_cm_values, TRUE) != OK) | |
6016 errmsg = e_invarg; | |
6017 else if (get_crypt_method(curbuf) > 0 && blowfish_self_test() == FAIL) | |
6018 errmsg = e_invarg; | |
6019 else | |
6020 { | |
6021 /* When setting the global value to empty, make it "zip". */ | |
6022 if (*p_cm == NUL) | |
6023 { | |
6024 if (new_value_alloced) | |
6025 free_string_option(p_cm); | |
6026 p_cm = vim_strsave((char_u *)"zip"); | |
6027 new_value_alloced = TRUE; | |
6028 } | |
6029 | |
6030 /* Need to update the swapfile when the effective method changed. | |
6031 * Set "s" to the effective old value, "p" to the effective new | |
6032 * method and compare. */ | |
6033 if ((opt_flags & OPT_LOCAL) && *oldval == NUL) | |
6034 s = p_cm; /* was previously using the global value */ | |
6035 else | |
6036 s = oldval; | |
6037 if (*curbuf->b_p_cm == NUL) | |
6038 p = p_cm; /* is now using the global value */ | |
6039 else | |
6040 p = curbuf->b_p_cm; | |
6041 if (STRCMP(s, p) != 0) | |
6042 ml_set_crypt_key(curbuf, curbuf->b_p_key, | |
6043 crypt_method_from_string(s)); | |
6044 | |
6045 /* If the global value changes need to update the swapfile for all | |
6046 * buffers using that value. */ | |
6047 if ((opt_flags & OPT_GLOBAL) && STRCMP(p_cm, oldval) != 0) | |
6048 { | |
6049 buf_T *buf; | |
6050 | |
6051 for (buf = firstbuf; buf != NULL; buf = buf->b_next) | |
6052 if (buf != curbuf && *buf->b_p_cm == NUL) | |
6053 ml_set_crypt_key(buf, buf->b_p_key, | |
6054 crypt_method_from_string(oldval)); | |
6055 } | |
6056 } | |
6002 } | 6057 } |
6003 #endif | 6058 #endif |
6004 | 6059 |
6005 /* 'matchpairs' */ | 6060 /* 'matchpairs' */ |
6006 else if (gvarp == &p_mps) | 6061 else if (gvarp == &p_mps) |
8046 } | 8101 } |
8047 # endif | 8102 # endif |
8048 | 8103 |
8049 #endif | 8104 #endif |
8050 | 8105 |
8051 #ifdef FEAT_CRYPT | |
8052 else if (pp == &curbuf->b_p_cm) | |
8053 { | |
8054 if (curbuf->b_p_cm < 0) | |
8055 { | |
8056 errmsg = e_positive; | |
8057 curbuf->b_p_cm = old_value; | |
8058 } | |
8059 if (curbuf->b_p_cm > 1) | |
8060 { | |
8061 errmsg = e_invarg; | |
8062 curbuf->b_p_cm = old_value; | |
8063 } | |
8064 if (curbuf->b_p_cm > 0 && blowfish_self_test() == FAIL) | |
8065 curbuf->b_p_cm = old_value; | |
8066 | |
8067 if (curbuf->b_p_cm != old_value && *curbuf->b_p_key != NUL) | |
8068 /* Need to update the swapfile. */ | |
8069 ml_set_crypt_key(curbuf, curbuf->b_p_key, old_value); | |
8070 } | |
8071 #endif | |
8072 | |
8073 #ifdef FEAT_WINDOWS | 8106 #ifdef FEAT_WINDOWS |
8074 /* (re)set last window status line */ | 8107 /* (re)set last window status line */ |
8075 else if (pp == &p_ls) | 8108 else if (pp == &p_ls) |
8076 { | 8109 { |
8077 last_status(FALSE); | 8110 last_status(FALSE); |
9381 case PV_TSR: return (char_u *)&(curbuf->b_p_tsr); | 9414 case PV_TSR: return (char_u *)&(curbuf->b_p_tsr); |
9382 #endif | 9415 #endif |
9383 #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) | 9416 #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) |
9384 case PV_BEXPR: return (char_u *)&(curbuf->b_p_bexpr); | 9417 case PV_BEXPR: return (char_u *)&(curbuf->b_p_bexpr); |
9385 #endif | 9418 #endif |
9419 #if defined(FEAT_CRYPT) | |
9420 case PV_CM: return (char_u *)&(curbuf->b_p_cm); | |
9421 #endif | |
9386 #ifdef FEAT_STL_OPT | 9422 #ifdef FEAT_STL_OPT |
9387 case PV_STL: return (char_u *)&(curwin->w_p_stl); | 9423 case PV_STL: return (char_u *)&(curwin->w_p_stl); |
9388 #endif | 9424 #endif |
9389 } | 9425 } |
9390 return NULL; /* "cannot happen" */ | 9426 return NULL; /* "cannot happen" */ |
9440 #endif | 9476 #endif |
9441 #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) | 9477 #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) |
9442 case PV_BEXPR: return *curbuf->b_p_bexpr != NUL | 9478 case PV_BEXPR: return *curbuf->b_p_bexpr != NUL |
9443 ? (char_u *)&(curbuf->b_p_bexpr) : p->var; | 9479 ? (char_u *)&(curbuf->b_p_bexpr) : p->var; |
9444 #endif | 9480 #endif |
9481 #if defined(FEAT_CRYPT) | |
9482 case PV_CM: return *curbuf->b_p_cm != NUL | |
9483 ? (char_u *)&(curbuf->b_p_cm) : p->var; | |
9484 #endif | |
9445 #ifdef FEAT_STL_OPT | 9485 #ifdef FEAT_STL_OPT |
9446 case PV_STL: return *curwin->w_p_stl != NUL | 9486 case PV_STL: return *curwin->w_p_stl != NUL |
9447 ? (char_u *)&(curwin->w_p_stl) : p->var; | 9487 ? (char_u *)&(curwin->w_p_stl) : p->var; |
9448 #endif | 9488 #endif |
9449 | 9489 |
9522 case PV_CI: return (char_u *)&(curbuf->b_p_ci); | 9562 case PV_CI: return (char_u *)&(curbuf->b_p_ci); |
9523 #ifdef FEAT_CINDENT | 9563 #ifdef FEAT_CINDENT |
9524 case PV_CIN: return (char_u *)&(curbuf->b_p_cin); | 9564 case PV_CIN: return (char_u *)&(curbuf->b_p_cin); |
9525 case PV_CINK: return (char_u *)&(curbuf->b_p_cink); | 9565 case PV_CINK: return (char_u *)&(curbuf->b_p_cink); |
9526 case PV_CINO: return (char_u *)&(curbuf->b_p_cino); | 9566 case PV_CINO: return (char_u *)&(curbuf->b_p_cino); |
9527 #endif | |
9528 #ifdef FEAT_CRYPT | |
9529 case PV_CM: return (char_u *)&(curbuf->b_p_cm); | |
9530 #endif | 9567 #endif |
9531 #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT) | 9568 #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT) |
9532 case PV_CINW: return (char_u *)&(curbuf->b_p_cinw); | 9569 case PV_CINW: return (char_u *)&(curbuf->b_p_cinw); |
9533 #endif | 9570 #endif |
9534 #ifdef FEAT_COMMENTS | 9571 #ifdef FEAT_COMMENTS |
9991 #ifdef FEAT_TEXTOBJ | 10028 #ifdef FEAT_TEXTOBJ |
9992 buf->b_p_qe = vim_strsave(p_qe); | 10029 buf->b_p_qe = vim_strsave(p_qe); |
9993 #endif | 10030 #endif |
9994 #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) | 10031 #if defined(FEAT_BEVAL) && defined(FEAT_EVAL) |
9995 buf->b_p_bexpr = empty_option; | 10032 buf->b_p_bexpr = empty_option; |
10033 #endif | |
10034 #if defined(FEAT_CRYPT) | |
10035 buf->b_p_cm = empty_option; | |
9996 #endif | 10036 #endif |
9997 #ifdef FEAT_PERSISTENT_UNDO | 10037 #ifdef FEAT_PERSISTENT_UNDO |
9998 buf->b_p_udf = p_udf; | 10038 buf->b_p_udf = p_udf; |
9999 #endif | 10039 #endif |
10000 | 10040 |