In TUI's confirm, the default value is used when pressing ENTER.
[mp-5.x.git] / mp_misc.mpsl
blob2cd7b831016dcaaebd13d26bcb06c2011e6423ed
1 /*
3     Minimum Profit 5.x
4     A Programmer's Text Editor
6     Miscellaneous editor actions.
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['eval']      = sub (d) { 
31         local t = mp.form( [
32                 { 'label' => L("Code to execute:"),
33                   'type' => 'text',
34                   'history' => 'eval' }
35                 ]);
37         if(t != NULL)
38         {
39                 t = eval(t[0]);
41                 if(ERROR != NULL)
42                 {
43                         mp.alert(L("Error: ") ~ ERROR);
44                         ERROR = NULL;
45                 }
46                 else
47                 if(t != NULL)
48                         mp.alert(L("Exit value:\n") ~ t);
49         }
52 mp.actions['eval_doc']  = sub (d) {
53         local t = join("\n", d.txt.lines);
55         if(t != NULL)
56         {
57                 t = eval(t);
59                 if(ERROR != NULL)
60                 {
61                         mp.alert(L("Error: ") ~ ERROR);
63                         /* try to move the cursor to the line
64                            where the error was */
65                         local l;
67                         if((l = regex( [ '/, line /', '/[0-9]+/' ], ERROR)) != NULL)
68                                 mp.set_y(d, l[1]);
70                         ERROR = NULL;
71                 }
72         }
75 mp.actions['encoding']  = sub (d) {
76         local t = mp.form( [
77                 { 'label' => L("Encoding (utf-8, iso8859-1, etc.; empty, current locale)") ~ ':',
78                   'type' => 'text',
79                   'history' => 'encoding' }
80                 ]);
82         if(t != NULL)
83                 if(encoding(t[0]) == -1)
84                         mp.alert(L("Invalid encoding ") ~ t[0]);
87 mp.actions['zoom_in']   = sub (d) {
89         mp.config.font_size++;
90         mp.update_ui();
93 mp.actions['zoom_out']  = sub (d) {
95         if(mp.config.font_size > 4)
96         {
97                 mp.config.font_size--;
98                 mp.update_ui();
99         }
102 mp.actions['word_count'] = sub (d) {
103         local w = 0;
104         local a = mp.get_active_area(d);
106         mp.busy(1);
107         foreach(local l, a)
108                 w += size(mp.split_by_words(l));
109         mp.busy(0);
111         mp.alert(sprintf(L("Lines: %d Words: %d"), size(a), w));
114 mp.actions['about'] = sub (d) {
115         local msg = L(
116         "\nMinimum Profit %s - Programmer Text Editor\n\n"\
117         "Components: MPDM %s, MPSL %s\n\n"\
118         "Copyright (C) 1991-2007 Angel Ortega <angel@triptico.com>\n"\
119         "\n"\
120         "This program is free software; you can redistribute it and/or\n"\
121         "modify it under the terms of the GNU General Public License\n"\
122         "as published by the Free Software Foundation; either version 2\n"\
123         "of the License, or (at your option) any later version.\n"\
124         "\n"\
125         "This program is distributed in the hope that it will be useful,\n"\
126         "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"\
127         "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"\
128         "See the GNU General Public License for more details.\n"\
129         "\n"\
130         "You should have received a copy of the GNU General Public License\n"\
131         "along with this program; if not, write to the Free Software Foundation,\n"\
132         "Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n"\
133         "\n"\
134         "Home page: http://www.triptico.com/software/mp.html\n"\
135         "Mailing list: mp-subscribe@lists.triptico.com\n");
137         local mpdm = MPDM();
138         msg = sprintf(msg, mp.VERSION, mpdm.version, MPSL.VERSION);
140         d = mp.find_file_by_name("<about>");
142         if(d != -1)
143         {
144                 mp.active_i = d;
145                 d = mp.active();
146         }
147         else
148                 d = mp.new("<about>", split("\n", msg));
151 /* default key bindings */
153 mp.keycodes['escape']           = 'eval';
154 mp.keycodes['f12']              = 'zoom_in';
155 mp.keycodes['ctrl-kp-plus' ]    = 'zoom_in';
156 mp.keycodes['f11']              = 'zoom_out';
157 mp.keycodes['ctrl-kp-minus' ]   = 'zoom_out';
159 /* action descriptions */
161 mp.actdesc['eval']              = LL("Execute MPSL code...");
162 mp.actdesc['eval_doc']          = LL("Execute document as MPSL");
163 mp.actdesc['encoding']          = LL("Set charset encoding...");
164 mp.actdesc['zoom_in']           = LL("Bigger font");
165 mp.actdesc['zoom_out']          = LL("Smaller font");
166 mp.actdesc['word_count']        = LL("Count words");
167 mp.actdesc['about']             = LL("About...");
169 /* code */
171 sub dump(v)
172 /* overwrite of the MPSL dump() function, dumping over a text document */
174         local d = mp.open("<dump>");
176         mp.move_eof(d);
177         mp.insert(d, dumper(v));
178         d.txt.mod = 0;