Updated language files.
[mp-5.x.git] / mp_templates.mpsl
blob409529092d7dc6c4bc5d9a7d5c54021f731fbf15
1 /*
3     Minimum Profit 5.x
4     A Programmer's Text Editor
6     Templates.
8     Copyright (C) 1991-2007 Angel Ortega <angel@triptico.com>
10     This program is free software; you can redistribute it and/or
11     modify it under the terms of the GNU General Public License
12     as published by the Free Software Foundation; either version 2
13     of the License, or (at your option) any later version.
15     This program is distributed in the hope that it will be useful,
16     but WITHOUT ANY WARRANTY; without even the implied warranty of
17     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18     GNU General Public License for more details.
20     You should have received a copy of the GNU General Public License
21     along with this program; if not, write to the Free Software
22     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24     http://www.triptico.com
28 /** editor actions **/
30 mp.actions['insert_template']    = sub(d) {
32         local l, t;
34         /* no local templates? do nothing */
35         if ((l = mp.long_op(mp.read_templates_file)) == NULL)
36                 return;
38         /* select one */
39         if ((t = mp.form( [
40                 { 'label'       => L("Template to insert:"),
41                   'type'        => 'list',
42                   'list'        => l }
43                 ])) == NULL)
44                 return;
45         t = t[0];
47         mp.store_undo(d);
49         /* insert the template content */
50         mp.insert(d, mp.templates[l[t]]);
53 /** default key bindings **/
55 /** action descriptions **/
57 mp.actdesc['insert_template']   = LL("Insert template...");
59 /** data **/
61 mp.templates = {};
63 /** code **/
65 sub mp.read_templates_file()
66 /* reads the $HOME/.mp_templates file into mp.templates */
68         local f, l, k, v, n;
70         /* doesn't exist? just return */
71         if ((f = open(HOMEDIR ~ "/.mp_templates", "r")) == NULL)
72                 return NULL;
74         k = NULL;
75         v = NULL;
76         n = [];
78         /* reset */
79         mp.templates = {};
81         while (l = read(f)) {
82                 if (regex("/^%%/", l)) {
83                         /* new template: store previous, if any */
84                         if (k && v) {
85                                 push(n, k);
86                                 mp.templates[k] = v;
87                         }
89                         /* strip prefix */
90                         k = sregex("/^%%/", mp.chomp(l), NULL);
91                         v = NULL;
92                 }
93                 else {
94                         /* add to v */
95                         v = v ~ l;
96                 }
97         }
99         /* store last value */
100         if (k && v) {
101                 push(n, k);
102                 mp.templates[k] = v;
103         }
105         close(f);
107         /* returns keys(mp.templates), but in its original order */
108         return n;