nano.h 15.1 KB
Newer Older
Chris Allegretta's avatar
Chris Allegretta committed
1
/* $Id$ */
Chris Allegretta's avatar
Chris Allegretta committed
2
3
4
/**************************************************************************
 *   nano.h                                                               *
 *                                                                        *
5
 *   Copyright (C) 1999-2004 Chris Allegretta                             *
Chris Allegretta's avatar
Chris Allegretta committed
6
7
 *   This program is free software; you can redistribute it and/or modify *
 *   it under the terms of the GNU General Public License as published by *
8
 *   the Free Software Foundation; either version 2, or (at your option)  *
Chris Allegretta's avatar
Chris Allegretta committed
9
10
11
12
13
14
15
16
17
18
19
20
21
 *   any later version.                                                   *
 *                                                                        *
 *   This program is distributed in the hope that it will be useful,      *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of       *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
 *   GNU General Public License for more details.                         *
 *                                                                        *
 *   You should have received a copy of the GNU General Public License    *
 *   along with this program; if not, write to the Free Software          *
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.            *
 *                                                                        *
 **************************************************************************/

David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
22
23
24
#ifndef NANO_H
#define NANO_H 1

25
26
27
28
29
30
31
32
#ifdef __TANDEM
/* Tandem NonStop Kernel */
#include <floss.h>
#define NANO_ROOT_UID 65535
#else
#define NANO_ROOT_UID 0
#endif

Chris Allegretta's avatar
Chris Allegretta committed
33
34
35
36
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif

37
/* Macros for the flags long... */
Chris Allegretta's avatar
Chris Allegretta committed
38
39
#define SET(bit) flags |= bit
#define UNSET(bit) flags &= ~bit
40
#define ISSET(bit) ((flags & bit) != 0)
41
#define TOGGLE(bit) flags ^= bit
Chris Allegretta's avatar
Chris Allegretta committed
42

Chris Allegretta's avatar
Chris Allegretta committed
43
44
/* Define charalloc as a macro rather than duplicating code */
#define charalloc(howmuch) (char *)nmalloc((howmuch) * sizeof(char))
45
#define charealloc(ptr, howmuch) (char *)nrealloc(ptr, (howmuch) * sizeof(char))
46
#define charmove(dest, src, n) memmove(dest, src, (n) * sizeof(char))
47
48
49
#ifdef BROKEN_REGEXEC
#define regexec(preg, string, nmatch, pmatch, eflags) regexec_safe(preg, string, nmatch, pmatch, eflags)
#endif
Chris Allegretta's avatar
Chris Allegretta committed
50

51
#ifndef NANO_SMALL
52
53
/* For the backup file copy ... */
#define COPYFILEBLOCKSIZE 1024
54
#endif
Chris Allegretta's avatar
Chris Allegretta committed
55

56
#ifdef USE_SLANG
57
/* Slang support enabled. */
Chris Allegretta's avatar
Chris Allegretta committed
58
#include <slcurses.h>
59
/* Slang curses emulation brain damage, part 2: Slang doesn't define the
60
 * curses equivalents of the Insert or Delete keys. */
61
#define KEY_DC SL_KEY_DELETE
62
#define KEY_IC SL_KEY_IC
Chris Allegretta's avatar
Chris Allegretta committed
63
64
#elif defined(HAVE_NCURSES_H)
#include <ncurses.h>
65
#else /* Uh oh. */
66
#include <curses.h>
Chris Allegretta's avatar
Chris Allegretta committed
67
68
#endif /* CURSES_H */

69
70
71
72
73
#ifdef ENABLE_NLS
#  ifdef HAVE_LIBINTL_H
#    include <libintl.h>
#  endif
#  define _(string) gettext(string)
74
#  define P_(singular, plural, number) ngettext(singular, plural, number)
75
76
#else
#  define _(string) (string)
77
#  define P_(singular, plural, number) (number == 1 ? singular : plural)
Chris Allegretta's avatar
Chris Allegretta committed
78
#endif
79
80
81
#define gettext_noop(string) (string)
#define N_(string) gettext_noop(string)
	/* Mark a string that will be sent to gettext later. */
Chris Allegretta's avatar
Chris Allegretta committed
82

83
84
#include <sys/types.h>
#include <sys/stat.h>
Chris Allegretta's avatar
Chris Allegretta committed
85
86
#include "config.h"

