annotate src/proto/eval.pro @ 6935:4db70c94226b v7.4.786

patch 7.4.786 Problem: It is not possible for a plugin to adjust to a changed setting. Solution: Add the OptionSet autocommand event. (Christian Brabandt)
author Bram Moolenaar <bram@vim.org>
date Fri, 17 Jul 2015 17:38:22 +0200
parents 676906c33768
children 21b0a39d13ed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 /* eval.c */
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
2 void eval_init __ARGS((void));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
3 void eval_clear __ARGS((void));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
4 char_u *func_name __ARGS((void *cookie));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
5 linenr_T *func_breakpoint __ARGS((void *cookie));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
6 int *func_dbg_tick __ARGS((void *cookie));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
7 int func_level __ARGS((void *cookie));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
8 int current_func_returned __ARGS((void));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
9 void set_internal_string_var __ARGS((char_u *name, char_u *value));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
10 int var_redir_start __ARGS((char_u *name, int append));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
11 void var_redir_str __ARGS((char_u *value, int value_len));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
12 void var_redir_stop __ARGS((void));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
13 int eval_charconvert __ARGS((char_u *enc_from, char_u *enc_to, char_u *fname_from, char_u *fname_to));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
14 int eval_printexpr __ARGS((char_u *fname, char_u *args));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
15 void eval_diff __ARGS((char_u *origfile, char_u *newfile, char_u *outfile));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
16 void eval_patch __ARGS((char_u *origfile, char_u *difffile, char_u *outfile));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
17 int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
18 char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
19 int skip_expr __ARGS((char_u **pp));
1733
5a7384b9ca66 updated for version 7.2-031
vimboss
parents: 1496
diff changeset
20 char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int convert));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
21 char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
22 int eval_to_number __ARGS((char_u *expr));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
23 list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
24 int get_spellword __ARGS((list_T *list, char_u **pp));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
25 typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd));
3709
2bb51730ef4b updated for version 7.3.614
Bram Moolenaar <bram@vim.org>
parents: 3687
diff changeset
26 int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, int str_arg_only, typval_T *rettv));
4287
dc3efb6d5a08 updated for version 7.3.893
Bram Moolenaar <bram@vim.org>
parents: 4074
diff changeset
27 long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
28 void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
29 void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
30 void *save_funccal __ARGS((void));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
31 void restore_funccal __ARGS((void *vfc));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
32 void prof_child_enter __ARGS((proftime_T *tm));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
33 void prof_child_exit __ARGS((proftime_T *tm));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
34 int eval_foldexpr __ARGS((char_u *arg, int *cp));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
35 void ex_let __ARGS((exarg_T *eap));
4429
7eafa576528e updated for version 7.3.963
Bram Moolenaar <bram@vim.org>
parents: 4397
diff changeset
36 void list_add_watch __ARGS((list_T *l, listwatch_T *lw));
7eafa576528e updated for version 7.3.963
Bram Moolenaar <bram@vim.org>
parents: 4397
diff changeset
37 void list_rem_watch __ARGS((list_T *l, listwatch_T *lwrem));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
38 void *eval_for_line __ARGS((char_u *arg, int *errp, char_u **nextcmdp, int skip));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
39 int next_for_item __ARGS((void *fi_void, char_u *arg));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
40 void free_for_info __ARGS((void *fi_void));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
41 void set_context_for_expression __ARGS((expand_T *xp, char_u *arg, cmdidx_T cmdidx));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
42 void ex_call __ARGS((exarg_T *eap));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
43 void ex_unlet __ARGS((exarg_T *eap));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
44 void ex_lockvar __ARGS((exarg_T *eap));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
45 int do_unlet __ARGS((char_u *name, int forceit));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
46 void del_menutrans_vars __ARGS((void));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
47 char_u *get_user_var_name __ARGS((expand_T *xp, int idx));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
48 list_T *list_alloc __ARGS((void));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
49 void list_unref __ARGS((list_T *l));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
50 void list_free __ARGS((list_T *l, int recurse));
3618
c052f3b79b99 updated for version 7.3.569
Bram Moolenaar <bram@vim.org>
parents: 3078
diff changeset
51 listitem_T *listitem_alloc __ARGS((void));
4617
21a99611149b updated for version 7.3.1056
Bram Moolenaar <bram@vim.org>
parents: 4429
diff changeset
52 void listitem_free __ARGS((listitem_T *item));
3618
c052f3b79b99 updated for version 7.3.569
Bram Moolenaar <bram@vim.org>
parents: 3078
diff changeset
53 void listitem_remove __ARGS((list_T *l, listitem_T *item));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
54 dictitem_T *dict_lookup __ARGS((hashitem_T *hi));
3618
c052f3b79b99 updated for version 7.3.569
Bram Moolenaar <bram@vim.org>
parents: 3078
diff changeset
55 listitem_T *list_find __ARGS((list_T *l, long n));
1733
5a7384b9ca66 updated for version 7.2-031
vimboss
parents: 1496
diff changeset
56 char_u *list_find_str __ARGS((list_T *l, long idx));
3618
c052f3b79b99 updated for version 7.3.569
Bram Moolenaar <bram@vim.org>
parents: 3078
diff changeset
57 void list_append __ARGS((list_T *l, listitem_T *item));
2050
afcf9db31561 updated for version 7.2.336
Bram Moolenaar <bram@zimbu.org>
parents: 1969
diff changeset
58 int list_append_tv __ARGS((list_T *l, typval_T *tv));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
59 int list_append_dict __ARGS((list_T *list, dict_T *dict));
1733
5a7384b9ca66 updated for version 7.2-031
vimboss
parents: 1496
diff changeset
60 int list_append_string __ARGS((list_T *l, char_u *str, int len));
3618
c052f3b79b99 updated for version 7.3.569
Bram Moolenaar <bram@vim.org>
parents: 3078
diff changeset
61 int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item));
6448
e13f8073c9f9 updated for version 7.4.553
Bram Moolenaar <bram@vim.org>
parents: 5871
diff changeset
62 void list_insert __ARGS((list_T *l, listitem_T *ni, listitem_T *item));
5871
b4ce0e1fb5a6 updated for version 7.4.278
Bram Moolenaar <bram@vim.org>
parents: 5608
diff changeset
63 void vimlist_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
64 int garbage_collect __ARGS((void));
6565
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6448
diff changeset
65 int set_ref_in_ht __ARGS((hashtab_T *ht, int copyID, list_stack_T **list_stack));
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6448
diff changeset
66 int set_ref_in_list __ARGS((list_T *l, int copyID, ht_stack_T **ht_stack));
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6448
diff changeset
67 int set_ref_in_item __ARGS((typval_T *tv, int copyID, ht_stack_T **ht_stack, list_stack_T **list_stack));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
68 dict_T *dict_alloc __ARGS((void));
3078
2cbde6bcc623 updated for version 7.3.311
Bram Moolenaar <bram@vim.org>
parents: 2280
diff changeset
69 void dict_unref __ARGS((dict_T *d));
4617
21a99611149b updated for version 7.3.1056
Bram Moolenaar <bram@vim.org>
parents: 4429
diff changeset
70 void dict_free __ARGS((dict_T *d, int recurse));
2050
afcf9db31561 updated for version 7.2.336
Bram Moolenaar <bram@zimbu.org>
parents: 1969
diff changeset
71 dictitem_T *dictitem_alloc __ARGS((char_u *key));
afcf9db31561 updated for version 7.2.336
Bram Moolenaar <bram@zimbu.org>
parents: 1969
diff changeset
72 void dictitem_free __ARGS((dictitem_T *item));
afcf9db31561 updated for version 7.2.336
Bram Moolenaar <bram@zimbu.org>
parents: 1969
diff changeset
73 int dict_add __ARGS((dict_T *d, dictitem_T *item));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
74 int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str));
2280
941ff1cd317a Add file save counter to undo information. Add undotree() function.
Bram Moolenaar <bram@vim.org>
parents: 2185
diff changeset
75 int dict_add_list __ARGS((dict_T *d, char *key, list_T *list));
2185
0c1e413c32f1 updated for version 7.2.443
Bram Moolenaar <bram@vim.org>
parents: 2050
diff changeset
76 dictitem_T *dict_find __ARGS((dict_T *d, char_u *key, int len));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
77 char_u *get_dict_string __ARGS((dict_T *d, char_u *key, int save));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
78 long get_dict_number __ARGS((dict_T *d, char_u *key));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
79 char_u *get_function_name __ARGS((expand_T *xp, int idx));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
80 char_u *get_expr_name __ARGS((expand_T *xp, int idx));
3618
c052f3b79b99 updated for version 7.3.569
Bram Moolenaar <bram@vim.org>
parents: 3078
diff changeset
81 int func_call __ARGS((char_u *name, typval_T *args, dict_T *selfdict, typval_T *rettv));
4825
208a6c04e6b8 updated for version 7.3.1159
Bram Moolenaar <bram@vim.org>
parents: 4641
diff changeset
82 void dict_extend __ARGS((dict_T *d1, dict_T *d2, char_u *action));
4074
16e8a09e8ab0 updated for version 7.3.791
Bram Moolenaar <bram@vim.org>
parents: 3709
diff changeset
83 void mzscheme_call_vim __ARGS((char_u *name, typval_T *args, typval_T *rettv));
4825
208a6c04e6b8 updated for version 7.3.1159
Bram Moolenaar <bram@vim.org>
parents: 4641
diff changeset
84 float_T vim_round __ARGS((float_T f));
1496
29c09fa57168 updated for version 7.1-211
vimboss
parents: 1151
diff changeset
85 long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop, long time_limit));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
86 void set_vim_var_nr __ARGS((int idx, long val));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
87 long get_vim_var_nr __ARGS((int idx));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
88 char_u *get_vim_var_str __ARGS((int idx));
1733
5a7384b9ca66 updated for version 7.2-031
vimboss
parents: 1496
diff changeset
89 list_T *get_vim_var_list __ARGS((int idx));
1969
2e915ea7110f updated for version 7.2-266
vimboss
parents: 1751
diff changeset
90 void set_vim_var_char __ARGS((int c));
1751
aeac63ad9430 updated for version 7.2-048
vimboss
parents: 1733
diff changeset
91 void set_vcount __ARGS((long count, long count1, int set_prevcount));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
92 void set_vim_var_string __ARGS((int idx, char_u *val, int len));
1733
5a7384b9ca66 updated for version 7.2-031
vimboss
parents: 1496
diff changeset
93 void set_vim_var_list __ARGS((int idx, list_T *val));
6909
676906c33768 patch 7.4.774
Bram Moolenaar <bram@vim.org>
parents: 6565
diff changeset
94 void set_vim_var_dict __ARGS((int idx, dict_T *val));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
95 void set_reg_var __ARGS((int c));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
96 char_u *v_exception __ARGS((char_u *oldval));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
97 char_u *v_throwpoint __ARGS((char_u *oldval));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
98 char_u *set_cmdarg __ARGS((exarg_T *eap, char_u *oldarg));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
99 void free_tv __ARGS((typval_T *varp));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
100 void clear_tv __ARGS((typval_T *varp));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
101 long get_tv_number_chk __ARGS((typval_T *varp, int *denote));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
102 char_u *get_tv_string_chk __ARGS((typval_T *varp));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
103 char_u *get_var_value __ARGS((char_u *name));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
104 void new_script_vars __ARGS((scid_T id));
3687
085f14642fe8 updated for version 7.3.603
Bram Moolenaar <bram@vim.org>
parents: 3618
diff changeset
105 void init_var_dict __ARGS((dict_T *dict, dictitem_T *dict_var, int scope));
4287
dc3efb6d5a08 updated for version 7.3.893
Bram Moolenaar <bram@vim.org>
parents: 4074
diff changeset
106 void unref_var_dict __ARGS((dict_T *dict));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
107 void vars_clear __ARGS((hashtab_T *ht));
2050
afcf9db31561 updated for version 7.2.336
Bram Moolenaar <bram@zimbu.org>
parents: 1969
diff changeset
108 void copy_tv __ARGS((typval_T *from, typval_T *to));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
109 void ex_echo __ARGS((exarg_T *eap));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
110 void ex_echohl __ARGS((exarg_T *eap));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
111 void ex_execute __ARGS((exarg_T *eap));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
112 void ex_function __ARGS((exarg_T *eap));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
113 void free_all_functions __ARGS((void));
4825
208a6c04e6b8 updated for version 7.3.1159
Bram Moolenaar <bram@vim.org>
parents: 4641
diff changeset
114 int translated_function_exists __ARGS((char_u *name));
208a6c04e6b8 updated for version 7.3.1159
Bram Moolenaar <bram@vim.org>
parents: 4641
diff changeset
115 char_u *get_expanded_name __ARGS((char_u *name, int check));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
116 void func_dump_profile __ARGS((FILE *fd));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
117 char_u *get_user_func_name __ARGS((expand_T *xp, int idx));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
118 void ex_delfunction __ARGS((exarg_T *eap));
3618
c052f3b79b99 updated for version 7.3.569
Bram Moolenaar <bram@vim.org>
parents: 3078
diff changeset
119 void func_unref __ARGS((char_u *name));
c052f3b79b99 updated for version 7.3.569
Bram Moolenaar <bram@vim.org>
parents: 3078
diff changeset
120 void func_ref __ARGS((char_u *name));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
121 void ex_return __ARGS((exarg_T *eap));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
122 int do_return __ARGS((exarg_T *eap, int reanimate, int is_cmd, void *rettv));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
123 void discard_pending_return __ARGS((void *rettv));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
124 char_u *get_return_cmd __ARGS((void *rettv));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
125 char_u *get_func_line __ARGS((int c, void *cookie, int indent));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
126 void func_line_start __ARGS((void *cookie));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
127 void func_line_exec __ARGS((void *cookie));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
128 void func_line_end __ARGS((void *cookie));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
129 int func_has_ended __ARGS((void *cookie));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
130 int func_has_abort __ARGS((void *cookie));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
131 int read_viminfo_varlist __ARGS((vir_T *virp, int writing));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
132 void write_viminfo_varlist __ARGS((FILE *fp));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
133 int store_session_globals __ARGS((FILE *fd));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
134 void last_set_msg __ARGS((scid_T scriptID));
1733
5a7384b9ca66 updated for version 7.2-031
vimboss
parents: 1496
diff changeset
135 void ex_oldfiles __ARGS((exarg_T *eap));
6935
4db70c94226b patch 7.4.786
Bram Moolenaar <bram@vim.org>
parents: 6909
diff changeset
136 void reset_v_option_vars __ARGS((void));
1151
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
137 int modify_fname __ARGS((char_u *src, int *usedlen, char_u **fnamep, char_u **bufp, int *fnamelen));
5d3eac49aed5 updated for version 7.1a
vimboss
parents: 1009
diff changeset
138 char_u *do_string_sub __ARGS((char_u *str, char_u *pat, char_u *sub, char_u *flags));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
139 /* vim: set ft=c : */