4 A Programmer's Text Editor
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) {
34 /* no local templates? do nothing */
35 if ((l = mp.long_op(mp.read_templates_file, d)) == NULL)
40 { 'label' => L("Template to insert:"),
49 /* insert the template content */
50 mp.insert(d, mp.templates[l[t]]);
53 mp.actions['open_templates_file'] = sub (d) {
54 local templates = glob(HOMEDIR ~ "/.mp_templates/*"); /* Treat as a dir */
56 if (size(templates) == 0) {
57 mp.open(HOMEDIR ~ ".mp_templates");
60 { 'label' => L("Template file to edit:"),
65 mp.open(templates[t[0]]);
69 /** default key bindings **/
71 /** action descriptions **/
73 mp.actdesc['insert_template'] = LL("Insert template...");
74 mp.actdesc['open_templates_file'] = LL("Edit templates file");
82 sub mp.read_templates_file(d)
83 /* reads the $HOME/.mp_templates or $HOME/.mp_templates/{global,syntax.name} file into mp.templates */
87 local read_template = sub(filename) {
88 if ((f = open(filename, "r")) == NULL)
92 if (regex(l, "/^%%/")) {
93 /* new template: store previous, if any */
100 k = sregex(mp.chomp(l), "/^%%/");
119 read_template(HOMEDIR ~ "/.mp_templates");
120 read_template(HOMEDIR ~ "/.mp_templates/global");
121 if (d.syntax != NULL) {
122 read_template(HOMEDIR ~ "/.mp_templates/" ~ d.syntax.id);
125 /* store last value */
131 /* returns keys(mp.templates), but in its original order */