87
/* If no snprintf()/vsnprintf(), use the versions from glib. */
Chris Allegretta's avatar
Chris Allegretta committed
88
89
90
#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)
#include <glib.h>
# ifndef HAVE_SNPRINTF
91
#  define snprintf g_snprintf
Chris Allegretta's avatar
Chris Allegretta committed
92
93
# endif
# ifndef HAVE_VSNPRINTF
94
#  define vsnprintf g_vsnprintf
Chris Allegretta's avatar
Chris Allegretta committed
95
96
97
# endif
#endif

98
99
/* If no isblank(), strcasecmp(), strncasecmp(), strcasestr(), or
 * strnlen(), use the versions we have. */
100
101
102
103
#ifndef HAVE_ISBLANK
#define isblank is_blank_char
#endif

104
#ifndef HAVE_STRCASECMP
105
#define strcasecmp nstricmp
106
107
108
#endif

#ifndef HAVE_STRNCASECMP
109
#define strncasecmp nstrnicmp
110
111
#endif

112
113
114
115
#ifndef HAVE_STRCASESTR
#define strcasestr nstristr
#endif

116
117
118
119
#ifndef HAVE_STRNLEN
#define strnlen nstrnlen
#endif

David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
120
/* Assume ERR is defined as -1.  To avoid duplicate case values when
121
122
123
 * some key definitions are missing, we have to set all of these, and
 * all of the special sentinel values below, to different negative
 * values other than -1. */
124

Chris Allegretta's avatar
Chris Allegretta committed
125
#define VERMSG "GNU nano " VERSION
Chris Allegretta's avatar
Chris Allegretta committed
126

127
128
/* If we aren't using ncurses, turn the mouse support off, as it's
 * ncurses-specific. */
129
130
131
132
#ifndef NCURSES_MOUSE_VERSION
#define DISABLE_MOUSE 1
#endif

133
134
135
136
#if defined(DISABLE_WRAPPING) && defined(DISABLE_JUSTIFY)
#define DISABLE_WRAPJUSTIFY 1
#endif

137
/* Structure types. */
Chris Allegretta's avatar
Chris Allegretta committed
138
139
typedef struct filestruct {
    char *data;
140
141
142
    struct filestruct *next;	/* Next node. */
    struct filestruct *prev;	/* Previous node. */
    int lineno;			/* The line number. */
143
} filestruct;
144

145
#ifdef ENABLE_MULTIBUFFER
146
147
typedef struct openfilestruct {
    char *filename;
148
149
150
#ifndef NANO_SMALL
    struct stat originalfilestat;
#endif
151
152
153
154
    struct openfilestruct *next;	/* Next node. */
    struct openfilestruct *prev;	/* Previous node. */
    struct filestruct *fileage;	/* Current file. */
    struct filestruct *filebot;	/* Current file's last line. */
Chris Allegretta's avatar
Chris Allegretta committed
155
156
#ifndef NANO_SMALL
    struct filestruct *file_mark_beginbuf;
157
158
159
160
				/* Current file's beginning marked
				 * line. */
    int file_mark_beginx;	/* Current file's beginning marked
				 * line's x-coordinate position. */
Chris Allegretta's avatar
Chris Allegretta committed
161
#endif
162
163
164
165
    int file_current_x;		/* Current file's x-coordinate
				 * position. */
    int file_current_y;		/* Current file's y-coordinate
				 * position. */
166
    long file_flags;		/* Current file's flags: modification
167
168
				 * status (and marking status, if
				 * available). */
169
    size_t file_placewewant;	/* Current file's place we want. */
170
171
172
173
    int file_totlines;		/* Current file's total number of
				 * lines. */
    long file_totsize;		/* Current file's total size. */
    int file_lineno;		/* Current file's line number. */
174
} openfilestruct;
175
176
#endif

Chris Allegretta's avatar
Chris Allegretta committed
177
typedef struct shortcut {
178
    /* Key values that aren't used should be set to NANO_NO_KEY. */
179
    int ctrlval;	/* Special sentinel key or control key we want
180
			 * bound. */
181
182
183
    int metaval;	/* Meta key we want bound. */
    int funcval;	/* Function key we want bound. */
    int miscval;	/* Other Meta key we want bound. */
David Lawrence Ramsey's avatar
   
David Lawrence Ramsey committed
184
    int viewok;		/* Is this function legal in view mode? */
185
    void (*func)(void);	/* Function to call when we catch this key. */
186
    const char *desc;	/* Description, e.g. "Page Up". */
187
#ifndef DISABLE_HELP
188
    const char *help;	/* Help file entry text. */
189
#endif
David Lawrence Ramsey's avatar
   
David Lawrence Ramsey committed
190
    struct shortcut *next;
Chris Allegretta's avatar
Chris Allegretta committed
191
192
} shortcut;

