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