Chris Allegretta's avatar
Chris Allegretta committed
193
#ifndef NANO_SMALL
194
typedef struct toggle {
195
196
   int val;		/* Sequence to toggle the key.  Should only need
			 * one. */
197
   const char *desc;	/* Description for when toggle is, uh, toggled,
198
199
			 * e.g. "Cut to end"; we'll append Enabled or
			 * Disabled. */
200
   long flag;		/* What flag actually gets toggled. */
201
   struct toggle *next;
202
} toggle;
Chris Allegretta's avatar
Chris Allegretta committed
203
#endif /* !NANO_SMALL */
204

205
206
#ifdef ENABLE_NANORC
typedef struct rcoption {
207
   const char *name;
208
   long flag;
209
210
211
} rcoption;
#endif /* ENABLE_NANORC */

212
213
214
#ifdef ENABLE_COLOR

typedef struct colortype {
215
216
217
218
    int fg;			/* fg color */
    int bg;			/* bg color */
    int bright;			/* Is this color A_BOLD? */
    int pairnum;		/* Color pair number used for this fg/bg */
219
220
    regex_t start;		/* Start (or all) of the regex string */
    regex_t *end;		/* End of the regex string */
221
222
223
    struct colortype *next;
} colortype;

224
typedef struct exttype {
225
    regex_t val;		/* The extensions that match this syntax. */
226
227
228
229
230
    struct exttype *next;
} exttype;

typedef struct syntaxtype {
    char *desc;			/* Name of this syntax type */
Chris Allegretta's avatar
Chris Allegretta committed
231
    exttype *extensions;	/* List of extensions that this applies to */
232
233
234
235
    colortype *color;		/* color struct for this syntax */
    struct syntaxtype *next;
} syntaxtype;

236
237
#endif /* ENABLE_COLOR */

238
239
240
241
242
243
244
#ifndef NANO_SMALL
typedef struct historytype {
    struct historytype *next;
    struct historytype *prev;
    char *data;
} historytype;
typedef struct historyheadtype {
245
246
247
248
    struct historytype *next;	/* Keep *next and *prev members
				 * together. */
    struct historytype *prev;	/* And in same order as in
				 * historytype. */
249
250
251
252
253
254
    struct historytype *tail;
    struct historytype *current;
    int count;
    int len;
} historyheadtype;
#endif /* !NANO_SMALL */
255

256
257
/* Bitwise flags so we can save space (or more correctly, not waste
 * it). */
Chris Allegretta's avatar
Chris Allegretta committed
258
#define MODIFIED		(1<<0)
259
260
261
262
263
264
265
266
267
268
269
#define CASE_SENSITIVE		(1<<1)
#define MARK_ISSET		(1<<2)
#define CONSTUPDATE		(1<<3)
#define NO_HELP			(1<<4)
#define NOFOLLOW_SYMLINKS	(1<<5)
#define SUSPEND			(1<<6)
#define NO_WRAP			(1<<7)
#define AUTOINDENT		(1<<8)
#define VIEW_MODE		(1<<9)
#define USE_MOUSE		(1<<10)
#define USE_REGEXP		(1<<11)
270
#define TEMP_FILE		(1<<12)
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
#define CUT_TO_END		(1<<13)
#define REVERSE_SEARCH		(1<<14)
#define MULTIBUFFER		(1<<15)
#define DOS_FILE		(1<<16)
#define MAC_FILE		(1<<17)
#define SMOOTHSCROLL		(1<<18)
#define DISABLE_CURPOS		(1<<19)	/* Damn, we still need it. */
#define REBIND_DELETE		(1<<20)
#define NO_CONVERT		(1<<21)
#define BACKUP_FILE		(1<<22)
#define NO_RCFILE		(1<<23)
#define COLOR_SYNTAX		(1<<24)
#define PRESERVE		(1<<25)
#define HISTORY_CHANGED		(1<<26)
#define HISTORYLOG		(1<<27)
#define RESTRICTED		(1<<28)
#define SMART_HOME		(1<<29)
288
#define WHITESPACE_DISPLAY	(1<<30)
Chris Allegretta's avatar
Chris Allegretta committed
289

290
/* Control key sequences, changing these would be very very bad. */
Chris Allegretta's avatar
Chris Allegretta committed
291
#define NANO_CONTROL_SPACE 0
Chris Allegretta's avatar
Chris Allegretta committed
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
#define NANO_CONTROL_A 1
#define NANO_CONTROL_B 2
#define NANO_CONTROL_C 3
#define NANO_CONTROL_D 4
#define NANO_CONTROL_E 5
#define NANO_CONTROL_F 6
#define NANO_CONTROL_G 7
#define NANO_CONTROL_H 8
#define NANO_CONTROL_I 9
#define NANO_CONTROL_J 10
#define NANO_CONTROL_K 11
#define NANO_CONTROL_L 12
#define NANO_CONTROL_M 13
#define NANO_CONTROL_N 14
#define NANO_CONTROL_O 15
#define NANO_CONTROL_P 16
#define NANO_CONTROL_Q 17
#define NANO_CONTROL_R 18
#define NANO_CONTROL_S 19
#define NANO_CONTROL_T 20
#define NANO_CONTROL_U 21
#define NANO_CONTROL_V 22
#define NANO_CONTROL_W 23
#define NANO_CONTROL_X 24
#define NANO_CONTROL_Y 25
#define NANO_CONTROL_Z 26
318
#define NANO_CONTROL_3 27
Chris Allegretta's avatar
Chris Allegretta committed
319
320
321
322
#define NANO_CONTROL_4 28
#define NANO_CONTROL_5 29
#define NANO_CONTROL_6 30
#define NANO_CONTROL_7 31
323
#define NANO_CONTROL_8 127
Chris Allegretta's avatar
Chris Allegretta committed
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350

#define NANO_ALT_A 'a'
#define NANO_ALT_B 'b'
#define NANO_ALT_C 'c'
#define NANO_ALT_D 'd'
#define NANO_ALT_E 'e'
#define NANO_ALT_F 'f'
#define NANO_ALT_G 'g'
#define NANO_ALT_H 'h'
#define NANO_ALT_I 'i'
#define NANO_ALT_J 'j'
#define NANO_ALT_K 'k'
#define NANO_ALT_L 'l'
#define NANO_ALT_M 'm'
#define NANO_ALT_N 'n'
#define NANO_ALT_O 'o'
#define NANO_ALT_P 'p'
#define NANO_ALT_Q 'q'
#define NANO_ALT_R 'r'
#define NANO_ALT_S 's'
#define NANO_ALT_T 't'
#define NANO_ALT_U 'u'
#define NANO_ALT_V 'v'
#define NANO_ALT_W 'w'
#define NANO_ALT_X 'x'
#define NANO_ALT_Y 'y'
#define NANO_ALT_Z 'z'
351
352
#define NANO_ALT_PERIOD '.'
#define NANO_ALT_COMMA ','
353
354
#define NANO_ALT_LCARAT '<'
#define NANO_ALT_RCARAT '>'
355
#define NANO_ALT_RBRACKET ']'
356
#define NANO_ALT_SPACE ' '
Chris Allegretta's avatar
Chris Allegretta committed
357

358
/* Some semi-changeable keybindings; don't play with these unless you're
359
 * sure you know what you're doing.  Assume ERR is defined as -1. */
Chris Allegretta's avatar
Chris Allegretta committed
360

David Lawrence Ramsey's avatar
   
David Lawrence Ramsey committed
361
/* No key at all. */
362
#define NANO_NO_KEY		-2
David Lawrence Ramsey's avatar
   
David Lawrence Ramsey committed
363

364
365
/* Special sentinel key used for search/replace history. */
#define NANO_HISTORY_KEY	-3
David Lawrence Ramsey's avatar
   
David Lawrence Ramsey committed
366
367

/* Normal keys. */
368
369
#define NANO_XON_KEY		NANO_CONTROL_Q
#define NANO_XOFF_KEY		NANO_CONTROL_S
Chris Allegretta's avatar
Chris Allegretta committed
370
371
#define NANO_INSERTFILE_KEY	NANO_CONTROL_R
#define NANO_INSERTFILE_FKEY	KEY_F(5)
David Lawrence Ramsey's avatar
   
David Lawrence Ramsey committed
372
373
#define NANO_EXIT_KEY		NANO_CONTROL_X
#define NANO_EXIT_FKEY		KEY_F(2)
Chris Allegretta's avatar
Chris Allegretta committed
374
375
376
377
378
379
380
381
382
#define NANO_WRITEOUT_KEY	NANO_CONTROL_O
#define NANO_WRITEOUT_FKEY	KEY_F(3)
#define NANO_GOTO_KEY		NANO_CONTROL_7
#define NANO_GOTO_FKEY		KEY_F(13)
#define NANO_ALT_GOTO_KEY	NANO_ALT_G
#define NANO_HELP_KEY		NANO_CONTROL_G
#define NANO_HELP_FKEY		KEY_F(1)
#define NANO_WHEREIS_KEY	NANO_CONTROL_W
#define NANO_WHEREIS_FKEY	KEY_F(6)
383
#define NANO_WHEREIS_NEXT_KEY	NANO_ALT_W
Chris Allegretta's avatar
Chris Allegretta committed
384
385
386
#define NANO_REPLACE_KEY	NANO_CONTROL_4
#define NANO_REPLACE_FKEY	KEY_F(14)
#define NANO_ALT_REPLACE_KEY	NANO_ALT_R
387
#define NANO_OTHERSEARCH_KEY	NANO_CONTROL_R
Chris Allegretta's avatar
Chris Allegretta committed
388
389
390
391
392
393
394
395
396
397
398
399
400
#define NANO_PREVPAGE_KEY	NANO_CONTROL_Y
#define NANO_PREVPAGE_FKEY	KEY_F(7)
#define NANO_NEXTPAGE_KEY	NANO_CONTROL_V
#define NANO_NEXTPAGE_FKEY	KEY_F(8)
#define NANO_CUT_KEY		NANO_CONTROL_K
#define NANO_CUT_FKEY		KEY_F(9)
#define NANO_UNCUT_KEY		NANO_CONTROL_U
#define NANO_UNCUT_FKEY		KEY_F(10)
#define NANO_CURSORPOS_KEY	NANO_CONTROL_C
#define NANO_CURSORPOS_FKEY	KEY_F(11)
#define NANO_SPELL_KEY		NANO_CONTROL_T
#define NANO_SPELL_FKEY		KEY_F(12)
#define NANO_FIRSTLINE_KEY	NANO_PREVPAGE_KEY
401
#define NANO_FIRSTLINE_FKEY	NANO_PREVPAGE_FKEY
Chris Allegretta's avatar
Chris Allegretta committed
402
#define NANO_LASTLINE_KEY	NANO_NEXTPAGE_KEY
403
#define NANO_LASTLINE_FKEY	NANO_NEXTPAGE_FKEY
Chris Allegretta's avatar
Chris Allegretta committed
404
405
406
407
#define NANO_CANCEL_KEY		NANO_CONTROL_C
#define NANO_REFRESH_KEY	NANO_CONTROL_L
#define NANO_JUSTIFY_KEY	NANO_CONTROL_J
#define NANO_JUSTIFY_FKEY	KEY_F(4)
408
409
#define NANO_UNJUSTIFY_KEY	NANO_UNCUT_KEY	/* Same key as uncut. */
#define NANO_UNJUSTIFY_FKEY	NANO_UNCUT_FKEY	/* Same key as uncut. */
410
411
#define NANO_PREVLINE_KEY	NANO_CONTROL_P
#define NANO_NEXTLINE_KEY	NANO_CONTROL_N
Chris Allegretta's avatar
Chris Allegretta committed
412
413
414
#define NANO_FORWARD_KEY	NANO_CONTROL_F
#define NANO_BACK_KEY		NANO_CONTROL_B
#define NANO_MARK_KEY		NANO_CONTROL_6
415
#define NANO_ALT_MARK_KEY	NANO_ALT_A
Chris Allegretta's avatar
Chris Allegretta committed
416
417
418
419
420
421
422
#define NANO_HOME_KEY		NANO_CONTROL_A
#define NANO_END_KEY		NANO_CONTROL_E
#define NANO_DELETE_KEY		NANO_CONTROL_D
#define NANO_BACKSPACE_KEY	NANO_CONTROL_H
#define NANO_TAB_KEY		NANO_CONTROL_I
#define NANO_SUSPEND_KEY	NANO_CONTROL_Z
#define NANO_ENTER_KEY		NANO_CONTROL_M
423
#define NANO_FROMSEARCHTOGOTO_KEY NANO_CONTROL_T
Chris Allegretta's avatar
Chris Allegretta committed
424
#define NANO_TOFILES_KEY	NANO_CONTROL_T
425
#define NANO_APPEND_KEY		NANO_ALT_A
426
#define NANO_PREPEND_KEY	NANO_ALT_P
427
428
#define NANO_OPENPREV_KEY	NANO_ALT_LCARAT
#define NANO_OPENNEXT_KEY	NANO_ALT_RCARAT
429
430
#define NANO_OPENPREV_ALTKEY	NANO_ALT_COMMA
#define NANO_OPENNEXT_ALTKEY	NANO_ALT_PERIOD
431
#define NANO_BRACKET_KEY	NANO_ALT_RBRACKET
432
#define NANO_EXTCMD_KEY		NANO_CONTROL_X
433
434
#define NANO_NEXTWORD_KEY	NANO_CONTROL_SPACE
#define NANO_PREVWORD_KEY	NANO_ALT_SPACE
435
436
#define NANO_PARABEGIN_KEY	NANO_CONTROL_W
#define NANO_PARAEND_KEY	NANO_CONTROL_O
437
#define NANO_FULLJUSTIFY_KEY	NANO_CONTROL_U
438
#define NANO_VERBATIM_KEY	NANO_ALT_V
Chris Allegretta's avatar
Chris Allegretta committed
439

Chris Allegretta's avatar
Chris Allegretta committed
440
441
#ifndef NANO_SMALL
/* Toggles do not exist with NANO_SMALL. */
442
443
444
445
446
447
#define TOGGLE_CONST_KEY	NANO_ALT_C
#define TOGGLE_AUTOINDENT_KEY	NANO_ALT_I
#define TOGGLE_SUSPEND_KEY	NANO_ALT_Z
#define TOGGLE_NOHELP_KEY	NANO_ALT_X
#define TOGGLE_MOUSE_KEY	NANO_ALT_M
#define TOGGLE_CUTTOEND_KEY	NANO_ALT_K
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
448
#define TOGGLE_REGEXP_KEY	NANO_ALT_R
449
#define TOGGLE_WRAP_KEY		NANO_ALT_L
450
#define TOGGLE_BACKWARDS_KEY	NANO_ALT_B
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
451
#define TOGGLE_CASE_KEY		NANO_ALT_C
452
#define TOGGLE_MULTIBUFFER_KEY	NANO_ALT_F
453
#define TOGGLE_DOS_KEY		NANO_ALT_D
454
#define TOGGLE_MAC_KEY		NANO_ALT_O
455
#define TOGGLE_SMOOTH_KEY	NANO_ALT_S
456
#define TOGGLE_NOCONVERT_KEY	NANO_ALT_N
457
#define TOGGLE_BACKUP_KEY	NANO_ALT_B
458
#define TOGGLE_SYNTAX_KEY	NANO_ALT_Y
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
459
#define TOGGLE_SMARTHOME_KEY	NANO_ALT_H
460
#define TOGGLE_WHITESPACE_KEY	NANO_ALT_P
Chris Allegretta's avatar
Chris Allegretta committed
461
#endif /* !NANO_SMALL */
462

463
#define MAIN_VISIBLE 12
Chris Allegretta's avatar
Chris Allegretta committed
464

465
466
#define VIEW TRUE
#define NOVIEW FALSE
Chris Allegretta's avatar
Chris Allegretta committed
467

468
469
470
471
typedef enum {
    JUSTIFY, BEGIN, END
} justbegend;

472
473
474
475
typedef enum {
    UP, DOWN
} updown;

476
477
478
479
typedef enum {
    TOP, CENTER, NONE
} topmidnone;

480
/* Minimum editor window rows required for nano to work correctly. */
481
482
#define MIN_EDITOR_ROWS 3

483
/* Minimum editor window cols required for nano to work correctly. */
484
485
#define MIN_EDITOR_COLS 10

Chris Allegretta's avatar
Chris Allegretta committed
486
/* Default number of characters from end-of-line where text wrapping
487
 * occurs. */
488
489
#define CHARS_FROM_EOL 8

Chris Allegretta's avatar
Chris Allegretta committed
490
/* Maximum number of search history strings saved, same value used for
491
 * replace history. */
492
#define MAX_SEARCH_HISTORY 100
Chris Allegretta's avatar
Chris Allegretta committed
493

Chris Allegretta's avatar
Chris Allegretta committed
494
#endif /* !NANO_H */