summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2010-11-22 11:34:29 +0000
committer <>2013-04-03 16:08:29 +0000
commit8b74abeb02c01ddc768c465a826360cf33cec063 (patch)
tree8047ac5b4a29496a9417d019641156e9cb1f9797
downloadnano-tarball-8b74abeb02c01ddc768c465a826360cf33cec063.tar.gz
Imported from /home/lorry/working-area/delta_nano-tarball/nano-2.2.6.tar.gz.nano-2.2.6baserock/morph
-rw-r--r--ABOUT-NLS435
-rw-r--r--AUTHORS43
-rw-r--r--BUGS161
-rw-r--r--COPYING676
-rw-r--r--COPYING.DOC397
-rw-r--r--ChangeLog1046
-rw-r--r--ChangeLog.pre-2.18369
-rw-r--r--INSTALL365
-rw-r--r--Makefile.am11
-rw-r--r--Makefile.in729
-rw-r--r--NEWS1318
-rw-r--r--README72
-rw-r--r--README.SVN87
-rw-r--r--THANKS62
-rw-r--r--TODO99
-rw-r--r--UPGRADE111
-rw-r--r--aclocal.m4960
-rwxr-xr-xconfig.guess1501
-rw-r--r--config.h.in282
-rwxr-xr-xconfig.rpath513
-rwxr-xr-xconfig.sub1705
-rwxr-xr-xconfigure9911
-rw-r--r--configure.ac616
-rwxr-xr-xdepcomp630
-rw-r--r--doc/Makefile.am7
-rw-r--r--doc/Makefile.in562
-rw-r--r--doc/faq.html331
-rw-r--r--doc/man/Makefile.am35
-rw-r--r--doc/man/Makefile.in725
-rw-r--r--doc/man/fr/Makefile.am33
-rw-r--r--doc/man/fr/Makefile.in521
-rw-r--r--doc/man/fr/nano.1326
-rw-r--r--doc/man/fr/nano.1.html560
-rw-r--r--doc/man/fr/nanorc.5376
-rw-r--r--doc/man/fr/nanorc.5.html590
-rw-r--r--doc/man/fr/rnano.1154
-rw-r--r--doc/man/fr/rnano.1.html278
-rw-r--r--doc/man/nano.1262
-rw-r--r--doc/man/nano.1.html468
-rw-r--r--doc/man/nanorc.5567
-rw-r--r--doc/man/nanorc.5.html959
-rw-r--r--doc/man/rnano.198
-rw-r--r--doc/man/rnano.1.html219
-rw-r--r--doc/nanorc.sample.in312
-rw-r--r--doc/syntax/Makefile.am30
-rw-r--r--doc/syntax/Makefile.in432
-rw-r--r--doc/syntax/asm.nanorc17
-rw-r--r--doc/syntax/awk.nanorc38
-rw-r--r--doc/syntax/c.nanorc30
-rw-r--r--doc/syntax/cmake.nanorc19
-rw-r--r--doc/syntax/css.nanorc9
-rw-r--r--doc/syntax/debian.nanorc20
-rw-r--r--doc/syntax/fortran.nanorc41
-rw-r--r--doc/syntax/gentoo.nanorc55
-rw-r--r--doc/syntax/groff.nanorc24
-rw-r--r--doc/syntax/html.nanorc5
-rw-r--r--doc/syntax/java.nanorc12
-rw-r--r--doc/syntax/makefile.nanorc8
-rw-r--r--doc/syntax/man.nanorc9
-rw-r--r--doc/syntax/mgp.nanorc8
-rw-r--r--doc/syntax/mutt.nanorc4
-rw-r--r--doc/syntax/nanorc.nanorc16
-rw-r--r--doc/syntax/objc.nanorc41
-rw-r--r--doc/syntax/ocaml.nanorc27
-rw-r--r--doc/syntax/patch.nanorc10
-rw-r--r--doc/syntax/perl.nanorc12
-rw-r--r--doc/syntax/php.nanorc30
-rw-r--r--doc/syntax/pov.nanorc15
-rw-r--r--doc/syntax/python.nanorc10
-rw-r--r--doc/syntax/ruby.nanorc31
-rw-r--r--doc/syntax/sh.nanorc14
-rw-r--r--doc/syntax/tcl.nanorc16
-rw-r--r--doc/syntax/tex.nanorc6
-rw-r--r--doc/syntax/xml.nanorc9
-rw-r--r--doc/texinfo/Makefile.am10
-rw-r--r--doc/texinfo/Makefile.in632
-rw-r--r--doc/texinfo/nano.html867
-rw-r--r--doc/texinfo/nano.info884
-rw-r--r--doc/texinfo/nano.texi885
-rw-r--r--doc/texinfo/texinfo.tex9291
-rwxr-xr-xinstall-sh520
-rw-r--r--m4/ChangeLog29
-rw-r--r--m4/Makefile.am5
-rw-r--r--m4/Makefile.in360
-rw-r--r--m4/ac_define_dir.m434
-rw-r--r--m4/codeset.m423
-rw-r--r--m4/gettext.m4587
-rw-r--r--m4/glib-2.0.m4215
-rw-r--r--m4/glibc21.m432
-rw-r--r--m4/iconv.m4103
-rw-r--r--m4/intdiv0.m472
-rw-r--r--m4/inttypes-pri.m432
-rw-r--r--m4/inttypes.m427
-rw-r--r--m4/inttypes_h.m428
-rw-r--r--m4/isc-posix.m426
-rw-r--r--m4/lcmessage.m432
-rw-r--r--m4/lib-ld.m497
-rw-r--r--m4/lib-link.m4554
-rw-r--r--m4/lib-prefix.m4148
-rw-r--r--m4/progtest.m459
-rw-r--r--m4/stdint_h.m428
-rw-r--r--m4/uintmax_t.m429
-rw-r--r--m4/ulonglong.m423
-rwxr-xr-xmissing376
-rwxr-xr-xmkinstalldirs162
-rw-r--r--nano.spec39
-rw-r--r--nano.spec.in39
-rw-r--r--po/ChangeLog976
-rw-r--r--po/LINGUAS2
-rw-r--r--po/Makefile.in.in317
-rw-r--r--po/Makevars25
-rw-r--r--po/POTFILES.in14
-rw-r--r--po/Rules-quot42
-rw-r--r--po/bg.gmobin0 -> 44632 bytes
-rw-r--r--po/bg.po2186
-rw-r--r--po/boldquot.sed10
-rw-r--r--po/ca.gmobin0 -> 42795 bytes
-rw-r--r--po/ca.po2509
-rw-r--r--po/cs.gmobin0 -> 45169 bytes
-rw-r--r--po/cs.po2114
-rw-r--r--po/da.gmobin0 -> 40869 bytes
-rw-r--r--po/da.po2497
-rw-r--r--po/de.gmobin0 -> 43502 bytes
-rw-r--r--po/de.po2473
-rw-r--r--po/en@boldquot.header25
-rw-r--r--po/en@quot.header22
-rw-r--r--po/es.gmobin0 -> 34857 bytes
-rw-r--r--po/es.po2149
-rw-r--r--po/eu.gmobin0 -> 30378 bytes
-rw-r--r--po/eu.po2575
-rw-r--r--po/fi.gmobin0 -> 42295 bytes
-rw-r--r--po/fi.po2614
-rw-r--r--po/fr.gmobin0 -> 44120 bytes
-rw-r--r--po/fr.po3425
-rw-r--r--po/ga.gmobin0 -> 40900 bytes
-rw-r--r--po/ga.po2213
-rw-r--r--po/gl.gmobin0 -> 39445 bytes
-rw-r--r--po/gl.po2099
-rw-r--r--po/hu.gmobin0 -> 43398 bytes
-rw-r--r--po/hu.po2120
-rw-r--r--po/id.gmobin0 -> 11978 bytes
-rw-r--r--po/id.po2552
-rw-r--r--po/insert-header.sin23
-rw-r--r--po/it.gmobin0 -> 41599 bytes
-rw-r--r--po/it.po2163
-rw-r--r--po/ms.gmobin0 -> 38121 bytes
-rw-r--r--po/ms.po2075
-rw-r--r--po/nano.pot1929
-rw-r--r--po/nb.gmobin0 -> 33080 bytes
-rw-r--r--po/nb.po2175
-rw-r--r--po/nl.gmobin0 -> 41816 bytes
-rw-r--r--po/nl.po2099
-rw-r--r--po/nn.gmobin0 -> 6374 bytes
-rw-r--r--po/nn.po2520
-rw-r--r--po/pl.gmobin0 -> 42406 bytes
-rw-r--r--po/pl.po2108
-rw-r--r--po/pt_BR.gmobin0 -> 42621 bytes
-rw-r--r--po/pt_BR.po2113
-rw-r--r--po/quot.sed6
-rw-r--r--po/remove-potcdate.sin19
-rw-r--r--po/ro.gmobin0 -> 21194 bytes
-rw-r--r--po/ro.po2256
-rw-r--r--po/ru.gmobin0 -> 55436 bytes
-rw-r--r--po/ru.po2108
-rw-r--r--po/rw.gmobin0 -> 1445 bytes
-rw-r--r--po/rw.po2454
-rw-r--r--po/sr.gmobin0 -> 15315 bytes
-rw-r--r--po/sr.po2397
-rw-r--r--po/sv.gmobin0 -> 33794 bytes
-rw-r--r--po/sv.po2403
-rw-r--r--po/tr.gmobin0 -> 12504 bytes
-rw-r--r--po/tr.po2495
-rw-r--r--po/uk.gmobin0 -> 12307 bytes
-rw-r--r--po/uk.po2719
-rw-r--r--po/vi.gmobin0 -> 45491 bytes
-rw-r--r--po/vi.po2080
-rw-r--r--po/zh_CN.gmobin0 -> 38488 bytes
-rw-r--r--po/zh_CN.po2039
-rw-r--r--po/zh_TW.gmobin0 -> 22504 bytes
-rw-r--r--po/zh_TW.po2178
-rw-r--r--src/Makefile.am30
-rw-r--r--src/Makefile.in536
-rw-r--r--src/browser.c1078
-rw-r--r--src/chars.c963
-rw-r--r--src/color.c360
-rw-r--r--src/cut.c291
-rw-r--r--src/files.c2782
-rw-r--r--src/global.c1800
-rw-r--r--src/help.c563
-rw-r--r--src/move.c670
-rw-r--r--src/nano.c2684
-rw-r--r--src/nano.h936
-rw-r--r--src/prompt.c1363
-rw-r--r--src/proto.h835
-rw-r--r--src/rcfile.c1230
-rw-r--r--src/search.c1489
-rw-r--r--src/text.c3074
-rw-r--r--src/utils.c674
-rw-r--r--src/winio.c3587
199 files changed, 152991 insertions, 0 deletions
diff --git a/ABOUT-NLS b/ABOUT-NLS
new file mode 100644
index 0000000..d528f9c
--- /dev/null
+++ b/ABOUT-NLS
@@ -0,0 +1,435 @@
+Notes on the Free Translation Project
+*************************************
+
+ Free software is going international! The Free Translation Project
+is a way to get maintainers of free software, translators, and users all
+together, so that will gradually become able to speak many languages.
+A few packages already provide translations for their messages.
+
+ If you found this `ABOUT-NLS' file inside a distribution, you may
+assume that the distributed package does use GNU `gettext' internally,
+itself available at your nearest GNU archive site. But you do _not_
+need to install GNU `gettext' prior to configuring, installing or using
+this package with messages translated.
+
+ Installers will find here some useful hints. These notes also
+explain how users should proceed for getting the programs to use the
+available translations. They tell how people wanting to contribute and
+work at translations should contact the appropriate team.
+
+ When reporting bugs in the `intl/' directory or bugs which may be
+related to internationalization, you should tell about the version of
+`gettext' which is used. The information can be found in the
+`intl/VERSION' file, in internationalized packages.
+
+Quick configuration advice
+==========================
+
+ If you want to exploit the full power of internationalization, you
+should configure it using
+
+ ./configure --with-included-gettext
+
+to force usage of internationalizing routines provided within this
+package, despite the existence of internationalizing capabilities in the
+operating system where this package is being installed. So far, only
+the `gettext' implementation in the GNU C library version 2 provides as
+many features (such as locale alias, message inheritance, automatic
+charset conversion or plural form handling) as the implementation here.
+It is also not possible to offer this additional functionality on top
+of a `catgets' implementation. Future versions of GNU `gettext' will
+very likely convey even more functionality. So it might be a good idea
+to change to GNU `gettext' as soon as possible.
+
+ So you need _not_ provide this option if you are using GNU libc 2 or
+you have installed a recent copy of the GNU gettext package with the
+included `libintl'.
+
+INSTALL Matters
+===============
+
+ Some packages are "localizable" when properly installed; the
+programs they contain can be made to speak your own native language.
+Most such packages use GNU `gettext'. Other packages have their own
+ways to internationalization, predating GNU `gettext'.
+
+ By default, this package will be installed to allow translation of
+messages. It will automatically detect whether the system already
+provides the GNU `gettext' functions. If not, the GNU `gettext' own
+library will be used. This library is wholly contained within this
+package, usually in the `intl/' subdirectory, so prior installation of
+the GNU `gettext' package is _not_ required. Installers may use
+special options at configuration time for changing the default
+behaviour. The commands:
+
+ ./configure --with-included-gettext
+ ./configure --disable-nls
+
+will respectively bypass any pre-existing `gettext' to use the
+internationalizing routines provided within this package, or else,
+_totally_ disable translation of messages.
+
+ When you already have GNU `gettext' installed on your system and run
+configure without an option for your new package, `configure' will
+probably detect the previously built and installed `libintl.a' file and
+will decide to use this. This might be not what is desirable. You
+should use the more recent version of the GNU `gettext' library. I.e.
+if the file `intl/VERSION' shows that the library which comes with this
+package is more recent, you should use
+
+ ./configure --with-included-gettext
+
+to prevent auto-detection.
+
+ The configuration process will not test for the `catgets' function
+and therefore it will not be used. The reason is that even an
+emulation of `gettext' on top of `catgets' could not provide all the
+extensions of the GNU `gettext' library.
+
+ Internationalized packages have usually many `po/LL.po' files, where
+LL gives an ISO 639 two-letter code identifying the language. Unless
+translations have been forbidden at `configure' time by using the
+`--disable-nls' switch, all available translations are installed
+together with the package. However, the environment variable `LINGUAS'
+may be set, prior to configuration, to limit the installed set.
+`LINGUAS' should then contain a space separated list of two-letter
+codes, stating which languages are allowed.
+
+Using This Package
+==================
+
+ As a user, if your language has been installed for this package, you
+only have to set the `LANG' environment variable to the appropriate
+`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
+and `CC' is an ISO 3166 two-letter country code. For example, let's
+suppose that you speak German and live in Germany. At the shell
+prompt, merely execute `setenv LANG de_DE' (in `csh'),
+`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
+This can be done from your `.login' or `.profile' file, once and for
+all.
+
+ You might think that the country code specification is redundant.
+But in fact, some languages have dialects in different countries. For
+example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
+country code serves to distinguish the dialects.
+
+ The locale naming convention of `LL_CC', with `LL' denoting the
+language and `CC' denoting the country, is the one use on systems based
+on GNU libc. On other systems, some variations of this scheme are
+used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
+locales supported by your system for your country by running the command
+`locale -a | grep '^LL''.
+
+ Not all programs have translations for all languages. By default, an
+English message is shown in place of a nonexistent translation. If you
+understand other languages, you can set up a priority list of languages.
+This is done through a different environment variable, called
+`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
+for the purpose of message handling, but you still need to have `LANG'
+set to the primary language; this is required by other parts of the
+system libraries. For example, some Swedish users who would rather
+read translations in German than English for when Swedish is not
+available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
+
+ In the `LANGUAGE' environment variable, but not in the `LANG'
+environment variable, `LL_CC' combinations can be abbreviated as `LL'
+to denote the language's main dialect. For example, `de' is equivalent
+to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
+(Portuguese as spoken in Portugal) in this context.
+
+Translating Teams
+=================
+
+ For the Free Translation Project to be a success, we need interested
+people who like their own language and write it well, and who are also
+able to synergize with other translators speaking the same language.
+Each translation team has its own mailing list. The up-to-date list of
+teams can be found at the Free Translation Project's homepage,
+`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
+area.
+
+ If you'd like to volunteer to _work_ at translating messages, you
+should become a member of the translating team for your own language.
+The subscribing address is _not_ the same as the list itself, it has
+`-request' appended. For example, speakers of Swedish can send a
+message to `sv-request@li.org', having this message body:
+
+ subscribe
+
+ Keep in mind that team members are expected to participate
+_actively_ in translations, or at solving translational difficulties,
+rather than merely lurking around. If your team does not exist yet and
+you want to start one, or if you are unsure about what to do or how to
+get started, please write to `translation@iro.umontreal.ca' to reach the
+coordinator for all translator teams.
+
+ The English team is special. It works at improving and uniformizing
+the terminology in use. Proven linguistic skill are praised more than
+programming skill, here.
+
+Available Packages
+==================
+
+ Languages are not equally supported in all packages. The following
+matrix shows the current state of internationalization, as of August
+2002. The matrix shows, in regard of each package, for which languages
+PO files have been submitted to translation coordination, with a
+translation percentage of at least 50%.
+
+ Ready PO files be bg ca cs da de el en eo es et fi fr
+ +----------------------------------------+
+ a2ps | [] [] [] [] |
+ ap-utils | |
+ bash | [] [] [] [] |
+ bfd | [] [] |
+ binutils | [] [] |
+ bison | [] [] [] [] |
+ clisp | |
+ clisp | [] [] [] [] |
+ clisplow | |
+ cpio | [] [] [] [] |
+ darkstat | () |
+ diffutils | [] [] [] [] [] [] |
+ enscript | [] [] |
+ error | [] [] [] |
+ fetchmail | [] () [] [] [] () |
+ fileutils | [] [] [] [] [] |
+ findutils | [] [] [] [] [] [] |
+ flex | [] [] [] [] [] |
+ gas | [] [] |
+ gawk | [] [] [] |
+ gcal | [] [] |
+ gcc | [] [] |
+ gettext | [] [] [] [] [] |
+ gnupg | [] [] [] [] [] [] [] |
+ gprof | [] [] |
+ gpsdrive | () () () () () |
+ grep | [] [] [] [] [] [] [] [] |
+ gretl | [] |
+ gthumb | () () () |
+ hello | [] [] [] [] [] [] [] [] [] |
+ id-utils | [] [] [] |
+ indent | [] [] [] [] [] |
+ jpilot | () [] [] [] |
+ jwhois | [] [] |
+ kbd | [] [] [] |
+ ld | [] [] |
+ libc | [] [] [] [] [] [] [] [] |
+ libiconv | [] [] [] [] |
+ lifelines | () () |
+ lilypond | [] [] |
+ lingoteach | [] [] |
+ lingoteach_lessons| () () |
+ lynx | [] [] [] [] [] |
+ m4 | [] [] [] [] [] |
+ make | [] [] [] [] |
+ man-db | [] () () [] () () |
+ mysecretdiary | [] [] [] |
+ nano | [] () [] [] [] [] |
+ nano_1_0 | [] () [] [] [] [] |
+ opcodes | [] [] [] |
+ parted | [] [] [] [] [] |
+ ptx | [] [] [] [] [] [] [] |
+ python | |
+ recode | [] [] [] [] [] [] |
+ sed | [] [] [] [] [] [] [] [] [] [] |
+ sh-utils | [] [] [] [] |
+ sharutils | [] [] [] [] [] [] [] |
+ sketch | () [] () |
+ soundtracker | [] [] [] |
+ sp | [] |
+ tar | [] [] [] [] [] [] |
+ texinfo | [] [] [] [] [] |
+ textutils | [] [] [] [] [] |
+ util-linux | [] [] [] [] [] [] |
+ vorbis-tools | [] |
+ wastesedge | |
+ wdiff | [] [] [] [] [] [] |
+ wget | [] [] [] [] [] [] [] [] [] [] |
+ +----------------------------------------+
+ be bg ca cs da de el en eo es et fi fr
+ 0 2 19 10 30 44 9 1 12 44 17 6 53
+
+ gl he hr hu id it ja ko lv nb nl nn
+ +-------------------------------------+
+ a2ps | () () [] |
+ ap-utils | |
+ bash | [] |
+ bfd | [] |
+ binutils | [] |
+ bison | [] [] [] [] |
+ clisp | |
+ clisp | [] |
+ clisplow | |
+ cpio | [] [] [] [] |
+ darkstat | |
+ diffutils | [] [] [] [] [] |
+ enscript | [] [] |
+ error | [] |
+ fetchmail | [] |
+ fileutils | [] [] [] |
+ findutils | [] [] [] [] [] [] [] [] |
+ flex | [] |
+ gas | |
+ gawk | [] |
+ gcal | |
+ gcc | [] |
+ gettext | [] [] |
+ gnupg | [] [] [] [] |
+ gprof | [] |
+ gpsdrive | [] () () |
+ grep | [] [] [] [] [] [] [] |
+ gretl | |
+ gthumb | () () |
+ hello | [] [] [] [] [] [] [] [] [] [] [] [] |
+ id-utils | [] [] |
+ indent | [] [] [] [] |
+ jpilot | () () |
+ jwhois | [] [] |
+ kbd | |
+ ld | |
+ libc | [] [] [] [] |
+ libiconv | [] [] [] |
+ lifelines | |
+ lilypond | [] |
+ lingoteach | [] |
+ lingoteach_lessons| |
+ lynx | [] [] [] [] |
+ m4 | [] [] [] [] |
+ make | [] [] [] [] [] [] |
+ man-db | () () |
+ mysecretdiary | [] |
+ nano | [] [] [] [] |
+ nano_1_0 | [] [] [] [] [] |
+ opcodes | [] [] |
+ parted | [] [] [] |
+ ptx | [] [] [] [] [] |
+ python | |
+ recode | [] [] [] |
+ sed | [] [] [] [] [] [] [] [] |
+ sh-utils | [] [] [] |
+ sharutils | [] [] [] |
+ sketch | () |
+ soundtracker | [] [] |
+ sp | |
+ tar | [] [] [] [] [] [] |
+ texinfo | [] [] [] |
+ textutils | [] [] [] [] |
+ util-linux | () [] |
+ vorbis-tools | [] |
+ wastesedge | |
+ wdiff | [] [] [] |
+ wget | [] [] [] [] [] [] |
+ +-------------------------------------+
+ gl he hr hu id it ja ko lv nb nl nn
+ 23 9 12 19 16 13 26 9 1 7 19 3
+
+ no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW
+ +----------------------------------------------+
+ a2ps | () () () [] [] [] [] [] | 10
+ ap-utils | () | 0
+ bash | [] | 6
+ bfd | [] [] | 5
+ binutils | [] [] | 5
+ bison | [] [] [] [] | 12
+ clisp | | 0
+ clisp | | 5
+ clisplow | | 0
+ cpio | [] [] [] [] | 12
+ darkstat | [] [] () () | 2
+ diffutils | [] [] [] [] [] [] | 17
+ enscript | [] [] [] [] | 8
+ error | [] [] [] | 7
+ fetchmail | () () [] | 6
+ fileutils | [] [] [] [] [] [] | 14
+ findutils | [] [] [] [] [] [] [] | 21
+ flex | [] [] [] | 9
+ gas | [] | 3
+ gawk | [] [] | 6
+ gcal | [] [] | 4
+ gcc | [] | 4
+ gettext | [] [] [] [] [] [] | 13
+ gnupg | [] [] [] | 14
+ gprof | [] [] | 5
+ gpsdrive | [] [] | 3
+ grep | [] [] [] [] [] | 20
+ gretl | | 1
+ gthumb | () () [] | 1
+ hello | [] [] [] [] [] [] [] | 28
+ id-utils | [] [] [] [] | 9
+ indent | [] [] [] [] [] | 14
+ jpilot | () () [] [] | 5
+ jwhois | [] () () [] [] | 7
+ kbd | [] [] | 5
+ ld | [] [] | 4
+ libc | [] [] [] [] [] [] | 18
+ libiconv | [] [] [] [] [] | 12
+ lifelines | [] | 1
+ lilypond | [] | 4
+ lingoteach | [] [] | 5
+ lingoteach_lessons| () | 0
+ lynx | [] [] [] [] | 13
+ m4 | [] [] [] [] | 13
+ make | [] [] [] [] [] | 15
+ man-db | | 3
+ mysecretdiary | [] [] [] | 7
+ nano | [] [] [] [] | 13
+ nano_1_0 | [] [] [] [] | 14
+ opcodes | [] [] [] | 8
+ parted | [] [] [] [] | 12
+ ptx | [] [] [] [] [] [] [] | 19
+ python | | 0
+ recode | [] [] [] [] [] [] | 15
+ sed | [] [] [] [] [] [] | 24
+ sh-utils | [] [] | 9
+ sharutils | [] [] [] [] | 14
+ sketch | [] () [] | 4
+ soundtracker | [] | 6
+ sp | | 1
+ tar | [] [] [] [] [] [] [] | 19
+ texinfo | [] [] | 10
+ textutils | [] [] [] [] [] | 14
+ util-linux | [] [] [] | 10
+ vorbis-tools | [] | 3
+ wastesedge | | 0
+ wdiff | [] [] [] [] [] | 14
+ wget | [] [] [] [] [] [] [] [] | 24
+ +----------------------------------------------+
+ 37 teams no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW
+ 68 domains 4 15 2 28 28 12 10 49 43 4 1 9 609
+
+ Some counters in the preceding matrix are higher than the number of
+visible blocks let us expect. This is because a few extra PO files are
+used for implementing regional variants of languages, or language
+dialects.
+
+ For a PO file in the matrix above to be effective, the package to
+which it applies should also have been internationalized and
+distributed as such by its maintainer. There might be an observable
+lag between the mere existence a PO file and its wide availability in a
+distribution.
+
+ If August 2002 seems to be old, you may fetch a more recent copy of
+this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
+matrix with full percentage details can be found at
+`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
+
+Using `gettext' in new packages
+===============================
+
+ If you are writing a freely available program and want to
+internationalize it you are welcome to use GNU `gettext' in your
+package. Of course you have to respect the GNU Library General Public
+License which covers the use of the GNU `gettext' library. This means
+in particular that even non-free programs can use `libintl' as a shared
+library, whereas only free software can use `libintl' as a static
+library or use modified versions of `libintl'.
+
+ Once the sources are changed appropriately and the setup can handle
+to use of `gettext' the only thing missing are the translations. The
+Free Translation Project is also available for packages which are not
+developed inside the GNU project. Therefore the information given above
+applies also for every other Free Software Project. Contact
+`translation@iro.umontreal.ca' to make the `.pot' files available to
+the translation teams.
+
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..1a6a0a3
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,43 @@
+$Id: AUTHORS 4210 2007-12-20 18:41:04Z dolorous $
+This file lists people who have made significant contribution to the
+nano editor. Please see the ChangeLog for specific changes by author.
+-------------------------------------------------------------------------
+
+Chris Allegretta <chrisa@asty.org>
+ * Original program author, former stable series maintainer.
+
+David Lawrence Ramsey <pooka109@gmail.com>
+ * Former stable series maintainer. Multiple buffer support,
+ operating dir (-o) option, bug fixes for display routines,
+ wrapping code, spelling fixes, const mode, parts of the UTF-8
+ support, and various other fixes.
+
+Jordi Mallach <jordi@gnu.org>
+ * Debian package maintainer, fellow bug squasher.
+ * Internationalization support head, ca.po maintainer.
+
+Adam Rogoyski <rogoyski@cs.utexas.edu>
+ * New write_file() function, read_file() optimization, mouse
+ support, resize support, nohelp (-x) option, justify function,
+ follow symlink option and bugfixes, and much more.
+
+Robert Siemborski <rjs3@andrew.cmu.edu>
+ * Miscellaneous cut, display, replace, and other bug fixes,
+ original and new "magic line" code, read_line() function, new
+ edit display routines.
+
+Rocco Corsi <rocco.corsi@sympatico.ca>
+ * Internal spelling code, many optimizations and bug fixes for
+ findnextstr() and search-related functions, various display
+ and file handling fixes.
+
+David Benbennick <dbenbenn@math.cornell.edu>
+ * Wrap and justify bugfixes/enhancements, new color syntax
+ code, memleak fixes, parts of the UTF-8 support, and other
+ miscellaneous fixes.
+
+Mike Frysinger <vapier@gentoo.org>
+ * Gentoo package maintainer. Whitespace display mode,
+ --enable-utf8/--disable-utf8 configure options for ncurses,
+ many new color regexes and improvements to existing color
+ regexes for nanorc.sample, and miscellaneous bug fixes.
diff --git a/BUGS b/BUGS
new file mode 100644
index 0000000..509fa84
--- /dev/null
+++ b/BUGS
@@ -0,0 +1,161 @@
+** Open BUGS **
+
+** Fixed BUGS **
+- Marked cutting sometimes leaves a newline in the file unintelligently,
+ such as when all of a line is selected but the mark doesn't proceed to
+ the new line. (8) [FIXED/IRRELEVANT]
+- Certains are not lined up properly when there are tabs in them at
+ certain col values. (9) [FIXED]
+- edit_refresh() and update_line() do not handle selecting text when the
+ cursor is beyond COLS (10) [FIXED]
+- No way to do a replace with the empty string (11) [FIXED, yay!]
+- Spelling support is not elegant like Pico's integration of the 'spell'
+ program. nano only uses ispell (for now) (12) [FIXED]
+- Moving to the end of a line when close to a multiple of COLS and at
+ least COLS * 2 does not make the screen jump early like it would for
+ if we were around COLS (bugs in edit_refresh, update_line) (13)
+ [FIXED, mostly]
+- When at the very bottom of the edit window, do_wrap() goes berserk and
+ puts the cursor somewhere bad; subsequent keystrokes crash the program
+ (14) [FIXED, mostly]
+- Doing a replacement of a substring of the replace string (e.g.
+ replacing "ed" with "fred" causes an infinite loop). (15) [FIXED]
+- Cutting a file with marked text and both marker ends on the same line
+ causes a random segfault (16) [FIXED]
+- Cutting more than one line resets the KEEP_CUTBUFFER flag in 0.9.3.
+ Error is in bitwise assignment (nano.h). (17) [FIXED]
+- The wrapping code does not work right for lines like the following:
+ * *
+ Error is in do_wrap, must be rewritten. (18) [FIXED]
+- nano fails to follow symlinks, even though -l isn't being used (20).
+ [Bug in global flag init, FIXED]
+- When using --help or --version, the SIGINT character gets lost. (21)
+ [FIXED]
+- edit_refresh() and update_line() (and related functions) have
+ trouble when a tab is the character that is the boundary at COLS (23)
+ [FIXED]
+- There is an off-by-one error in keeping track of totsize. It is
+ caused by the fact that we count the newline at the end when we read
+ in a file but we do not, in fact, display this newline. This should
+ go away implicitly when the "Magic Line" returns, but it is noted here
+ for documentation's sake. (24) [FIXED]
+- In replace with completely adjacent strings, every other search string
+ will be missed (try replace ':' in a string like ':::::::::') (28)
+ [FIXED]
+- If nano opens a read-only file with the --tempfile option, and a
+ change is made to the buffer, and a write is attempted, nano will not
+ give you a dialog about not being able to write the file, and it will
+ not let the user exit (29, discovered by Joshua Jensen) [FIXED]
+- Using nano -k, marked text is not cut properly. (31) [FIXED]
+- Invoking -t or -k has the effect of invoking both options. (32)
+ [FIXED]
+- totsize becomes incorrect after word-wrapping (25) [FIXED]
+- Wrapping a line with autoindent mode sometimes causes a segfault (19)
+ [FIXED]
+- When inserting files, the display sometimes fails to display properly
+ until a pageup/down occurs (22) [FIXED]
+- In search/replace code, there is too much refreshing in bottomwin (26)
+ [FIXED]
+- In replace, there is no way to accept the default replace string. (27)
+ [FIXED]
+- Using nano -t, user can not exit until a filename is given via ^O.
+ (30) [FIXED]
+- totsize problems still abound in do_justify (33) [FIXED]
+- Using -k, cut text is not pasted properly. (34) [FIXED].
+- Using -k, pasted text is not updated properly if it goes beyond
+ editbot. (35) [FIXED]
+- Doing a cut with -k can screw up the filestruct; fault is in cutting
+ code. (36) [FIXED]
+- Hitting enter on the magic line makes new lines, but they are not
+ written out to disk when saved..... (37). [FIXED]
+- Page up and page down do not work the same way as in Pico (# of
+ lines). (38) [FIXED]
+- When doing a search and the marker is set, the screen does not always
+ properly update the inverted text (39). [FIXED]
+- Searches for a string that only exists on one line multiple times will
+ fail after finding the last occurrence (discovered by Ken Tyler) (40).
+ [FIXED]
+- Meta-Z is currently broken to toggle suspend. I guess I still don't
+ know signals very well =-) (41) [FIXED].
+- Unable to cut the entire file using the marker (discovered by Ken
+ Tyler) (42). [FIXED]
+- The keypad does not work when nano runs in the Gnome terminal (43).
+ [FIXED]
+- When reading in a file, if the file is a directory, the contents of
+ the file being edited are blown away (discovered by Chris Pimlot)
+ (44). [FIXED]
+- In certain terms, nano will leave a "ghost" of screen upon exit when
+ called from inside mutt (among other settings) (45). [FIXED]
+- In replace, hitting the Goto line shortcut key does nothing after a
+ search string is entered (discovered by Rocco Corsi) (46) [FIXED].
+- When typing in a string in search or replace and hitting
+ CASE_SENSITIVE or the other search string, the current string edit is
+ blown away in favor of the last stored search (47) [FIXED]
+- If nano fails to open a file when it starts up, doing almost anything
+ causes a segfault (discovered by Ben Roberts) (48). [FIXED]
+- In certain terminals, nano would not work properly with keypad().
+ Turned out to be the silly timeout(0) call, which is completely
+ unneeded, anyway. (49) [FIXED]
+- With less than a page of text, doing a page down will move the current
+ line to the top of the screen, which it shouldn't do. (50) [FIXED]
+- With PDCurses, running Meta-X turns off the keypad. (51) [FIXED]
+- Resizing the window completely screws up the display if in any other
+ mode than normal editing (help screen, search and replace, file
+ browser...) (52) [FIXED]
+- Alt speller argument (-s, --speller) does not take a string argument
+ of more than one word. (53) [FIXED].
+- Cut to end cutting (-k) causes segfaults (try cutting "- Backup making
+ (filename~)?" line in TODO file) (discovered by
+ higuita@cadernoverde.com) (54) [FIXED].
+- When using autoindent (-i), wrapped text does not get autoindented
+ (55, discovered by Mark Senior) [FIXED].
+- When using -R (regex) and -p (Pico mode), subsequent searches after
+ the first fail if no string is entered (56) [FIXED].
+- Page down on a file of editwinrows fails (again). Reported by Ryan
+ Krebs (57) [FIXED].
+- File browser aborts on Solaris in qsort() call. (Reported by Matthias
+ Andree) (58) [FIXED].
+- Can modify the current file in view mode with ^W^R (discovered by
+ Rocco Corsi) (58) [FIXED].
+- When page up is used after two page downs, the screen doesn't update
+ properly (discovered by David Lawrence Ramsey) (59) [FIXED].
+- On BSD systems, marked cutting and paste often screws up the last line
+ in the cutbuffer (discovered by Barry Pederson) (60) [FIXED]
+- Blank lines are not kept when cutting with -k (discovered by Rocco)
+ (61) [FIXED].
+- nano will not suspend properly inside of mutt (62) [FIXED].
+- When switching from Pico mode to normal mode, the previous search is
+ not displayed until cancelling the search (63) [FIXED].
+- If you change search options but don't change the search string in
+ normal mode, hitting Enter causes the search/replace to abort (64)
+ (Jordi Mallach) [FIXED].
+- Cutting one line of text causes the screen to recenter the line
+ (reported and fixed by David Lawrence Ramsey) (65) [FIXED].
+- When cutting marked text including the bottom of the file, a new
+ "magic line" is not created" (reported by David Lawrence Ramsey, fixed
+ by David Lawrence Ramsey & Chris) (66) [FIXED].
+- ^C does not work after a suspend in tcsh (discovered by Trevor Cordes)
+ (68) [FIXED].
+- Home and End control keys (^A, ^E) do not always work in filename
+ prompt (bug found by Ian Turner) (69) [1.0 series only] [FIXED].
+- Trying to insert a file of 0 bytes will hang nano (70) [FIXED].
+- Meta-space and ^Space are not yet handled in new backend code (77) [FIXED]
+- F-keys do not work with new shortcut backend (72) [FIXED]
+- Many menu items are probably missing from the new backend (73) [FIXED]
+- Need a 'check-vitals-mapped' function to check that the end used didn't
+ unbind all the keys for exit or cancel before starting up the editor (74) [FIXED]
+- Browser and prompt code still implement old switch on raw key input instead
+ of new if block for subnfunc values (75) [FIXED]
+- New backend code probably does not compile under anything but default options,
+ if that (76) [FIXED]
+- -enable-tiny does not work with new code (78) [FIXED]
+- If a user only binds meta sequences to a function like left, right
+ page up/down, insert, and unbinds all other control and F keys for it,
+ nano will do the wrong thing when reading the key which is normally
+ assigned to it (79 - may not be worth fixing) [FIXED]
+- Segfault editing at COLS presumably due to new color syntax
+ highlighting (80) [FIXED]
+- Cutting the line at the top of the screen recenters to center (71) [FIXED]
+
+
+$Id: BUGS 4439 2009-11-22 21:35:56Z astyanax $
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..4432540
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,676 @@
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/COPYING.DOC b/COPYING.DOC
new file mode 100644
index 0000000..4a0fe1c
--- /dev/null
+++ b/COPYING.DOC
@@ -0,0 +1,397 @@
+ GNU Free Documentation License
+ Version 1.2, November 2002
+
+
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..28e14ea
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,1046 @@
+2010-11-15 Chris Allegretta <chrisa@asty.org>
+ * Add a section to the FAQ about using nanorc on Win32 systems.
+
+2010-11-12 Chris Allegretta <chrisa@asty.org>
+ * Add check for RESTRICTED mode back to speller, suspend and insert file
+ routines, since adding key bindings broke the fact that they should be
+ disabled in restricted mode. Fixes Savannah bug 31625 reported by
+ Charlie Somerville.
+
+2010-08-10 - nano 2.2 branch cut here
+
+GNU nano 2.2.5 - 2010.08.05
+2010-08-04 Lauri Kasanen <curaga@operamail.comcuraga@operamail.com>
+ * doc/syntax/mgp.nanorc: New Magicpoint syntax highlighting definition
+
+2010-08-04 Peter <exodus@savannah>
+ * doc/syntax/tex.nanorc: No longer highlight escaped comments
+
+2010-06-20 Chris Allegretta <chrisa@asty.org>
+ * New rc file option allow_insecure_backup, allows the previous security
+ fixes for backup files to be overridden if you're really positive
+ you want to. Fixes Savannah bug 29732 by Brian Szymanski <skibrianski>.
+
+2010-05-23 Chris Allegretta <chrisa@asty.org>
+ * files.c (write_file): Don't even try to chown() the backup
+ file unless we're root, since it's probably going to fail if
+ we're editing a file we don't own. Fixes Savannah bug
+ 29514: [nano 2.2.2] backup should ignore chown errors.
+
+GNU nano 2.2.4 - 2010.04.15
+2010-04-07 Chris Allegretta <chrisa@asty.org>
+ * doc/man/nano.1,nanorc.5: Remove the backup file warnings now
+ that a sufficient security fix exists for the backup file code.
+
+2010-04-14 Chris Allegretta <chrisa@asty.org>
+ * text.c (do_alt_speller): Skip invoking the alt speller if the file size
+ is 0 bytes. Fixes Savannah bug 29393 reported by Mike Frysinger.
+ * files.c (wirte_file): Don't set current_stat when tmp == TRUE, check
+ whether current_stat is set when trying to use it, and don't do the
+ modification check if the filename changed, since we have no way
+ of knowing about it in that case. Fixes Savannah bug 29392, reported
+ by Mike Frysinger. [CVE-2010-1160]
+
+2010-04-13 Felipe Bugno <necron@bol.com.br>
+ * doc/syntax/cmake.nanorc: Added cmake syntax highlighting file.
+
+2010-04-09 Chris Allegretta <chrisa@asty.org>
+ * files.c (do_writeout): Better security fixes for backup file writing,
+ mangled from submission by Dan Rosenberg <dan.j.rosenberg at gmail>
+ [CVE-2010-1161]
+
+2010-04-08 Chris Allegretta <chrisa@asty.org>
+ * files.c (do_writeout): Previous fixes should not cause a crash
+ when saving a new file. Discovered by Mike Frysinger <vapier@gentoo.org>.
+
+2010-04-07 Chris Allegretta <chrisa@asty.org>
+ * doc/man/nano.1,nanorc.5: Add warnings about using backup
+ mode as root due to the Dan Rosenberg security analysis.
+
+2010-04-02 Chris Allegretta <chrisa@asty.org>
+ * files.c (do_writeout): Expand modification check to include both the
+ original file's device ID and inode number as reasons to warn the
+ user that the file has been modified. Also abort on writing a backup
+ file when its owner doesn't match the edited file. Based on security
+ analysis on nano by Dan Rosenberg. [CVE-2010-1160]
+
+
+2010-03-21 Chris Allegretta <chrisa@asty.org>
+ * nano.c (page_stdin et al): Don't attempt to reset/reopen the terminal
+ settings when reading stdin if it was aborted with SIGINT. May fix Savannah
+ bug 29114 reported by Mike Frysinger.
+
+2010-03-21 Mike Frysinger <vapier@gentoo.org>
+ * doc/syntax/c.nanorc: Add additional support for #include_next and #pragma
+
+2010-03-21 Chris Allegretta <chrisa@asty.org>
+ * move.c (do_page_up, do_page_down()): Explicitly set current_y to 0 when paging
+ up when not in smooth scroll mode, as previous fixes would otherwise cause
+ the cursor to not really be moved to the stop of the screen.
+
+2010-03-07 Chris Allegretta <chrisa@asty.org>
+ * configure.ac, nano.c (handle_sigwinch): Create check for whether LINES and
+ COLS can safely be redefined. Fixes compilation issues with cygwin, and likely
+ with newer versions of ncurses, fixes Savannah bug 28984 repoted by Andy Koppe
+ and Eric Oliver via mailing list.
+ * winio.c (get_mouseinput) - fix stray semicolon in code, also reported in
+ bug 28984.
+
+GNU nano 2.2.3 - 2010.02.11
+2010-01-28 Chris Allegretta <chrisa@asty.org>
+ * move.c (do_page_up, do_page_down): Fix for smooth mode not preserving cusor
+ position. Part one of fix for Savannah bug 21178 by Mike Frysinger.
+
+GNU nano 2.2.2 - 2010.01.17
+2010-01-17 Chris Allegretta <chrisa@asty.org>
+ * nano.c (main), prompt.c (do_statusbar_input): Handle problems with an unmapped
+ function due to key rebinding, fixes crashes on FreeBSD repoted by Eitan
+ Adler <eitanadlerlist@gmail.com>.
+
+2010-01-14 Chris Allegretta <chrisa@asty.org>
+ * files.c (do_writeout): Fix for crash / incorrect external modification warning
+ due to earlier fix in r4467.
+
+2010-01-12 Chris Allegretta <chrisa@asty.org>
+ * move.c (do_page_up, do_page_down): Fix issues with not enough scrolling down/up
+ and cursor centering.
+ * winio.c (edit_scroll): Remove lots of needless checking of line length for
+ soft wrapping code.
+ * winio.c (edit_update) - Remove extra code for when updating with old_current outside
+ of the new buffer boundary and centering issues.
+
+2010-01-05 Tito <farmatito@tiscali.it>
+ * search.c (update_history): Fix bad length check causing search crash on armel platform.
+
+2010-01-04 Chris Allegretta <chrisa@asty.org>
+ * winio.c: edit_update, edit_redraw: Fix search not scrolling to the middle of the screen
+ (reported by alpha@qzx.com) and places where we rely on maxrows but should not.
+
+2009-12-26 Jordi Mallach <jordi@gnu.org>
+ * doc/man/nano.1: Avoid a groff warning by prepending a zero-width
+ space to a line starting with '.
+
+2009-12-22 Chris Allegretta <chrisa@asty.org>
+ * files.c (write_file): Fix compatibility with previous stat fix and tiny mode.
+
+2009-12-22 David Lawrence Ramsey <pooka109@gmail.com>
+ * global.c: Add new strings for forward/back in the file browser. New variables
+ nano_forwardfile_msg and nano_backfile_msg.
+
+2009-12-20 Chris Allegretta <chrisa@asty.org>
+ * files.c (is_file_writable): remove assert check for f, since it's not
+ initialized at the time. Fixes Savannah bug 28309, reported by Zoltan Kovacs.
+
+2009-12-20 Brian Szymanski <skibrianski via Savannah>
+ * src/files.c (write_file): Check stat struct exists, and if not use just obtained stat data.
+ Fixes Ubuntu bug 471568, "reproducible crash in nano on trying to save to a file
+ different than the one specified on the command line".
+
+2009-12-15 Chris Allegretta <chrisa@asty.org>
+ * doc/nanorc.sample.in - Remove erroneous 'set suspendenable' as it's actually a
+ key binding (e.g. 'bind M-Z suspendenable all') and not a settable flag. Fixes
+ Savannah bug 28299 reported by Mike Frysinger.
+
+GNU nano 2.2.1 - 2009.12.12
+2009-12-12 Chris Allegretta <chrisa@asty.org>
+ * text.c (do_delete), nano.c (do_output): Add check for length of current line
+ before and after adding/deleting text, and do full refresh if it is now
+ a different multiple of COLS. Also get rid of superfluous do_refresh
+ vars now that we have edit_refresh_needed.
+
+2009-12-09 David Lawrence Ramsey <pooka109@gmail.com>
+ * global.c (shortcut_init), browser.c (do_browser): Fix M-W not being bound to
+ research in either main menu or browser.
+
+2009-12-09 Chris Allegretta <chrisa@asty.org>
+ * files.c (read_file) - Add parameter for whether we should even try to check
+ file writability, as the message is useless when we're inserting into an
+ existing buffer. Fixes Savannah bug 28219.
+
+2009-12-07 David Lawrence Ramsey <pooka109@gmail.com>
+ * global.c (shortcut_init): Many fixes for keybindings code oversights, including
+ restore page up/down and GotoDir to browser,
+ * browser.c (do_browser): Fix breaking out of a submenu (e.g. gotodir) breaks out
+ of browser altogether.
+ * doc/nanorc.sample.in: Add missing entries for fortran/ObjC/OCaml entries.
+
+2009-12-03 David Lawrence Ramsey <pooka109@gmail.com>
+ * global.c (shortcut_init) - Remove help shortcut from help shortcut list :-) Tweaked
+ to reorder exit shortcut to end of list to not mess up prev/next shortcut symmetry.
+
+2009-12-03 Eitan Adler <eitanadlerlist@gmail.com>
+ * doc/syntax/makefile.nanorc - Fix poor regex for all alpha characters which sometimes leads to
+ error messages, reported by gibboris@gmail.com.
+
+2009-12-02 Chris Allegretta <chrisa@asty.org>
+ * text.c (add_undo, do_undo, do_redo) - Do not execute cases for SPLIT when DISABLE_WRAPPING
+ is defined. Fixes Savannah bug 28151 (anon).
+
+2009-12-02 Jordi Mallach <jordi@gnu.org>
+ * doc/man/nano.1: Fix escaping of hyphens for the -$ option.
+
+2009-12-01 Kamil Dudka <kdudka@redhat.com>
+ * chars.c, file.c - Better handle unused results for things like mbtowc(), new
+ macro IGNORE_CALL_RESULT.
+
+2009-12-01 Chris Allegretta <chrisa@asty.org>
+ * global.c (shortcut_init) - Remove redundant entries for ^Y/^V reported by
+ Christian Weisgerber.
+ * doc/man/nanorc.5 - Fix typo in Meta documentation, reported by gibboris@gmail.com.
+
+2009-12-01 David Lawrence Ramsey <pooka109@gmail.com>
+ * global.c (shortcut_init) - Add support for ^P and ^N in the help menu.
+ * Update documentation for 2.2 features including sample nanorc file, texinfo
+ file, man pages, UPGRADE file, and update copyright noticed for the current year.
+
+GNU nano 2.2.0 - 2009.11.30
+2009-11-29 Chris Allegretta <chrisa@asty.org>
+ * prompt.c (get_prompt_string) - Universally handle help key when is
+disabled. Fixes Savannah
+ bug 28117 by David Lawrence Ramsey <pooka109@gmail.com>.
+ * chars.c, files.c: Add junk vars to silence the compiler. Sigh.
+
+2009-11-29 David Lawrence Ramsey <pooka109@gmail.com>
+ * Change several *chars to const char, additional cleanups and casts to make compilers happier.
+ * global.c: Fix replace and insert file initializations for proper compilation options.
+ * nano.c (do_suspend): Update comments to reflect actual code path, bad Chris and thanks for
+ noticing Jordi.
+ * configure.ac: Fix typos
+
+2009-11-27 Chris Allegretta <chrisa@asty.org>
+ * nano.c (do_suspend): Don't clear the screen but do move the cursor down to the last line
+ first in an effort to not corrupt the screen, which contradicts Pico but is consistent
+ with almost all other text editors. Fixes Savannah bug 28110/Debian bug 460510
+ reported by Tim Connors <reportbug@rather.puzzling.org>.
+ * doc/dyntax/makefile.nanorc - Sample Makefile highlighting based on wiki.linuxhelp.net version.
+
+2009-11-26 Chris Allegretta <chrisa@asty.org>
+ * winio.c (edit_scroll): Adjust for long lines when scrolling.
+ * rcfile.c (parse_rcfile), initialize size argument to getline(), fixes crash on FreeBSD
+ reported by Eitan Adler <eitanadlerlist@gmail.com>.
+
+2009-11-26 Jordi Mallach <jordi@gnu.org>
+ * doc/man/*: Update all man pages to escape unescaped hyphens.
+
+2009-11-24 Chris Allegretta <chrisa@asty.org>
+ * move.c (do_page_up, do_page_down): Make these functions work better with soft
+ line wrapping.
+ * winio.c (compute_maxrows): Make maxrows calculation more accurate when all lines are > COLS.
+
+2009-11-22 Chris Allegretta <chrisa@asty.org>
+ * nano.c (main): Allow edit_refresh_needed to take effect when using --enable-tiny
+ (fixes Savannah bug 28076 reported by David Lawrence Ramsey).
+
+2009-11-22 David Lawrence Ramsey <pooka109@gmail.com>
+ * nano.c (move_to_filestruct): Fix bug 71 (cut at top of line recenters)
+ * Fix compilation with --enable-tiny
+
+2009-11-22 Mike Frysinger <vapier@gentoo.org>
+ * doc/syntax/gentoo.nanorc: Tweak comment highlighting.
+
+GNU nano 2.1.99pre2 - 2009.11.21
+2009-11-21 Chris Allegretta <chrisa@asty.org>
+ * rcfile.c: Add unbinding keyword, fixes Savannah bug 22852 reported by frankd.
+ * prompt.c (update_statusbar_line): Set statusbar_pww when updating the line.
+ Fixes Savannah bug 24957 by Mike Frysinger.
+
+2009-11-19 Chris Allegretta <chrisa@asty.org>
+ * nano.c (die_save_file) Try nd match the permissions of the file we were
+ editing but only make a minimal effort to do so. Fixes Savannah bug 27273
+ reported by Mike Frysinger.
+
+2009-11-18 Adrian Bunk <bunk via Savannah>
+ * nano.c (main): Allow --fill and --nowrap to override nanorc entries and each other
+ on the command line.
+
+2009-11-15 Chris Allegretta <chrisa@asty.org>
+ * winio.c (edit_refresh): Always computer maxsize regardless of whether smooth scrolling
+ is enabled. Fixes Savannah bug 28024 by Mike Frysinger.
+
+GNU nano 2.1.99pre1 - 2009.11.15
+2009-11-14 Chris Allegretta <chrisa@asty.org>
+ * move.c (do_first_line, do_last_line): Just set edit_refresh_needed rather than
+ get messy.
+ * files.c (do_writeout) - Only mention file modification if we're writing the same
+ file we originally opened.
+
+2009-11-13 Chris Allegretta <chrisa@asty.org>
+ * winio.c: Add new static maxsize to be able to easier calculation with
+ softwrap.
+ * nano.c (do_mouse): Fix mouse support not working with soft wrapping. Fixes
+ Savannah bug 27549 reported by Hannes Schueller.
+
+2009-11-11 Chris Allegretta <chrisa@asty.org>
+ * winio.c: Large tweaking of cursor and text display based on COLS not COLS - 1,
+ due to finally understanding that display_string wasn't being called properly
+ when softwrap was enabled. Fixes Savnnah bug 27603, Return key doesn't scroll
+ viewport reported by Hannes Schueller.
+ * - Fix size_t formatting issues with -pedantic
+
+2009-11-09 Chris Allegretta <chrisa@asty.org>
+ * files.c (read_file): - Remove debugging messages from file load. Fixes
+ Savannah bug 27838.
+
+2009-11-07 Chris Allegretta <chrisa@asty.org>
+ * nano.h - Add bogus value at begin of flags enumeration because it
+ causes casesens rcfile option to misbehave, reported by Helmut
+ Jarausch <jarausch@igpm.rwth-aachen.de>
+
+2009-11-03 Chris Allegretta <chrisa@asty.org>
+ * nano.h - Fix comma at end of enumerator list which angers -pedantic.
+ * rcfile.c - Add in specific check for UNDOABLE and fix declaration as
+ to what flag it toggles. Fixes undo mode being able to be called from
+ the rc file, reported by Helmut Jarausch <jarausch@igpm.rwth-aachen.de>
+
+2009-11-03 Mike Frysinger <vapier@gentoo.org>
+ * files.c - Move up is_file_writable() to stop implicit definition complaints.
+
+2009-10-27 Chris Allegretta <chrisa@asty.org>
+ * browser.c (browser_init): Set column width to something sane when
+ initializing in a directory with no file entries. Fixes Savannah
+ bug 24163 found (and initial patch) by Paul Wise.
+
+2009-09-15 Chris Allegretta <chrisa@asty.org>
+ * winio.c: Clean up some unused variables from the soft wrapping code.
+
+GNU nano 2.1.11 - 2009.09.14
+2009-09-12 Chris Allegretta <chrisa@asty.org>
+ * winio.c (edit_update) - properly update edittop when using soft wrapping.
+ Fixes lack of centering for searching for off-screen answers, found by
+ Hannes <mr_creosote@mutantwatch.de>.
+
+2009-09-03 Chris Allegretta <chrisa@asty.org>
+ * global.c (shortcut_init): Fix up/down keys not responding in the file browser,
+ discovered by Hannes <mr_creosote@mutantwatch.de>.
+ * move.c (do_up) - Fix another scrolling issue with softwrap when the
+ cursor is beyond COLS, discovered by Hannes <mr_creosote@mutantwatch.de>.
+
+2009-09-02 Chris Allegretta <chrisa@asty.org>
+ * Attempt to check file writability and emit a warning on the status bar
+ if nano doesn't think the file can be written to. Feature originally
+ requested by Damien Jolders <madamien@skullsquad.com> et al.
+
+2009-08-29 Chris Allegretta <chrisa@asty.org>
+ * Fix more soft wrapping issues, particularly with scrolling,
+ discovered by Hannes <mr_creosote@mutantwatch.de>.
+
+2009-08-19 Chris Allegretta <chrisa@asty.org>
+ * Fix issue with soft wrapping not displaying the last character of each line,
+ fixed bug discovered by Hannes <mr_creosote@mutantwatch.de>.
+
+2009-08-17 Mike Frysinger <vapier@gentoo.org>
+ * doc/syntax/(gentoo|sh|tcl).nanorc: Fix problems with empty regexes on POSIX.
+ Fixes Savannah bug 27175.
+
+2009-08-17 Chris Allegretta <chrisa@asty.org>
+ * Initial soft line wrapping implementation. Command line flags
+ -$ or --softwrap.
+ * nano.c, text.c: Clean up some fprintf warnings in debug mode due to printing
+ a size_t without using the zd specifier.
+2009-08-13 Chris Allegretta <chrisa@asty.org>
+ * New global flag implementation courtesy of Adam Wysocki <gophi@arcabit.pl>, allows
+ previous undo flag to be implemented consistent with other flags.
+
+GNU nano 2.1.10 - 2009.07.28
+2009-07-27 Chris Allegretta <chrisa@asty.org>
+ * text.c (undo_cut, redo_cut): Don't actually try and undo/redo an empty cut, i.e. the magicline.
+ Fixes crash on cutting last line discovered by Eitan Adler <eitanadlerlist@gmail.com>.
+
+2009-07-11 Chris Allegretta <chrisa@asty.org>
+ * nano-regress: Small tweaks
+ * Change undo code to off unless unabled via a command line option (-u/--undo). Until this code
+ stabilizes this is the only responsible way to treat it.
+
+2009-03-08 Chris Allegretta <chrisa@asty.org>
+ * TODO - Break out some targets for various features into 2.2
+ and 2.4 series for things which are feasible.
+
+2009-02-28 Chris Allegretta <chrisa@asty.org>
+ * configure.ac: Add check for whether _XOPEN_SOURCE_EXTENDED is needed for
+ curses to work w/color. Fixes compilation on HP-UX with older GCC,
+ reported by jay.krell@cornell.edu.
+
+2009-02-23 Eitan Adler <eitanadlerlist@gmail.com>
+ * doc/man/Makefile.am: Fix make variable substitution to be more portable
+
+2009-02-23 Chris Allegretta <chrisa@asty.org>
+ * rcfile.c (parse_keybinding) - Define a var before tryung to use it. Whoops!
+ * fix some redefinitions causing compiler warnings, from Eitan Adler. Other
+ (hopefully) fixes for uncasted malloc()s, reported by the same.
+ * doc/man/fr/Makefile.am: Add groff check fix to fr files.
+
+GNU nano 2.1.9 - 2009.02.16
+2009-02-16 Chris Allegretta <chrisa@asty.org>
+ * Add new argument to reset_multis for force redraws without attempting to
+ guess whether we need to, for functions that we don't have good info about
+ the text state. New utility function color.c:reset_multis_for_id().
+
+2009-02-15 Chris Allegretta <chrisa@asty.org>
+ * configure.ac, doc/man/Makefile.am - Add check for HTML output support in GNU
+ groff. Fixes Savannah bug #24461: build traps on groff. Also, add installation
+ of html-ized man pages to $datadir/nano/man-html, since we should probably
+ install files we went to all the trouble of generating.
+
+2009-02-14 Chris Allegretta <chrisa@asty.org>
+ * nano.c (precalc_multicolorinfo) - Add debugging so we have a better clue if further
+ issues arise. Also start at the beginning of later lines when trying to match the
+ end of a multi-line regex. Fixes more overly aggressive highlighting found by
+ Mike Frysinger. Finally, advance to the match end for performance.
+
+2009-02-11 Chris Allegretta <chrisa@asty.org>
+ * nanorc.c (parse_include): Do call real_dir_from_tilde() on included
+ files in .nanorc, but still avoiding bug #25297. Fixes ~ and ~user
+ specifications for nanorc include files, as reported by Eitan Adler.
+
+2009-02-09 Chris Allegretta <chrisa@asty.org>
+ * New option -q, --quiet, rcfile option "quiet" implemented. Skips printing
+ errors about the rcfile and asking user to press enter. Also, nano should
+ now only ask for one enter press when there is an error when not using -q.
+ Based on discussion between Eitan Adler and Mike Frysinger.
+ * rcfile.c (parse_keybinding) - Significant cleanups and fixes for
+ detecting and reporting errors in key bindings code.
+
+2009-02-08 Chris Allegretta <chrisa@asty.org>
+ * Make reset_multidata reset more lines, since contrary to previous problems the
+ syntax highlting is now too *un*ambitious, causing display glitches when
+ deleting a regex boundary.
+ * Add more multidata initliazers for new buffers and 'magic lines'. Fixes segfaults
+ with syntax highlighting in new buffers, initially reported by Mike Frysinger.
+
+GNU nano 2.1.8 - 2009.02.07
+2009-02-06 Chris Allegretta <chrisa@asty.org>
+ * rcfile.c (parse_include): Abort on being unable to open an included rcfile. Fixes
+ Savannah bug 25490, nanorc: "include"ing a file which doesn't exist causes nano to segfault.
+
+2009-02-05 Chris Allegretta <chrisa@asty.org>
+ * More color syntax speedups: Determine in reset_multis() whether we really need to call
+ edit_refresh(). Additional global var edit_refresh_needed() to hopefully reduce
+ repeated calls to the function. New helper funcs reset_multis_before() and
+ reset_multis_after().
+
+2009-02-02 Chris Allegretta <chrisa@asty.org>
+ * New color precalculation code for mult-line regexes. New function precalc_multicolorinfo(),
+ new structure multidata for keeping track of where regexes start/stop. More
+ performance improvements forthcoming.
+
+2009-01-29 Chris Allegretta <chrisa@asty.org>
+ * nano.c (move_to_filestruct) - properky initialize new fileage for multiswatching, sigh.
+ Fix cut sefaults discovered by Mike Frysinger.
+
+2009-01-29 Chris Allegretta <chrisa@asty.org>
+ * nano.c (main): Add support for nano acting like a pager when invoked with - as first
+ file argument.
+
+2009-01-28 Davide Pesavento <davidepesa@gmail.com>
+ * doc/syntax/gentoo.nanorc: Updates from David and Mike Frysinger.
+
+2009-01-25 Chris Allegretta <chrisa@asty.org>
+ * files.c (open_file), nanorc.c (parse_include): Don't get_full_path on
+ included rc files, due to it potentially impacting the ability
+ to read files in nano's cwd(). Fixes Savnanah bug #25297 reported by Mike
+ Frysinger)
+
+2009-01-24 Chris Allegretta <chrisa@asty.org>
+ * First pass at some caching of caching color info. Right now it's only for
+ multi-line regexes but this may not be enough to increase performance.
+ * Add interruptability to search functions. New functions enable_nodelay and
+ disable_nodelay and changes to the routines to handle checking for pending
+ searches. Fixes Savnnah bug 24946: Need interrrupt for search.
+
+2009-01-19 Chris Allegretta <chrisa@asty.org>
+ * Change function definitions to shorts instead of (void *)s. New mapping function
+ iso_me_harder_funcmap(). Fixes compilation complaints with -pedantic,
+ reported by Eitan Adler <eitanadlerlist@gmail.com>.
+
+GNU nano 2.1.7 - 2008.11.10
+2008-10-20 Chris Allegretta <chrisa@asty.org>
+ * files.c (do_writeout): Add check for file modification when saving
+ the file so the user can at least know they may be blowing away changes.
+
+2008-10-14 Chris Allegretta <chrisa@asty.org>
+ * nanorc.5: Fix redo man page entry and update explanation, reported by
+ Eitan Adler <eitanadlerlist@gmail.com>
+ * global.c (shortcut_init), search.c (search_init): Fix add_to_sclist for ^W^T so
+ invalid messages will display properly. Fixes Savannah bug 24507.
+
+2008-10-13 Chris Allegretta <chrisa@asty.org>
+ * Remove CUTTOEND as an undo type as it's unneeded, fix u->to_end logic in undo struct.
+ * undo.c (update_undo): Don't free cutbuffer if NULL, fix for Savannah bug #24499
+
+2008-10-04 Chris Allegretta <chrisa@asty.org>
+ * cut.c (Add_undo): Save last cut undo information so it can be used for next uncut, fixes
+ Savannah bug 24183.
+
+GNU nano 2.1.6 - 2008.10.03
+2008-10-03 Pascal Gentil <pascal.gentil@univ-rennes1.fr>
+ * fortran.nanorc: Sample python syntax highlighting file
+
+2008-09-30 Dirkjan Ochtman <dirkjan@ochtman.nl>
+ * python.nanorc: Small python syntax update
+
+2008-09-30 <bluestorm_dylc@hotmail.com>
+ * ocaml.nanorc: Sample OCaml syntax highlighting file
+
+2008-09-30 Dave Geering <dgeering@toshiba-tap.com>
+ * objc.nanorc: Sample Objective-C Syntax Hightlighting file
+
+2008-09-30 Chris Allegretta <chrisa@asty.org>
+ * configure.ac: Change extra, multibuffer, color and rcfile configure options to default to enabled
+ --enable-tiny will now disable these options as well
+ * python.nanorc, ruby.nanorc: Add header lines for python and ruby as well
+
+2008-09-21 Chris Allegretta <chrisa@asty.org>
+ * rcfile.c, color.c, nano.h: Add new capability for matching a syntax type by the "header" (1st line)
+ of a file being edited. Based on Savannah bug 24197 and inital proof of concept by Dave Geering
+ <dgeering@toshiba-tap.com>
+
+2008-09-16 Chris Allegretta <chrisa@asty.org>
+ * text.c: Add support for undoing a text uncut. Split out the undo and redo of a text cut
+ in order to avoid code duplication.
+
+2008-09-06 Chris Allegretta <chrisa@asty.org>
+ * nano.c: Do call disable_signals at startup regardless, since under cygwin we can't generate
+ ^C without it.
+
+GNU nano 2.1.5 - 2008.08.30
+2008-08-29 Chris Allegretta <chrisa@asty.org>
+ * configure.ac, color.c, rcfile.c, utils.c: 1st attempt at supporting systems which don't support
+ GNU-style word boundaries. New function fixbounds() to translate from GNU-style to
+ BSD-style, autoconf option GNU_WORDBOUNDS.
+ * nano-regress: New perl script to check for some of the more obvious issues with compilation
+ issues with certain configure options.
+ * global.c, help.c, browser.c, files.c, proto.h: Fix several compipation and programmatic
+ issues with --disable-help, especially that do-writeout was treating ^G the same as ^M.
+
+2008-08-28 Chris Allegretta <chrisa@asty.org>
+ * configure.ac, rcfile.c: Add support for an alternate rcfilename at configure time. Maybe this
+ should become a command line option some day, but I don't see the need currently. Start of
+ fix for Savannah bug #24128: Add nanorc support to win32 platform.
+
+2008-08-21 Chris Allegretta <chrisa@asty.org>
+ * text.c: Change error messages where we may possibly get into a bad state and urge
+ the user to save when this happens. Originally by Benno Schulenberg <bensberg@justemail.net>
+ * text.c (do_enter): Fix issue when compiled with --enable-debug, fixes Savannah bug 24092.
+
+2008-08-08 Magnus Granberg <zorry@ume.nu> / Adam Conrad <?>
+ * files.c (write_file): Add needed flags to open() calls when writing out files. Fixes Savannah bug
+ #23827: Compilation fails with -D_FORTIFY_SOURCE=2
+
+2008-08-08 Chris Allegretta <chrisa@asty.org>
+ * files.c (write_file): Check exit code of fclose(), since in certain out of space conditions the OS will
+ happily report successful fwrite()s until you try and close the file. Fix for Savannah bug
+ #24000: no free space on partition - nano claims successful write - file empty
+
+GNU nano 2.1.4 - 2008.08.09
+2008-08-08 Chris Allegretta <chrisa@asty.org>
+ * files.c (write_file): Do not go on and attempt to write the main file if writing the backup file failed,
+ related to Savannah bug 24000.
+ * text.c (do_redo): Fix improperly restoring the text when redoing a line split.
+ * text.c (add_undo): Fix check for multi-line cut check skips adding other new legit events.
+
+2008-07-23 Chris Allegretta <chrisa@asty.org>
+ * text.c: Reset openfile-> to OTHER after an undo or redo so we don't mistakenly
+ mistakenly think this is an update when it's really an add. Also
+ Fix an extra ; after an if statement which makes nano try to free a struct which
+ may be NULL
+
+GNU nano 2.1.3 - 2008.08.04
+2008-07-23 Chris Allegretta <chrisa@asty.org>
+ * configure.ac: Add ncursesw dir to include path if lib detected
+
+2008-07-11 Mike Frysinger <vapier@gentoo.org>
+ * doc/nanorc.sample.in: Include the updates files in the default sample nanorc.
+
+2008-07-11 Fabian Groffen <grobian@gentoo.org>
+ * nano.c: Don't include langinfo.h if not using ENABLE_UTF8
+ (Savannah patch 6565)
+
+2008-07-11 Mitsuya Shibata <mty.shibata@gmail.com>
+ * text.c: Fix crashing in help menu when using certain locales
+ (Savannah bug 23751)
+
+2008-07-09 Chris Allegretta <chrisa@asty.org>
+ * nano.c/nano.h/global.c/text.c: New generalized undo code, currently
+ just works for adding and deleting text and splitting and unsplitting lines.
+
+2008-06-29 Chris Allegretta <chrisa@asty.org>
+ * global.c: Fix for not having search history when --disable-justify is used
+ (Savannah bug 23733)
+
+
+GNU nano 2.1.2 - 2008.06.24
+2008-06-24 Chris Allegretta <chrisa@asty.org>
+ * rcfile.c: Added function check_bad_binding() to look for sequences which
+ shouldn't be bound, per Savannah bug 22674.
+
+2008-05-31 Chris Allegretta <chrisa@asty.org>
+ * prompt.c,search.c,global.c: Tentative fix for bug #23144: using arrow
+ keys in search buffer affects main window (by Mike Frysinger)
+
+2008-05-31 Chris Allegretta <chrisa@asty.org>
+ * global.c: Fix for Savannah bug #23442: left/right arrow keys
+ do not work with --enable-tiny (by Mike Frysinger)
+
+2008-05-31 Chris Allegretta <chrisa@asty.org>
+ * files.c,proto.h,text.c: Fix for conflicts with AIX curses
+ variables, from William Jojo <jojowil@hvcc.edu>
+
+2008-05-31 Chris Allegretta <chrisa@asty.org>
+ * global.c: Fix for compile error when --disable-speller is used
+ (Savannah bug 23227 by Mike Frysinger)
+
+2008-05-31 Chris Allegretta <chrisa@asty.org>
+ * Fix for seg fault when window size too small, by
+ Andreas Amann <andreas.amann@tyndall.ie>
+
+GNU nano 2.1.1 - 2008.04.01
+2008-05-31 Chris Allegretta <chrisa@asty.org>
+ * Added the following contributed files, by owner:
+ Donnie Berkholz <dberkholz@gentoo.org>
+ * Sample awk.nanorc
+ Simon Rupf <simon.rupf@int-ag.ch>
+ * Sample css.nanorc
+ Josef 'Jupp' Schugt <jupp@rubyforge.org>
+ * sample ruby.nanorc
+
+2008-03-31 Chris Allegretta <chrisa@asty.org>
+ * global.c: Fix for issues compiling with --enable-tiny and
+ --enable-multibuffer, as reported by Mike Frysinger.
+ * files.c: Fix the fact that the insert file prompt text did not
+ properly appears in tiny mode.
+
+2008-03-19 Benno Schulenberg <bensberg@justemail.net>
+ * help.c, nano.c: Fix toggle help not being translated, fix allocation
+ issue.
+
+2008-03-19 Chris Allegretta <chrisa@asty.org>
+ * gloabl.c: Fix bracket matching sequence to be M-] not M-[, as reported
+ Nick Warne <nick@ukfsn.org>.
+ * doc/syntax/Makefile.am - Actually include new syntaxes from Mike, etc
+ * debian.nanorc - New debian sources.list config since we're including
+ gentoo, adapted from Milian Wolff <mail@milianw.de>
+
+2008-03-18 Mike Frysinger <vapier@gentoo.org>
+ * winio.c: Remove unneeded variable in parse_kbinput()
+ * rcfile.c: relocate check_vitals_mapped() function to just above
+ where it actually gets used and declare it "static void" in the process
+ * global.c: only declare nano_justify_msg when justify support is enabled
+ * php.nanorc: Php syntax highlighting config
+ * tcl.nanorc: Tcl syntax highlighting config
+ * gentoo.nanorc: Gentoo syntax highlighting config
+
+2008-03-17 Benno Schulenberg <bensberg@justemail.net>
+ * global.c: Fix incorrect first line jump messsage, fix
+ more comments to assist translators
+ * winio.c: Fix shortcut labels not being translated.
+
+2008-03-17 Mike Frysinger <vapier@gentoo.org>
+ * */.gitignore: Git ignore files for those running a local git
+ against SVN.
+
+2008-03-16 Benno Schulenberg <bensberg@justemail.net>
+ * src/help.c, src/global: Fix help strings no longer being
+ translated properly.
+ * src/global.c, doc/man/nanorc.5: Fix typos and poorlly worded lines
+ in the source and man pages.
+
+2008-03-04 Chris Allegretta <chrisa@asty.org
+ * everything: New shortcut backend. New structs subnfunc
+ for menu functions and toggles and sc for shortcut keys, old
+ 'shortcut' and 'toggles' structs are gone. The current implementation
+ has a bunch of broken stuff (some of which is documented in BUGS).
+ Updated nanorc.5 with some mostly complete documentation on configuring.
+
+2007-12-20 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * AUTHORS, doc/faq.html: Update maintenance information.
+ * NEWS: Resync with NEWS from the 2.0 branch.
+
+2007-12-18 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * nano.c (print_opt_full): Use strlenpt() instead of strlen(),
+ so that tabs are placed properly when displaying translated
+ strings in UTF-8, as found by Jean-Philippe Guérard.
+
+2007-12-17 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * configure.ac, doc/texinfo/nano.texi, nano.c (terminal_init):
+ Change slang curses emulation support to turn off the same
+ options as --enable-tiny, as it's hopelessly broken otherwise.
+ * nano.c (disable_signals, main): Simplify terminal handling by
+ using raw mode instead of cbreak mode.
+ * text.c (execute_command): Call terminal_init() instead of just
+ disable_signals() after executing the command, as the command
+ may have changed the terminal settings.
+ * ChangeLog.pre-2.1: Add missing attribution.
+ * NEWS: Resync with NEWS from the 2.0 branch.
+
+2007-12-10 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * nano.c (main): Exit if initscr() fails.
+
+2007-12-09 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * faq.html: Add minor punctuation and wording fixes, and update
+ various sections to account for Alpine.
+
+2007-12-08 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * prompt.c (do_statusbar_mouse, reset_statusbar_cursor,
+ update_statusbar_line, need_statusbar_horizontal_update): Fix
+ minor display and cursor placement problems when scrolling
+ between pages at the statusbar prompt.
+
+2007-12-07 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * winio.c (get_mouseinput): Fix longstanding problem where mouse
+ clicks on the statusbar prompt text wouldn't be recognized
+ unless the NO_HELP flag was turned off.
+ * doc/man/rnano.1, doc/man/fr/rnano.1: Update copyright notices,
+ as Thijs Kinkhorst's copyrights have now been assigned to the
+ Free Software Foundation.
+
+2007-12-04 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * nano.c (main), prompt.c (get_prompt_string), winio.c
+ (do_replace_highlight): Per OKATA Akio's patch, with minor
+ tweaks by me, add wnoutrefresh() calls after
+ reset_(statusbar_)?cursor() calls, to ensure that the cursor is
+ placed properly when using NetBSD curses.
+ * nano.c (disable_mouse_support, enable_mouse_support): When
+ toggling mouse support on or off, save and restore the mouse
+ click interval.
+
+2007-11-29 Jean-Philippe Guérard <jean-philippe.guerard@tigreraye.org>
+
+ * doc/man/fr/*.1, doc/man/fr/nanorc.5: Fix copyright notices.
+ The copyrights are disclaimed on these translations, but the
+ copyrights of the untranslated works also apply.
+
+2007-11-28 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * doc/man/fr/nanorc.5: Remove trailing whitespace.
+
+2007-11-17 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * files.c (read_file): Improve autodetection of DOS and Mac
+ format files to not trigger on carriage returns in the middle of
+ files, as found by Kjell Braden.
+
+2007-11-06 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * doc/man/rnano.1, doc/man/fr/rnano.1: Update copyright notices,
+ as Jordi Mallach's copyrights have now been assigned to the Free
+ Software Foundation.
+
+2007-11-05 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * search.c (do_gotolinecolumn): Use a clearer error message if
+ we enter an invalid line or column number, per Mike Melanson's
+ suggestion.
+
+2007-10-11 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * doc/man/nano.1, doc/man/fr/nano.1, doc/texinfo/nano.texi,
+ src/*.c, src/*.h: Update copyright notices, as Chris
+ Allegretta's copyrights have now been assigned to the Free
+ Software Foundation.
+ * doc/man/nanorc.5, doc/man/fr/nanorc.5: Make copyright notices
+ for these files consistent in style.
+ * files.c (cwd_tab_completion): Remove unneeded assert.
+ * files.c (username_tab_completion, cwd_tab_completion): Rename
+ variable buflen to buf_len, for consistency.
+ * files.c (input_tab): Disable completion of usernames,
+ directories, and filenames if the cursor isn't at the end of the
+ line, as it can lead to odd behavior (e.g. adding a copy of the
+ entire match to the middle of the line instead of just the
+ uncompleted part of the match).
+
+2007-10-05 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * src/*.c, src/*.h: Update copyright notices, as my copyrights
+ have now been assigned to the Free Software Foundation.
+
+2007-09-16 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * winio.c (edit_scroll): Fix problem where the screen wouldn't
+ be updated properly if you paged up with the first line of the
+ file onscreen and the mark on.
+
+2007-08-26 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * doc/faq.html: Update links to the Free Translation Project.
+
+2007-08-23 Jean-Philippe Guérard <jean-philippe.guerard@tigreraye.org>
+
+ * doc/man/fr/*.1, doc/man/fr/nanorc.5: Add translation of new
+ licensing terms.
+
+2007-08-23 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * doc/man/fr/*.1, doc/man/fr/nanorc.5: Delete translation of
+ old licensing terms, until it can be updated.
+
+2007-08-22 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * COPYING.DOC: Add a copy of the GNU FDL version 1.2.
+ * Makefile.am: Add COPYING.DOC to EXTRA_DIST.
+ * doc/man/*.1, doc/man/nanorc.5, doc/man/fr/*.1,
+ doc/man/fr/nanorc.5, doc/texinfo/nano.texi: Relicense to the GNU
+ GPL version 3 or later/the GNU FDL version 1.2 or later with no
+ Invariant Sections, Front-Cover Texts, or Back-Cover Texts.
+
+2007-08-21 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * doc/man/rnano.1, doc/man/fr/rnano.1: Add missing copyright
+ notice from nano-tiny.1, which rnano.1 is based on.
+ * doc/man/fr/nano.1, doc/man/fr/nanorc.5, doc/man/fr/rnano.1:
+ Make all copyright notices consistent.
+
+2007-08-16 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * files.c (do_insertfile): Properly handle more cases of
+ inserting a file with the mark on.
+ * nano.c (copy_from_file): Properly handle more cases of
+ uncutting text with the mark on.
+
+2007-08-15 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * Makefile.am: Remove erroneous backslash after
+ ChangeLog.pre-2.1 in EXTRA_DIST, so that "make dist" works
+ again.
+ * files.c (do_insertfile): Make sure the mark is always properly
+ positioned after inserting a file with the mark on.
+ * nano.c (copy_from_file): Make sure the mark is always properly
+ positioned after uncutting multiple lines with the mark on.
+
+2007-08-11 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * COPYING: Add a copy of the GNU GPL version 3.
+ * configure.ac, *.c, *.h: Relicense to the GNU GPL version 3 or
+ later.
+
+2007-08-10 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * files.c (username_tab_completion, cwd_tab_completion,
+ input_tab): Update copyright notice to account for
+ modifications.
+ * utils.c (ngetdelim): Simplify.
+ * utils.c (ngetline, ngetdelim): Update copyright notice to
+ account for modifications.
+
+2007-08-07 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * nano.c (copy_from_file): Fix potential segfault, found by Paul
+ Goins, after uncutting one line of text with the mark on by
+ properly preserving the beginning of the mark.
+ * nano.c (copy_from_file): Make sure the mark is always properly
+ positioned after uncutting one line of text with the mark on.
+
+2007-08-01 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * nano.c (version): Display copyright notices.
+
+2007-07-31 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * configure.ac: Update copyright notice to account for
+ modifications.
+
+2007-07-29 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * doc/faq.html: Update RPM links for nano 2.0.x.
+
+2007-07-11 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * files.c (copy_file): Assert that inn and out don't both point
+ to the same file.
+
+2007-07-10 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * chars.c (nstrcasestr, mbstrcasestr, revstrstr, revstrcasestr,
+ mbrevstrcasestr): Simplify and rewrite to use the strncasecmp()
+ equivalents.
+
+2007-07-09 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * chars.c (nstrcasestr, mbstrcasestr, revstrstr, revstrcasestr,
+ mbrevstrcasestr): Fix typo that broke the check for needle's
+ being blank.
+ * chars.c (mbstrncasecmp, mbstrnlen, mbstrpbrk,
+ has_blank_mbchars): Simplify by using for loops instead of while
+ loops where possible, to match the single-byte versions of these
+ functions.
+ * search.c (do_replace_loop): Fix problem where replacing e.g.
+ single-byte characters with multibyte ones could result in
+ openfile->totsize's being miscalculated.
+
+2007-07-06 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * chars.c (nstrcasestr, mbstrcasestr, revstrstr, revstrcasestr,
+ mbrevstrcasestr): Return char* instead of const char*.
+
+2007-07-02 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * chars.c (nstrcasestr, mbstrcasestr, revstrstr, revstrcasestr,
+ mbrevstrcasestr): For efficiency, return haystack/rev_start
+ immediately if needle is blank.
+
+2007-07-01 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * chars.c (nstrncasecmp, mbstrncasecmp): For efficiency, return
+ zero immediately if s1 and s2 point to the same string.
+
+2007-06-30 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * prompt.c (do_yesno_prompt): Remove redundant check for
+ NO_HELP's being FALSE.
+
+2007-06-28 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * browser.c (do_browser), nano.c (do_mouse), prompt.c
+ (do_statusbar_mouse, do_yesno_prompt): Further simplify
+ processing of mouse events by consolidating if clauses.
+ * winio.c (do_mouseinput): Return unconditionally if we get a
+ mouse event that we don't deal with, instead of inside an else
+ clause.
+
+2007-05-29 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * winio.c (do_mouseinput): Deal with clicks of the first mouse
+ button again. Oddly, ncurses built without --enable-ext-mouse
+ needs this, but ncurses built with --enable-ext-mouse doesn't.
+
+2007-05-25 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * configure.ac, nano.c (main): Replace the current hackish check
+ for a UTF-8 locale with a proper call to nl_langinfo().
+ * winio.c (get_key_buffer): Fix inaccurate comments.
+
+2007-05-22 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * browser.c (do_browser), nano.c (do_mouse), prompt.c
+ (do_statusbar_mouse, do_yesno_prompt), winio.c (do_mouseinput):
+ Simplify processing of mouse events. Instead of calling
+ wenclose() to get the window a mouse event took place in and
+ manually adjusting the returned coordinates to be relative to
+ that window the mouse event took place in, call wmouse_trafo(),
+ which does both.
+
+2007-05-20 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * browser.c (do_browser), nano.c (do_mouse), prompt.c
+ (do_statusbar_mouse, do_yesno_prompt), winio.c (do_mouseinput):
+ Fix processing of mouse events so that those we don't handle are
+ ignored instead of being erroneously passed through.
+ * winio.c (do_mouseinput): Simplify handling of mouse events
+ involving the first mouse button by only dealing with releases.
+ * winio.c (do_mouseinput): Improve mouse wheel support to only
+ move the cursor if we're in the edit window or on the statusbar.
+
+2007-05-15 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * winio.c (do_mouseinput): Add mouse wheel support, per Helmut
+ Jarausch's suggestion. Now, if mouse support is enabled, and
+ nano is using a version of ncurses compiled with the
+ --enable-ext-mouse option, rolling the mouse wheel up or down
+ will move the cursor three lines up or down.
+
+2007-04-23 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * TODO: Add entries for fixing limitations with pasting text and
+ handling bad/incomplete UTF-8 sequences.
+
+2007-04-22 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * text.c (backup_lines): Avoid a segfault when the mark begins
+ and ends on the line after the last line of the paragraph.
+
+2007-04-21 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * files.c (do_writeout): If we're in restricted mode, we're not
+ allowed to write selections to files, so don't display the
+ "Write Selection to File" prompt.
+ * files.c (do_writeout): Simplify.
+
+2007-04-19 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * files.c (tail): Remove unneeded if statement.
+
+2007-04-18 John M. Gabriele <jmg3000@gmail.com>
+
+ * doc/faq.html: Add a new section 4.14 (with minor tweaks by
+ David Lawrence Ramsey) to explain how autoindent affects pasted
+ text.
+
+2007-04-18 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * files.c (open_file): Open files using their full paths
+ whenever possible, so that ~user/file.txt and "~user/file.txt"
+ are treated the same way if ~user is a user's home directory.
+ * files.c (real_dir_from_tilde): Simplify.
+ * files.c (do_writeout): Properly display the warning in all
+ cases if we try to save (a) an existing file under a different
+ name, or (b) a file with no name under an existing file's name.
+ * files.c (do_writeout): Rename variable different_name to
+ do_warning, for clarity.
+ * rcfile.c (parse_include): Open files using their full paths
+ whenever possible, so that ~user/file.txt and "~user/file.txt"
+ are treated the same way if ~user is a user's home directory.
+ * rcfile.c (parse_include): Properly check for the included
+ file's being a directory, a character file, or a block file.
+ * rcfile.c (parse_include): For consistency, display the
+ filename as the user entered it if we can't read the specified
+ file.
+ * winio.c (parse_kbinput): Interpret Cancel and Shift-Cancel.
+ * winio.c (get_escape_seq_kbinput): Add missing comments.
+
+2007-04-17 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * files.c (real_dir_from_tilde): Fix long-standing problem,
+ found by Justin Fletcher, where directory names that began with
+ "~", but that weren't users' home directories, could be
+ erroneously treated as users' home directories (e.g. "~d/" would
+ be treated as "~daemon/").
+ * files.c (input_tab): Don't bother checking if num_matches is
+ less than zero, as it's a size_t and hence unsigned.
+
+2007-04-16 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * files.c (real_dir_from_tilde): Fix segfault, found by Justin
+ Fletcher, when dealing with directory names that begin with "~",
+ but that aren't users' home directories.
+
+2007-04-11 Mike Frysinger <vapier@gentoo.org>
+
+ * doc/syntax/asm.nanorc, doc/syntax/c.nanorc,
+ doc/syntax/sh.nanorc: Copy the regex that highlights trailing
+ whitespace (with minor tweaks by David Lawrence Ramsey) from
+ doc/syntax/java.nanorc to these files, as it's also useful in
+ them.
+
+2007-04-04 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * AUTHORS, faq.html: Update email address.
+ * winio.c (get_escape_seq_kbinput): Add escape sequences for
+ Terminal.
+
+2007-02-01 Benno Schulenberg <bensberg@justemail.net>
+
+ * global.c (shortcut_init): Reword the movement shortcut
+ descriptions so that they use "Go to" instead of "Move to",
+ since not all of them move the cursor in the same way.
+ * global.c (shortcut_init): Reword the paragraph movement
+ shortcut descriptions to more accurately describe how they work.
+ * nano.c (usage): Reword the description of the -S/--smooth
+ command line option in order to differentiate it from the
+ associated toggle description.
+
+2007-01-29 David Lawrence Ramsey <pooka109@cox.net>
+
+ * ChangeLog: Rework the 2.1 branch's changelog to be more
+ readable, per Jordi Mallach's suggestion.
+ * ChangeLog.pre-2.1: Move the 2.0 branch's changelog here, per
+ Jordi Mallach's suggestion.
+ * Makefile.am: Add ChangeLog.pre-2.1 to EXTRA_DIST.
+ * src/help.c (help_init): Add a missing space to the "Execute
+ Command" help text.
diff --git a/ChangeLog.pre-2.1 b/ChangeLog.pre-2.1
new file mode 100644
index 0000000..d3685e2
--- /dev/null
+++ b/ChangeLog.pre-2.1
@@ -0,0 +1,8369 @@
+GNU nano 2.0.3 - 2007.01.29
+- General:
+ - Miscellaneous comment fixes. (DLR)
+ - More int -> bool conversions. (DLR)
+ - Don't install the nanorc manpages or generate their HTML
+ versions if nano is built without nanorc support. Changes to
+ configure.ac, doc/man/Makefile.am, and doc/man/fr/Makefile.am.
+ (DLR)
+ - Simplify the commands that generate HTML documentation in
+ order to remove unnecessary usage of cat. Changes to
+ doc/man/Makefile.am, doc/man/fr/Makefile.am, and
+ doc/texinfo/Makefile.am. (DLR)
+- files.c:
+ do_writeout()
+ - When setting retval to the return value of
+ write_(marked_)?file(), use the "?" operator instead of an
+ if/else clause. (DLR)
+ is_dir()
+ - Don't assign dirptr's value using buf until we've asserted
+ that buf isn't NULL. (DLR)
+ - Remove unneeded assert. (DLR)
+- proto.h:
+ - Add missing is_dir() prototype. (DLR)
+- search.c:
+ regexp_init()
+ - Don't assign rc's value via regcomp() until we've asserted
+ that regexp_compiled is FALSE. (DLR)
+- text.c:
+ do_alt_speller()
+ - Rename variable altspell_error to alt_spell_error, for
+ consistency. (DLR)
+ do_spell()
+ - Rename variable i to status, for clarity. (DLR)
+- winio.c:
+ do_credits()
+ - Update the last copyright notice to include 2007. (DLR)
+- Makefile.am:
+ - Add README.CVS to EXTRA_DIST, so that nano's CVS checkout
+ instructions aren't only available in its CVS snapshots. (DLR)
+- README:
+ - Add more miscellaneous cosmetic fixes. (DLR)
+- README.CVS:
+ - Update for the 2.0 branch of nano. (DLR)
+- NEWS:
+ - Formatting fix. (DLR)
+- m4/glib-2.0.m4:
+ - Import the latest version of this file from glib 2.10.3. (DLR)
+- doc/faq.html:
+ - Update section 4.1 to describe how to open files with names
+ beginning with '+' at specified columns as well as lines.
+ (DLR)
+- doc/man/fr/Makefile.am:
+ - Set mandir before setting man_MANS, to more closely match
+ doc/man/Makefile.am. (DLR)
+- doc/syntax/python.nanorc:
+ - Improve string highlighting regexes. (Mike Frysinger)
+
+GNU nano 2.0.2 - 2006.12.20
+- General:
+ - Miscellaneous comment fixes. (DLR)
+- browser.c:
+ do_browser()
+ - Properly handle directories that contain nulls. (DLR)
+- files.c:
+ do_insertfile()
+ - Properly handle filenames and executable commands that contain
+ nulls. (DLR)
+ write_file()
+ - Properly handle filenames that contain nulls. (DLR)
+ do_writeout()
+ - Fix a segfault when we can't get the full path of either the
+ filename we want to save under or the original filename. (DLR,
+ found by Mike Frysinger)
+- nano.h:
+ - Rename NANO_ALT_REPLACE_KEY to NANO_REPLACE_ALTKEY, for
+ consistency. (DLR)
+ - Rename NANO_ALT_.* and NANO_.*ALTKEY to NANO_META_.* and
+ NANO_.*METAKEY, for consistency. (DLR)
+- search.c:
+ update_history()
+ - Fix minor memory leak. (DLR)
+- text.c:
+ do_spell()
+ - When setting i to the return value of write_(marked_)?file(),
+ use the "?" operator instead of an if/else clause. (DLR)
+ do_verbatim_input()
+ - Fix minor memory leak. (DLR)
+- winio.c:
+ parse_kbinput()
+ - Add missing break. (DLR)
+ - Fix minor memory leak. (Itay Perl)
+ parse_verbatim_kbinput()
+ - Fix minor memory leak. (DLR)
+ edit_draw()
+ - Fix potential warnings when assigning -1 to paintlen by using
+ if/else clauses instead of "?" operators. (DLR)
+- configure.ac:
+ - Reword several option descriptions, for clarity. (DLR)
+- doc/faq.html:
+ - Add miscellaneous wording and capitalization fixes. (DLR)
+- BUGS:
+ - Add miscellaneous cosmetic fixes. (DLR)
+- README:
+ - Update for the 2.0 branch of nano. (DLR)
+
+GNU nano 2.0.1 - 2006.11.20
+- General:
+ - Miscellaneous comment fixes. (DLR)
+ - Fix copyright notices to not abbreviate the year list using a
+ range. Changes to do_credits() and all source files. (DLR)
+- files.c:
+ get_full_path()
+ - Remove unneeded assert. (DLR)
+ - Fix problem where only paths would be returned when both paths
+ and filenames should have been. (DLR)
+ do_writeout()
+ - For consistency, when saving a file with no name, don't allow
+ overwriting an existing file when in restricted mode. (DLR)
+ - Fix problem where a file could sometimes be overwritten
+ without a warning prompt. (DLR)
+- winio.c:
+ do_replace_highlight()
+ - Include the code to display zero-length matches even when
+ regex.h isn't found, as it can also be used to display
+ zero-length Unicode characters. (DLR)
+- doc/rnano.1, doc/fr/rnano.1:
+ - Add missing "(C)" to the copyright notice in the comments.
+ (DLR)
+- doc/nano.texi:
+ - Remove unneeded "." from the copyright notice in the comments.
+ (DLR)
+- NEWS:
+ - Add missing entries for nano 1.0.2 and 1.0.3, since 1.1.0
+ includes their changes. (DLR)
+
+GNU nano 2.0.0 - 2006.11.06
+- General:
+ - Miscellaneous comment fixes. (DLR)
+ - Add syntax for POV-Ray files. New file doc/syntax/pov.nanorc;
+ changes to doc/nanorc.sample.in and doc/syntax/Makefile.am.
+ (Donnie Berkholz, minor tweaks by DLR)
+- AUTHORS:
+ - Update for the 2.0 branch of nano. (DLR)
+- nano.spec.in:
+ - Update links for the 2.0 branch of nano. (DLR)
+ - Update for newer RPM-based distributions. (DLR, adapted from
+ the nano 1.3.12-1.1.spec file in Fedora Rawhide)
+ - Delete the changelog section, as it hasn't been kept up to
+ date, and all its changes are documented here in any case.
+ (DLR)
+- doc/faq.html:
+ - Update links for the 2.0 branch of nano. (DLR)
+- doc/nano.1, doc/nanorc.5, doc/rnano.1:
+ - Add minor wording fixes. (DLR)
+- doc/man/fr/nano.1, doc/man/fr/nanorc.5, doc/man/fr/rnano.1:
+ - Updated manpage translations by Jean-Philippe Guérard.
+- doc/nano.texi:
+ - Add minor wording and punctuation fixes. (DLR)
+
+GNU nano 1.9.99pre3 - 2006.10.25
+- chars.c:
+ nstrncasecmp()
+ - When returning, use the "?" operator instead of an if/else
+ clause. (DLR)
+- cut.c:
+ do_cut_text()
+ - When uncutting text in the process of copying it, always set
+ placewewant, as do_uncut_text() does, so that the current line
+ is always updated properly. (DLR)
+- files.c:
+ input_tab()
+ - Since the field precision operator used in the sprintf() uses
+ ints and not size_t's, replace it with two strncpy()s, which
+ use size_t's, and a null termination. (DLR)
+- help.c:
+ parse_help_input()
+ - Add 'E' and 'e' as aliases for Exit, for consistency with the
+ file browser. (DLR)
+- m4/ac_define_dir.m4:
+ - Import the latest version of this file from
+ http://autoconf-archive.cryp.to/ac_define_dir.m4. (DLR)
+- doc/faq.html:
+ - Update the question in section 4.13 to match the version of it
+ in the answer section. (DLR)
+- doc/syntax/c.nanorc:
+ - Simplify "undef", "ifn?def", "elif", and "else" in the
+ preprocessor regexes. (DLR)
+
+GNU nano 1.9.99pre2 - 2006.10.02
+- General:
+ - Miscellaneous comment fixes. (DLR)
+ - Make sure that the statusbar cursor position is always
+ properly reset when we get out of all statusbar prompts.
+ Changes to do_insertfile(), do_writeout(),
+ handle_sigwinch(), main(), and do_prompt_abort(). (DLR)
+- prompt.c:
+ do_statusbar_input()
+ - If we get a verbatim input sequence ending with Ctrl-J, remove
+ the Ctrl-J from the buffer before interpreting it as Enter, so
+ that it doesn't erroneously fall through to the edit window
+ and get interpreted as Justify. (DLR)
+- winio.c:
+ get_input()
+ - Simplify to avoid an unnecessary key_buffer_len check. (DLR)
+- doc/syntax/c.nanorc:
+ - Add "size_t" and "ssize_t" to the types regexes. (DLR,
+ suggested by Mike Frysinger)
+ - Simplify "signed" and "unsigned" in the types regexes. (DLR)
+
+GNU nano 1.9.99pre1 - 2006.08.29
+- General:
+ - Miscellaneous comment fixes. (DLR)
+ - Fix option descriptions. At least one of the two parts of
+ +LINE,COLUMN must be specified at all times; COLUMN is not the
+ only optional value. Also, fix wording problems in
+ -O/--morespace and -W/--wordbounds. Changes to usage(),
+ UPGRADE, nano.1, nanorc.5, rnano.1, nano.texi, and
+ nanorc.sample.in. (DLR)
+ - Fix mouse support so that it truly ignores everything except
+ releases and clicks of button 1. Changes to
+ enable_mouse_support() and get_mouseinput(). (DLR)
+ - In certain places, call wnoutrefresh(bottomwin) after calling
+ blank_statusbar(), in order to ensure that the statusbar is
+ actually blanked. Changes to do_help(), do_continue(),
+ handle_sigwinch(), and update_statusbar_line(). (DLR)
+ - If the mark isn't on, allow Meta-} and Meta-{ to indent and
+ unindent only the current line, just as it would if the mark
+ covered only the current line, instead of displaying a
+ statusbar message and quitting. Changes to shortcut_init(),
+ do_indent_marked() (renamed do_indent()),
+ do_indent_marked_void() (renamed do_indent_void()),
+ do_unindent_marked_void() (renamed do_unindent()), and
+ UPGRADE. (DLR, suggested by John M. Gabriele)
+ - Consolidate do_scroll_(up|down)() into do_(up|down)(), as
+ they have a lot of duplicate code. New functions do_up_void()
+ and do_down_void(); changes to shortcut_init(), do_up(),
+ do_scroll_up(), do_down(), do_scroll_down(), do_left(), and
+ do_right(). (DLR)
+ - Make Jordi's email address, and the description of what the
+ manual pages were written for, consistent in the
+ documentation. Changes to AUTHORS, nano.1, nanorc.5, and
+ rnano.1. (DLR, based on suggestions by Jordi)
+ - Don't include sys/ioctl.h in nano.c when NANO_TINY is defined,
+ as ioctl() is never used then. (DLR)
+ - Improve the display of bools in debugging statements. Changes
+ to parse_kbinput(), get_escape_seq_kbinput(),
+ parse_escape_seq_kbinput(), get_shortcut(), and get_toggle().
+ (DLR)
+ - Rename the values of the scroll_dir enum to UP_DIR and
+ DOWN_DIR, since UP is defined as a termcap value in Tru64's
+ and NetBSD 3.0's curses.h, which breaks compilation on those
+ systems. Changes to do_page_up(), do_page_down(), do_up(),
+ do_down(), nano.h, and edit_scroll(). (DLR; found by Daniel
+ Richard G. and Adam Wysocki, repectively)
+ - Rename the DISABLE_ROOTWRAP #define to DISABLE_ROOTWRAPPING.
+ (DLR)
+ - When using slang 2.x, call SLutf8_enable() with an argument of
+ 1 instead of TRUE, as that's the proper way to enable its
+ UTF-8 support. Changes to main() and configure.ac. (DLR)
+ - Fix punctuation relating to "i.e." in various comments and
+ documentation. (Benno Schulenberg and DLR)
+ - Make bad_mbchar a static const char* const in chars.c, as its
+ value doesn't change. (DLR)
+ - Add various clarifications to translated strings. Changes to
+ do_insertfile_void(), shortcut_init(), toggle_init(),
+ help_init(), print_view_warning(), usage(), and do_mark().
+ (Benno Schulenberg, minor tweaks by DLR)
+ - Properly preserve the cursor position when going from the
+ "Read File" or "Save File As" prompt to the file browser to
+ the "Go To Directory" prompt, and then canceling back to the
+ "Read File" or "Save File As" prompt. Changes to
+ get_prompt_string() and do_prompt(). (DLR)
+ - Rename the parameter old_pww to pww_save in
+ need_statusbar_horizontal_update(), need_horizontal_update(),
+ need_vertical_update(), and edit_redraw(); and rename the
+ variable old_pww to pww_save in do_search() and do_research();
+ for consistency. (DLR)
+- browser.c:
+ do_browser()
+ - Refactor the mouse support, modeling it after do_mouse() for
+ consistency. (DLR)
+ - Remove unneeded call to blank_edit(). (DLR)
+ - After entering "..", select the directory we were in before
+ instead of the first filename in the list, as Pico does. (DLR)
+ - Simplify screen update handling and exiting. (DLR)
+ - Fix potential segfault when going to a directory that doesn't
+ begin with '/'. (DLR)
+ do_browse_from()
+ - During the operating directory check, if path isn't NULL,
+ don't bother freeing it before mallocstrcpy()ing operating_dir
+ into it, as the latter operation will free it. (DLR)
+ - Don't bother freeing path if it's NULL. (DLR)
+ browser_init()
+ - Fix off-by-one error when calculating longest that kept the
+ rightmost column of the screen from being used. (DLR)
+ - Calculate width here instead of in browser_refresh(), as it's
+ more consistent. (DLR)
+ - If filelist is initialized, free it here instead of in several
+ places in do_browser(). (DLR)
+ browser_refresh()
+ - Simplify. (DLR)
+ - Fix problems where translated versions of "(dir)" could be
+ truncated, and where file sizes could be too long. (DLR)
+ - For the ".." entry, display "(parent dir)" instead of "(dir)",
+ as Pico does. (DLR)
+ - If a filename is too long, truncate it and display an ellipsis
+ before it, as titlebar() does. (DLR)
+ - Add translator comments explaining the maximum intended
+ lengths of "(dir)" and "(parent dir)". (DLR)
+ - Fix problem where width wouldn't be properly initialized if
+ the file list took up one line or less. (DLR)
+ - Don't display overly long filenames with ellipses if the
+ number of columns is extremely small. (DLR)
+ browser_select_filename()
+ - New function, used to select a specific filename in the list.
+ (DLR)
+ findnextfile()
+ - Simplify the uses of tail(). (DLR)
+ striponedir()
+ - Since all the strings passed to this are dynamically
+ allocated, use null_at() to strip the directory from the
+ string. Also, return the stripped path instead of modifying
+ path. (DLR)
+- chars.c:
+ mbstrncasecmp(), mbstrcasestr(), mbrevstrcasestr()
+ - Don't allocate space for multibyte characters until we've
+ asserted that the parameters we're using aren't NULL. (DLR)
+- files.c:
+ do_insertfile()
+ - If we execute a command in a new buffer, move back to the
+ beginning of the first line of the buffer afterwards, for
+ consistency. (DLR)
+ - If we don't insert a file into a new buffer, properly update
+ the x-coordinate to account for the number of characters
+ inserted on the current line. (DLR)
+ get_full_path()
+ - Don't return NULL when the current directory doesn't exist, as
+ we can still recover from that. (DLR, found by Mike Frysinger)
+ - Add various cleanups. (DLR)
+- global.c:
+ sc_init_one(), shortcut_init()
+ - Don't include blank_after when DISABLE_HELP is defined, as
+ it's never used then. (DLR)
+ shortcut_init()
+ - Remove the ^X shortcut for CutTillEnd at the search prompt, as
+ official Pico doesn't include it, and it can be confused with
+ Exit. (DLR, suggested by Benno Schulenberg)
+ - Make the help shortcut for the "Go to Directory" prompt call
+ do_browser_help() instead of do_help_void(), as this prompt is
+ only accessible inside the file browser. (DLR, found by Benno
+ Schulenberg)
+ toggle_init()
+ - Don't include desc or blank_after when DISABLE_HELP is
+ defined, as neither are ever used then. (DLR)
+ - Make sure that a blank line is not displayed after the Meta-Q
+ toggle when mouse support is disabled and we're in restricted
+ mode, and that it is displayed all other times. (DLR)
+ toggle_init_one()
+ - Don't include desc or blank_after when DISABLE_HELP is
+ defined, as neither are ever used then. (DLR)
+- help.c:
+ do_help()
+ - Simplify screen update handling and exiting. (DLR)
+ - Don't allow moving down a page when the last line of the help
+ text is onscreen. (DLR)
+ help_init()
+ - Adjust the first two chunks of the main help text so that
+ they're no more than 509 characters again. (DLR)
+- move.c:
+ do_scroll_up(), do_scroll_down()
+ - Fix problems where, after scrolling, the previous and current
+ lines would not be updated properly if the current line was
+ not the first or last line of the edit window. (DLR, found by
+ Mike Frysinger)
+- nano.c:
+ handle_sigwinch()
+ - Just in case we're in the statusbar prompt, reset the
+ statusbar cursor position when resizing the window. (DLR)
+- nano.h:
+ - Remove the manual disabling of color support if regex.h isn't
+ found, as configure.ac now handles that. (DLR)
+- rcfile.c:
+ parse_rcfile()
+ - Add missing ENABLE_COLOR #ifdef around the second check for a
+ syntax with no color commands, to fix compilation with rcfile
+ support and without color support. (Daniel Richard G.)
+- search.c:
+ replace_regexp()
+ - Remove unnecessary casting of c to int. (DLR)
+- text.c:
+ execute_command()
+ - Remove the marking of the file as modified, as do_insertfile()
+ now handles that. (DLR)
+- utils.c:
+ digits()
+ - Tweak to remove the assumption that n is always positive,
+ although it always is in this particular case. (DLR)
+- winio.c:
+ parse_kbinput()
+ - Properly handle combined meta and escape sequences, so that
+ e.g. Meta-/ will work properly when the / is on the numeric
+ keypad and NumLock is off. Also, properly handle combined
+ control character and escape sequences, so that e.g. Esc Esc /
+ will work properly when the / is on the numeric keypad and
+ NumLock is off. (DLR)
+ - Translate extended keypad keys to their ASCII equivalents even
+ when we hit Escape once or twice before typing them, for
+ consistency. (DLR)
+ - If they're defined, translate KEY_SUP into NANO_PREVLINE_KEY
+ and KEY_SDOWN into NANO_NEXTLINE_KEY, since they are sometimes
+ generated by Shift-Up and Shift-Down. (DLR)
+ parse_escape_seq_kbinput()
+ - Handle unknown and unignored escape sequences once here
+ instead of twice in parse_kbinput(). (DLR)
+ - Don't ignore escape sequences anymore. Instead, return the
+ corresponding key so that parse_kbinput() can translate it.
+ (DLR)
+ display_string()
+ - Properly handle buf[start_index]'s being a null terminator.
+ (DLR)
+ edit_draw()
+ - Simplify the setting of paintlen. (DLR)
+ titlebar()
+ - Don't display overly long filenames with ellipses if the
+ number of columns is extremely small. (DLR)
+ - Don't display any blank space for the state if we're in the
+ file browser, as Pico doesn't. (DLR)
+- configure.ac:
+ - If regex.h isn't found, display an error message if we try to
+ enable color support. (DLR)
+ - Fix the spacing of the error message displayed when slcurses.h
+ isn't found. (DLR)
+ - If we use the --disable-wrapping option, ignore the
+ --disable-wrapping-as-root option. (DLR)
+ - Add minor cosmetic tweaks. (DLR)
+- doc/Makefile.am:
+ - Don't include nanorc.sample in EXTRA_DIST, as it's only useful
+ when we're building from source, as opposed to building a
+ distribution. (DLR)
+ - Tweak to remove usage of the += operator again. (DLR)
+- doc/man/Makefile.am:
+ - Tweak to remove usage of the += operator again. (DLR)
+- doc/man/fr/nano.1, doc/man/fr/nanorc.5, doc/man/fr/rnano.1:
+ - Updated manpage translations by Jean-Philippe Guérard.
+- doc/faq.html:
+ - Update section 5.3 again to not state "the latest development
+ version" before 1.3.12, as it's no longer accurate. (DLR)
+ - Add some minor spacing fixes. (DLR)
+- doc/nano.texi:
+ - Add missing description of the -O/--morespace command line
+ option. (DLR)
+- doc/syntax/c.nanorc:
+ - Since .i and .ii are preprocessed C and C++ output, colorize
+ them here. (Mike Frysinger)
+ - Remove redundancy from the file extension regexes. (DLR)
+- doc/syntax/ruby.nanorc:
+ - Add missing blank line after the first comment, for
+ consistency. (DLR)
+ - Improve highlighting of constants. (John M. Gabriele, minor
+ tweaks by DLR)
+
+GNU nano 1.3.12 - 2006.06.26
+- General:
+ - Miscellaneous comment fixes. (DLR)
+ - Implement filename searches in the file browser. New
+ functions filesearch_init(), findnextfile(),
+ findnextfile_wrap_reset(), filesearch_abort(),
+ do_filesearch(), do_fileresearch(), do_first_file(),
+ do_last_file(), do_help_void(), and do_browser_help(); changes
+ to do_browser(), parse_browser_input(), shortcut_init(),
+ do_help(), and help_init(). (DLR)
+ - Open all files in binary mode for consistency and robustness.
+ Changes to load_history() and do_rcfile(). (DLR)
+ - Change translator-specific comments in global.c and prompt.c
+ so that they show up in nano.pot, and make them all
+ consistent. (Benno Schulenberg and DLR)
+ - Reduce USE_UTF8 to a static bool in chars.c, allow nano.c to
+ set it via a function, and allow winio.c to read its value
+ when needed. New functions utf8_init() and using_utf8();
+ changes to is_alnum_mbchar(), is_blank_mbchar(),
+ is_cntrl_mbchar(), is_punct_mbchar(), control_mbrep(),
+ mbrep(), mbwidth(), mb_cur_max(), make_mbchar(),
+ parse_mbchar(), mbstrncasecmp(), mbstrcasestr(),
+ mbrevstrcasestr(), mbstrnlen(), mbstrchr(), mbstrpbrk(),
+ mbrevstrpbrk(), has_blank_mbchars(), is_valid_mbstring(),
+ main(), display_string(), and do_credits(). (DLR)
+ - Add the ability to use bold text instead of reverse video
+ text, via the -D/--boldtext command line option and the
+ "boldtext" rcfile option. Changes to browser_refresh(),
+ do_help(), usage(), main(), update_statusbar_prompt(),
+ do_yesno_prompt(), titlebar(), statusbar(), onekey(),
+ edit_draw(), do_replace_highlight(), nano.1, nanorc.5,
+ nano.texi, and nanorc.sample. (DLR, suggested by Benno
+ Schulenberg)
+ - Add the ability to use self-contained color syntaxes from
+ separate files, accessible in the nanorc via the "include"
+ command. New function parse_include(); changes to
+ parse_rcfile(), do_nanorc(), nanorc.5, and nanorc.sample.
+ (Victor Ananievsky, Brand Huntsman and DLR)
+ - Change references to the "help menu" to the "help text
+ display" refer to display, for clarity. Changes to
+ shortcut_init(), configure.ac, and faq.html. (DLR, suggested
+ by Benno Schulenberg)
+ - Adjust the shortcut list display and related mouse support to
+ not waste the last few characters of bottomwin when the screen
+ width isn't a clean multiple of the column width. Changes to
+ do_mouseinput() and bottombars(). (Benno Schulenberg, minor
+ tweaks by DLR)
+ - Add several blank entries to the main shortcut list and the
+ global toggle list, in order to make the help text easier to
+ read. Changes to sc_init_one(), toggle_init(),
+ toggle_init_one(), shortcut_init(), get_toggle(), and
+ help_init(). (DLR, suggested by Benno Schulenberg)
+ - Reduce NO_RCFILE to a static bool in nano.c, since it's only
+ used there. Changes to finish() and main(). (DLR)
+ - Readd the Cancel -> Exit aliases for the file browser and help
+ browser. New function parse_help_input(); changes to
+ parse_browser_input() and do_help(). (DLR, suggested by Benno
+ Schulenberg)
+ - Add the ability to copy text into the cutbuffer without
+ cutting it, via Meta-^ (Meta-6). Note that this is disabled
+ when NANO_TINY is defined. New functions do_cut_text_void()
+ and do_copy_text(); changes to do_cut_text(), shortcut_init(),
+ and do_input(). (DLR, suggested by Ken Tyler)
+ - Add the ability to indent and unindent all marked lines of
+ text, via Meta-} (Meta-]) and Meta-{ (Meta-[). New functions
+ do_indent_marked(), do_indent_marked_void(), and
+ do_unindent_marked_void(); changes to shortcut_init(). (Chris
+ and DLR)
+ - Change the shortcut to find the matching bracket to Ctrl-].
+ Changes to shortcut_init() and do_statusbar_input(). (DLR)
+ - Drop the Meta-] and Meta-[ aliases for Meta-} and Meta-{, and
+ change the shortcut to find the matching bracket from Ctrl-]
+ back to Meta-], since Ctrl-] is used as the telnet escape key.
+ Changes to shortcut_init() and do_statusbar_input(). (DLR,
+ found by Chris)
+ - Add the ability to move to the first and last line of the help
+ text and the first and last file in the file browser via
+ Meta-\ (Meta-|) and Meta-/ (Meta-?). Changes to do_browser(),
+ shortcut_init(), and do_help(). (DLR)
+ - Allow unjustifying if we resize the window immediately after
+ justifying, as Pico does, and make input handling across
+ resizes more consistent. Changes to handle_sigwinch(),
+ main(), get_kbinput(), parse_kbinput(), get_byte_kbinput(),
+ and get_unicode_kbinput(); removal of reset_kbinput(). (DLR)
+ - Handle statusbar blanking in two places instead of many, so
+ that it always works consistently. Changes to do_browser(),
+ do_cut_text(), do_uncut_text(), do_first_line(),
+ do_last_line(), do_page_up(), do_page_down(), do_para_begin(),
+ do_para_end(), do_para_end(), do_next_word(), do_prev_word(),
+ do_home(), do_end(), do_up(), do_scroll_up(), do_down(),
+ do_scroll_down(), do_left(), do_right(), do_indent_marked(),
+ do_verbatim_input(), and get_kbinput(). (Benno Schulenberg,
+ minor tweaks by DLR)
+ - Handle prepending of wrapped text in one place instead of
+ many, so that it always works consistently. Changes to
+ do_uncut_text(), do_insertfile(), do_page_up(),
+ do_page_down(), do_up(), do_scroll_up(), do_down(),
+ do_scroll_down(), do_input(), do_search(), do_research(), and
+ do_delete(). (DLR)
+ - Ignore unhandled meta key sequences, function keys, and escape
+ sequences, indicate it on the statusbar, and beep when we get
+ an unhandled shortcut or toggle, as Pico does. To get this to
+ work properly, add a shortcut for moving to the next
+ search/replace string. New function is_ascii_cntrl_char();
+ changes to shortcut_init(), do_input(), do_statusbar_input(),
+ get_prompt_string(), and parse_kbinput(). (DLR, suggested by
+ Nick Warne and Benno Schulenberg)
+ - Explain the mouse support in more detail, and sync the text of
+ its description across all documentation. Changes to nano.1,
+ nanorc.5, nanorc.sample, and nano.texi. (Benno Schulenberg and
+ DLR)
+ - If we're using verbatim input to enter a Unicode sequence,
+ indicate it on the statusbar, and add a translator comment
+ explaining the message. Also, refactor get_unicode_kbinput()
+ to remove redundant code. New function add_unicode_digit();
+ changes to get_unicode_kbinput() and parse_verbatim_kbinput().
+ (Benno Schulenberg, minor tweaks by DLR)
+ - Allow normal typing of high-bit control characters, as Pico
+ does. Changes to do_output() and do_statusbar_output(). (DLR)
+ - Move color regexes into separate files, make nanorc.sample
+ reference them, and make them install properly. In the
+ process, rename nanorc.sample to nanorc.sample.in, put
+ @PKGDATADIR@ at the beginning of all nanorc file paths, add
+ needed AC_DEFINE_DIR macro from the Autoconf Macro Archive at
+ http://autoconf-archive.cryp.to/ac_define_dir.m4, and make
+ configure.ac do the substitution, so that the proper paths
+ will always be used in nanorc.sample. New files
+ m4/ac_define_dir.m4, doc/syntax/Makefile.am,
+ doc/syntax/asm.nanorc, doc/syntax/c.nanorc,
+ doc/syntax/groff.nanorc, doc/syntax/html.nanorc,
+ doc/syntax/java.nanorc, doc/syntax/man.nanorc,
+ doc/syntax/mutt.nanorc, doc/syntax/nanorc.nanorc,
+ doc/syntax/patch.nanorc, doc/syntax/perl.nanorc,
+ doc/syntax/python.nanorc, doc/syntax/ruby.nanorc,
+ doc/syntax/sh.nanorc, and doc/syntax/tex.nanorc; changes to
+ configure.ac, nano.spec.in, doc/Makefile.am, and
+ m4/Makefile.am; removal of doc/nanorc.sample. (DLR)
+ - Replace usage of the bool curses_ended with the isendwin()
+ function, and remove curses_ended. Changes to do_suspend().
+ (DLR)
+ - Remove the workaround for glibc 2.2.3's broken regexec(), and
+ replace it with a FAQ entry explaining the problem, since it
+ could break anything using extended regular expressions, and
+ glibc 2.2.3 is old. Changes to configure.ac, faq.html,
+ nano.h, proto.h, and UPGRADE; removal of safe_regexec(). (DLR)
+ - Minor wording fixes to various messages. Changes to
+ load_history(), shortcut_init(), toggle_init(), usage(),
+ do_suspend(), do_input(), rcfile_error(), parse_argument(),
+ parse_rcfile(), nano.1, nano.texi, and nanorc.sample.in.
+ (Benno Schulenberg, minor tweaks by DLR and Nick Warne)
+ - Make suspension clear the screen and put the cursor on the
+ last line before displaying anything, as Pico does. New
+ functions disable_mouse_support() and enable_mouse_support();
+ changes to do_mouse(), do_suspend(), do_continue(), and
+ terminal_init(). (DLR)
+- browser.c:
+ do_browser()
+ - Reference NANO_GOTODIR_(ALT|F)?KEY instead of
+ NANO_GOTOLINE_(ALT|F)?KEY for the "Go to Directory" shortcut.
+ (DLR)
+ parse_browser_input()
+ - Remove redundant key checks. (DLR)
+ browser_refresh()
+ - Rename variable editline to line, for consistency. (DLR)
+ - Change variable i from an int to a size_t in order to match
+ selected, which it's compared against. (DLR)
+- color.c:
+ color_update()
+ - Fix incorrect setting of defcolor, which prevented the
+ reserved "default" syntax from being handled correctly. (DLR)
+- cut.c:
+ cut_to_eof()
+ - New function, containing the main functionality of
+ do_cut_till_end(). (DLR)
+ do_cut_text()
+ - Add parameter cut_till_end, to indicate when we're cutting
+ from the current cursor position to the end of the file, and
+ call cut_to_eof() when it's TRUE. (DLR)
+ do_cut_till_end()
+ - Convert to a wrapper for do_cut_text(). (DLR)
+- files.c:
+ open_file()
+ - Remove redundant wording in the error message when we try to
+ open a device file. (DLR)
+ do_insertfile()
+ - Use actual gettext calls instead of no-ops, for consistency.
+ (DLR)
+ safe_tempfile()
+ - Don't ignore $TMPDIR if it's set but blank, for consistency.
+ (DLR)
+ write_file()
+ - Don't free backupname before displaying it in a statusbar error
+ message. (DLR, found by Bill Marcum)
+ - If we can't save the backup file for some reason, at least
+ save the original file, if possible, since that's better than
+ saving nothing. (DLR, problem found by Bill Marcum, solution
+ suggested by Jordi)
+ - Clarify the error messages when creating a temporary file or
+ writing one for prepending fails. (DLR)
+ - Simplify the routine for closing the file just before we
+ indicate success on the statusbar. (DLR)
+ do_writeout()
+ - Fix problem where the modifiers at the "Write File" prompt
+ were marked for translation via gettext no-ops but never
+ actually translated. (Benno Schulenberg)
+ free_chararray()
+ - Assert that array isn't NULL, for consistency with the other
+ free_.*() functions. (DLR)
+- global.c:
+ shortcut_init()
+ - Change the cursor position display help text to use "display"
+ instead of "show", for consistency. (DLR)
+ - In the main shortcut list, move the "Refresh" shortcut down to
+ after the "Enter" shortcut, for consistency. (DLR)
+ - Add the ability to move to the first and last line of the
+ current file from the main list via Meta-\ (Meta-|) and Meta-/
+ (Meta-?). Also, make sure all the equivalent shortcuts in the
+ search, replace, and "Go To Line" lists accept both the meta
+ keys and the equivalent function keys. (DLR)
+ - Reorganize the main shortcut list to make it easier for new
+ users. It now lists the twelve Pico-compatible default
+ operations, followed by search and replace shortcuts, followed
+ by cut and paste shortcuts, followed by marking shortcuts,
+ followed by back and forth movement shortcuts, followed by
+ start and end movement shortcuts, followed by buffer-switching
+ shortcuts, followed by insertion and deletion shortcuts,
+ followed by special movement shortcuts, followed by advanced
+ word and paragraph shortcuts, followed by display shortcuts.
+ (DLR and Benno Schulenberg, suggested by Benno Schulenberg)
+ - Tweak the descriptions of some shortcut keys to make them more
+ uniform. (Benno Schulenberg, minor tweaks by DLR)
+ - Shorten the "Where is Next" shortcut name to fit on the screen
+ after adding Meta-\ (Meta-|) and Meta-/ (Meta-?). (DLR)
+ - Lengthen the "UnCut Txt" shortcut name to "UnCut Text", as
+ there's enough room to display it unabbreviated. (DLR)
+ - Clarify the descriptions of the "Search" and "Replace"
+ shortcuts, and add spaces to the "Exit" shortcut's description
+ in multibuffer mode. (Benno Schulenberg)
+ - Remove the "Go To Line" shortcut in the replace shortcut list,
+ for compatibility with Pico. (DLR)
+ toggle_init()
+ - In the global toggle list, move the "Constant cursor position
+ display" toggle up to after the "Use more space for editing"
+ toggle, for consistency. (DLR)
+ - Reorganize the global toggle list to make it easier for new
+ users. It now lists toggles that affect the way things are
+ displayed, followed by toggles that affect editing, followed
+ by toggles that have to do with peripheral things. (DLR,
+ suggested by Benno Schulenberg)
+- help.c:
+ do_help()
+ - Call get_shortcut() after getting input, so that we only have
+ to check for a main shortcut key instead of both it and all of
+ its equivalents. (DLR)
+ - Clean up the handling of NANO_REFRESH_KEY. (DLR)
+ - Remove redundant key checks. (DLR)
+ help_init()
+ - If we have at least two entries' worth of blank space, use it
+ to display more of "^Space" and "M-Space". (DLR, suggested by
+ Benno Schulenberg)
+ - Add various wording fixes. (DLR and Benno Schulenberg)
+ - If one of the help strings ends in newlines followed by a
+ space, move the space to the next help string to make it
+ easier for translators to see. (Benno Schulenberg)
+ - Make sure we have enough memory in all cases when displaying
+ the shortcut and toggle lists. (DLR)
+ - Wrap the shortcut list help text, and display it even when we
+ have fewer than 24 columns, for consistency with the toggle
+ help text. (DLR, suggested by Benno Schulenberg)
+ parse_help_input()
+ - Add Space and '-' as aliases for PageDown and PageUp, for
+ consistency with the file browser. (DLR, suggested by Benno
+ Schulenberg)
+ - Remove redundant key checks. (DLR)
+ help_line_len()
+ - Properly handle the case where we can't break the line of help
+ text. (DLR)
+ - Wrap the line of help text at (COLS - 1) instead of
+ (COLS - 8), for consistency. (DLR, suggested by Benno
+ Schulenberg)
+- nano.c:
+ print1opt_full()
+ - Rename to print_opt_full(), for consistency. (DLR)
+ usage()
+ - Fix inaccuracies in the usage example. (DLR)
+ - Put command line arguments in <>'s instead of []'s, as the
+ latter imply that the arguments are optional when they aren't.
+ (DLR, found by Benno Schulenberg)
+ renumber()
+ - Remove invalid assert. (DLR, found by Filipe Moreira)
+ do_input()
+ - Remove redundant check for allow_funcs' being TRUE when we get
+ KEY_MOUSE. (DLR)
+ - Don't blow away the cutbuffer when we get a shortcut and the
+ function associated with it is do_cut_till_end(). (DLR)
+ - Simplify the routine to preserve the cutbuffer when we call a
+ cutting or copying function associated with a shortcut. (DLR)
+- nano.h:
+ - Reorder the toggle #defines to match their corresponding order
+ in toggle_init(). (DLR)
+ - Move the #include for sys/param.h here from nano.c, and add an
+ #ifdef around it. (DLR)
+- prompt.c:
+ get_prompt_string()
+ - Include the handling of the help key even when help is
+ disabled, so that we aren't erroneously kicked out of the
+ statusbar prompt under any circumstances. (DLR, found by Benno
+ Schulenberg)
+ do_statusbar_input()
+ - Remove redundant check for allow_funcs' being TRUE when we get
+ KEY_MOUSE. (DLR)
+ - Improve the handling of NANO_REFRESH_KEY. (DLR)
+ total_statusbar_refresh()
+ - New function, called when we get NANO_REFRESH_KEY in
+ do_statusbar_input(). (DLR)
+ do_yesno_prompt()
+ - Handle the keys in a switch statement instead of a long if
+ block, for simplicity. (DLR)
+- rcfile.c:
+ parse_argument()
+ - Rename variable ptr_bak to ptr_save, for consistency. (DLR)
+ - Add double quotes around invalid string arguments in error
+ messages, for consistency. (DLR)
+ - Add single quotes around the invalid string argument in the
+ error message about unterminated strings, to avoid confusion.
+ (Benno Schulenberg)
+ parse_syntax()
+ - Don't generate an error if we find a duplicate syntax name,
+ since we might be trying to override a syntax in the global
+ nanorc with one in our local nanorc. Instead, free any
+ duplicate syntaxes we find, so that we always use the last
+ syntax with a given name. (DLR)
+ color_to_short()
+ - Add quotes around invalid string arguments in error messages,
+ for consistency. (DLR)
+ parse_colors()
+ - Check for a color command's not following a syntax line before
+ anything else. (DLR)
+ - Add quotes around invalid string arguments in error messages,
+ for consistency. (DLR)
+ parse_rcfile()
+ - Properly generate an error if we've read in a syntax without
+ any associated color commands. (DLR)
+ - Change variable i from an int to a size_t, for consistency.
+ (DLR)
+ - Properly handle rcfiles that don't end in newlines. (DLR)
+ - Add quotes around invalid string arguments in error messages,
+ for consistency. (DLR)
+ do_rcfile()
+ - Check for the rcfile's being a directory or device file and
+ reject it if it is, for consistency with file handling
+ elsewhere. (DLR)
+ - Remove SYSCONFDIR #ifdef, as SYSCONFDIR should always be set.
+ (DLR)
+ - Change all rcfile error messages to refer to commands instead
+ of directives, for consistency with nanorc.5. (DLR)
+- text.c:
+ break_line()
+ - Fix problem where tab widths in columns would always be
+ calculated as tabsize. (DLR, found by Alexey Toptygin)
+ - Handle newlines consistently when searching for the last blank
+ in the first group of blanks in the range of (goal - 1). (DLR,
+ found by Benno Schulenberg)
+ do_justify()
+ - Remove redundant key checks. (DLR)
+ do_spell()
+ - Clarify the error message when creating a temporary file
+ fails. (DLR)
+ - Set currshortcut to main_list before calling total_refresh()
+ near the end of the function, so that we don't display the
+ wrong shortcut list. (DLR)
+ do_verbatim_input()
+ - Add a translator comment explaining the "Verbatim Input"
+ statusbar message. (Benno Schulenberg)
+ - Unconditionally blank the statusbar as soon as we're finished
+ getting input. (DLR, suggested by Benno Schulenberg)
+- utils.c:
+ digits()
+ - Return the proper number of digits when n is exactly 10. (DLR)
+ - Simplify to use a for loop instead of a while loop. (DLR)
+ ngetdelim()
+ - Set errno to EINVAL if stream is not a valid file stream.
+ This matches the manual page. (DLR)
+ nperror()
+ - Simplify. (DLR)
+ check_linenumbers()
+ - Removed, as it's no longer used, and since there's no way to
+ tell if its return value will be in int or ssize_t range.
+ (DLR)
+- winio.c:
+ parse_kbinput()
+ - If we get NANO_CONTROL_8, properly handle it in all cases.
+ (DLR)
+ parse_escape_seq_kbinput()
+ - New function used to interpret escape sequences, formerly part
+ of parse_kbinput(). (DLR)
+ get_byte_kbinput()
+ - Fix typo preventing Esc Esc 3 through Esc Esc 6 from being
+ interpreted as control key sequences. (DLR)
+ - Tweak to more closely match get_unicode_kbinput(). (DLR)
+ get_control_kbinput()
+ - Add Ctrl-/ as an alias for Ctrl-_. (DLR, found by Benno
+ Schulenberg)
+ - Simplify the if blocks wherever possible. (DLR)
+ parse_verbatim_kbinput()
+ - Don't include the ability to enter a Unicode sequence via
+ verbatim input mode if ENABLE_UTF8 isn't defined or we're not
+ in a UTF-8 locale. (DLR)
+ check_statusblank()
+ - Avoid redundant updates when statusblank is 0. (DLR)
+ display_string()
+ - Properly display double-column characters if they're past the
+ first virtual page and their first column is covered by the
+ "$" displayed at the beginning of the line. (DLR)
+ statusbar()
+ - Blank the statusbar after 26 keystrokes instead of 25, for
+ conpatibility with Pico. (DLR)
+ edit_draw()
+ - Properly ignore zero-length regexes in multi-line regexes as
+ well as single-line ones. This avoids a segfault when trying
+ to color e.g. "start="$" end="$"". (DLR, found by Trevor
+ Caira)
+ - Don't display any statusbar message when we get a zero-length
+ regex, as we can get one under legitimate circumstances. (DLR,
+ found by Mike Frysinger)
+ update_line()
+ - Remove unneeded assert. (DLR)
+ edit_redraw()
+ - Fix problem where not all lines would be updated properly if
+ we'd scrolled off the screen and the mark was on. (DLR)
+ do_credits()
+ - Update the last copyright notice to include 2006. (DLR)
+- configure.ac:
+ - Remove old warnings about color support. (DLR)
+ - Remove conditional header checks for fcntl.h and termios.h, as
+ nano won't build without them, and add conditional header
+ check for sys/param.h, as some systems need only limits.h.
+ (DLR)
+- doc/faq.html:
+ - Add a new section 4.4, and move all section 4 entries after it
+ down one number, to explain how to deal with problems typing
+ Meta-[. (DLR)
+ - Add a new section 4.5, and move all section 4 entries after it
+ down one number, to explain a problem that can occur when
+ holding down keys to generate Meta sequences. (Benno
+ Schulenberg, minor tweaks by DLR)
+ - Add a few capitalization and wording fixes. (DLR)
+ - Remove section 4.4, and move all section 4 entries after it up
+ one number, since it no longer applies. Meta-] and Meta-[ are
+ no longer used to indent and unindent marked text, since they
+ require that the bracket matching key change to Ctrl-], which
+ is used as the telnet escape key. (DLR, found by Chris)
+ - Make the link to the nano CVS page a bit more readable. (DLR)
+ - Update section 3.8 to mention the new "Unicode Input" prompt,
+ and how Unicode input only works when Unicode support is
+ enabled. (DLR)
+ - Add minor punctuation, wording, and typo fixes. (DLR)
+ - Update section 5.3, due to the display fix for two-column
+ Unicode characters. (DLR)
+- doc/nano.1:
+ - Update the copyright years to include 2006. (DLR)
+ - Explicitly mention that all regexes should be extended regular
+ expressions. (DLR, suggested by John M. Gabriele)
+ - Miscellaneous minor fixes. (DLR)
+ - Add various wording fixes. (Benno Schulenberg and DLR)
+ - Put command line arguments in <>'s instead of []'s, as the
+ latter imply that the arguments are optional when they aren't.
+ (Benno Schulenberg)
+- doc/nanorc.5:
+ - Update the copyright years to include 2006. (DLR)
+ - Explicitly mention that all regexes should be extended regular
+ expressions. (DLR, suggested by John M. Gabriele)
+ - Miscellaneous minor fixes. (DLR)
+ - Add various wording fixes. (Benno Schulenberg and DLR)
+ - Mention that the nanorc file should not be in DOS or Mac
+ format. (DLR)
+- doc/rnano.1:
+ - Update the copyright years to include 2006. (DLR)
+ - Explicitly mention that all regexes should be extended regular
+ expressions. (DLR, suggested by John M. Gabriele)
+ - Miscellaneous minor fixes. (DLR)
+ - Add various wording fixes. (Benno Schulenberg and DLR)
+ - Add description of the +LINE[,COLUMN] option. (DLR)
+- doc/nano.texi:
+ - Update the copyright years to include 2006. (DLR)
+ - Explicitly mention that all regexes should be extended regular
+ expressions. (DLR, suggested by John M. Gabriele)
+ - Miscellaneous minor fixes. (DLR)
+ - Add various wording fixes. (Benno Schulenberg and DLR)
+ - Change license to GPL, in order to match the rest of the
+ documentation, and because the current license is incompatible
+ with everything else in any case. (DLR)
+ - Mention that backup files and spell checking are disabled in
+ restricted mode, as rnano.1 does. (DLR)
+ - Add minor updates to put some text back in sync with nano's
+ help text, and with nano's current feature set. (DLR)
+ - Add a "Nanorc Files" section to explain the nanorc file format
+ in detail, using text from nanorc.5. (DLR)
+ - Put command line arguments in <>'s instead of []'s, as the
+ latter imply that the arguments are optional when they aren't.
+ (Benno Schulenberg)
+ - Add missing description of -H/--historylog, and move
+ -x/--nohelp down so that all the command line options are in
+ alphabetical order. (Benno Schulenberg)
+ - Change all occurrences of "file name" to "filename". (Benno
+ Schulenberg)
+- doc/man/Makefile.am:
+ - Simplify the setting of SUBDIRS. (DLR)
+- doc/man/fr/nano.1, doc/man/fr/nanorc.5, doc/man/fr/rnano.1:
+ - Updated manpage translations by Jean-Philippe Guérard.
+- doc/nanorc.sample:
+ - Miscellaneous minor fixes. (DLR and Benno Schulenberg)
+ - Tweak the "c-file" regex for characters to accept '"' again,
+ as it's apparently valid, and simplify it. (DLR)
+ - Simplify the "shellscript" regex for command line options.
+ (DLR)
+ - Replace instances of \" with ", since quotes inside string
+ parameters don't need to be escaped with backslashes. (DLR)
+ - Mention in the comments that more than one start/end regex can
+ be included per line. Also, change the comment for the
+ "whitespace" option so that the hexadecimal character values
+ are six digits long, and state which character values work
+ with which encodings. (DLR)
+ - Add sample regexes for Python. (singular on the Gentoo forums,
+ http://forums.gentoo.org/viewtopic.php?t=86562; minor tweaks
+ by DLR, suggested by John M. Gabriele)
+ - Explicitly mention that all regexes should be extended regular
+ expressions. (DLR, suggested by John M. Gabriele)
+ - Simplify the "nanorc" regex for commands. (DLR)
+ - Mention that the nanorc file should not be in DOS or Mac
+ format. (DLR)
+ - Add various wording fixes. (Benno Schulenberg and DLR)
+ - Replace instances of "\w" with its equivalent "[0-9A-Z_a-z]",
+ and instances of "\W" with its equivalent "[^0-9A-Z_a-z]", for
+ greater readability. (DLR)
+ - Remove unneeded foreground color for the Java source regex
+ used to highlight trailing whitespace, since we now support
+ background colors without foreground colors. (DLR)
+ - Further simplify the "groff" regexes. (DLR)
+ - Tweak the "shellscript" regexes to properly color all special
+ variables, such as $? and $@. (Benno Schulenberg)
+ - Tweak the "nanorc" regexes to color keywords bright green
+ instead of cyan, and comments bright blue instead of blue.
+ (John M. Gabriele)
+ - Simplify the extensions associated with the "nanorc" regexes.
+ (DLR)
+ - Add regexes for Ruby. (John M. Gabriele, minor tweaks by DLR)
+- doc/nanorc.sample.in:
+ - Add comments describing the relationships between syntax file
+ names and the names used as their short descriptions. (John M.
+ Gabriele)
+- doc/java.nanorc:
+ - Simplify a comment. (DLR)
+- doc/man.nanorc:
+ - Change the name of the "manpage" regexes to "man", for
+ consistency. (John M. Gabriele)
+- doc/nanorc.nanorc:
+ - Tweak the "nanorc" regexes to color comments starting with a
+ double ## cyan instead of bright blue. (John M. Gabriele)
+- doc/ruby.nanorc:
+ - Add regex for "here" docs. (John M. Gabriele)
+- doc/sh.nanorc:
+ - Tweak the regex for special variables, moving "-" to the end,
+ to avoid excessive coloring or an "Invalid range end" error.
+ (Benno Schulenberg)
+ - Tweak the "sh" regexes to color comments cyan instead of
+ yellow. (John M. Gabriele)
+- src/Makefile.am:
+ - If we're uninstalling, remove the "rnano" symlink. (DLR, found
+ by Benno Schulenberg)
+ - Remove "-Iintl" from INCLUDES, as we don't use an intl
+ directory inside the source directory anymore. (DLR)
+- README, README.CVS:
+ - Add various cosmetic and wording improvements. (John M.
+ Gabriele, minor tweaks by DLR)
+- TODO:
+ - Update for nano 2.0, since we're now in a feature freeze.
+ (DLR)
+- UPGRADE:
+ - Miscellaneous minor fixes. (DLR)
+ - Update for nano 2.0, since we're now in a feature freeze.
+ (DLR)
+
+GNU nano 1.3.11 - 2006.03.30
+- General:
+ - Miscellaneous comment fixes. (DLR)
+ - Remove unnecessary #ifdef around termios.h #include in nano.c.
+ (DLR)
+ - Sort the default strings for brackets and punct, and the "or"
+ atom in the default regex string for quotestr, according to
+ ASCII. Changes to main(), nano.1, nanorc.5, and
+ nanorc.sample. (DLR)
+ - Rework the bracket searching code to handle multibyte bracket
+ characters, and allow specifying matching bracket characters
+ other than the default via the "matchbrackets" rcfile option.
+ New functions mbstrpbrk() and mbrevstrpbrk(); changes to
+ find_statusbar_bracket_match(), do_statusbar_find_bracket(),
+ find_bracket_match(), do_find_bracket(), main(),
+ parse_rcfile(), nanorc.5, and nanorc.sample. (DLR)
+ - Rework input parsing in the file browser to be more flexible.
+ New function parse_browser_input(); changes to do_browser().
+ (DLR)
+ - Allow tab completion of directories at the "Go To Directory"
+ prompt. Also, move the browser drawing routines to a separate
+ function, and make sure it's used when refreshing or doing tab
+ completion at the prompt in the file browser. New function
+ browser_refresh(); changes to do_browser(), browser_init(),
+ do_insertfile(), do_writeout(), cwd_tab_completion(),
+ input_tab(), do_statusbar_input(), get_prompt_string(),
+ do_prompt(), search_init(), do_replace(), do_gotolinecolumn(),
+ and do_int_spell_fix(). (DLR)
+- browser.c:
+ do_browser()
+ - Properly set currshortcut back to the file browser shortcut
+ list after a "Go To Directory" prompt, and properly restore
+ the file list display after returning from the help browser at
+ the "Go To Directory" prompt. (DLR)
+ - Rename variable j to i, for consistency. (DLR)
+ - Make fileline, old_selected, and the static selected size_t's,
+ since the first and second can hold the value of the third,
+ and the first can be that large. (DLR)
+- chars.c:
+ mbstrchr()
+ - Make parameter c const. (DLR)
+- files.c:
+ do_writeout()
+ - Remove unneeded setting of currshortcut. (DLR)
+ is_dir()
+ - Rename parameter ret to retval, for consistency. (DLR)
+- global.c:
+ shortcut_init()
+ - Remove erroneous handling of the "Get Help" shortcut in the
+ file browser shortcut list. (DLR)
+- nano.h:
+ - Remove now-unneeded VERMSG #define. (DLR)
+- prompt.c:
+ get_prompt_string()
+ - Redraw the prompt and set finished to FALSE when NANO_HELP_KEY
+ is pressed, so that we don't leave the prompt, enter the help
+ browser, and restart the prompt after leaving it. This will
+ properly preserve the cursor position after doing the last of
+ these. (DLR)
+- utils.c:
+ ngetdelim()
+ - Do sanity checks manually again instead of in an assert, and
+ set errno to EINVAL as well as return -1 if they fail. This
+ matches the manual page. (DLR)
+- winio.c:
+ get_key_buffer()
+ - If we fail to get a character MAX_BUF_SIZE times in a row,
+ hang up regardless of the value of errno. This fixes a
+ problem where nano doesn't terminate properly under xterm if
+ the user su's to root, runs nano, and then closes the terminal
+ window. errno isn't set properly to EIO then. (DLR, found by
+ John <acocaracha@gmail.com>)
+ parse_kbinput()
+ - Interpret Shift-Begin, Shift-Delete, Shift-End, Shift-Home,
+ Shift-Insert, and Shift-Suspend as Begin, Delete, End, Home,
+ Insert, and Suspend, respectively, regardless of whether
+ --rebindkeypad is used. (DLR, found by David Benbennick)
+ titlebar()
+ - Use PACKAGE_STRING, as defined by autoconf, instead of VERMSG.
+ (DLR)
+ edit_redraw()
+ - If either current or old_current is offscreen, we're not on
+ the first page, and/or we're not on the same page as before,
+ update old_current before scrolling the edit window. This
+ fixes a potential display problem when a search moves the
+ cursor offscreen and onto a different page. (DLR, found by
+ Mike Frysinger)
+ display_string()
+ - Fix minor memory leak. (DLR)
+ - Fix memory corruption problems caused by not allocating enough
+ space for converted when a line ends in a tab(s) and we're not
+ in UTF-8 mode. (DLR, found by Duncan Geoffry Doyle, Nick
+ Warne, and Mike Frysinger)
+- doc/faq.html:
+ - Update the Free Translation Project's address, change the
+ character set to UTF-8, and remove broken links to contributed
+ RedHat nano packages. (DLR)
+- doc/nano.1:
+ - Better display the default values for quotestr. (DLR)
+- doc/nanorc.5:
+ - Give the default values for the brackets and punct options,
+ and better display the default values for quotestr. (DLR)
+ - Mention that quotes inside string parameters don't need to be
+ escaped with backslashes. (John M. Gabriele, minor tweaks by
+ DLR)
+- doc/rnano.1:
+ - Remove unneeded comments. (DLR)
+- doc/nanorc.sample:
+ - Remove unneeded comment. (DLR)
+ - Mention that quotes inside string parameters don't need to be
+ escaped with backslashes. (John M. Gabriele, minor tweaks by
+ DLR)
+- THANKS:
+ - Add new Swedish translator.
+
+GNU nano 1.3.10 - 2005.12.23
+- General:
+ - Miscellaneous comment fixes. (DLR)
+ - More int -> bool conversions. (DLR)
+ - Add the ability to scroll up or down single lines without
+ scrolling the cursor, via Meta-- and Meta-+. Note that this
+ is disabled when NANO_SMALL is defined. New functions
+ do_scroll_up() and do_scroll_down(); changes to
+ shortcut_init(). (DLR, suggested by Mike Frysinger)
+ - Properly handle mouse clicks on the statusbar prompt text.
+ New functions statusbar_xplustabs() and
+ get_statusbar_page_start(); changes to do_statusbar_mouse(),
+ nanoget_repaint(), nanogetstr(), and statusq(). (DLR)
+ - Since the statusbar prompt code needs at least 4 columns in
+ order to work properly, make that the minimum number of
+ columns that nano requires in order to run, and remove
+ assertions and code that make use of a smaller number of
+ columns. Changes to window_init(), nanoget_repaint(),
+ titlebar(), statusbar(), and get_page_start(). (DLR)
+ - Move get_page_start(), xplustabs(), actual_x(), strnlenpt(),
+ strlenpt(), check_linenumbers(), dump_buffer(), and
+ dump_buffer_reverse() from winio.c to utils.c, as they're
+ really utility functions. (DLR)
+ - Add missing stdio.h #include to text.c and winio.c, and remove
+ unneeded sys/wait.h #include from files.c. (DLR)
+ - Move functions specific to the statusbar prompt to their own
+ source file, adjust related variables accordingly, and rename
+ variable resetstatuspos reset_statusbar_x. New file prompt.c;
+ changes to do_statusbar_input(), do_statusbar_mouse(),
+ do_statusbar_output(), do_statusbar_home(),
+ do_statusbar_end(), do_statusbar_right(), do_statusbar_left(),
+ do_statusbar_backspace(), do_statusbar_delete(),
+ do_statusbar_cut_text(), do_statusbar_next_word(),
+ do_statusbar_prev_word(), do_statusbar_verbatim_input(),
+ statusbar_xplustabs(), get_statusbar_page_start(),
+ nanoget_repaint(), nanogetstr(), statusq(), statusq_abort(),
+ and do_yesno() (all moved to prompt.c). (DLR)
+ - Move functions specific to the help browser to their own
+ source file, and adjust related variables accordingly. New
+ file help.c; changes to help_init(), help_line_len(), and
+ do_help() (all moved to help.c). (DLR)
+ - Tweak a few functions to remove the assumption that the file
+ always ends in a magicline. Changes to cut_line(),
+ do_cut_till_end(), open_buffer(), read_file(), write_file(),
+ do_last_line(), do_para_end(), do_wrap(), backup_lines(),
+ find_paragraph(), do_justify(), do_alt_speller(), and
+ do_wordlinechar_count(). (DLR)
+ - Tweak a few functions to rely on fileage and filebot instead
+ of NULL for their checks to detect the top or bottom of the
+ file. Changes to cut_line(), cut_to_eol(), do_page_up(),
+ do_page_down(), do_para_end(), do_next_word(), do_prev_word(),
+ do_up(), do_down(), do_scroll_down(), do_right(), do_mouse(),
+ do_gotolinecolumn(), do_delete(), begpar(), find_paragraph(),
+ do_wrap(), remove_magicline(), and edit_scroll(). (DLR)
+ - Add new -L/--nonewlines command line option, and new
+ "nonewlines" rcfile option, to control whether nano adds
+ magiclines to the ends of files. Changes to read_file(),
+ write_marked_file(), move_to_filestruct(),
+ copy_from_filestruct(), usage(), do_output(), main(),
+ do_replace_loop(), do_delete(), do_int_spell_fix(),
+ do_alt_speller(), nano.1, nanorc.5, nano.texi, and
+ nanorc.sample. (DLR, suggested by Jaime
+ <re2823@Safe-mail.net>)
+ - Move functions specific to the file browser to their own
+ source file, and adjust related variables accordingly. New
+ file browser.c; changes to striponedir(), browser_init(),
+ do_browser(), and do_browse_from() (all moved to browser.c).
+ (DLR)
+ - Add the statusbar prompt's equivalent of placewewant,
+ statusbar_pww, to prompt.c, and convert its functions to use
+ it. New functions reset_statusbar_cursor() and
+ need_statusbar_horizontal_update(); changes to
+ do_statusbar_mouse(), do_statusbar_output(),
+ do_statusbar_home(), do_statusbar_end(), do_statusbar_right(),
+ do_statusbar_left(), do_statusbar_delete(),
+ do_statusbar_cut_text(), do_statusbar_next_word(),
+ do_statusbar_prev_word(), do_statusbar_verbatim_input(),
+ nanoget_repaint() (renamed update_statusbar_line()),
+ nanogetstr() (renamed get_prompt_string()), statusq() (renamed
+ do_prompt()), statusq_abort() (renamed do_prompt_abort()), and
+ do_yesno() (renamed do_yesno_prompt()). (DLR)
+ - Initialize the static pid_t pid in text.c to -1. (DLR)
+ - Fix copyright years on source files. All functions in
+ browser.c were originally added in 2001; the oldest function
+ in color.c is do_colorinit() (now color_init()), which was
+ originally added in 2001; the oldest function in chars.c is
+ revstrstr(), which was originally added in 2001; the oldest
+ function in help.c is do_help(), which was originally added in
+ 2000; the oldest function in prompt.c is statusq() (now
+ do_prompt()), which was originally added before 0.6.6, which
+ was apparently in 1999; all functions in rcfile.c were
+ originally added in 2001; one of the oldest functions in
+ search.c is do_search(), which was originally added in 0.2.7,
+ which was apparently in 1999; and one of the oldest functions
+ in text.c is do_wrap(), which was originally added in 0.3.1,
+ which was apparently in 1999. (DLR)
+ - For functions originally adapted from other sources, add
+ notices from the original files, as we do with the tab
+ completion functions adapted from busybox, updating the Free
+ Software Foundation's address as needed. Also, invoke LGPL
+ clause 3 to convert the LGPLed ngetdelim() and ngetline()
+ functions to use the GPL instead. This is done so that we
+ don't have to include a copy of the LGPL, and because the
+ changes made to integrate these functions with nano make them
+ dependent on nano's GPLed functions and hence useless
+ elsewhere. (DLR)
+ - Don't install the localized versions of the manpages if
+ nano is built with --disable-nls. Changes to Makefile.am and
+ doc/man/Makefile.am. (Mike Frysinger)
+ - Rename the NANO_SMALL #define to NANO_TINY. (DLR)
+ - Overhaul the bracket searching code so that it no longer
+ requires regex support to work. New functions revstrpbrk()
+ and find_bracket_match(); changes to shortcut_init() and
+ do_find_bracket(). (DLR)
+ - Add the ability to do bracket searches at the statusbar
+ prompt. New functions find_statusbar_bracket_match() and
+ do_statusbar_find_bracket(); changes to do_statusbar_input().
+ (DLR)
+ - Beep whenever we can't read a file or directory and have to
+ indicate it on the statusbar, as Pico does. Changes to
+ do_browser(), open_file(), and write_file(). (DLR)
+ - Adjust copyright notices in all source files to account for
+ Chris' reassigning the 2005-2006 copyright on nano to me.
+ Changes to do_credits(). (DLR)
+ - Readd RETSIGTYPE return types for signal handlers, since any
+ problems with its being defined as the wrong type aren't
+ nano's fault. Changes to handle_hupterm(), do_suspend(),
+ do_continue(), handle_sigwinch(), and cancel_command(). (DLR)
+ - Since proto.h includes nano.h, and nano.h includes config.h
+ first, include proto.h first and remove redundant includes of
+ config.h in all non-header source files. (DLR)
+ - Refer to the Enter key instead of the Return key for
+ consistency. Changes to load_history() and rcfile_error().
+ (DLR)
+- browser.c:
+ do_browser()
+ - When setting the width of each file, use the "?" operator
+ instead of an if/else clause. (DLR)
+- chars.c:
+ mbwidth()
+ - If wcwidth() returns -1 for the character passed in, treat the
+ character as having the width of Unicode U+FFFD (Replacement
+ Character) instead of having a width of zero, since display
+ problems can crop up with the latter approach. (DLR)
+ mbstrchr()
+ - Detect the case where the character isn't found in the string
+ more accurately. (DLR)
+- cut.c:
+ cut_line()
+ - Since placewewant will always be zero after the line is cut,
+ set it to zero directly instead of assigning it the value of
+ xplustabs(). (DLR)
+- files.c:
+ read_file()
+ - Remove apparently unneeded logic to handle a case where
+ current is NULL, since it shouldn't be NULL there. (DLR)
+ get_next_filename()
+ - Store the value of digits(ULONG_MAX) in a static, since it
+ doesn't change and hence doesn't need to be recalculated.
+ (DLR)
+- global.c:
+ shortcut_init()
+ - Change the description of the Meta-] shortcut to "Find
+ matching bracket", as it's clearer. (DLR)
+- nano.c:
+ version()
+ - If DISABLE_WRAPPING is defined, the code in DISABLE_ROOTWRAP
+ #ifdefs isn't included, so don't display
+ "--disable-wrapping-as-root" in that case. (DLR)
+ do_cont()
+ - Rename to do_continue(), and rename parameter s to signal, for
+ consistency. (DLR)
+ do_verbatim_input()
+ - Move to text.c, since it's an advanced text-based operation.
+ (DLR)
+- nano.h:
+ - Readd MIN_EDITOR_COLS #define, set to 4. (DLR)
+- proto.h:
+ - Remove now-unused externs for currslen, shortcut_list,
+ fileinfo, syntaxfile_regexp, and synfilematches. (DLR)
+- prompt.c:
+ do_statusbar_input()
+ - Fix misplaced break when handling NANO_VERBATIM_KEY. (DLR)
+ reset_statusbar_cursor()
+ - Fix cursor placement problem by modeling the code more closely
+ after reset_cursor(). (DLR)
+ get_prompt_string()
+ - Adjust #ifdefs to leave out disabled keys entirely instead of
+ keeping enough code to just ignore them. (DLR)
+- rcfile.c:
+ do_rcfile()
+ - Remove unneeded assert. (DLR)
+- search.c:
+ search_abort()
+ - Rename to search_replace_abort(). (DLR)
+ findnextstr()
+ - Remove parameter can_display_wrap, as it's always set to TRUE
+ now, and rename parameter wholeword to whole_word, for
+ consistency. (DLR)
+ - Only include the whole_word parameter when DISABLE_SPELLER
+ isn't defined, as it's only used then. (DLR)
+ replace_abort()
+ - Replace with search_replace_abort(), since it does the same
+ things that this function does. (DLR)
+ do_replace_loop()
+ - Change order of parameters to more closely match those of
+ findnextstr(), and rename parameter wholewords to whole_word,
+ for consistency. (DLR)
+ - Only include the whole_word parameter when DISABLE_SPELLER
+ isn't defined, as it's only used then. (DLR)
+- text.c:
+ execute_command()
+ - Instead of hardcoding /bin/sh as the shell to use when
+ executing a command, use $SHELL, and only fall back to /bin/sh
+ if $SHELL isn't set. (DLR)
+ do_wrap()
+ - Rename variable wrapping to prepending, to avoid confusion,
+ and rename the static bool same_line_wrap to prepend_wrap to
+ match. (DLR)
+ - Properly add a new magicline when needed if, in the process of
+ wrapping, we prepend text to the last line of the file. (DLR)
+ break_line()
+ - Only include the newline parameter if DISABLE_HELP isn't
+ defined, as it's only used then. (DLR)
+ - In the surrounding #ifdef, replace the combination of
+ !DISABLE_JUSTIFY and !DISABLE_WRAPPING with
+ !DISABLE_WRAPJUSTIFY, for consistency. (DLR)
+ begpar()
+ - Return FALSE if foo is NULL, as inpar() does. (DLR)
+ backup_lines()
+ - Return void instead of a pointer to the copy of the first
+ line, since current will point to the same location after the
+ text is copied and so can be used instead of the old return
+ value. (DLR)
+ - Remove unused quote_len parameter. (DLR)
+ do_justify()
+ - Don't save current_y and restore it if the user unjustifies,
+ as the reset_cursor() called by edit_refresh() after restoring
+ edittop and current will ensure that current_y is restored to
+ its original value. (DLR)
+ - Renumber after justifying each individual paragraph, since
+ find_paragraph() needs the line numbers to be right as well as
+ edit_refresh(). This fixes a potential segfault when doing
+ full justify with auto-indent turned on. (DLR)
+ do_alt_speller()
+ - Move the code that replaces the text of the current file with
+ the text of the spell-checked file into its own function,
+ replace_buffer(). (DLR)
+- utils.c:
+ parse_line_column()
+ - Simplify parsing of the column number. (DLR)
+ ngetdelim()
+ - Do sanity checks in an assert instead of checking them
+ manually and returning -1 if they fail. (DLR)
+ is_whole_word()
+ - Only include when DISABLE_SPELLER isn't defined, as it's only
+ used then. (DLR)
+ get_page_start()
+ - Fix test so that we scroll through the line in 8-character
+ chunks when COLS is greater than 8, not when COLS is greater
+ than 9. (DLR)
+ remove_magicline()
+ - Add assert. (DLR)
+- winio.c:
+ nanoget_repaint()
+ - Rename parameter inputbuf to buf, for consistency. (DLR)
+ reset_cursor()
+ - Rename variable x to xpt, to avoid confusion. (DLR)
+ update_line()
+ - Remove now-unneeded logic that set the index parameter to zero
+ if the fileptr parameter didn't point to current. (DLR)
+ edit_add()
+ - Rename to edit_draw(), and rename parameter yval to line.
+ (DLR)
+ do_cursorpos()
+ - Remove unneeded assert. (DLR)
+ do_yesno()
+ - Make mouse clicks on the Yes/No/All shortcuts work properly
+ when the MORE_SPACE flag is set. (DLR)
+- configure.ac:
+ - Clarify description of --disable-speller. (DLR)
+ - Disable wrapping entirely when --enable-tiny is used, as it
+ matches the FAQ, it makes nano even smaller, and it eliminates
+ the need for --disable-wrapping-as-root in that case (in which
+ it's impossible to turn wrapping back on without nanorc
+ support). (DLR)
+- README.CVS:
+ - Mention that the minimum required version of texinfo is 4.0,
+ since that's the first version that supports generating HTML.
+ (DLR)
+ - Mention that the minimum required version of groff is 1.12,
+ since that's the first version that supports generating HTML.
+ (DLR)
+ - Update the given cvs commands so that they work again. (DLR)
+- doc/faq.html:
+ - Add a new section 5.3 to explain the status of nano's Unicode
+ support. (Mike Frysinger, minor tweaks by DLR)
+ - Clarify section 5.3 to better explain how to enable Unicode
+ support, and remove the mention of quirks, since they turned
+ out to not be a nano problem. (Mike Frysinger and DLR)
+- doc/nano.1:
+ - Make one non-bold instance of "nano" bold, for consistency.
+ (DLR)
+- doc/man/fr/nano.1, doc/man/fr/nanorc.5:
+ - Updated manpage translations by Jean-Philippe Guérard.
+- doc/rnano.1:
+ - Add rnano.1 manpage from Thijs Kinkhorst. (Jordi) DLR: Merge
+ a few minor updates from nano.1.
+- doc/nano.texi:
+ - Fix inconsistent wording and punctuation. (DLR)
+ - Add missing configure options. (Mike Frysinger, minor tweaks
+ by DLR)
+ - Sort the configure options more consistently, and add missing
+ --disable-utf8 option. (DLR)
+ - Move --disable-wrapping above --enable-tiny, as the latter now
+ turns it on. (DLR)
+- doc/nanorc.sample:
+ - Tweak the "c-file" regex for characters to properly accept
+ '\"' and reject '"' and '''. (DLR)
+- doc/texinfo/Makefile.am:
+ - Automatically generate an HTML version of the info page,
+ nano.html. (DLR)
+- src/Makefile.am:
+ - Add browser.c, help.c, and prompt.c to nano_SOURCES. (DLR)
+
+GNU nano 1.3.9 - 2005.10.23
+- General:
+ - Miscellaneous comment fixes. (DLR)
+ - More int -> bool conversions. (DLR)
+ - Fix a few last instances of the current line number's being
+ saved as an int instead of a ssize_t. Changes to
+ renumber_all(), renumber(), do_alt_speller(), and
+ backup_lines(). (DLR)
+ - Reorder some functions for consistency. (DLR)
+ - Rename variable open_files openfile, for consistency. (DLR)
+ - Remove renumber()'s dependency on the main filestruct.
+ Changes to renumber(); removal of renumber_all(). (DLR)
+ - Restructure things so that every file has its own
+ openfilestruct, and so that the values in it are used directly
+ instead of being periodically synced up with the globals.
+ Accordingly, remove the globals. Changes to pretty much
+ every function. Rename add_open_file() make_new_buffer(),
+ rename load_buffer() open_buffer(), rename load_open_file()
+ display_buffer(), rename open_prevnext_file()
+ switch_to_prevnext_buffer(), rename open_prevfile_void()
+ switch_to_prev_buffer(), rename open_nextfile_void()
+ switch_to_next_buffer(), rename write_marked()
+ write_marked_file(), remove load_file(), rename cancel_fork()
+ cancel_command(), rename open_pipe() execute_command(), remove
+ execute_command(), rename resize_variables(), rename
+ global_init() window_size_init(), rename get_buffer()
+ get_key_buffer(), and rename get_buffer_len()
+ get_key_buffer_len(). (DLR)
+ - Replace all mvwaddstr(hblank) calls with a new function that
+ does the same thing without the need for hblank. New function
+ blank_line(); changes to do_browser(), blank_titlebar(),
+ blank_topbar(), blank_edit(), blank_statusbar(),
+ blank_bottombars(), update_line(), and edit_refresh(). (DLR)
+ - Make the static pid variable used by execute_command() and
+ cancel_command() a pid_t instead of an int, for consistency.
+ (DLR)
+ - Consistently make the flags global and any variables used to
+ hold it longs. (DLR)
+ - Make edit_scroll() sophisticated enough to keep track of
+ current and current_x, update the lines before and after the
+ scrolled region, and properly scroll more than editwinrows
+ lines; and change the movement functions that use
+ edit_scroll() to (a) set current and current_x before calling
+ it, and (b) no longer call edit_redraw() afterward, as it's
+ now unnecessary. These changes eliminate redundant screen
+ updates when the mark is on, since the mark display depends on
+ current and current_x. Also change edit_redraw() to use
+ edit_scroll() instead of edit_refresh() when one of its two
+ reference lines is offscreen. Changes to edit_scroll(),
+ do_page_up(), do_page_down(), do_up(), and do_down(). (DLR)
+ - Consistently make the fg and bg colortype struct entries and
+ any variables used to hold them shorts. Changes to
+ do_colorinit() (renamed color_init()), color_to_int() (renamed
+ color_to_short()), and parse_colors(). (DLR)
+ - Change color handling to save only the extension and color
+ regex strings constantly, and to actually compile them on an
+ as-needed basis. Also, make a color syntax specified on the
+ command line override the syntax associated with the current
+ file extension, add a "default" syntax that takes no
+ extensions for those files that don't match any other
+ syntax's extensions, and add a "none" syntax that's the same
+ as having no syntax at all. Changes to update_color(),
+ thanks_for_all_the_fish(), nregcomp(), parse_syntax(), and
+ parse_colors(). (Brand Huntsman and DLR)
+ - Various other color fixes. Handle unspecified foreground
+ colors properly, treat syntax names case sensitively, flag
+ duplicate syntax names as errors, don't automatically
+ reinitialize the displayed colors every time we update the
+ current buffer's colors (since the buffer may not be displayed
+ immediately), don't bother doing complete refreshes of the
+ screen when color support is enabled if there's no regex
+ associated with the current file, and rename variable
+ exttype->val to exttype->ext, for consistency. Changes to
+ do_colorinit() (renamed color_init()), update_color() (renamed
+ color_update()), write_file(), do_input(), do_output(), and
+ parse_syntax(). (DLR)
+ - Simplify get_totals() to only get the total number of
+ characters, and eliminate dependence on its old ability to get
+ the total number of lines by renumber()ing when necessary and
+ using the number of the last line of a filestruct. Changes to
+ read_file(), move_to_filestruct(), copy_from_filestruct(),
+ do_justify(), get_totals() (renamed get_totsize()), and
+ do_cursorpos(). (DLR)
+ - Change the NANO_WIDE #define to ENABLE_UTF8, as the latter is
+ clearer. (DLR)
+ - Minor history code fixes: Make sure that the current position
+ in the history list is properly set to the bottom if we cancel
+ out of the prompt, and that magichistory is properly updated
+ when we change it and then move up. New function
+ history_reset(); changes to nanogetstr(). (DLR)
+ - Various character-handling cleanups. If we get an invalid
+ multibyte sequence, treat it as Unicode FFFD (Replacement
+ Character), unless we're searching for a match to it. Also,
+ remove unneeded variables and checks when parsing multibyte
+ sequences. Changes to is_alnum_mbchar(), is_blank_mbchar(),
+ is_cntrl_mbchar(), is_punct_mbchar(), control_mbrep(),
+ mbwidth(), make_mbchar(), parse_mbchar(), mbstrncasecmp(),
+ mbstrcasestr(), mbrevstrcasestr(), mbstrchr(), and
+ display_string(). (DLR)
+ - Move advanced text operations (command execution in a buffer,
+ wrapping, spell checking, justifying, and word counting) to
+ their own source file, and adjust related variables
+ accordingly. New file text.c; changes to cancel_command(),
+ execute_command(), do_backspace(), do_delete(), do_tab(),
+ do_enter(), do_mark(), wrap_reset(), do_wrap(),
+ do_int_spell_fix(), do_int_speller(), do_alt_speller(),
+ do_spell(), break_line(), indent_length(), justify_format(),
+ quote_length(), quotes_match(), indents_match(), begpar(),
+ inpar(), backup_lines(), find_paragraph(), do_justify(),
+ do_justify_void(), do_full_justify(), and do_word_count() (all
+ moved to text.c). (DLR)
+ - Since the total number of lines in a file is the same as the
+ number of its last line when all its lines are numbered
+ properly, use that in place of openfile->totlines, and
+ eliminate references to openfile->totlines. Changes to
+ initialize_buffer_text(), read_file(), move_to_filestruct(),
+ copy_from_filestruct(), do_delete(), do_enter(), do_wrap(),
+ do_justify(), do_alt_speller(), do_wordlinechar_count(),
+ new_magicline(), remove_magicline(), and do_cursorpos(). (DLR)
+ - Various fill-related cleanups. Move check_die_too_small() and
+ window_size_init()'s code into window_init(), as they really
+ belong there, remove associated separate calls to them, make
+ sure window_init() is always called at the same time when
+ redrawing the screen, and turn the keypad on in topwin in case
+ we ever read input from it. Changes to window_init(), main(),
+ and do_alt_speller(); removal of check_die_too_small() and
+ window_size_init(). (DLR)
+ - Remove still more redundant screen updates. Change all
+ wrefresh() calls to wnoutrefresh() calls, except for those in
+ total_update() and do_credits(); call doupdate() just before
+ using blocking input, since nano spends the most time using
+ it, for blocking input; and only do constant sursor position
+ display if we're just about to use blocking input. Changes to
+ input_tab(), do_browser(), do_output(), main(),
+ get_key_buffer(), check_statusblank(), nanogetstr(),
+ titlebar(), statusbar(), bottombars(), edit_refresh(),
+ do_yesno(), and do_help(). (DLR)
+ - Treat the Unicode characters D800-DFFF, FDD0-FDEF, and
+ xxFFFE-xxFFFF, as invalid, since the C library's multibyte
+ functions don't seem to. New function is_valid_unicode();
+ changes to mbrep() and make_mbchar(). (DLR)
+ - Store Unicode values in longs instead of ints, and cover the
+ entire range of Unicode. Changes to make_mbchar(),
+ is_valid_unicode(), parse_kbinput(), get_unicode_kbinput(),
+ parse_verbatim_kbinput(), and faq.html. (DLR)
+ - Readd the option to turn the keypad off by default from nano
+ 1.2.x, but rename the long option from --keypad to
+ --rebindkeypad, clarify its description on the command line,
+ and add an updated FAQ entry about its use. Changes to
+ window_init(), usage(), main(), get_verbatim_kbinput(),
+ nanorc.sample, nano.1, nanorc.5, nano.texi, and faq.html.
+ (DLR)
+ - Add new -W/--wordbounds command line option, and new
+ "wordbounds" rcfile option, to control whether
+ the word movement functions treat punctuation characters as
+ part of a word. Changes to do_next_word_void(),
+ do_prev_word_void(), usage(), main(), nano.1, nanorc.5,
+ nano.texi, and nanorc.sample. (DLR, suggested by Mike
+ Frysinger)
+ - Update email address. Changes to faq.html and AUTHORS. (DLR)
+ - Remove do_(left|right)()'s ability to optionally not update
+ the current line, as this was only used in do_backspace(), and
+ it didn't always update the screen properly. Changes to
+ shortcut_init(), do_left(), do_right(), and do_backspace();
+ removal of do_left_void() and do_right_void(). (DLR; problem
+ found by Mike Frysinger)
+- color.c:
+ - Remove unneeded fcntl.h include. (DLR)
+- chars.c:
+ control_rep(), control_mbrep()
+ - Assert that the multibyte character passed in is a control
+ character if it's valid. (DLR)
+ - If crep is an invalid multibyte sequence, copy Unicode 0xFFFD
+ (Replacement Character) into it using strncpy() instead of
+ assigning the former to it. This avoids segfaults when freeing
+ crep later, since it's supposed to be dynamically allocated.
+ (DLR)
+ mbrep()
+ - New function, the equivalent of control_mbrep() for non-control
+ characters. (DLR)
+ parse_mbchar()
+ - Remove now-unneeded bad_chr parameter. (DLR)
+ mbstrchr()
+ - Don't count matches between valid and invalid multibyte
+ sequences anymore, for consistency. (DLR)
+- files.c:
+ open_file()
+ - Assert that filename isn't NULL, and don't do anything special
+ if it's blank, as the the former case shouldn't occur, and the
+ latter case is now handled elsewhere. (DLR)
+ write_file(), write_marked_file(), do_writeout()
+ - Make append an append_type enum instead of an int. (DLR)
+ input_tab()
+ - Make columns an int instead of a size_t, since it's limited by
+ COLS. (DLR)
+- global.c:
+ shortcut_init()
+ - Simplify wording of nano_gotoline_msg. (Jordi and Ken Tyler)
+ - Clarify wording of nano_wordcount_msg, as it will only go
+ through the marked portions of the file if the mark is on.
+ (DLR)
+- move.c:
+ do_first_line(), do_last_line()
+ - Simplify by only using edit_redraw(), and also make them call
+ check_statusblank(). (DLR)
+ do_page_up(), do_page_down()
+ - If there's less than a page of text onscreen, just call
+ do_(first|last)_line(). (DLR)
+ do_para_begin(), do_para_begin_void(), do_para_end(),
+ do_para_end_void(), do_next_word(), do_next_word_void(),
+ do_prev_word(), do_prev_word_void()
+ - Move here from nano.c, as they're movement functions, and also
+ make them call check_statusblank().
+- nano.c:
+ move_to_filestruct()
+ - Fix problem where edittop wouldn't be reset properly if it was
+ inside the text moved to another filestruct. (DLR)
+ copy_from_filestruct()
+ - Miscellaneous cleanups. (DLR)
+ usage()
+ - Properly mention the support for "[+LINE,COLUMN]" on the
+ command line when HAVE_GETOPT_LONG isn't defined. (DLR)
+ - Remove unneeded translation of "--quickblank". (DLR)
+ do_verbatim_input()
+ - If constant cursor position display is on, make sure the
+ cursor position is displayed properly when we finish. (DLR)
+ do_next_word()
+ - Rework to be more like do_prev_word(), to avoid a potential
+ problem if we start at the end of a line. (DLR)
+ do_mouse()
+ - Avoid redundant screen updates by using edit_redraw() instead
+ of edit_refresh(), and remove now-erroneous code that disables
+ setting the mark while in view mode. (DLR)
+ do_output()
+ - When adding a character, just add its length in bytes to
+ current_x instead of calling do_right(), and set placewewant
+ afterward. (DLR)
+ do_alt_speller()
+ - If we can't invoke the spell checker, use sprintf() instead of
+ snprintf() to write the error string we return, as the one
+ formatted value is a simple string, and so altspell_error will
+ always be long enough to hold it. Also remove unnecessary
+ initialization of altspell_error, refactor so that msglen is
+ no longer needed, and make the error message more similar to
+ what the internal spell checker returns under the same
+ circumstances. (DLR)
+ - Block any pending SIGWINCHes while the alternate spell checker
+ is running, so that it can handle them, and unblock them once
+ it's finished and we've loaded the spell-checked file back in.
+ (DLR)
+ - Use doupdate() to reenter curses mode instead of refresh().
+ (DLR)
+ do_spell()
+ - When displaying an error message from do_(int|alt)_speller(),
+ don't display the error message corresponding to errno if
+ errno is zero. (David Benbennick)
+ do_justify()
+ - If constant cursor position display is on, make sure the
+ cursor position is displayed properly when we finish. (DLR)
+ handle_sigwinch()
+ - Use doupdate() to reenter curses mode instead of refresh().
+ (DLR)
+ allow_pending_sigwinch()
+ - Simplify by using the "?" operator instead of an if clause.
+ (DLR)
+ main()
+ - When opening files with "+LINE,COLUMN" arguments on the
+ command line, don't update the screen when moving to their
+ specified lines and columns. (DLR)
+ - Rename variable fill_flag_used to fill_used, for consistency.
+ (DLR)
+- nano.h:
+ - Since we only use vsnprintf() now, remove the #ifdef block for
+ HAVE_SNPRINTF. (DLR)
+ - Remove TOP from the topmidnone enum, and rename the latter
+ centernone. (DLR)
+ - Move stdlib.h, dirent.h, regex.h, and assert.h includes here,
+ as every source file needs them. (DLR)
+ - Rename the updown enum scroll_dir and the centernone enum
+ update_type for clarity, and add an append_type enum. (DLR)
+ - If we don't have regex.h and hence regex support, disable
+ color support, as it depends on the use of regexes. (DLR)
+- rcfile.c:
+ nregcomp()
+ - Return TRUE when the compilation succeeds and FALSE otherwise,
+ instead of the other way around. (DLR)
+- search.c:
+ search_init()
+ - Don't blank out last_replace anymore when we get a new string,
+ as it'll be blanked out in do_replace(). Also, consolidate
+ the cases for blank and new search strings, as they now differ
+ only in which string they pass to regexp_init(). (DLR)
+ is_whole_word()
+ - Move to utils.c, as it's really a utility function in the same
+ vein as regexp_bol_or_eol(). (DLR)
+ replace_abort()
+ - Remove unnecessary update of placewewant. (DLR)
+ do_replace()
+ - Blank out last_replace properly again just before displaying
+ the "Replace" prompt. (DLR, found by Mike Frysinger)
+ - Remove unnecessary renumber(). (DLR)
+ do_gotolinecolumn()
+ - Add parameter allow_update to control whether the screen is
+ updated after moving. If it's TRUE, call edit_refresh() after
+ edit_update(). (DLR)
+ do_gotopos()
+ - Only include this function when DISABLE_SPELLER isn't defined,
+ as the alternate spell checking code is now the only place
+ where it's used. (DLR)
+ do_find_bracket()
+ - Add comments and minor cleanups. (DLR)
+ find_history()
+ - Make parameters const where possible. (DLR)
+ update_history()
+ - Don't renumber the history list starting after the entry we
+ found if the entry we found is at the bottom of the list.
+ (DLR, found by Simon Strandman)
+ get_history_completion()
+ - Make parameters const where possible. (DLR)
+- text.c:
+ do_tab()
+ - Make sure that we insert the correct number of spaces if the
+ TABS_TO_SPACES flag is set and placewewant is greater than the
+ current column position of the cursor. (DLR)
+ do_enter()
+ - Don't update the edit window until we set placewewant. (DLR)
+ break_line()
+ - Fix a problem where a line could be broken in the middle of a
+ multibyte character. (DLR)
+ do_word_count()
+ - Rename to do_wordlinechar_count(), and expand to also count
+ the number of lines and characters in the file or selection,
+ as wc does. (DLR)
+- winio.c:
+ get_key_buffer()
+ - Only save all open buffers and hang up when a blocking
+ wgetch() returns ERR and errno is set to EIO (input/output
+ error). If errno is set to something else, recover properly.
+ This fixes problems with nano's erroneously hanging up while
+ e.g. resizing or unsuspending in a chroot. (DLR, found by Mike
+ Frysinger)
+ get_escape_seq_kbinput()
+ - Fix typo preventing the VT100/VT220/VT320/xterm/rxvt escape
+ sequence for ',' on the numeric keypad with NumLock off from
+ being interpreted properly. (DLR)
+ get_word_kbinput()
+ - Multiply the entered digits by hexadecimal numbers instead of
+ decimal numbers for clarity, rename to get_unicode_kbinput(),
+ and rename variables word and word_digits to uni and
+ uni_digits. (DLR)
+ parse_verbatim_kbinput()
+ - Rename variables word_mb and word_mb_len to uni_mb and
+ uni_mb_len. (DLR)
+ display_string()
+ - Instead of using parse_mbchar()'s bad_chr parameter, use
+ mbrep() to get the representation of a bad character. (DLR)
+ - If column is less than start_col and the character's a tab,
+ which can be possible if there are enough tabs and the
+ terminal size is sufficiently large, don't try to display it
+ using control_mbrep(). (DLR, found by Duncan Geoffry Doyle)
+ - Really avoid a memory corruption problem by allocating enough
+ space for COLS characters. (DLR)
+ edit_redraw(), edit_refresh()
+ - Clean up and simplify. (DLR)
+ edit_update()
+ - Since we no longer use TOP, remove references to it. Also,
+ don't call edit_refresh() anymore; it will call us. (DLR)
+ do_statusbar_next_word()
+ - Rework to be more like do_statusbar_prev_word(), to avoid a
+ potential problem if we start at the end of a line. (DLR)
+ do_statusbar_input()
+ - Call do_statusbar_mouse() instead of do_mouse(). (DLR)
+ do_statusbar_output()
+ - When adding a character, just add its length in bytes to
+ statusbar_x instead of calling do_statusbar_right(). (DLR)
+ titlebar()
+ - Rework to display only one space after the version number, so
+ that there's more room for other things, and to not display
+ the status when we're in the file browser, since Pico doesn't.
+ (DLR)
+ do_credits()
+ - Various cleanups. Turn on the MORE_SPACE and NO_HELP flags
+ before showing the credits, so that they use as much of the
+ screen as possible, and set the flags back to their original
+ values afterward. Also, call wscrl(1) instead of scroll(),
+ only call scrollok() just before and after we scroll, and
+ tweak where screen updates occur so that messages are properly
+ displayed when they first scroll onto the bottom line of the
+ screen. (DLR)
+ - Add Mike Frysinger to credits. (DLR)
+- configure.ac:
+ - Since we only use vsnprintf() now, remove the tests for
+ snprintf(). (DLR)
+ - Change the description of "sufficient wide character support"
+ to "sufficient UTF-8 support", as the latter is clearer. (DLR)
+ - Update the description of the ENABLE_COLOR option to mention
+ the need for regex.h. (DLR)
+- doc/faq.html:
+ - Update section 4.10 to mention that pasting from the X
+ clipboard via the middle mouse button also works when the
+ Shift key is used. (DLR)
+- doc/nanorc.sample:
+ - Add regexes for Bourne shell scripts. (Mike Frysinger, minor
+ tweaks by DLR)
+ - Explain how the "none" and "default" syntaxes work. (DLR)
+ - Tweaks and additions to the "c-file" regexes: handle #defined
+ constants more accurately and use a brighter color for them,
+ support C99 standard integer types, support more GCC builtins,
+ and color code flow control statements differently. (Mike
+ Frysinger) DLR: Slightly simplify the integer types regex.
+ - Tweak one "TeX" regex to use the "icolor" directive. (DLR)
+- doc/man/nanorc.5:
+ - Explain how the "none" and "default" syntaxes work. (DLR)
+- doc/man/fr/nano.1, doc/man/fr/nanorc.5:
+ - Updated translation by Jean-Philippe Guérard.
+- src/Makefile.am:
+ - Add text.c to nano_SOURCES. (DLR)
+- AUTHORS:
+ - Add Mike Frysinger. (DLR)
+- README.CVS:
+ - Since we only use vsnprintf() now, remove the mention of
+ snprintf(). (DLR)
+- THANKS:
+ - Add Bulgarian and Dutch translators.
+
+GNU nano 1.3.8 - 2005.06.30
+- General:
+ - Miscellaneous comment fixes. (DLR)
+ - Various #include fixes. Since proto.h includes nano.h, only
+ include the former in source files. Also add an #include
+ guard to proto.h, and make the config.h #include in nano.h
+ match the config.h #includes everywhere else. (DLR)
+ - Change all hardcoded instances of 128 bytes to MAX_BUF_SIZE,
+ and #define MAX_BUF_SIZE as 128 in nano.h. (DLR)
+ - Display the key to go to the previous strings in the
+ search/replace history as "^P" instead of "Up". This makes
+ mouse clicks work properly on it. Changes to shortcut_init(),
+ help_init(), nanogetstr(), and do_statusbar_input(). (DLR)
+ - Update the Free Software Foundation's mailing address in
+ various comments. (DLR)
+ - Add the ability to open a file on a specified column as well
+ as a specified line, by allowing an argument of the form
+ +LINE,COLUMN. New function parse_line_column(); changes to
+ shortcut_init(), main(), do_gotoline() (renamed
+ do_gotolinecolumn()), do_gotoline_void() (renamed
+ do_gotolinecolumn_void()), nano.1, and nano.texi. (DLR,
+ suggested by PFTank)
+ - Overhaul the history code to work more consistently, and clean
+ up various parts of it. New function history_has_changed();
+ changes to load_history(), writehist(),
+ thanks_for_all_the_fish(), history_init(), find_node()
+ (renamed find_history()), update_history(),
+ get_history_older(), get_history_newer(),
+ get_history_completion(), do_search(), do_replace(),
+ nanogetstr(), and statusq(); removal of remove_node() and
+ insert_node(). (DLR)
+ - Remove all instances of charcpy() and replace them with
+ strncpy(), since there's no way to be sure that a charcpy()ed
+ string will always be properly null-terminated, and strcpy()'s
+ null termination is the only difference between it and
+ charcpy(). (DLR)
+ - When using a backup directory, make sure all the filenames
+ written are unique by using get_next_filename() when
+ necessary. Changes to get_next_filename(), write_file(),
+ die(), usage(), nano.1, nanorc.5, nanorc.sample, and
+ nano.texi. (DLR, suggested by James Collings)
+ - Rework the file-writing routines so that they can work
+ properly with already-opened files, such as the
+ mkstemp()-created files used by the spell-checking code.
+ Changes to safe_tempnam() (renamed safe_tempfile()),
+ write_file(), write_marked(), die(), do_spell(), and
+ do_exit(). (DLR)
+ - Remove the -R/--regexp command line option and enable the
+ toggle at the search prompt in tiny mode, as it already
+ allows the prepend and append toggles at the search prompt.
+ For consistency, rename TOGGLE_REGEXP_KEY to NANO_REGEXP_KEY,
+ and move it out of the toggles block to where NANO_PREPEND_KEY
+ and NANO_APPEND_KEY are. Also, change the short command line
+ option for --restricted from -Z to -R. Changes to
+ shortcut_init(), usage(), main(), search_init(), nano.1,
+ nano.texi, etc. (DLR)
+ - Various cleanups and improvements in chars.c. Remove some
+ unnecessary w?ctype wrappers and variables; change the wctype
+ wrappers to take wint_t instead of wchar_t to match the
+ functions they wrap; rename some functions for consistency;
+ add functions to detect blank characters in a string, for use
+ in rcfile option parsing; and don't count matches between
+ valid and invalid multibyte sequences anymore, as it causes
+ problems when doing a replace. New functions
+ is_valid_mbstring(), has_blank_chars(), and
+ has_blank_mbchars(); changes to is_alnum_mbchar(),
+ is_blank_char() (renamed nisblank()), is_blank_mbchar(),
+ is_blank_wchar() (renamed niswblank()), is_cntrl_wchar(),
+ control_rep(), control_mbrep(), make_mbstring() (renamed
+ make_valid_mbstring()), mbstrncasecmp(), mbstrcasestr(),
+ mbrevstrcasestr(), etc.; removal of is_alnum_char() and
+ is_alnum_wchar(). (DLR)
+ - Implement word count via Meta-D at the main window. Note that
+ this is disabled when NANO_SMALL is defined. Also, convert
+ all word detection functions to use the same wrapper function
+ for ease of maintenance, and make them return more
+ information. New functions is_punct_mbchar(),
+ is_word_mbchar(), do_next_word_void(), do_prev_word_void(),
+ and do_word_count(); changes to shortcut_init(),
+ do_next_word(), do_prev_word(), is_whole_word(),
+ do_statusbar_next_word(), and do_statusbar_prev_word(). (DLR)
+ - Fix #ifdefs so that nano compiles with NANO_SMALL defined and
+ DISABLE_TABCOMP undefined. Changes to revstrstr() and
+ free_charptrarray() (renamed free_chararray()). (DLR)
+ - Change the wctype wrappers to take wchar_t's again, as they
+ still work the same way with them. This also fixes
+ compilation on Mac OS X 10.4.1, which doesn't seem to define a
+ wint_t type. (DLR, found by Emily Jackson)
+ - Add the ability to convert typed tabs to spaces using
+ the -E/--tabstospaces command line options, the "tabstospaces"
+ rcfile option, and the toggle Meta-Q (since QBasic did this by
+ default :)). Note that this doesn't affect tabs entered using
+ verbatim input, and that it's disabled when NANO_SMALL is
+ defined. Also, change the short command line option for
+ --backupdir from -E to -C. Changes to toggle_init(), usage(),
+ do_tab(), main(), nanorc.sample, nano.1, nanorc.5, and
+ nano.texi. (DLR, suggested by many people)
+ - Change the CONSTUPDATE, REVERSE_SEARCH, and SMOOTHSCROLL flags
+ to the CONST_UPDATE, BACKWARDS_SEARCH, and SMOOTH_SCROLL
+ flags, respectively. (DLR)
+ - Change the SMOOTHSCROLL flag to the SMOOTH_SCROLL flag. (DLR)
+ - Change the NO_UTF8 flag to the USE_UTF8 flag, and reverse its
+ meaning. (DLR)
+ - Add rcfile options "casesensitive" and "backwards", to do
+ case sensitive and backwards searches by default. Changes to
+ nanorc.sample and nanorc.5. (DLR)
+ - Since the DISABLE_CURPOS flag is only used in winio.c, reduce
+ it to a static bool there. Changes to statusbar() and
+ disable_cursorpos(). (DLR)
+ - Add -U/--quickblank option and a "quickblank" rcfile option to
+ blank the statusbar after 1 keystroke instead of 25. Note
+ that this obviously has no effect when constant cursor
+ position display is turned on, and that this is disabled when
+ NANO_SMALL is defined. Changes to usage(), main(),
+ statusbar(), nanorc.sample, nano.1, and nanorc.5. (DLR,
+ suggested by CHAO Wei-Lun)
+ - Add support for case insensitive expression matching when
+ using color syntax highlighting, via the "icolor" directive,
+ and add it to those regexes that can use it. Changes to
+ parse_colors(), parse_rcfile(), nanorc.sample, and nanorc.5.
+ (Brand Huntsman, minor tweaks by DLR)
+ - Add various type changes to avoid problems on systems where
+ int and ssize_t are different sizes. Make filestruct->lineno
+ a ssize_t (so that we can avoid negative line numbers at the
+ "Go To Line" prompt), current_y a ssize_t (in order to hold
+ the maximum difference between two filestruct->lineno's),
+ totlines a size_t, and change related variables to match.
+ (DLR, initial problem with parse_line_column() found by Mike
+ Frysinger)
+ - Rework the credits handling to display Florian König's name
+ properly whether we're in a UTF-8 locale or not, and without
+ requiring a massive function that we only use once. Changes
+ to do_credits(); removal of make_valid_mbstring(). (DLR)
+- chars.c:
+ make_mbstring()
+ - Change erroneous ENABLE_EXTRA #ifdef to NANO_EXTRA to fix a
+ compilation problem when --enable-nanorc isn't used and
+ --enable-extra is. (DLR)
+- color.c:
+ update_color()
+ - Use mbstrcasecmp() instead of strcasecmp(), so that UTF-8
+ color syntax names are properly detected. (DLR)
+- cut.c:
+ cut_line()
+ - Set placewewant properly after cutting a line, to avoid a
+ problem where the screen won't be updated if (a) we're not on
+ the first page when we cut the line, and (b) immediately after
+ we cut the line, we hit End to move to the end of the line
+ after it. (DLR)
+- files.c:
+ read_line()
+ - Rename variable prev to prevnode to avoid confusion. (DLR)
+ - Rename variable len to buf_len, for consistency. (DLR)
+ load_open_file()
+ - Remove an unneeded clearok(FALSE). (DLR)
+ get_next_filename()
+ - Use an unsigned long instead of an int for the number
+ prepended to the filename. (DLR)
+ do_insertfile()
+ - Set i to 0 when we get a filename via the file browser, so
+ that it's read in properly when we exit the file browser.
+ (DLR)
+ open_prevnext_file()
+ - Move up a misplaced assert. (DLR)
+ - Rename variable next to next_file, to avoid confusion. (DLR)
+ write_file()
+ - Since lineswritten is a size_t, print its value as an unsigned
+ long instead of an unsigned int. (DLR)
+ - Declare the size_t i only in the loop where it's used. (DLR)
+ diralphasort()
+ - Use mbstrcasecmp() instead of strcasecmp(), so that UTF-8
+ filenames are sorted properly. (DLR)
+ cwd_tab_completion(), browser_init()
+ - Rename variable next to nextdir to avoid confusion. (DLR)
+ input_tab()
+ - Since list is a bool, set it to FALSE instead of 0. (DLR)
+ - Add multibyte/wide character support, so that we don't end up
+ with a string that contains only part of a multibyte
+ character during tab completion. (DLR)
+ - Rename variable buflen to buf_len, for consistency. (DLR)
+ do_browser()
+ - Don't treat NANO_CANCEL_KEY as NANO_EXIT_KEY anymore, for
+ consistency. (DLR)
+ - When displaying "(dir)" in the available screen space, make
+ sure that the string it's stored in is always null-terminated.
+ (DLR)
+ - Rename variable selectedbackup to old_selected, for
+ consistency. (DLR)
+ - Make mouse clicks in the browser window work properly when the
+ MORE_SPACE flag is set. (DLR)
+ - Make foo_len a size_t instead of an int. (DLR)
+ save_history()
+ - Properly save history when we're in view mode. (DLR)
+- global.c:
+ shortcut_init()
+ - Move the "Refresh" and "Exit" shortcuts to the beginning of
+ the help browser shortcut list, for consistency. (DLR)
+ - Remove unnecessary "Refresh" placeholder in the file browser
+ shortcut list. (DLR)
+ - Allow the mark to be used in view mode, as Pico does. (DLR)
+ - Clarify the description of ^X when --enable-multibuffer is
+ used. (DLR)
+ - Change the description of the Meta-B toggle at the search
+ prompt from "Direction" to "Backwards", for consistency. (DLR)
+ toggle_init()
+ - Clarify the descriptions of M-C and M-L. (DLR)
+ - Reorder the toggles to put more toggles with similar functions
+ together. (DLR)
+ thanks_for_all_the_fish()
+ - Remove free_toggles() and move its code here verbatim, as it's
+ only called here anyway. (David Benbennick)
+ - Fix the code to free all open file buffers to work properly
+ with the previous overhaul of the multibuffer code instead of
+ going into an infinite loop. (David Benbennick)
+ - Add additional checks for variables' not being NULL before we
+ try to free them, to avoid assertion failures. (DLR)
+- nano.c:
+ die()
+ - Rename variable ret to retval for consistency. (DLR)
+ - Tweak the message displayed when a backup file can't be
+ written, so as to not duplicate a translated string. (DLR)
+ - If the current filestruct's been partitioned, unpartition it
+ before saving the associated file. (DLR)
+ resize_variables()
+ - Use charset() instead of memset() to initialize hblank. (DLR)
+ copy_filestruct()
+ - Rename variable prev to copy to avoid confusion. (DLR)
+ print1opt_full()
+ - If desc should be empty, allow it to be NULL instead of
+ "", since the latter is not necessarily translated as "".
+ (DLR, found by Jordi)
+ usage()
+ - Add missing N_() around one message, so that it isn't
+ erroneously translated twice. (DLR)
+ - Remove inaccurate default listed for -Q/--quotestr. (DLR)
+ version()
+ - Add --enable-utf8 to the displayed compilation options, put
+ the options in alphabetical order, and handle --enable-tiny
+ the same way as all the other options. (DLR)
+ do_tab()
+ - Remove unneeded variable kbinput. (DLR)
+ do_int_spell_fix()
+ - Display highlighted misspelled words using display_string(),
+ as do_replace_loop() does. (DLR)
+ do_alt_speller()
+ - Replace a set_modified() with SET(MODIFIED) to avoid an
+ unnecessary update, and remove an unneeded clearok(FALSE).
+ (DLR)
+ - Move the spell checking error handling block down and refactor
+ it so that we go back into curses mode, reinitialize the
+ terminal, turn the cursor back on, and turn the mark back on
+ if necessary before returning the error message. (DLR)
+ do_spell()
+ - If the spell-checker printed any error messages onscreen, call
+ total_refresh() to make sure they're cleared off. (DLR, found
+ by CHAO Wei-Lun)
+ find_paragraph()
+ - Reset placewewant as well as current_x to 0, in order to avoid
+ a potential screen update problem. (DLR)
+ do_justify()
+ - Save placewewant, and restore it if we unjustify, in order to
+ avoid a potential screen update problem. (DLR)
+ do_output()
+ - Properly allow wrapping when we insert a tab, for consistency.
+ (DLR)
+ - Don't set current_len until after it's been asserted that both
+ current and current->data aren't NULL. (DLR)
+ do_toggle()
+ - Properly treat color syntax highlighting as enabled by
+ default, and only treat wrapping as enabled by default when
+ DISABLE_WRAPPING isn't defined. (DLR)
+ disable_extended_input()
+ - Disable extended output processing as well as extended input
+ processing, and rename to disable_extended_io(). (DLR)
+ disable_flow_control(), enable_flow_control()
+ - Only turn off flow control on output, as it might be needed
+ for input on slow terminals. (DLR)
+- nano.h:
+ - Add macro charset(), a wrapper that calls memset(). (DLR)
+ - Readd #defines for the isblank() and iswblank() equivalents.
+ (DLR)
+ - In the colortype struct, make bright a bool instead of an int,
+ for consistency. (DLR)
+- proto.h:
+ - Add missing NANO_SMALL and HAVE_REGEX_H #ifdefs around the
+ do_find_bracket() prototype. (DLR)
+- rcfile.c:
+ color_to_int()
+ - Since colorname's being NULL is handled elsewhere now, assert
+ that it isn't NULL at the beginning of the function. (DLR)
+ parse_colors()
+ - Properly parse a background color without a foreground color.
+ (DLR)
+ - Properly generate an error if we get a color directive without
+ a regex string. (DLR)
+ parse_rcfile()
+ - Properly generate an error if we get an invalid multibyte
+ string for an option, instead of working around it. (DLR)
+ - Use has_blank_mbchars() to check for blank characters in the
+ "punct" and "brackets" options, and clarify the error message
+ displayed when we find blank characters. (DLR)
+- search.c:
+ do_gotoline()
+ - Properly show an error message if we try to go to line 0,
+ since the first line in the file is 1. (DLR)
+ - Start the search for a line from fileage instead of current
+ (again). (DLR)
+ replace_regexp()
+ - Rename variables create_flag and new_size to create and
+ new_line_size, for consistency. (DLR)
+ - Make new_line_size, search_match_count, and i size_t's, for
+ consistency. (DLR)
+ replace_line()
+ - Make new_line_size and search_match_count size_t's, for
+ consistency. (DLR)
+ do_replace_loop()
+ - When moving to the next match, update the screen using
+ edit_refresh() instead of edit_redraw(), as the latter won't
+ work properly when we've replaced one or more instances of a
+ string in copy and haven't yet updated current->data to match
+ copy. (DLR)
+ do_find_bracket()
+ - Miscellaneous cleanups: rename variables for consistency, and
+ save the search direction and regexp setting in two bools
+ instead of one flags variable. (DLR)
+- utils.c:
+ num_of_digits()
+ - Use a size_t instead of an int, and rename to digits(). (DLR)
+ align()
+ - Rename variable strp to str for consistency. (DLR)
+- winio.c:
+ do_statusbar_output()
+ - Don't set answer_len until after it's been asserted that
+ answer isn't NULL. (DLR)
+ display_string()
+ - Avoid a memory corruption problem by allocating enough space
+ for len plus a trailing multibyte character and/or tab. (DLR)
+ - Don't check for multicolumn characters if the NO_UTF8 flag
+ isn't set. (DLR)
+ - Free buf_mb when we're done using it. (DLR)
+ nanogetstr()
+ - Rename variable def to curranswer to avoid confusion. (DLR)
+ - Only declare and use the tabbed variable if DISABLE_TABCOMP
+ isn't defined. (DLR)
+ - Refactor to replace unnecessary variable answer_len with
+ curranswer_len, and hence avoid an assertion failure involving
+ the former. (DLR)
+ statusq()
+ - Rename variable which_history to history_list, for
+ consistency. (DLR)
+ - Rename variables def and ret to curranswer and retval to avoid
+ confusion. (DLR)
+ - Call wnoutrefresh(bottomwin) after getting an answer and
+ blanking out the statusbar, to make sure that the blanking is
+ done. This fixes a problem where the statusbar is not
+ properly blanked after using the "Go To Line" prompt with the
+ NO_HELP flag set. (DLR)
+ titlebar()
+ - Use actual_x() to calculate the number of characters VERMSG
+ takes up, in case it's UTF-8. (DLR)
+ do_cursorpos()
+ - Properly display the value of totsize as unsigned. (DLR)
+ - If constant is TRUE, only display the cursor position when
+ disable_cursorpos is FALSE. Don't refuse to display it when
+ the cursor position hasn't changed, as that doesn't always
+ keep it properly updated. (DLR, found by Mike Frysinger)
+ do_help()
+ - Don't treat NANO_CANCEL_KEY as NANO_EXIT_KEY anymore, for
+ consistency. (DLR)
+ statusbar()
+ - Set statusblank to 25 instead of 26, to match current Pico.
+ (DLR)
+ edit_redraw()
+ - Make do_refresh a bool instead of an int. (DLR)
+ do_yesno()
+ - Allow refreshing the screen via Ctrl-L, as Pico does. (DLR)
+ - Add a missing assert, and use actual_x() to calculate the
+ number of characters buf takes up, in case it's UTF-8. (DLR)
+ - Get input from bottomwin instead of edit, so that the cursor
+ isn't erroneously put in the edit window while we wait for an
+ answer. (DLR)
+ - Call wnoutrefresh(edit) to make sure that the edit window is
+ refreshed before we get input, as statusq() does. (DLR)
+ total_redraw()
+ - Simplify to just call wrefresh() on curscr, which updates the
+ entire screen in one function call without moving the cursor
+ from the window it's currently in. (DLR)
+ - When using slang, use SLsmg_touch_screen() and SLsmg_refresh()
+ to update the screen, as slang doesn't define curscr. (DLR)
+ do_replace_highlight()
+ - Use waddch() instead of waddstr() to display a space when we
+ have a zero-length regex. (DLR)
+ - Rename variable highlight_flag to highlight, for consistency.
+ (DLR)
+ do_credits()
+ - Save the keystroke that breaks us out of the credits (if any)
+ and put it back so that it isn't lost. This is especially
+ needed if the keystroke is part of a multibyte character.
+ (DLR)
+- nano.1:
+ - Clarify and consolidate the descriptions of --fill and
+ --tabsize. (DLR)
+- nanorc.5:
+ - Update the description of how the "color" regex works. (DLR)
+ - Clarify descriptions of the characters that aren't allowed
+ in the "punct" or "brackets" options. (DLR)
+ - Use .B instead of \fB ... \fP where possible, as nano.1 does.
+ (DLR)
+ - Clarify and consolidate the descriptions of "fill" and
+ "tabsize". (DLR)
+- nano.texi:
+ - Update the "Feature Toggles" section to match current nano.
+ (DLR)
+ - Clarify and consolidate the descriptions of --fill and
+ --tabsize. (DLR)
+- configure.ac:
+ - Minor tweaks to some of the test blocks to avoid XSI:isms.
+ (DLR, adapted from a Debian patch for GNU ed by David
+ Weinehall)
+ - Don't refer to the built-in file browser as crappy anymore.
+ (DLR)
+ - Check for iswpunct() and mbstowcs(). (DLR)
+ - Change the behavior of --enable-extra to only define
+ NANO_EXTRA, instead of defining both it and
+ ENABLE_MULTIBUFFER. (DLR)
+ - Check for get_wch() instead of wget_wch() to determine if
+ there's a wide curses library, as it's a more generic
+ function. (DLR)
+ - Check for possibly unavailable functions in alphabetical
+ order. (DLR)
+- doc/faq.html:
+ - Update section 1.1 to mention the current maintainer. (DLR)
+ - Minor capitalization and wording fixes. (DLR)
+ - Update description of --enable-extra, and add missing line
+ breaks. (DLR)
+- doc/nanorc.sample:
+ - In the "nanorc" regexes, tweak the "color" regex to properly
+ color a line that specifies a background color without a
+ foreground color, and update the associated comments. (DLR)
+ - Clarify descriptions of the characters that aren't allowed
+ in the "punct" or "brackets" options. (DLR)
+ - Update comment referring to --enable-extra. (DLR)
+ - Add "cxx" and "hxx" to the list of extensions that the
+ "c-file" regexes apply to, and add "warning" and "error" to
+ them as well. (Mike Frysinger)
+ - Add regexes for assembler files. (Mike Frysinger)
+ - In the preprocessor directives regex string in the "c-file"
+ regexes, cover more whitespace characters than just " " by
+ using "[[:space:]]" instead. (Mike Frysinger) DLR: Extend
+ this to other regex strings whenever possible.
+ - Move some overly long split-up regex strings that cover
+ similar areas onto the same line. (DLR)
+ - Add GCC builtins to the "c-file" regexes. (Mike Frysinger)
+ - Simplify the file extension regex for groff. (DLR)
+ - Clarify and consolidate the descriptions of "fill" and
+ "tabsize". (DLR)
+- Makefile.am, m4/Makefile.am:
+ - Make sure that the files in EXTRA_DIST are in alphabetical
+ order, and that the lines are wrapped at 72 characters. (DLR)
+- doc/man/fr/Makefile.am:
+ - Set mandir to @mandir@/fr, so French manpages get installed
+ where they belong (Jordi).
+- THANKS:
+ - Add new translators to the credits.
+
+GNU nano 1.3.7 - 2005.04.10
+- General:
+ - Miscellaneous comment fixes. (DLR)
+ - After (re)initializing the terminal, make sure the cursor is
+ always turned on. Changes to do_alt_speller(),
+ handle_sigwinch(), and main(). (DLR)
+ - Make sure that all references to cut-to-end are left out when
+ NANO_SMALL is defined. Changes to cut_to_eol(),
+ do_cut_text(), and do_statusbar_cut_text(). (DLR)
+- chars.c:
+ make_mbchar()
+ - Remove unneeded assert. (DLR)
+ move_mbleft()
+ - Fix assert to reference the proper variable, so that nano
+ builds with DEBUG defined again. (Mike Frysinger, found by
+ Dmitri Vassilenko)
+- files.c:
+ do_insertfile()
+ - Fix problem where going into the help browser at the "Insert
+ File" prompt would always result in the current answer's being
+ used as the filename afterward. (DLR)
+ get_full_path()
+ - Rework handling of the results of getcwd() in order to avoid
+ segfaults if they fail, and to remove uses of the nonportable
+ GNU extension where passing a size of 0 will get a string as
+ long as we need. (DLR)
+ do_browser()
+ - Rename variable lineno to fileline to avoid confusion. (DLR)
+ do_browse_from()
+ - Rework handling of the results of getcwd() in order to avoid
+ segfaults if they fail, and to remove uses of the nonportable
+ GNU extension where passing a size of 0 will get a string as
+ long as we need. (DLR)
+- nano.c:
+ help_init()
+ - When calculating allocsize, take multibyte characters into
+ account, and keep the column number limits consistent. (DLR)
+ - Break htx up into three chunks, in case the string is too long
+ for the compiler to handle (e.g. an ISO C89 compiler that can
+ only handle up to 509 characters). (DLR)
+ - Minor wording fixes. (DLR)
+ print1opt()
+ - Don't include longflag if HAVE_GETOPT_LONG isn't defined.
+ Rename this function to print1opt_full(), leave out the
+ longflag parameter if HAVE_GETOPT_LONG isn't defined, and make
+ print1opt() a macro for print1opt_full() that does that
+ without the need for a lot of extra #ifdefs. (David
+ Benbennick) DLR: Rename print1opt_f() to print1opt_full().
+ - Rework the special case of options that are ignored for Pico
+ compatibility so that they display more neatly when
+ HAVE_GETOPT_LONG isn't defined. (DLR)
+ usage()
+ - Fix erroneous #ifdef that resulted in the -d/--rebinddelete
+ option's not being printed when NANO_SMALL was defined. (DLR)
+ find_paragraph()
+ - Fix problem where a search for the next paragraph would skip
+ over certain cases of one-line paragraphs. (DLR)
+ do_justify()
+ - Instead of breaking a line at a space and readding the space
+ afterwards, just break the line after the space, as it's more
+ efficient. (DLR)
+ main()
+ - Change 0 to NULL in the option struct where needed. (David
+ Benbennick)
+- nano.h:
+ - Define PATH_MAX as 4096 if it isn't defined, as passing a size
+ of 0 to get a string as long as we need is a nonportable GNU
+ extension, and hence it won't work on non-GNU systems that
+ don't define PATH_MAX. (DLR)
+- rcfile.c:
+ parse_rcfile()
+ - Fix debugging message to display the long value of a flag
+ properly. (DLR)
+- utils.c:
+ regexec_safe()
+ - Rename to safe_regexec() for consistency. (DLR)
+- winio.c:
+ nanogetstr()
+ - Fix misplaced break. (DLR)
+ statusq()
+ - Make sure that the vsnprintf(foo) call and foo's subsequent
+ null termination both take the proper number of bytes when
+ using multibyte characters, so that multibyte prompt strings
+ aren't prematurely cut off. (DLR)
+ titlebar()
+ - Make sure that the (mv)?waddnstr() calls take the proper
+ number of bytes when using multibyte characters, so that
+ multibyte strings aren't prematurely cut off. (DLR, found by
+ Jordi)
+ - Allow the "View" state to be displayed when a filename is
+ passed in, in case we're in multibuffer mode and inside the
+ file browser. (DLR)
+ help_line_len()
+ - Make the text display more flexible, and closer to what nano
+ 1.2.x does. (DLR)
+- configure.ac:
+ - Allow more flexible handling of UTF-8 support by allowing
+ the --enable-utf8 and --disable-utf8 options. (Mike
+ Frysinger) DLR: Extend these options to work with slang as
+ well as curses, consolidate the warning and error messages
+ dealing with UTF-8 support as much as possible, and add a few
+ minor consistency fixes.
+ - Mention explicitly that the check for the broken regexec() is
+ needed for glibc 2.2.3. (DLR)
+- nanorc.sample:
+ - Fix the description for the whitespace option to mention that
+ only single-column characters are allowed. (DLR)
+ - Add C++ regexes. (Neil Brown, merged into c-file regexes by
+ DLR)
+ - Break up overly long perl and nanorc regexes into separate
+ regexes of no more than 256 bytes, as POSIX-compliant regexp
+ implementations can reject regexes of over 256 bytes. (DLR)
+- nano.1, nano.texi:
+ - Mention the -? alias for -h/--help, and add various
+ consistency fixes. (DLR)
+- nanorc.5:
+ - Fix the description for the whitespace option to mention that
+ only single-column characters are allowed. (DLR)
+
+GNU nano 1.3.6 - 2005.03.20
+- General:
+ - More int -> bool conversions. (DLR and David Benbennick)
+ - Overhaul the cutting and uncutting routines to use the
+ partitioning code, as it greatly simplifies how they work.
+ New functions move_to_filestruct(), copy_from_filestruct(),
+ cut_line(), cut_marked(), and cut_to_eol(); changes to
+ add_to_cutbuffer(), do_cut_text(), do_uncut_text(), etc.;
+ removal of functions get_cutbottom(), add_to_cutbuffer(), and
+ cut_marked_segment(). (DLR)
+ - Overhaul the justify-related routines to back up and restore
+ unjustified text to use the partitioning code, as it greatly
+ simplifies how they work, and to store such text in its own
+ buffer rather than the cutbuffer. Changes to backup_lines(),
+ do_justify(), etc. (DLR)
+ - Overhaul the multibuffer routines to increase efficiency, most
+ importantly making them use a doubly linked list for the open
+ files so that switching between them is no longer O(N), and
+ only including free_openfilestruct() when --enable-debug is
+ used. Also use some of the same efficiency tweaks when
+ dealing with filestruct nodes. New function
+ open_prevnext_file(); changes to make_new_opennode(),
+ splice_opennode(), unlink_opennode(), delete_opennode(),
+ free_openfilestruct(), add_open_file(), load_open_file(),
+ close_open_file(), shortcut_init(), die(), make_new_node(),
+ copy_node(), splice_node(), delete_node(), and
+ free_filestruct(); removal of open_prevfile() and
+ open_nextfile(). (David Benbennick, minor tweaks and additions
+ by DLR)
+ - Change references to "open files" to "open file buffers", for
+ consistency. (DLR)
+ - Add flag to disable UTF-8 sequence interpretation, so that
+ people using single-byte encodings such as KOI8-R can type
+ properly again. (DLR, found by Arthur Ivanov)
+ - Massively overhaul the input and output routines to support
+ buffered input and output, the first steps toward
+ wide/multibyte character input and output, and verbatim input
+ of double-byte Unicode characters instead of single-byte ASCII
+ characters. New functions is_byte(), get_buffer(),
+ get_buffer_len(), buffer_to_keys(), unget_input(),
+ get_input(), parse_kbinput(), and parse_verbatim_kbinput();
+ new macro charcpy(); changes to do_char() (renamed to
+ do_output()), get_edit_input() (renamed to do_input() and
+ moved to nano.c), get_edit_mouse() (renamed do_mouse() and
+ moved to nano.c), do_verbatim_input(), do_tab(), main(), and
+ get_ascii_kbinput() (renamed to get_byte_kbinput()). The wide
+ version of ncurses is required in order for wide/multibyte
+ input and output to work properly. (DLR; buffered input/output
+ based on ideas from mutt 1.4.2.1; input of Unicode characters
+ in hexadecimal suggested by Michael Piefel)
+ - More steps toward wide character/multibyte character support.
+ New functions control_rep(), parse_char(), move_left(), and
+ move_right(); changes to do_left(), do_right(), do_delete(),
+ breakable(), break_line(), do_output(), get_buffer(),
+ unget_input(), actual_x(), strnlenpt(), display_string(),
+ titlebar(), statusbar(), onekey(), edit_add(),
+ do_replace_highlight(), and do_credits(). (David Benbennick
+ and DLR)
+ - Overhaul the high-level input routines for the statusbar to
+ make them read the shortcut lists for functions instead of
+ manually running them, to make nanogetstr() less complex, and
+ to increase flexibility. Note that currshortcut is now used
+ regardless of #ifdefs, and that cutting text at the statusbar
+ now respects the CUT_TO_END flag. Changes to shortcut_init()
+ and nanogetstr(); new functions do_statusbar_input(),
+ do_statusbar_mouse(), do_statusbar_home(), do_statusbar_end(),
+ do_statusbar_right(), do_statusbar_left(),
+ do_statusbar_backspace(), do_statusbar_delete(),
+ do_statusbar_cut_text(), and do_statusbar_output(). (DLR)
+ - Even more steps toward wide character/multibyte character
+ support. Movement and cursor display at the statusbar prompt
+ should now (mostly) work properly with a string containing
+ multibyte characters, and text display of such strings should
+ now (mostly) work properly as well. Changes to search_init(),
+ nanoget_repaint(), do_statusbar_right(), do_statusbar_left(),
+ do_statusbar_backspace(), and do_statusbar_delete(). (David
+ Benbennick and DLR)
+ - Implement cutting from the current position to the end of the
+ file, using Ctrl-X from the search prompt and Meta-T from the
+ edit window. New function do_cut_till_end(). Note that this
+ is disabled when NANO_SMALL is defined. (DLR, based on ideas
+ from a patch for Pico by Eduardo Chappa, suggested by Ryan
+ Dlugosz and Paul Adams)
+ - Implement verbatim input for the statusbar prompt. Changes to
+ do_statusbar_input() and do_statusbar_output(); new functions
+ keys_to_buffer(), unparse_kbinput(), and
+ do_statusbar_verbatim_input(). (DLR)
+ - Yet more steps toward full wide character/multibyte character
+ support. Overhaul the functions that already have support for
+ them to work with multibyte strings as much as possible, add
+ support to a few more functions as well, and move multibyte
+ character-specific functions to their own source file. New
+ file chars.c; new functions is_alnum_char(),
+ is_alnum_mbchar(), is_alnum_wchar(), is_blank_mbchar(),
+ is_blank_wchar(), is_cntrl_mbchar(), is_cntrl_wchar(),
+ control_mbrep(), control_wrep(), mbwidth(), mb_cur_max(),
+ make_mbchar(), mbstrlen(), mbstrnlen(), mbstrcasecmp(),
+ mbstrncasecmp(), mbstrcasestr(), and mbrevstrcasestr();
+ changes to help_init(), do_wrap(), break_line(), is_byte()
+ (moved to chars.c), is_blank_char() (moved to chars.c),
+ is_cntrl_char() (moved to chars.c), nstricmp() (renamed
+ nstrcasecmp() and moved to chars.c), nstrnicmp() (renamed
+ nstrncasecmp() and moved to chars.c), nstristr() (renamed
+ nstrcasestr() and moved to chars.c), revstrstr() (moved to
+ chars.c), revstristr() (renamed revstrcasestr() and moved to
+ chars.c), nstrnlen() (moved to chars.c), parse_char() (renamed
+ parse_mbchar() and moved to chars.c), move_left() (renamed
+ move_mbleft() and moved to chars.c), move_right() (renamed
+ move_mbright() and moved to chars.c), do_home(),
+ do_verbatim_input(), do_delete(), do_tab(), do_enter(),
+ indent_length(), do_next_word(), do_prev_word(), do_wrap(),
+ do_input(), do_output(), is_whole_word(), strstrwrapper(),
+ get_buffer(), unget_input(), unget_kbinput(), get_input(),
+ parse_kbinput(), unparse_kbinput(), parse_verbatim_kbinput(),
+ do_statusbar_input(), do_statusbar_home(),
+ do_statusbar_verbatim_kbinput(), do_statusbar_output(),
+ do_help(), help_line_len(), and display_string(); removal of
+ buffer_to_keys() and keys_to_buffer(). (DLR)
+ - Add -O/--morespace command line option, plus a corresponding
+ Meta-O toggle and a "morespace" rcfile option. When these are
+ used, the normally-unused blank line below the titlebar will
+ be treated as part of the edit window. New functions
+ no_more_space() and blank_topbar(); changes to global_init(),
+ window_init(), handle_sigwinch(), do_toggle(), do_mouse(),
+ get_mouseinput(), etc. (DLR; suggested by Mike Frysinger,
+ Rocco, and Robert Schultz)
+ - Add support for moving to the next or previous word at the
+ statusbar prompt. New functions do_statusbar_next_word() and
+ do_statusbar_prev_word(); changes to do_statusbar_input().
+ (DLR)
+ - Make resizing more flexible. We now can work with as few as
+ one row, and with no limit on the number of columns (except of
+ course the curses-imposed limit that it be greater than zero).
+ New function resize_variables(); changes to die_too_small()
+ (renamed check_die_too_small()), global_init(), window_init(),
+ and handle_sigwinch(). (David Benbennick)
+ - Use void instead of RETSIGTYPE, as signal handlers are
+ supposed to return void anyway. Also, the value of RETSIGTYPE
+ is sometimes misdetected as int, leading to compilation
+ warnings or errors. Changes to cancel_fork(),
+ handle_hupterm(), do_suspend(), and do_cont(). (David
+ Benbennick)
+ - Change flags to an unsigned long, and totsize to a size_t.
+ (DLR)
+ - Store the number of multibyte characters instead of the number
+ of single-byte characters in totsize, and use get_totals() to
+ get the value of totsize in a few more places. Changes to
+ read_line(), read_file(), do_delete(), do_input(),
+ get_totals(), and do_cursorpos(). (DLR)
+ - Overhaul the tab completion code, the file browser code, and
+ related functions to increase efficiency and support multibyte
+ characters. New function is_dir(); changes to
+ get_full_path(), check_writable_directory(), safe_tempnam(),
+ diralphasort(), username_tab_completion(),
+ cwd_tab_completion(), input_tab(), tail(), striponedir(),
+ browser_init(), do_browser(), and do_browse_from(); removal of
+ append_slash_if_dir(), readable_dir(), and
+ check_wildcard_match(). (David Benbennick) DLR: Move the
+ routine to get the current user's home directory into the new
+ function get_homedir(), and use it where necessary. Also add
+ a few miscellaneous tweaks.
+ - Overhaul the rcfile parsing code to make it simpler and more
+ accurate, remove now-redundant checks from the color code,
+ change the COLOR_SYNTAX toggle to the NO_COLOR_SYMTAX toggle,
+ and improve various debugging messsages. Changes to
+ set_colorpairs(), do_colorinit(), parse_next_word(),
+ parse_argument(), colortoint(), parse_next_regex(),
+ parse_syntax(), parse_colors(), parse_rcfile(), do_rcfile(),
+ etc. (David Benbennick) DLR: Rename colortoint() to
+ color_to_int(), and add a few miscellaneous tweaks.
+ - Overhaul the paragraph-searching code to make it use the
+ paragraph-searching utility functions when possible instead of
+ duplicating code. Also overhaul the justify code to make it
+ leave the right number of spaces at the ends of the lines of a
+ paragraph, to make it support multibyte characters, and to
+ make it simpler. Also, don't remove a space after a duplicate
+ character in punct anymore, as it doesn't really make us more
+ compatible with Pico. New functions mbstrchr(),
+ do_para_begin_void(), and do_para_end_void(); changes to
+ justify_format(), do_para_begin(), inpar(), do_para_end(),
+ break_line(), do_para_search() (renamed find_paragraph()), and
+ do_justify(); removal of breakable(). (DLR)
+ - Still more steps toward full wide/multibyte character support.
+ Make sure all rcfile arguments are valid multibyte strings,
+ make whitespace display mode work with multibyte characters,
+ and add a few related documentation updates. New function
+ make_mbstring(); changes to make_mbchar(), make_mbstring(),
+ main(), parse_rcfile(), display_string(), and do_help(). (DLR)
+- cut.c:
+ do_cut_text()
+ - If keep_cutbuffer is FALSE, only blow away the text in the
+ cutbuffer if the cutbuffer isn't empty. (DLR)
+ do_uncut_text()
+ - No longer duplicate Pico's adding an extra magicline to the
+ file if uncutting leaves the cursor on the current one. This
+ behavior appears to be a bug, as inserting a file in the same
+ manner doesn't add an extra magicline. (DLR)
+- files.c:
+ get_full_path()
+ - Remove unneeded NANO_SMALL #ifdef, so that it's included
+ whenever its prototype is, and so it can compile when
+ DISABLE_OPERATINGDIR isn't defined and NANO_SMALL is. (DLR)
+ do_browser()
+ - Refresh the screen when Ctrl-L is pressed in the file browser,
+ as Pico does. (DLR)
+- global.c:
+ shortcut_init()
+ - Fix misplaced #endif keeping the "Full Justify" shortcut in
+ the search shortcut list from being included when NANO_SMALL
+ is defined but DISABLE_JUSTIFY isn't. (DLR)
+ - Use NULL instead of 0 when a shortcut has no associated
+ function. (DLR)
+ thanks_for_all_the_fish()
+ - Free the justify buffer if it isn't empty. (DLR)
+- nano.c:
+ help_init()
+ - Clarify the text describing double-escape character input.
+ Since ASCII is technically only seven bits wide, characters
+ 128-255 aren't ASCII. (DLR, suggested by Michael Piefel)
+ do_toggle()
+ - When we get the whitespace display toggle, update the titlebar
+ as well as the edit window, in case the filename displayed on
+ the titlebar contains spaces or tabs. (DLR)
+ handle_sigwinch()
+ - If the justify buffer isn't empty, blow it away and don't
+ display "UnJustify" in the shortcut list anymore. (DLR)
+ usage()
+ - Typo fix. (DLR)
+ do_wrap()
+ - Make wrap_loc and word_back ssize_t's, to match fill. (DLR)
+ break_line()
+ - Fix compilation problem caused by its returning int when it
+ should return ssize_t according to its prototype. (Jeremy
+ Huddleston)
+ indent_length()
+ - Make the #ifdef around it match that of its prototype to avoid
+ compilation problems when compiling with --enable-tiny and
+ without DISABLE_JUSTIFY's being defined. (DLR)
+ do_justify()
+ - For consistency, preserve placewewant if we didn't unjustify
+ instead of setting it to 0. (DLR)
+ - When justifying the entire file, properly break out of the
+ loop if we've found at least one paragraph, there are no more
+ paragraphs after the current one, and the paragraph search
+ left us on the magicline. This avoids a segfault. (DLR)
+ do_input()
+ - Add finished parameter, used to indicate when we run or try to
+ run a function associated with a shortcut. (DLR)
+ main()
+ - Try to automatically detect whether UTF-8 support is needed by
+ setting the NO_UTF8 flag if setlocale() returns a string that
+ doesn't contain "UTF8" or "UTF-8", case insensitively. When
+ using slang 2.x, enable UTF-8 support with SLutf8_enable().
+ (DLR, string checks beyond case-sensitive "UTF-8" adapted from
+ Debian's UTF-8 patch for slang)
+- nano.h:
+ - Remove now-unneeded #defines for functions that now have
+ multibyte equivalents. (DLR)
+ - Remove now-unneeded MIN_EDITOR_COLS. (David Benbennick)
+- utils.c:
+ regexec_safe()
+ - Remove redundant regexec #define, and move the regexec #undef
+ to nano.h. (DLR)
+ is_blank_char()
+ - Rewrite to use ctype functions instead of checking directly
+ for spaces and tabs. (DLR)
+ revstrstr(), revstristr()
+ - Add asserts. (DLR)
+- winio.c:
+ get_buffer()
+ - If we get ERR when using blocking input, it means that the
+ input source that we were using is gone. In this case, call
+ handle_hupterm(), so that nano dies gracefully instead of
+ going into an infinite loop. (DLR, found by Jim Uhl)
+ titlebar()
+ - Rename some variables for consistency, make space an int
+ instead of a size_t, properly handle the case where the prefix
+ length plus the path length is greater than the amount of
+ space available, and fix a typo in an assert. (DLR)
+ unget_kbinput()
+ - Remove the wide character handling, as it didn't work properly
+ with respect to function keys. (DLR)
+ get_kbinput(), get_translated_kbinput(), get_ascii_kbinput(),
+ get_untranslated_kbinput()
+ - Make the ascii_digits variables ints instead of size_t's,
+ since they will only hold very small values. (DLR)
+ get_kbinput()
+ - Remove the wide character handling, as it didn't work properly
+ with respect to adding multiple wide characters at once, and
+ ungetting them just caused other problems elsewhere. (DLR)
+ get_translated_kbinput()
+ - Remove the wide character handling, as it didn't work properly
+ with respect to adding multiple wide characters at once, and
+ ungetting them just caused other problems elsewhere. (DLR)
+ - Use if statements instead of switch/case statements to handle
+ ASCII character sequence mode, as they take up less room.
+ get_ascii_kbinput()
+ - Use if statements instead of switch/case statements to handle
+ ASCII character sequence mode, as they take up less room.
+ get_verbatim_kbinput()
+ - Don't pass v_kbinput in as a parameter, since we're
+ dynamically allocating it and then returning it. (DLR)
+ - Remove v_first parameter, and go back to the old behavior of
+ putting back the first character of the escape sequence, as it
+ worked just as well and was less complicated. (DLR)
+ get_mouseinput()
+ - Return TRUE instead of FALSE only when we have a control key,
+ a prinary meta key sequence, or both. (DLR)
+ get_shortcut()
+ - Add a debug message. (DLR)
+ - Take kbinput as a reference instead of a value, so that it's
+ translated when the key is translated to its equivalent
+ control key or meta key shortcut. (DLR)
+ - Return s instead of NULL only when we have a control key, a
+ prinary meta key sequence, or both. (DLR)
+ get_toggle()
+ - Add a debug message. (DLR)
+ bottombars()
+ - Initialize foo, in case a keystroke meets none of the handled
+ cases. (DLR)
+ total_refresh()
+ - Refresh bottomwin using the value of currshortcut, and change
+ the code around do_refresh() calls to accommodate this. (DLR)
+ - Split out the code that updates the screen before refreshing
+ it into the new function total_redraw().
+ do_help()
+ - Refresh the screen when Ctrl-L is pressed in the help browser,
+ as Pico does. (DLR)
+- configure.ac:
+ - Remove specific references to control key shortcuts. (DLR)
+ - Check for the wide versions of ncurses or slang, without which
+ multibyte strings don't seem to be displayed properly, and
+ associated multibyte/wide character functions. (DLR)
+ - Check for wchar.h, for those systems that need it for the
+ wcwidth() prototype. (DLR)
+ - Remove checks for all include files that we include
+ unconditionally. (DLR)
+ - Remove references to termio.h here and elsewhere, since it's
+ obsolete and it defines a struct termio that we don't use
+ anywhere. (DLR)
+ - Typo fixes. (DLR)
+ - Add checks for isascii(), iswalnum(), iswblank() or
+ iswspace(), mblen(), and wctype.h. (DLR)
+- README:
+ - Updated for the 1.3 branch. (DLR)
+- README.CVS:
+ - Updated to mention the need for a wide character-supporting
+ version of curses or slang if UTF-8 support is desired. (DLR)
+- doc/faq.html:
+ - Remove now-inaccurate note about verbatim input's not working
+ at prompts, and update its description to mention that it
+ handles hexadecimal values now. (DLR)
+ - Add question about opening files with names beginning with
+ '+'s, and add a few more miscellaneous cosmetic fixes.
+- nanorc.sample:
+ - Add return to the "c-file" regexes. (DLR)
+ - Clarify the text describing good values for whitespace
+ display. Since ASCII is technically only seven bits wide,
+ characters 128-255 aren't ASCII. (DLR, suggested by Michael
+ Piefel)
+ - Add the "morespace" option. (DLR)
+ - Add support for characters to the "c-file" regexes. (DLR)
+ - Add the hexadecimal equivalents of the decimal values
+ suggested for whitespace display, now that it can handle
+ multibyte characters. (DLR)
+ - Add "manpage" regex. (Mike Frysinger, minor tweaks by DLR)
+- nano.1. nanorc.5, nano.texi:
+ - Add the "morespace" option, and sync with the descriptions in
+ nanorc.sample in a few places. (DLR)
+ - Miscellaneous wording tweaks. (DLR)
+- src/Makefile.am:
+ - Add chars.c to nano_SOURCES. (DLR)
+ - If we're installing and the "rnano" symlink already exists,
+ remove it so that we can create it again without an error.
+ (DLR)
+- AUTHORS:
+ - Updated to mention UTF-8 support.
+
+GNU nano 1.3.5 - 2004.11.22
+- General:
+ - Convert more ints that hold only TRUE and FALSE values to
+ bools. (DLR)
+ - Consolidate the code for finding and running a shortcut in a
+ shortcut list, the code for finding and toggling a toggle in a
+ toggle list, and the code for doing both of those and
+ interpreting mouse clicks in the edit window. Also move the
+ code for do_mouse() to get_edit_mouse() and tweak it to
+ properly handle cases where a shortcut isn't clicked. New
+ functions get_shortcut(), get_toggle(), get_edit_input(), and
+ get_edit_mouse(); changes to do_browser(), do_justify(),
+ do_help(), and main(). (DLR)
+ - Simplify a few more translated messages. (DLR)
+ - Translation updates (see po/ChangeLog for details).
+ - Remove reference to @includedir@ in src/Makefile.am, as it's
+ unneeded and can break cross-compilation. (DLR, found by Mike
+ Frysinger)
+ - Overhaul the file opening, reading, and loading operations to
+ increase efficiency, avoid problems on invalid filenames
+ specified on the command line, and eliminate corner cases that
+ erroneously leave edittop or current NULL when they shouldn't
+ be. Also split out the code to execute a command into a
+ separate function, eliminate a workaround for one of the
+ aforementioned corner cases, handle files with a mix of DOS
+ and Mac format lines, and remove the code to turn on the
+ NO_CONVERT flag when opening a binary file, as it's not always
+ reliable and will cause problems with UTF-8 text files. New
+ functions open_file(), execute_command(), and mallocstrassn();
+ changes to read_line(), load_file(), read_file(), open_file(),
+ get_next_filename(), do_insertfile(), do_insertfile_void(),
+ do_alt_speller(), and edit_refresh(). (David Benbennick) DLR:
+ Add a few minor fixes to make sure that current is set
+ properly in all cases, indicate on the statusbar when the file
+ has a mix of DOS and Mac format lines, move the test for DOS
+ line endings from read_line() to read_file() to avoid
+ inaccurate statusbar messages and to reduce fileformat to a
+ local variable in read_file(), eliminate another workaround in
+ edit_update(), rename open_the_file() to open_file() since the
+ latter has been removed, and rename load_a_file() to
+ load_buffer().
+ - Add alternative shortcuts to the main and search shortcut
+ lists for moving to the beginning and end of a paragraph and
+ justifying the entire file: Meta-( (Meta-9), Meta-) (Meta-0),
+ and Meta-J, respectively. Do this because Pico's practice of
+ putting these shortcuts only in the search shortcut list is
+ rather odd. (DLR)
+ - Turn off extended input processing (the IEXTEN termios flag)
+ as nano 1.2.x does. New function disable_extended_input();
+ changes to terminal_init(). (DLR)
+ - Remove redundant include of limits.h from nano.c. nano.c
+ includes nano.h and nano.h includes limits.h. (DLR)
+ - Add a func_key flag to the low-level input functions and the
+ currently existing high-level input functions, to indicate
+ extended keypad values. This is needed for UTF-8 support.
+ Changes to unget_kbinput(), get_kbinput(),
+ get_translated_kbinput(), get_shortcut(), get_edit_input(),
+ etc. (DLR)
+ - Add a multibuffer mode toggle to the "Execute Command" prompt,
+ for consistency with the "Read File" prompt. Changes to
+ do_insertfile() and shortcut_init(). (DLR)
+ - Add an ^X toggle to the "Execute Command" prompt to go back to
+ the "Insert File" prompt, and add a ^T toggle to the "Go To
+ Line" prompt to go back to the "Where Is" prompt. Changes to
+ do_insertfile(), shortcut_init(), do_gotoline(), etc.
+ - Make sure a few uninitialized static variables are initialized
+ to sane values. (DLR)
+ - After reading in a file and detecting the format it's in, set
+ the file format flags (DOS_FILE and MAC_FILE) to match, and
+ preserve them across multiple file buffers. Changes to
+ read_file(), add_open_file(), and load_open_file(). (DLR,
+ suggested by Bill Soudan)
+ - Remove the -D/--dos and -M/--mac command line options, as they
+ aren't much use with the new file format autodetection. Also
+ remove the global versions of the toggles, so that they can
+ only be used at the "Write File" prompt as similar options
+ can. Finally, change the Mac format toggle to Meta-M, since
+ that no longer conflicts with the global -m/--mouse toggle.
+ (DLR)
+ - Add support for reading in UTF-8 sequences to the low-level
+ input routines. Changes to get_kbinput() and
+ get_translated_kbinput(). (DLR)
+ - Reduce search_last_line to a static variable in search.c, and
+ allow it to be set to FALSE via a function. New function
+ findnextstr_wrap_reset(); changes to do_int_spell_fix(),
+ findnextstr(), do_search(), do_research(), do_replace_loop(),
+ do_replace(), and do_find_bracket(). (DLR, problem with making
+ search_last_line local to findnextstr() found by Rocco)
+ - When saving or changing file positions, be sure not to ignore
+ placewewant. Changes to do_int_spell_fix(), findnextstr(),
+ do_replace_loop(), and do_replace(). (DLR)
+ - Convert current_x and mark_beginx to size_t's, and convert
+ some functions that use them as a parameter to use size_t as
+ well. Also change some related assertions to handle them.
+ (David Benbennick and DLR)
+ - Add code to partition a filestruct between a set of arbitrary
+ coordinates. Given the coordinates of the beginning and end
+ of the mark, this allows proper and easier handling of saving
+ marked selections, replacing text only in marked selections
+ (suggested by Joseph Birthisel), and spell-checking marked
+ selections using either the internal or alternate spell
+ checker. Do all these using a global partition structure.
+ New functions partition_filestruct(),
+ unpartition_filestruct(), remove_magicline(), and
+ get_totals(); changes to write_marked(), do_int_spell_fix(),
+ do_alt_speller(), handle_sigwinch(), and do_replace_loop().
+ (DLR)
+ - Remove most redundant includes of sys/stat.h. It's included
+ in nano.h, so it doesn't need to be included in files that
+ include nano.h. (DLR)
+ - Remove the DOS_FILE and MAC_FILE flags, as they're only used
+ in files.c, and replace them with a static file_format enum.
+ Change the openfilestruct structure accordingly in order to
+ handle this. (DLR)
+ - Convert some ints with predefined boundaries to enums. (DLR)
+ - Include config.h only if HAVE_CONFIG_H. (Jordi)
+- cut.c:
+ cut_marked_segment()
+ - Respect concatenate_cut, as we need to use it if we do a
+ marked cut and immediately follow it with a cut-to-end (which
+ uses this function). (DLR)
+ do_cut_text()
+ - Set concatenate_cut to TRUE unconditionally when doing a
+ marked cut. This fixes an incompatibility with Pico where an
+ extra line is uncut if we do a marked cut that includes the
+ magicline and immediately follow it with an unmarked cut.
+ (DLR)
+ do_uncut_text()
+ - Maintain current_y's value when uncutting blocks so that
+ smooth scrolling works correctly. (DLR)
+- files.c:
+ read_file()
+ - Rename variable fileformat to format, to avoid confusion with
+ the file_format enum type. (DLR)
+ load_buffer()
+ - Don't change the file format when we insert another file into
+ the current one. (DLR)
+ do_insertfile()
+ - Simplify by reusing variables whereever possible, and add a
+ parameter execute to indicate whether or not to be in "Execute
+ Command" mode. (DLR)
+ - Rework so that goto is no longer needed, using do_writeout()
+ as a model. (DLR)
+ - If file browsing succeeds, call statusq_abort() so that the
+ cursor position at the statusbar is reset. (DLR)
+ - Add missing #ifdefs around the wrap_reset() call so that nano
+ compiles with wrapping disabled again. (DLR)
+ - If we're not inserting a file into a new buffer, partition the
+ current buffer so that it's effectively a new buffer just
+ before inserting the file, and only restore placewewant
+ afterwards. This is the same behavior we would get if we
+ opened the file, added all of it to the cutbuffer, closed the
+ file, and uncut at the current cursor position. (DLR)
+ - Maintain current_y's value when inserting so that smooth
+ scrolling works correctly. (DLR)
+ do_writeout()
+ - Restructure if blocks for greater efficiency, using
+ do_insertfile() as a model. (DLR)
+ - Simplify where possible, and use an int retval to hold the
+ return value instead of i. (DLR)
+ - If file browsing succeeds, call statusq_abort() so that the
+ cursor position at the statusbar is reset. (DLR)
+ - Remove unneeded calls to display_main_list(). (DLR)
+ do_writeout_void()
+ - Call display_main_list(), for consistency with
+ do_insertfile_void(). (DLR)
+ write_file()
+ - If we've tried to write to an unwritable file and we're not
+ prepending, tempname is NULL when it's passed to unlink().
+ This can cause problems if unlink() can't handle NULL, so
+ don't call it in that case. (David Benbennick)
+ write_marked()
+ - Remove check for MARK_ISSET's not being set. (DLR)
+ open_prevfile(), open_nextfile()
+ - Translate the "New Buffer" string when displaying "Switched
+ to" messages on the statusbar. (DLR)
+ input_tab()
+ - Fix snprintf() call so that we don't segfault when trying to
+ complete a filename containing %'s. (Ulf Härnhammar)
+- global.c:
+ shortcut_init()
+ - Remove redundant NANO_SMALL #ifdef. (DLR)
+ - Change an erroneous _() around the "New Buffer" string to
+ N_(). (DLR)
+ - Add new key aliases: F15 for "Mark Text" (DLR) and F16 for
+ "Where Is Next" (Chris).
+ - Leave "Mark Text" and "Where Is Next" out entirely when
+ NANO_SMALL is defined. Since they aren't in the visible main
+ list, there's no point in having them in but disabled. (DLR)
+ - In the search prompt shortcut list, move "Full Justify" to
+ after "History", so that the latter is visible onscreen
+ again. (DLR)
+- nano.c:
+ die_save_file()
+ - Clarify the error message when there are too many backup files
+ and the current one can't be written. (DLR)
+ help_init()
+ - Rework to be a bit more flexible. Only add tabs for shortcut
+ key entries if those entries exist, and if there's only one
+ entry left but there's room for more than one, add enough tabs
+ to put that entry at the end. Also, make sure a function key
+ is displayed in the middle if it's the first entry. These
+ changes allow e.g. the miscellaneous meta key sequence to be
+ displayed in a shortcut that has a control key, a primary meta
+ key sequence, and a miscellaneous meta key sequence, but no
+ function key. (DLR)
+ - Update the help text to mention replacing and spell checking
+ only selected text, and also add a few cosmetic fixes to it.
+ (DLR)
+ - Update the help text to mention how to get a blank buffer at
+ the "Execute Command" prompt. (DLR)
+ do_prev_word()
+ - Tweak to avoid an infinite loop, since current_x is now a
+ size_t and hence is unsigned. (DLR)
+ do_int_spell_fix()
+ - Move the REVERSE_SEARCH flag toggling into the NANO_SMALL
+ #ifdef, since the tiny version of nano doesn't support reverse
+ searching. Move the CASE_SENSITIVE flag toggling out in order
+ to allow the internal spell checker to work properly when
+ NANO_SMALL is defined and DISABLE_SPELLER isn't. Also, turn
+ the USE_REGEXP flag off during spell checking in order to
+ avoid a potential segfault. (DLR)
+ - Fix a problem where if the cursor is in the middle of a file,
+ the spell checker will sometimes only correct the misspelled
+ word instances that appear before the cursor position and then
+ stop. (Rocco)
+ - Use do_replace_loop()'s canceled parameter in order to ensure
+ that the spell checking stops if we canceled at the replace
+ prompt. (DLR)
+ do_alt_speller()
+ - Call terminal_init() unconditionally after running the
+ alternate spell checker, so that the terminal state is
+ properly restored in all cases. (DLR)
+ justify_format()
+ - For more compatibility with Pico, remove extra space after a
+ character in punct if that character is the same as the one
+ before it. For example, with the default values of punct and
+ brackets, only one space will be left after "...". (DLR)
+ do_para_begin(), do_para_end()
+ - Maintain current_y's value when moving up or down lines so
+ that smooth scrolling works correctly. (DLR)
+ breakable(), break_line()
+ - Make goal a ssize_t instead of an int, since fill is now a
+ ssize_t, and the position at which a line is broken can be
+ greater than COLS. (DLR)
+ main()
+ - Tweak the command line parsing routine so that multiple +LINE
+ flags are properly interpreted in multibuffer mode. (DLR)
+- nano.h:
+ - Add WIDTH_OF_TAB #define, containing the default width of a
+ tab. (DLR)
+ - Move the PATH_MAX #define here from files.c.
+ - Remove unused COPYFILEBLOCKSIZE #define. (DLR)
+- proto.h:
+ - Add missing NANO_SMALL #ifdef around the cut_marked_segment()
+ prototype. (DLR)
+- rcfile.c:
+ parse_rcfile()
+ - Add missing brackets around an if statement block so that
+ parsing the numeric argument after "tabsize" works properly
+ again. (DLR, found by Mike Frysinger)
+ - Since flag values are longs, use "%ld" instead of "%d" in the
+ debugging messages indicating when a flag is set or unset.
+ (DLR)
+- search.c:
+ regexp_init()
+ - If NANO_SMALL is defined, don't bother checking the
+ CASE_SENSITIVE flag or using its value when compiling a list
+ of matching regular expressions. (DLR)
+ search_init()
+ - Add parameter use_answer. When it's TRUE, only set
+ backupstring to answer. This is needed to preserve the text
+ of the statusbar when switching to the search prompt from
+ the "Go To Line" prompt. Also, set backupstring before doing
+ anything else, add one minor efficiency tweak, and preserve
+ the text of the statusbar no matter what when switching from
+ the search prompt to the "Go To Line" prompt, since the
+ toggling works both ways now and non-numeric text shouldn't be
+ lost when going only one of those ways. (DLR)
+ - When we're replacing and the mark is on, display a prompt
+ indicating that we're replacing text only in the selection
+ instead of the usual prompt. (DLR)
+ findnextstr()
+ - Take the no_sameline parameter after can_display_wrap and
+ wholewords, not after all other parameters. (DLR)
+ - Maintain current_y's value when moving up or down lines so
+ that smooth scrolling works correctly. (DLR)
+ - Fix handling of the wholewords flag so that it works with
+ regular expressions and in conjunction with the no_sameline
+ flag, and add new parameter needle_len (used to return the
+ length of the match). (DLR)
+ do_replace_loop()
+ - Miscellaneous cleanups: treat real_current as current and
+ real_current_x as current_x, only turn the mark off and call
+ edit_refresh() if the mark was originally on, and make
+ length_change a ssize_t. (DLR)
+ - Return ssize_t instead of int. (DLR)
+ - Add new parameter canceled, set to TRUE if we canceled at the
+ prompt and FALSE otherwise. (DLR)
+- utils.c:
+ regexp_bol_or_eol()
+ - Don't assume any longer that string will be found if
+ REG_NOTBOL and REG_NOTEOL are not set. (DLR)
+ mallocstrncpy()
+ - New function, used as a malloc()ing equivalent of strncpy().
+ (DLR)
+ mallocstrcpy()
+ - Refactor to be a wrapper for mallocstrncpy(). (DLR)
+ mark_order()
+ - Add new parameter right_side_up. Set it to TRUE If the mark
+ begins with (mark_beginbuf, mark_beginx) and ends with
+ (current, current_x), or FALSE otherwise. (DLR)
+- winio.c:
+ unget_kbinput()
+ - New function used as a wrapper for ungetch(). (DLR)
+ get_kbinput()
+ - When reading an escape sequence, set get_verbatim_kbinput()'s
+ new first parameter to the first character of the sequence
+ instead of putting that character back and reading the entire
+ sequence afterwards. (DLR)
+ get_escape_seq_kbinput()
+ - Make the escape_seq parameter a const int*, since it's never
+ modified. (DLR)
+ - Support the escape sequences for F15 and F16. (DLR)
+ get_verbatim_kbinput()
+ - Add new parameter first. If first isn't ERR, make it the
+ first character in the returned sequence instead of reading
+ the first character in via blocking input. (DLR)
+ get_mouseinput()
+ - Consolidate two if statements to increase efficiency. (DLR)
+ - Check kbinput against metaval instead of (erroneously) ctrlval
+ when putting back a meta sequence. (DLR)
+ - If there are more than MAIN_VISIBLE shortcuts available, only
+ register clicks on the first MAIN_VISIBLE shortcuts, since
+ bottombars() only shows that many shortcuts. (DLR)
+ check_statblank()
+ - Rename to check_statusblank(), and rename its associated
+ global int statusblank too. (DLR)
+ nanogetstr()
+ - Refresh the screen when Ctrl-L is pressed at the statusbar
+ prompt, as Pico does. (DLR)
+ - Always return the key pressed by the user. (DLR)
+ statusq()
+ - Rework slightly to reset the cursor position when the user
+ hits Enter as well as Cancel. This means that resetstatuspos
+ no longer needs to be global. (DLR)
+ statusq_abort()
+ - New function to set resetstatuspos to FALSE when we don't
+ properly exit the statusbar prompt, e.g. when we get a file
+ from the file browser). (DLR)
+ bottombars()
+ - For efficiency, no longer dynamically allocate space for each
+ visible shortcut, as they're all of a constant short length.
+ (David Benbennick)
+ reset_cursor()
+ - If this is called before any files have been opened, as it can
+ be by statusbar(), put the cursor at the top left corner of
+ the edit window before getting out. (DLR)
+ edit_refresh()
+ - Call edit_update() with NONE instead of CENTER when smooth
+ scrolling is on, for consistency with the movement routines.
+ (DLR)
+ edit_update()
+ - Simplify so as not to require the fileptr parameter anymore,
+ since it's set to current in all calls. (DLR)
+ - Add comments better explaining what the update actually does,
+ and avoid an infinite loop when location is NONE and current_y
+ is greater than (editwinrows - 1). (DLR)
+ do_yesno()
+ - Don't bother assigning the value of get_mouseinput() to
+ anything. Since allow_shortcuts is FALSE, its return value
+ will always be FALSE. (DLR)
+- configure.ac:
+ - When calling AC_TRY_RUN() to test for a broken regexec()
+ function, set the fourth parameter to default to "no" (since
+ it apparently only occurs on glibc 2.2.3-based systems) so
+ that cross-compiling will work. (DLR, found by Mike Frysinger)
+ - Simplify the curses library tests by only checking for
+ initscr(), which ncurses, curses, and pdcurses should all
+ have, and not tgetent(), which is a termcap-specific function.
+ (DLR)
+ - Check only for glib 2.x, as it's much more common than
+ glib 1.2.x now, and it has a better v?snprintf()
+ implementation. (DLR, suggested by Jordi)
+- nanorc.sample:
+ - Remove specific references to control key shortcuts other than
+ XON and XOFF. (DLR)
+ - Add continue and goto to the "c-file" regexes. (DLR)
+ - Change the included speller value to "aspell -x -c". The -x
+ option makes aspell not create backup files, and this is
+ consistent with the internal spell checker's behavior. (DLR)
+- doc/man/fr/nano.1, doc/man/fr/nanorc.1:
+ - Updated manpage translations by Jean-Philippe Guérard.
+- README.CVS:
+ - Mention the requirement for glib 2.x on systems lacking
+ v?snprintf(), and add minor formatting changes.
+ - Mention the requirement for groff in order to create html
+ versions of the manpages. (DLR)
+ - Update the given cvs commands so that they work again, and
+ mention the need for ssh to do cvs checkouts. (DLR)
+ - List sh as an example of a Bourne shell. (DLR)
+- faq.html:
+ - Fixed inaccuracy: Pico compatibility mode was made the default
+ in nano 1.1.99pre1, not 1.2.2. (DLR)
+ - Added question about how to type F13-F16 on terminals lacking
+ keys past F12 (suggested by Chris), question about how to
+ select text for the clipboard in X terminals with nano's mouse
+ support turned on (answer found by Joseph Birthisel), and
+ miscellaneous fixes and link updates. (DLR)
+- nano.1:
+ - Eliminate references to the now removed -D/--dos and -M/--mac
+ command line options. (DLR)
+- nano.texi:
+ - Eliminate references to the now removed -D/--dos and -M/--mac
+ command line options, and their corresponding toggles. (DLR)
+- m4/Makefile.am:
+ - Add glib-2.0.m4 to EXTRA_DIST, so that nano builds from CVS
+ with automake 1.7.x again. For some reason, automake 1.9.x
+ didn't have a problem with its (erroneously) being left out.
+ (DLR, problem found by Chris)
+- m4/glib-2.0.m4:
+ - New file imported from glib 2.4.7. This is needed to detect
+ glib 2.x on systems that may not have it installed. (DLR,
+ suggested by Jordi)
+- src/Makefile.am:
+ - Don't use DEFS to define things. Use INCLUDES instead.
+ (Jordi)
+
+GNU nano 1.3.4 - 2004.08.17
+- General:
+ - More minor comment cleanups. (DLR)
+ - Convert more ints and functions using 0 and 1 to bools using
+ TRUE and FALSE. (David Benbennick and DLR)
+ - Change more instances of ints that have large enough upper
+ bounds and which can never be negative to size_t's, and
+ convert nano to handle them properly. (DLR)
+ - Convert the shortcut list functions and most related functions
+ to return void instead of int, as the return values of all
+ those functions are essentially unused. Changes to
+ sc_init_one(), shortcut_init(), etc. (David Benbennick and
+ DLR)
+ - Make flags and all variables meant to store the value of flags
+ longs for consistency. (David Benbennick)
+ - Rename the TEMP_OPT flags to TEMP_FILE, as it's more
+ descriptive. (DLR)
+ - Remove unused global variable search_offscreen. (David
+ Benbennick)
+ - Add new N_() macro to mark strings that aren't translated
+ immediately, and convert nano to use it in cases where the
+ translated string is stored in a const char*. Changes
+ to sc_init_one(), print1opt(), help_init(), rcfile_error(),
+ do_credits(), etc. (David Benbennick) DLR: Do this for
+ toggle_init_one() too.
+ - Minor tweaks and clarifications to some option descriptions.
+ (DLR)
+ - Overhaul the shortcut list and toggle list initialization
+ code for efficiency. Changes to shortcut_init() and
+ toggle_init(). (David Benbennick) DLR: Move "Cancel" to just
+ after "Get Help" in the file browser list, for consistency
+ with all the other lists, have the replace list accept all the
+ same function keys as the search list, and clarify a few
+ shortcut descriptions.
+ - Convert nano to use the new parse_num() function to read in
+ numeric values at the command line and in the rcfile, and
+ duplicate the messages used in the rcfile in the command line
+ for consistency. (David Benbennick) DLR: Tweak parse_num() to
+ parse ssize_t values instead of ints and to return a bool
+ indicating whether parsing succeeded. Convert tabsize,
+ wrap_at, and fill to ssize_t in order to work with
+ parse_num() properly and also to increase their capacity
+ while keeping the ability to hold negative numbers in case of
+ errors. Also exit instead of calling usage() in the event of
+ an invalid fill value, for consistency with how an invalid
+ tabsize value is handled. Finally, handle invalid tabsize
+ entries in the rcfile the same way as on the command line,
+ and reset tabsize and wrap_at to their default values if
+ invalid rcfile entries are specified for them.
+ - Remove several unnecessary reset_cursor() calls. (David
+ Benbennick)
+ - Include <sys/types.h> in proto.h. (David Benbennick) DLR:
+ Remove some redundant inclusions of <sys/types.h> elsewhere.
+ - Move the main terminal initialization functions, aside from
+ initscr(), into a new terminal_init() function, and convert
+ nano to use it. (DLR)
+ - Convert placewewant to a size_t, and convert some functions
+ that use it as a parameter to use size_t as well. (David
+ Benbennick and DLR)
+ - Overhaul the paragraph searching code and some of the justify
+ code to clarify it and fix a bug where searches from the
+ previous paragraph would move up too far. Also make
+ quotestr-related variables global so that they only have to be
+ compiled once, and remove the no-longer-needed IFREG() macro.
+ New functions begpar() and inpar(); changes to quote_length(),
+ quotes_match(), do_para_search(), do_para_begin(),
+ do_para_end(), and do_justify(). (David Benbennick)
+ - Readded the errors flag and moved the ending prompt from
+ rcfile_error() to parse_rcfile() so that we only get prompted
+ once for all errors instead of separately for each error.
+ (DLR) David Benbennick: Make sure that no rcfile error
+ messages end in newlines, and show the ending prompt if we
+ can't read the .nano_history file while starting nano.
+ - Don't treat the return value of strn?(case)?cmp() as boolean.
+ (DLR and David Benbennick)
+ - Automatically install a symlink "rnano" pointing to nano.
+ Changes to src/Marefile.am. (DLR)
+ - Move the static int pid to the beginning of nano.c with all
+ the other static variables. (DLR)
+ - Consolidate some if blocks to remove some redundant code.
+ (David Benbennick)
+ - Fix warnings when compiling with ENABLE_NLS undefined and with
+ the fwritable-strings option. (David Benbennick)
+ - Add various #ifdefs to fix warnings and compilation problems
+ when compiling with every option manually turned on, including
+ NANO_SMALL. (David Benbennick)
+ - Simplify some of the rcfile and statusbar error messages, and
+ make some of them more consistent. (David Benbennick and DLR)
+ - Change some functions to take const char*'s instead of char*'s
+ where possible. (David Benbennick)
+ - Tweak some #ifdefs around indent_length() and references to
+ fill_flag_used to avoid warnings when compiling with
+ --disable-wrapping, --disable-justify, or a combination of the
+ two. (DLR)
+ - Overhaul the routines used to read the rcfiles and history
+ files for efficiency, make them work properly on lines over
+ 1023 characters long and on lines containing nulls, and make
+ them properly handle the case where the user's home directory
+ changes in the middle of a session. New functions
+ histfilename() and writehist(); changes to
+ thanks_for_all_the_fish(), load_history(), save_history(), and
+ do_rcfile(). (David Benbennick)
+- files.c:
+ get_next_filename()
+ - Tweak for efficiency, and add the ".save" suffix to the file
+ here. (David Benbennick)
+ close_open_file()
+ - Tweak to no longer rely on the return values of
+ open_(prev|next)file(). (DLR)
+ write_file()
+ - For consistency with nano 1.2.x and with other editors, make
+ the mode of newly created files 666 instead of 600 before
+ it's modified by the umask. (DLR, found by Toni Suokas)
+ do_writeout()
+ - If we're in restricted mode and the current filename isn't
+ blank, we can't change it, so disable tab completion in that
+ case. (DLR)
+ - Fix spacing problem in the "Save Under Different Name"
+ prompt. (DLR)
+- global.c:
+ shortcut_init()
+ - Fix erroneous #ifdef so that nano compiles with
+ --disable-justify again. (DLR, found by Mike Frysinger)
+ - Change the Cancel shortcut in the file browser to an Exit
+ shortcut, to be more compatible with the current version of
+ Pico. (DLR)
+ thanks_for_all_the_fish()
+ - Delete topwin, edit, and bottomwin. (David Benbennick)
+- nano.c:
+ die()
+ - Don't add the ".save" suffix to a saved file here anymore,
+ since get_next_filename() does that now. (David Benbennick)
+ die_save_file()
+ - Tweak for efficiency. (David Benbennick)
+ help_init()
+ - Fix the display of the translated key descriptions "Up" and
+ "Space" under all circumstances, and make the help browser
+ work properly when there are fewer than 24 columns available.
+ (David Benbennick)
+ usage()
+ - Don't translate the option strings for -Z/--restricted.
+ (David Benbennick)
+ do_enter()
+ - Don't treat it as a special case when the user presses Enter
+ on the last line of the screen and smooth scrolling is on, for
+ consistency. (DLR)
+ do_alt_speller()
+ - When reloading the newly spell-checked temporary file, call
+ terminal_init() to make sure that all the original terminal
+ settings are restored, as a curses-based alternative spell
+ checker (e.g. aspell) can change them. (DLR)
+ quote_length()
+ - Fix problem where quoted justify wouldn't work if HAVE_REGEX_H
+ wasn't set. (David Benbennick)
+ do_justify()
+ - Add allow_respacing flag, used to indicate when we've moved to
+ the next line after justifying the current line, and only run
+ the respacing routine when it's true. This keeps the
+ respacing routine from erroneously being run more than once on
+ the same line. (DLR)
+ - Check for first_par_line's not being NULL and only run the
+ renumbering and cutbuffer-splicing routines depending on that
+ if that's the case. This fixes a segfault occurring when
+ trying to do full justification on a file with no paragraphs
+ (in which case there are no normal lines to renumber and no
+ backed-up lines to be stored in the cutbuffer or spliced back
+ in during unjustify). (DLR)
+ do_exit()
+ - Tweak for efficiency. (David Benbennick)
+ main()
+ - Move the reset_cursor() call to the beginning of the main
+ input loop, and remove the apparently unnecessary wrefresh()
+ call. (David Benbennick)
+ - Call setlocale() outside the ENABLE_NLS #ifdef, since UTF-8
+ support won't work properly if the locale isn't set, whether
+ NLS is enabled or not. (Junichi Uekawa)
+ - Add titlebar() calls before all open_file() calls and remove
+ the titlebar() call after them, so that the titlebar is
+ displayed properly for all file(s) loaded. Also call
+ display_main_list() after adding the first file to open_files,
+ so that "Close" is properly displayed then instead of "Exit".
+ (DLR)
+- nano.h:
+ - Reassign the key for full justification to Ctrl-U, for
+ compatibility with the current version of Pico. (DLR)
+ - Remove justbegend enum, as it's no longer needed. (DLR)
+- proto.h:
+ - Change the variables in the prototypes for do_justify(),
+ get_verbatim_kbinput(), and get_mouseinput() to match the ones
+ used in the actual functions. (DLR)
+ - Remove unused declaration of temp_opt. (David Benbennick)
+ - Add missing copy_file() prototype. (David Benbennick)
+ - Move the load_history() and save_history() prototypes up to
+ match their corresponding location in files.c. (DLR)
+- rcfile.c:
+ rcfile_msg()
+ - Removed and replaced with calls to rcfile_error(). (David
+ Benbennick)
+ - Removed the reference to "starting nano" in the statusbar
+ message, as it may be called when we exit if the history file
+ can't be saved. (DLR)
+ parse_rcfile()
+ - Have whitespace display default to off instead of on. (Mike
+ Frysinger)
+ nregcomp()
+ - Rename the variable flags to eflags so as not to conflict with
+ the global flags. (DLR)
+- search.c:
+ do_replace_loop()
+ - Make sure old_pww is updated to the current value of
+ placewewant when a new match is found, so that edit_redraw()
+ will redraw the screen properly when only placewewant changes.
+ (DLR, found by Mike Frysinger)
+ do_replace()
+ - Instead of using edit_update() to redraw the screen with
+ edittop at the top, set edittop beforehand and call
+ edit_refresh(). (DLR)
+ do_gotoline()
+ - Use parse_num() to interpret a line entered by the user, and
+ start the search for a line from current instead of fileage.
+ (DLR)
+ do_gotopos(), find_node(), free_history()
+ - Tweak for efficiency. (David Benbennick)
+ free_history()
+ - Only include when DEBUG is defined. (David Benbennick)
+- utils.c:
+ parse_num()
+ - New function to parse numeric values, so that we don't have to
+ duplicate code that calls strtol() all over the place. (David
+ Benbennick) DLR: Renamed from parse_int() to parse_num() and
+ converted to use ssize_t instead of int.
+ nstrnicmp()
+ - Remove code chacking for n's being less than 0 that will never
+ be run, since n is a size_t and is hence unsigned. (David
+ Benbennick)
+ ngetdelim(), ngetline()
+ - New functions equivalent to getdelim() and getline(), which
+ are both GNU extensions. (DLR, adapted from GNU mailutils
+ 0.5 with minor changes to better integrate with nano and
+ increase efficiency)
+- winio.c:
+ get_kbinput()
+ - Since the only valid values for escapes are 0, 1, and 2,
+ convert it to an int. (DLR)
+ get_control_kbinput()
+ - Fix erroneous debugging statement so that nano compiles with
+ --enable-debug again. (Jon Oberheide)
+ nanogetstr()
+ - Tweak the code to update the edit window just before getting
+ statusbar input for efficiency, and update bottomwin just
+ before then too. (David Benbennick)
+ - Don't delete the statusbar line on UnCut, since the current
+ version of Pico doesn't. (DLR)
+ do_cursorpos()
+ - Add assert to check whether totsize is correct. (David
+ Benbennick)
+ line_len()
+ - Rename to help_line_len() so as not to conflict with the
+ line_len variable used elsewhere, and move inside the
+ DISABLE_HELP #ifdef surrounding do_help() since it's only
+ called in do_help(). (DLR)
+ do_help()
+ - Have help_line_len() properly return an int again, since its
+ value can't be larger than COLS. (DLR)
+ - Allow the user to exit the help browser via Ctrl-C as well as
+ Ctrl-X, for consistency with the file browser. (DLR)
+- configure.ac:
+ - Add AC_PROG_LN_S, so that we can portably create symlinks.
+ (DLR)
+ - Check for getdelim() and getline(), which are both GNU
+ extensions. (DLR)
+- nanorc.sample:
+ - Add sample regexes for patch files. (Mike Frysinger)
+ - Various improvements to the "c-file" regexes. Add double,
+ typedef, extern, union, unsigned, inline, and long to the
+ green list. (Mike Frysinger) DLR: Also add signed, short, and
+ enum to the green list.
+- nano.spec.in:
+ - Tweak to include all files in %{_bindir} instead of just nano,
+ so that the "rnano" symlink will be properly packaged. (DLR)
+
+GNU nano 1.3.3 - 2004.06.28
+- General:
+ - Minor comment cleanups. (DLR)
+ - Convert more ints used as boolean values to use TRUE and
+ FALSE. (David Benbennick)
+ - Make sure the special control keys are handled the same way
+ after the window is resized or we come out of suspend mode.
+ Changes to do_cont() and handle_sigwinch(). (DLR)
+ - Change some instances of ints that can never be negative to
+ size_t's. (DLR)
+ - Add better explanations for and in the "Terminal breakage"
+ comments, and handle missing key #ifdefs inside the functions
+ that use those keys. (DLR)
+ - Add restricted mode, accessible via the -Z/--restricted
+ command line option or by invoking nano with any name
+ beginning with 'r' (e.g. "rnano"). In restricted mode, nano
+ will not read or write to any file not specified on the
+ command line, read any nanorc files, allow suspending, or
+ allow a file to be appended to, prepended to, or saved under a
+ different name if it already has one. (IO ERROR) DLR: Also
+ disable backup files and spell checking (since the latter can
+ leave a pre-spell-checked version of the file in a temporary
+ directory), use tail() to get the program name so that the
+ check for its beginning with 'r' will work when a path is
+ specified, disable toggles that are only useful with options
+ that are disabled in restricted mode, call nano_disabled_msg()
+ when trying to read or spell check a file instead of leaving
+ the shortcuts out of the main list, and instead of acting as
+ though TEMP_OPT is enabled when exiting with a modified file
+ (which caused problems if the filename was blank), only allow
+ a filename to be modified at the writeout prompt if it's blank
+ beforehand. Changes to do_writeout(), toggle_init(),
+ shortcut_init(), die_save_file(), and nanogetstr().
+ - Call nano_disabled_msg() directly from the shortcut list
+ instead of inside the disabled functions. (David Benbennick)
+ - Clarifications to comments explaining exactly what control
+ characters and escape sequences are supported. (DLR)
+ - Disable "Where Is Next" in tiny mode. (DLR)
+ - Added the ability to justify the entire file at once, which
+ Pico has via ^W^J. Changes to backup_lines() and
+ do_justify(); new functions do_justify_void() and
+ do_full_justify(). (DLR)
+ - Modify the justification algorithm to work the same way as in
+ the current version of Pico, i.e. add a space at the end of
+ each line of the justified paragraph except for the last one,
+ and if there was a space at the end of the last one, remove
+ it. Changes to justify_format() and do_justify(). Note that
+ we can no longer reliably detect the first modified line in a
+ paragraph, since a line unmodified by justify_format() may get
+ a space tacked onto the end of it or removed from the end of
+ it later. The entire original paragraph is now always backed
+ up, and justify_format() no longer has a non-modifying mode,
+ so it's now only called in backup_lines(). (DLR)
+ - Wrap the long jump code in NANO_SMALL #ifdefs, since we only
+ use it if we're resizing the window, which is disabled when
+ NANO_SMALL is defined. (DLR)
+ - Add smart home key option, accessible via -A/--smarthome on
+ the command line, "set smarthome" in the rcfile, and the
+ Meta-H toggle in the edit window. Smart home works as
+ follows: When Home is pressed anywhere but at the very
+ beginning of non-whitespace characters on a line, the cursor
+ will jump to that beginning (either forwards or backwards).
+ If the cursor is already at that position, it will jump to the
+ true beginning of the line. This option is disabled in tiny
+ mode. Changes to do_home(), nanogetstr(), etc. (DLR;
+ suggested by Stephan T. Lavavej)
+ - Minor tweaks to the punctuation in some statusbar messages.
+ (DLR)
+ - Overhaul the low-level input routines into main routines that
+ actually get the input and state machines that interpret the
+ input. This allows better handling of the input (e.g. ignored
+ keys are now always ignored instead of just being ignored when
+ there are no escapes prefixing them) and will make it easier
+ to port to interfaces that don't have blocking input. New
+ functions reset_kbinput(), get_translated_kbinput(),
+ get_control_kbinput(), and get_untranslated_kbinput(); changes
+ to do_verbatim_input(), handle_sigwinch(), get_kbinput(),
+ get_ascii_kbinput(), get_escape_seq_kbinput(), and
+ get_verbatim_kbinput(); removal of get_ignored_kbinput() and
+ get_accepted_kbinput(). (DLR)
+ - Overhaul all the movement functions in order to avoid
+ redundant screen redraws (and regexec()s when color support is
+ available) whenever possible during ordinary cursor movement
+ when the text doesn't change. Do the same for moving in
+ do_char(), do_delete(), do_next_word(), do_prev_word(),
+ do_search(), do_research(), and do_replace_loop. Changes to
+ do_first_line(), do_last_line(), do_home(), do_end(),
+ do_page_up(), do_page_down(), do_up(), do_down(), do_left(),
+ do_right(), do_delete(), do_backspace(), do_search(),
+ do_research(), do_replace_loop(), do_find_bracket(), and
+ edit_refresh(). New functions do_left_void(),
+ do_right_void(), need_horizontal_update(),
+ need_vertical_update(), edit_scroll(), and edit_redraw(). All
+ of these functions but the first two require the previous
+ versions of current and/or placewewant as parameters, so that
+ they can redraw properly when the location has changed. Also
+ rename the int refresh in do_delete() and do_backspace() to
+ do_refresh so as not to conflict with refresh(). (DLR)
+ - Add some comments better explaining what is disabled in
+ restricted mode and why. (DLR)
+ - Since KEEP_CUTBUFFER is only used in cut.c, make it a static
+ variable in cut.c instead of a flag, and unset it in other
+ files via the new function cutbuffer_reset(). (DLR)
+ - Add the ability to change the characters used to display the
+ beginning characters of tabs and spaces via the rcfile entry
+ "whitespace". This is disabled if nanorc support is disabled
+ or if we're in tiny mode. Displaying the new characters is
+ toggled on and off by Meta-P; the default is on. (Mike
+ Frysinger; minor changes and adaptations by DLR)
+ - Add the ability to change the closing punctuation and closing
+ brackets used to control justification, via the rcfile
+ entries "punct" and "brackets". (DLR)
+ - Translation updates (see po/ChangeLog for details).
+ - Make the former flag same_line_wrap use TRUE and FALSE
+ instead of 1 and 0. (DLR)
+- files.c:
+ add_open_file()
+ - Rearrange the NANO_SMALL #ifdef so that the code to set the
+ MODIFIED flag in open_files->flags is included only once.
+ (DLR)
+ write_marked()
+ - Call write_file() with nonamechange set to TRUE so that we
+ don't erroneously change the current filename when writing a
+ selection, and don't take a nonamechange parameter anymore
+ since we don't use it. (DLR)
+ do_writeout()
+ - Refactor so that no recursion is needed if we try to exit with
+ a modified file that has no name when TEMP_OPT is set. (DLR)
+ - Add spaces to the ends of the "Overwrite" and "Different Name"
+ prompts, for consistency. (DLR)
+ do_browser()
+ - Call check_statblank() instead of blanking the statusbar
+ unconditionally, for consistency. (David Benbennick)
+- global.c:
+ shortcut_init()
+ - Don't assign any handler functions to the help browser keys,
+ as the help browser handles them all internally. (David
+ Benbennick)
+- move.c:
+ do_first_line(), do_last_line()
+ - Move these functions here from winio.c. (DLR)
+- nano.c:
+ finish()
+ - Call blank_statusbar() and blank_bottombars() to blank out
+ the statusbar and shortcut list in bottomwin. (DLR)
+ - Since all of the calls to finish() use 0 for the value of
+ sigage, and the return value of finish() is never used, make
+ it accept and return void. (David Benbennick)
+ die_save_file()
+ - Call write_file() with nonamechange set to TRUE since we don't
+ need to change the current filename if we're writing emergency
+ backup files. (DLR)
+ do_early_abort()
+ - Removed, as it's no longer called anywhere. (David Benbennick)
+ usage()
+ - Add missing "[dir]" and two missing _()'s around the strings
+ describing the -E [dir]/--backupdir=[dir]" option. (CHAO
+ Wei-Lun)
+ open_pipe()
+ - Call enable_signals() at the beginning and disable_signals()
+ at the end, so that we get a SIGINT when Ctrl-C is pressed
+ during wait() and can then call cancel_fork() properly. (DLR)
+ do_delete(), do_enter()
+ - Tweak for efficiency. (David Benbennick)
+ do_prev_word()
+ - Switch the last test (current != NULL or not) around to match
+ the order of the same test in do_next_word() (current ==
+ NULL). The results are the same either way. (DLR)
+ do_wrap()
+ - Tweak for efficiency. (David Benbennick)
+ do_spell()
+ - Tweak for efficiency. (David Benbennick)
+ - Change the statusbar entries used in cases of failure so that
+ they all display the actual error that occurred. (David
+ Benbennick and DLR)
+ do_int_speller(), do_alt_speller()
+ - Make these functions return const char*'s instead of char*'s.
+ (David Benbennick)
+ justify_format()
+ - Remove redundant assignment. (DLR)
+ do_para_search()
+ - Remove unneeded edit_update() calls. (David Benbennick)
+ - Convert to use an enum to specify the search type: JUSTIFY,
+ BEGIN, or END. (DLR)
+ - Refactor to properly do searches for beginnings of paragraphs
+ in the same way as searches for endings of paragraphs, without
+ needing the old (and somewhat inaccurate) recursive approach.
+ (DLR)
+ do_justify()
+ - Remove unneeded edit_update() calls, and add a few minor
+ efficiency tweaks. (David Benbennick)
+ - Simplify an if statement. (DLR)
+ do_exit()
+ - Refactor so that no recursion is needed if we try to exit with
+ a modified file that has no name when TEMP_OPT is set. (DLR)
+ print_numlock_warning()
+ - Removed, as it's no longer needed and was never called
+ anywhere after the input overhaul. (DLR)
+ signal_init()
+ - Don't use termios and _POSIX_VDISABLE to disable keys anymore,
+ as there's no real equivalent of it when the latter isn't
+ defined. (DLR)
+ handle_sigwinch()
+ - Call resetty() to get the original terminal settings back.
+ (DLR)
+ - Rework so that nano properly redraws the screen on systems
+ that don't have resizeterm() and/or wresize(). In curses, we
+ now leave and immediately reenter curses mode via endwin() and
+ refresh(), and then reinitialize all windows via
+ window_init(). In slang, the above routine will only work if
+ the resize made the window smaller, so we now leave and
+ immediately reenter screen management mode via
+ SLsmg_reset_smg() and SLsmg_init_smg(), and then reinitialize
+ all windows via window_init(). (DLR, adapted from code in
+ Minimum Profit 3.3.0 and mutt 1.4.2.1, respectively)
+ do_toggle()
+ - Call blank_statusbar() and blank_bottombars() to blank out
+ the statusbar and shortcut list in bottomwin. (DLR)
+ do_verbatim_input()
+ - If PRESERVE is set, disable flow control characters before
+ getting input and reenable them after getting input. (DLR)
+ disable_signals(), enable_signals(), disable_flow_control(),
+ enable_flow_control()
+ - New functions that allow more fine-grained control of the
+ terminal: disabling and enabling signals without having to use
+ _POSIX_VDISABLE and disabling and enabling flow control
+ characters. (DLR)
+ main()
+ - Don't open the first file in quiet mode, since if we do, an
+ error message won't be shown if it's unreadable. (DLR; found
+ by Jaap Eldering)
+ - If we've specified multiple files on the command line and
+ multibuffer support is compiled in, turn multibuffer mode on
+ when reading those files and turn it off afterward if it was
+ off before. This allows us to open multiple files without
+ having to turn multibuffer mode on at the command line or in
+ the nanorc first, both of which are unintuitive. Multibuffer
+ mode should only affect how the "Read File" command behaves
+ anyway. (DLR)
+ - Remove the disabling of implementation-defined input
+ processing, as cbreak mode appears to turn it off anyway.
+ (DLR)
+ - After noecho(), call disable_signals() and
+ disable_flow_control(), the latter only if PRESERVE is not
+ set. (DLR)
+ - Move the savetty() call down from just after initscr() to just
+ after the terminal is properly set up, so that we can restore
+ it easily after a resize. (DLR)
+ - Add missing cast to char when calling do_char(). (DLR)
+ - Don't initialize the backup directory if we're in restricted
+ mode, since backups are disabled then. (DLR)
+ - Check $SPELL for an alternative spell checker if we didn't get
+ one from the command line and/or rcfile, as Pico does. Don't
+ do this if we're in restricted mode, since spell checking is
+ disabled then. (DLR)
+ - Add some cleanups for greater readability, and remove a few
+ bits of redundant code. (DLR and David Benbennick)
+- nano.h:
+ - Since REGEXP_COMPILED is only used in search.c, convert it
+ from a flag to a static int there. (DLR)
+ - Add justbegend enum, used in do_para_search(). (DLR)
+ - Add updown enum, used in edit_scroll(). (DLR)
+- proto.h:
+ - Remove unused xpt() and add_marked_sameline() prototypes.
+ (DLR)
+ - Add missing #ifdefs around the nstristr() and get_mouseinput()
+ prototypes. (DLR)
+- rcfile.c:
+ - Move "rebinddelete" up in the list of options so that the list
+ is in alphabetical order. (DLR)
+ - Cosmetic reorganization of the order in which some options are
+ interpreted. (DLR)
+ - Explicitly check for rcopts[i].name's being "tabsize" to avoid
+ a spurious error under some circumstances about tabsize's
+ being 0 when there's no tabsize entry in the rcfile. (DLR)
+- search.c:
+ regexp_init()
+ - Overhaul for efficiency. Also check if regcomp() failed, and
+ if so, display "Bad regex" message on the statusbar, so that
+ we don't have to display it separately after every call to
+ this function. (David Benbennick)
+ search_init()
+ - Only check whether USE_REGEXP is set, and hence whether or not
+ to display "[Regexp]" on the search prompt, if HAVE_REGEX_H is
+ defined. (DLR)
+ not_found_msg()
+ - Convert to properly handle strings generated by
+ display_string() that have been used in the search prompt
+ since 1.3.0. (David Benbennick)
+ - Use display_string() directly to display the text that we
+ didn't find instead of relying on statusbar() to do it
+ indirectly, since the latter won't display its text with the
+ user-specified whitespace characters and the former will.
+ (DLR)
+- utils.c:
+ is_blank_char()
+ - New function used as an isblank() equivalent, since isblank()
+ is a GNU extension. (DLR)
+ nstricmp(), nstrnicmp()
+ - Add extra blank lines for greater readability, and remove
+ unneeded test for n's being less than zero (since it's already
+ been tested for being greater than zero or equal to zero at
+ that point) from nstrnicmp(). (DLR)
+ stristr()
+ - Rename to nstristr() to avoid a potential conflict with an
+ existing stristr() function, and move up to just after
+ nstrnicmp(). (DLR) David Benbennick: Tweak for efficiency.
+ - Include and use only when strcasestr() is unavailable, since
+ strcasestr() is a GNU extension. (DLR)
+ nstrnlen()
+ - New function used as a strnlen() equivalent, since strnlen()
+ is a GNU extension. (DLR)
+- winio.c:
+ get_verbatim_kbinput()
+ - Refactor the output in the DEBUG #ifdef. It didn't work
+ properly ever since this function was changed to use an int*
+ instead of a char*. (DLR)
+ - When reading characters from input, properly reallocate
+ verbatim_kbinput via (int*)nrealloc() instead of an uncast
+ realloc(). (DLR)
+ get_accepted_kbinput()
+ - Add proper support for the keypad values and escape sequences
+ generated by the NumLock glitch and by certain keys on the
+ numeric keypad. (DLR)
+ - Add an extra break and move an #endif down to fix a potential
+ problem when NANO_SMALL is defined or KEY_RESIZE isn't, and
+ when PDCURSES isn't defined. (DLR)
+ get_escape_seq_kbinput()
+ - Add proper support for the keypad values and escape sequences
+ generated by the NumLock glitch. (DLR)
+ - Add ignore_seq parameter. If a sequence is recognized but
+ ignored, we will now return ERR and set ignore_seq to TRUE, and
+ if a sequence is unrecognized, we will now return ERR and set
+ ignore_seq to FALSE. Also, here and elsewhere, don't bother
+ assigning ERR to retval when that's its initial value. (DLR)
+ - Fix problem where the escape sequence for F3 on the FreeBSD
+ console would not be interpreted properly. (DLR)
+ get_mouseinput()
+ - Don't ungetch() anything if there's no control key and no meta
+ key defined in the shortcut we clicked. (DLR)
+ bottombars()
+ - Don't display any more than MAIN_VISIBLE shortcuts. Adding
+ justification of the entire file above made the search
+ shortcut list longer than this and hence made the shortcuts in
+ it so short as to be almost incomprehensible. (DLR)
+ - Tweak for efficiency and to better handle shorter screen
+ widths. (David Benbennick)
+ - Restructure the if block used for the sentinel key values,
+ dynamically allocate keystr based on the number of columns
+ available, and make sure we can display shortcuts even when
+ the number of available columns is too short for any complete
+ one. (DLR)
+ onekey()
+ - Don't bother padding the displayed shortcuts with spaces.
+ (David Benbennick)
+ - Convert len to a size_t. (DLR)
+ edit_add()
+ - Minor cosmetic reformatting. Also remove unused int
+ searched_later_lines. (DLR)
+ blank_bottomwin()
+ - Removed, as it does the same thing as blank_bottombars().
+ (David Benbennick)
+ blank_titlebar()
+ - New function used to blank the titlebar in topwin. (DLR)
+ blank_statusbar_refresh()
+ - Removed, as it's now unnecessary. (David Benbennick)
+ titlebar()
+ - Overhaul to use display_string() to display the filename, and
+ to better handle shorter screen widths. Also remove
+ now-unneeded wrefresh(topwin) calls. (David Benbennick)
+ DLR: Tweak to reserve enough space for "Modified", plus
+ padding, in all cases, to make sure that the version message
+ takes up no more more than 1/3 of the available width, minus
+ padding, and to include a reset_cursor() call so that the
+ cursor is always in the right place.
+ bottombars()
+ - Call blank_bottombars() instead of blank_bottomwin(). (David
+ Benbennick)
+ check_statblank()
+ - Overhaul for efficiency, (David Benbennick) DLR: Add
+ reset_cursor() call to ensure that the cursor is always in the
+ right place.
+ update_cursor()
+ - Removed, as it's no longer called anywhere. (David Benbennick)
+ edit_refresh()
+ - Remove apparently unneeded leaveok() calls. (David Benbennick)
+ edit_refresh_clearok(), center_cursor()
+ - Removed, as they are now unnecessary. (David Benbennick)
+ statusq()
+ - Don't allow "Full Justify" when in view mode. (DLR)
+ statusbar()
+ - Call reset_cursor() just before refreshing the edit window, so
+ that slang and other non-ncurses versions of curses will
+ properly place the cursor back in the edit window instead of
+ leaving it at the end of the statusbar. (DLR)
+ do_help()
+ - Overhaul for efficiency, and allow scrolling through the help
+ via the arrow keys as well as the paging keys. (David
+ Benbennick) DLR: Revert the use of the return value of
+ curs_set() to restore the previous state of the cursor, as
+ some curses implementations (including slang) get it wrong,
+ and explicitly turn the cursor off where needed instead.
+ do_credits()
+ - Use napms() instead of nanosleep(), as it does the same thing
+ (aside from taking an argument in milliseconds instead of
+ microseconds) and curses includes it. (DLR)
+ - Overhaul for efficiency, and make sure the xlcredits
+ translations are done after initialization in order to avoid
+ an error when compiling with -pedantic. (David Benbennick)
+ do_yesno()
+ - Add a comment to encourage translators to use both native and
+ English shortcuts, if possible. (Jordi)
+- configure.ac:
+ - Add tests for isblank(), strcasestr(), and strnlen(), and
+ define _GNU_SOURCE so that the tests work properly. Increase
+ the minimum required autoconf version to 2.54. (DLR)
+ - Reformat the test programs so that they aren't packed into
+ fewer lines than usual, so as to make them easier to read, and
+ remove unnecessary inclusion of stdio.h in the slang test
+ programs. (DLR)
+ - Remove the checks for resizeterm() and wresize(), as they're
+ no longer needed. (DLR)
+- config.rpath:
+ - Replace usage of egrep with grep -E, avoiding a XSI:ism (David
+ Weinehall)
+- faq.html:
+ - Removed question about the NumLock glitch, as it's no longer
+ needed. (DLR)
+- nano.1:
+ - Document restricted mode. (IO ERROR) DLR: Add minor
+ modifications to account for the above changes.
+ - Document the smart home key option. (DLR)
+ - Document the use of the SPELL environment variable. (DLR)
+- nanorc.5:
+ - Document the smart home key option. (DLR)
+ - Document the whitespace option. (DLR, adapted from
+ documentation by Mike Frysinger)
+ - Document the punct and brackets options. (DLR)
+- nano.texi:
+ - Fix toggle inaccuracies: Meta-L now toggles line wrapping, and
+ Meta-< and Meta-> aren't toggles. (DLR)
+ - Document restricted mode. (IO ERROR) DLR: Add minor
+ modifications to account for the above changes.
+ - Fix version number inaccuracies: Search/replace history and
+ sorting/uniqueness filtering for the internal spell checker
+ were added in nano 1.1.99pre1. (DLR)
+ - Document the smart home key option. (DLR)
+ - Document the use of the SPELL environment variable. (DLR)
+- nanorc.sample:
+ - Add missing mouse entry, and update the nanorc sample regexes
+ to account for the backupdir and mouse options. (DLR)
+ - Add smarthome description. (DLR)
+ - Document the whitespace option. (DLR, adapted from
+ documentation by Mike Frysinger)
+- README.CVS:
+ - Increase the minimum required autoconf version to 2.54, and
+ change the recommended automake version 1.7 to the minimum
+ required automake version. Note that autoconf 2.54 will
+ technically also work with automake 1.6c, but that is a CVS
+ version as opposed to a stable release version, and automake
+ 1.7 requires at least autoconf 2.54 in any case. (DLR)
+- TODO:
+ - Added entry for justifying the entire file at once, since Pico
+ can do it, and with "[DONE]" since it's already been
+ implemented. (DLR)
+
+GNU nano 1.3.2 - 2004.03.31
+- General:
+ - Change instances in the code that refresh the entire edit
+ window when color support is enabled (in order to properly
+ handle multi-line color regexes) to only do so when
+ it's necessary, i.e. when COLOR_SYNTAX is set. (DLR)
+ - Minor cosmetic tweaks to the code involving direction keys.
+ NANO_UP_KEY and NANO_DOWN_KEY are now NANO_PREVLINE_KEY and
+ NANO_NEXTLINE_KEY, and the help messages for them have been
+ changed accordingly. Also remove extraneous references to
+ NANO_DOWN_KEY in the search history shortcut entries. (DLR)
+ - Add NANO_UNJUSTIFY_FKEY (the same as NANO_UNCUT_FKEY) to the
+ shortcut list, and tweak the unjustify routine to use it.
+ Also add NANO_FIRSTLINE_FKEY and NANO_LASTLINE_FKEY, and tweak
+ the statusbar input routines to handle them and NANO_HELP_FKEY
+ properly. (DLR)
+ - Block SIGWINCH after setting up its handler, and only unblock
+ and handle it when we're in a stable state, i.e. when we're
+ waiting for input from the user. New function
+ allow_pending_sigwinch(); changes to signal_init(),
+ get_kbinput(), and get_verbatim_kbinput(). (DLR)
+ - Decouple the paragraph searching code and the justifying code.
+ Removed function do_para_operation(); new function
+ do_para_search(); changes to do_justify(). (DLR)
+ - Add -E/--backupdir option. When used with -B/--backup, backup
+ files will be saved in the specified directory with their
+ canonical pathnames encoded in their names (all '/'s replaced
+ with '!'s). Changes to write_file(). (Martin Ehmsen) DLR:
+ Add function init_backup_dir() to handle relative paths
+ correctly, use get_full_path() to get the canonical pathname,
+ and use tail() to get the filename if get_full_path() fails.
+ - Port to the Tandem NonStop Kernel (nsr-tandem-nsk). (Tom
+ Bates; minor tweaks by DLR)
+ - Change some instances of boolean 0 and 1 to TRUE and FALSE.
+ (David Benbennick)
+ - Fix memory corruption problem occurring when answer is used as
+ the value of def; if the realloc() of answer leads to its
+ pointing to a different memory block, there will be a segfault
+ when the value of def is copied into it via strcpy().
+ (bort@alltel.net, Christian Weisgerber, David Benbennick, and
+ DLR)
+ - Remove the last editbot references, to avoid any potential
+ segfaults related to them. Also remove fix_editbot(), as it's
+ no longer needed. (David Benbennick)
+ - Rename several variables to make their use clearer and to
+ avoid conflicts. (DLR)
+ - Set the input mode before turning the keypad on. (DLR)
+- cut.c:
+ add_to_cutbuffer()
+ - Add parameter allow_concat to determine whether we're allowed
+ to concatenate strings in the cutbuffer. (DLR)
+- files.c:
+ do_insertfile()
+ - Wrap one reference to NANO_EXTCMD_KEY in a NANO_SMALL #ifdef.
+ (DLR)
+ - Save the already-typed answer when switching from "Insert
+ File" to "Execute Command" mode via Ctrl-X, just in case we
+ started typing a command before switching. (DLR)
+ add_open_files()
+ - Make the saving of marked status in open_files->file_flags
+ work properly again; a tweak to the ISSET() macro in 1.3.0
+ to make it only return 0 or 1 broke it. (DLR)
+ write_marked()
+ - New function used to write the current marked selection to a
+ file, split out from do_writeout(). (DLR)
+ do_writeout()
+ - Tweak for efficiency. (David Benbennick) DLR: Modify to have
+ the current answer preserved between toggles again.
+ filestat()
+ - Removed, as it is only called in one place and is
+ redundant. (DLR)
+ do_browser()
+ - Replace the filestat() call with an equivalent stat() call.
+ (DLR)
+- global.c:
+ shortcut_init()
+ - Only allow verbatim input when we're not in view mode. (DLR)
+ - Set the associated function for unjustify to 0 instead of
+ do_uncut_text(), since it's currently unused. (DLR)
+- nano.c:
+ usage()
+ - Clarify the description for -T/--tabsize a bit. (DLR)
+ do_verbatim_input()
+ - Remove the now-unneeded code to disable XON, XOFF, and
+ suspend, since we now go into raw mode in
+ get_verbatim_kbinput() and bypass them. (DLR)
+ do_next_word()
+ - Simplify and remove references to editbot so as to avoid a
+ segfault. (David Benbennick)
+ do_prev_word()
+ - Simplify and remove references to edittop. (David Benbennick)
+ do_int_speller(), do_alt_speller(), do_spell()
+ - Modify to write only the current selection from a file to the
+ temporary file used for spell checking when the mark is on,
+ and add a few miscellaneous cosmetic cleanups. (DLR)
+ do_int_spell_fix()
+ - Store the value of current_x in a size_t instead of an int,
+ and add a few minor efficiency tweaks. (David Benbennick)
+ - Remove comment explaining why findnextstr() is called with
+ bracket_mode set to TRUE even though we aren't doing a bracket
+ search, since after the above efficiency tweaks, it's now more
+ accurately called can_display_wrap. (DLR)
+ indent_length()
+ - Remove unneeded #ifdef. (David Benbennick)
+ do_justify()
+ - Remove references to the now-unneeded JUSTIFY_MODE flag. (DLR)
+ signal_init()
+ - Trap SIGQUIT in addition to turning it off via termios in
+ main(). This is consistent with SIGINT, which we trap here
+ and turn off via termios in main(), as well as with the
+ associated comment. (DLR)
+ handle_sigwinch()
+ - Set keypad() to TRUE and switch to cbreak mode just before
+ calling siglongjmp(), in case we resized during verbatim
+ input. (DLR)
+ main()
+ - Move the call to raw() on systems that don't define
+ _POSIX_VDISABLE outside the main input/output loop, as it
+ doesn't need to be called every time through the loop. Call it
+ instead of cbreak() on such systems, as it overrides cbreak()
+ anyway. (DLR)
+ - Add more descriptive comments explaining the termios and
+ curses setup routines, and turn the keypad on before setting
+ the input mode. (DLR)
+ - Remove stray HAVE_GETOPT_LONG #ifdefs. (DLR)
+ - Don't call keypad() before initializing the windows it needs
+ via window_init(). (DLR)
+- nano.h:
+ - Move the NANO_H include guard up before the first #include.
+ (DLR)
+ - Remove the now-unneeded JUSTIFY_MODE flag. (DLR)
+- search.c:
+ regexp_cleanup()
+ - Only do anything if REGEXP_COMPILED is set. (David Benbennick)
+ search_abort()
+ - Only test if the mark is set when NANO_SMALL isn't defined.
+ (David Benbennick)
+ search_init()
+ - Add some more comments and comment tweaks, don't indicate that
+ the search has been canceled when we enter a blank string in
+ replace mode, only call regexp_init() when USE_REGEXP is set,
+ and return -1 instead of -3 since a canceled search and a
+ canceled replace should be mostly equivalent. (David
+ Benbennick) DLR: Tweak to use the old behavior if we try to
+ search for invalid regexes.
+ findnextstr()
+ - Refactor to use a loop invariant, and tweak for greater
+ efficiency and simplicity. Also modify so that all searches
+ start one character after (or before, if we're doing a
+ backwards search) the current one, as opposed to all searches
+ except for regex searches for "^" and the like, for
+ consistency with other searches. (David Benbennick)
+ do_search()
+ - Handle search_init()'s no longer returning -3 above. (David
+ Benbennick)
+ - Port the code from do_replace_loop() to skip the current line
+ if we're searching for a regex with "^" and/or "$" in it and
+ end up on the same line to this function. This fixes a
+ problem where doing a forward search for "^" on a file with
+ more than one line would erroneously stop at the magicline and
+ indicate that that was the only occurrence. (DLR)
+ do_research()
+ - Port David Benbennick's efficiency tweaks and the
+ aforementioned code ported from do_replace_loop() to this
+ function. (DLR)
+ replace_regexp()
+ - Completely refactor for increased efficiency. (David
+ Benbennick)
+ replace_line()
+ - Use a char* parameter for the replacement string instead of
+ last_search, and add minor efficiency tweaks. (David
+ Benbennick)
+ do_replace_loop()
+ - Fix segfault when doing a regex replace of a string that
+ matches inside a line (e.g. replace the "b" in "abc" with
+ anything). (David Benbennick)
+ - If the mark is on at the beginning of the function, turn it
+ off and turn it back on just before returning. Also overhaul
+ to rely on the return value of findnextstr() instead of a loop
+ invariant, to not need to take an int* parameter, and store
+ the beginning x-coordinate in a size_t instead of an int.
+ (David Benbennick)
+ do_replace()
+ - Handle search_init()'s no longer returning -3 above, and add
+ efficiency tweaks. (David Benbennick) DLR: Tweak to follow
+ the old behavior of adding non-blank strings entered at the
+ "Replace: " prompt to the search history. (DLR)
+ do_gotoline()
+ - Simplify the edit_update() call depending on the value of
+ save_pos. (David Benbennick)
+ do_bracket()
+ - Add efficiency tweaks. (David Benbennick) DLR: Remove
+ reliance on the hardcoded bracket string length; instead, only
+ require that the bracket string length be even.
+- utils.c:
+ regexec_safe()
+ - Wrap in HAVE_REGEX_H #ifdefs. (DLR)
+ regexp_bol_or_eol()
+ - New function used to check if a regex contains "^" and/or "$",
+ assuming that the regex would be found if the REG_NOT(BOL|EOL)
+ flags aren't used in the regexec() call; it replaces the
+ direct regexec()s used before. (DLR)
+ strstrwrapper()
+ - Refactor for increased efficiency, and eliminate the need for
+ the line_pos parameter. (David Benbennick)
+ mallocstrcpy()
+ - Tweak so that when src is "", "" is allocated and returned
+ instead of NULL. (David Benbennick)
+- winio.c:
+ get_verbatim_kbinput()
+ - Set keypad() to FALSE and switch to raw mode while reading
+ input, and set it back to TRUE and go back into cbreak mode
+ mode afterwards. (Note that if _POSIX_VDISABLE isn't defined,
+ we don't need to change to or from raw mode since we're
+ already in it exclusively.) This ensures that we don't end up
+ reading in extended keypad values that are outside the ASCII
+ range or having to deal with interrupt-generating key values.
+ Also, with keypad() set to TRUE, xterm generates KEY_BACKSPACE
+ when the user hits Ctrl-H, which, when cut down to ASCII
+ range, ends up being Ctrl-G, which can be confusing. (DLR)
+ - For consistency with get_kbinput(), use an int* to store and
+ return the input instead of a char*, and tweak the functions
+ that call it to handle this. (DLR)
+ get_accepted_kbinput()
+ - Don't use "kbinput = wgetch(win)" as a switch value. (DLR)
+ get_escape_seq_kbinput()
+ - Add support for the escape sequences for F1-F14 whenever
+ possible (i.e. whenever a conflict doesn't occur), some
+ additional comments, and a few cosmetic cleanups. (DLR)
+ - Use switch statements instead of strncmp() to read in the long
+ xterm sequences for Ctrl-[arrow key] and Shift-[arrow key].
+ (DLR)
+ get_escape_seq_abcd()
+ - A resurrected version of the old abcd() function, readded in
+ order to simplify get_escape_seq_kbinput(). (DLR)
+ get_mouseinput()
+ - Interpret shortcut key values slightly more stringently when
+ ungetch()ing them. (DLR)
+ strlenpt()
+ - Properly cast the second parameter of the strnlenpt() call to
+ size_t. (DLR)
+ get_page_start()
+ - For consistency, tweak so that scrolling always occurs when we
+ try to move onto the "$" at the end of the line, as opposed to
+ (a) when we move onto the "$" at the end of the line on the
+ first page and (b) when we move onto the character just before
+ the "$" on subsequent pages. (DLR)
+ reset_cursor()
+ - Tweak for efficiency. (David Benbennick)
+ edit_refresh()
+ - Tweak for efficiency. (David Benbennick)
+ statusq()
+ - Rename "tabs" to "allowtabs". (David Benbennick)
+ do_credits()
+ - Use nanosleep() instead of usleep(). The latter is only
+ standard under BSD, whereas the former is POSIX compliant.
+ Accordingly, only include time.h if we use this function, i.e.
+ if NANO_EXTRA is defined. (DLR)
+ - Add explanatory comment. (DLR)
+- configure.ac:
+ - Change instances of "int main ()" to "int main(void)". (DLR)
+- faq.html:
+ - Fixed inaccuracy: multibuffer mode was first in nano 1.1.0,
+ not 1.1.12. (DLR)
+- nano.1, nanorc.5, nano.texi
+ - Clarify the description for -T/--tabsize a bit. (DLR)
+ - Add -E/--backupdir description. (Martin Ehmsen; minor cosmetic
+ fixes by DLR)
+- nanorc.sample:
+ - Add backupdir description. (Martin Ehmsen; minor cosmetic
+ fixes by DLR)
+- README:
+ - Reformat to 72 characters per line, fix wording in one spot,
+ and fix spacing and capitalization in several spots. (DLR)
+- NEWS:
+ - Capitalization fix. (DLR)
+- TODO:
+ - Clarify the paragraph searching item, and add item for
+ filename searches in the file browser. (DLR)
+
+GNU nano 1.3.1 - 2004.01.09
+- General:
+ - Minor overhaul and abstraction of the lowest level of mouse
+ input, mostly adapted from the code in do_mouse() that handles
+ clicking on the shortcut list. New function do_mouseinput();
+ changes to do_mouse(). (DLR) David Benbennick: Add a few
+ efficiency/extensibility tweaks.
+ - Modify the shortcut structure so that instead of having two
+ miscellaneous key values (misc1 and misc2), there is one key
+ value reserved for function keys (func_key) and one
+ miscellaneous key value (misc), and tweak the
+ shortcut-handling code to deal with this. These changes allow
+ NANO_OPEN(PREV|NEXT)_ALTKEY to work properly when added to the
+ shortcut entries for NANO_OPEN(PREV|NEXT)_KEY. Also remove
+ the values in the shortcut list and elsewhere that were made
+ redundant by the low-level input overhaul, use toupper()
+ instead of subtracting 32 from values for greater code
+ readability, and eliminate use of adding 32 to values when
+ testing for toggles, as get_kbinput_accepted() converts toggle
+ values to lowercase before returning them. (DLR)
+ - Remove the workarounds for missing KEY_UP and KEY_DOWN, as
+ they appear to be holdovers of the old way of denoting the
+ search history shortcuts; if they aren't defined, KEY_LEFT and
+ KEY_RIGHT probably shouldn't work either, and all four appear
+ to be standard keys in termcap/terminfo in any case. Add new
+ special sentinel key values NANO_NO_KEY (for no shortcut key)
+ and NANO_HISTORY_KEY (for search history keys, both Up and
+ Down), modify the shortcut list to use them, and modify the
+ shortcut display routines to handle them. Also modify the
+ shortcut list code to not treat non-control character values
+ of val as Meta-sequences, and fix dependencies on that
+ behavior. Also rename several variables: "alt" -> "meta",
+ "altval" -> "metaval". (DLR)
+ - Hook up the verbatim input functions so that verbatim input
+ can be used in the edit window. New function
+ do_verbatim_input(); changes to do_char(). (DLR) Additional
+ minor tweaks to do_char() by David Benbennick.
+ - Clarify the description of the --rebinddelete option. (DLR)
+ - Miscellaneous comment tweaks, and copyright year updates in
+ the comments and in do_credits(). (DLR)
+- cut.c:
+ - Overhaul to increase efficiency and add various cleanups.
+ Changes to add_to_cutbuffer(), cut_marked_segment(), and
+ do_uncut_text(). (David Benbennick)
+- files.c:
+ check_operating_dir()
+ - Add an assert to ensure that full_operatingdir isn't NULL,
+ a fix for reporting nonexistent (incomplete) directory names
+ as being outside the operating directory when tab completion
+ is being used, and cosmetic cleanups. (David Benbennick)
+ copy_file()
+ - New function used to create a copy of a file, split out from
+ do_writeout(). (David Benbennick)
+ write_file()
+ - Completely overhauled to properly ignore appending/prepending
+ to symlinks when NOFOLLOW_SYMLINKS is defined, to properly
+ support writing a selection to a file under the changed
+ cutting code, to have more concise error messages, to add
+ various cleanups, and so on. (David Benbennick)
+ do_writeout()
+ - Prompt the user if we're trying to save an existing file (and
+ not just a selection of it) under a different name. (DLR;
+ suggested by Jean-Philippe Guérard)
+ - Overhaul the code used to write a selection of a file to
+ temporarily set fileage and filebot to the top and bottom of
+ the selection and then call write_file(), instead of following
+ the old hackish behavior with cut_marked_segment() (which
+ won't work after the cutting code changes anyway). (David
+ Benbennick) DLR: Tweak to not add an extra blank line to the
+ end of the written selection if the cursor is at the beginning
+ of the last line of the selection.
+ open_prevfile(), open_nextfile()
+ - For consistency with the rest of the multibuffer code, change
+ "No more open files" to "No more open file buffers". (DLR)
+ do_browser()
+ - Allow '?' to open the help browser, and readd the ability of
+ 'G'/'g' to open the "Go to Directory" prompt (which was
+ erroneously removed before), for compatibility with Pico.
+ (DLR)
+- global.c:
+ shortcut_init()
+ - Allow WHEREIS_NEXT_KEY to be used in view mode. (DLR)
+- nano.c:
+ do_int_spell_fix()
+ - Add comment explaining why findnextstr() is called with
+ bracket_mode set to TRUE even though we aren't doing a bracket
+ search. (DLR)
+ do_para_operation()
+ - Convert to use the new low-level input functions. (DLR)
+ main()
+ - Remove unused variable option_index. (DLR)
+ - Fix omission of NANO_NO_KEY in the shortcut list scanning
+ code. (DLR)
+ - Remove now-unnecessary initialization of kbinput. (DLR)
+- nano.h:
+ - Comment additions and cosmetic tweaks. (DLR)
+- search.c:
+ findnextstr(), do_replace_loop()
+ - Fix potential infinite loops and other misbehavior when doing
+ beginning-of-line or end-of-line regex replacements ("^", "$",
+ and "^$"). Add a no_sameline parameter to findnextstr(), and
+ set it in the calls in do_replace_loop() when such regexes are
+ found, so that such regexes are only found once per line.
+ Also change length_change from a long to an int; size_t is
+ unsuitable due to its being unsigned. (DLR; found by Mike
+ Frysinger and DLR) David Benbennick: Add a few minor cleanups
+ to do_replace_loop().
+- winio.c:
+ get_kbinput(), get_accepted_kbinput()
+ - Don't pass in the value of the REBIND_DELETE flag anymore.
+ Instead, handle it directly inside the functions. (DLR)
+ get_accepted_kbinput()
+ - Translate Ctrl-8 into NANO_DELETE_KEY (or NANO_BACKSPACE_KEY
+ if REBIND_DELETE is set), since it apparently is generated
+ sometimes even when keypad() is TRUE. (DLR)
+ - Translate KEY_SLEFT into NANO_BACK_KEY and KEY_SRIGHT into
+ NANO_FORWARD_KEY, since they are sometimes generated by
+ Shift-Left and Shift-Right. (DLR)
+ get_ascii_kbinput()
+ - Tweak to make it slightly more readable. (DLR)
+ get_verbatim_kbinput()
+ - Modify to take an extra parameter indicating if we should
+ interpret ASCII codes or not. (DLR)
+ get_escape_seq_kbinput()
+ - Expand to deal with more broken terminals that don't generate
+ keypad values. Support the escape sequences for Insert,
+ Delete, Home, End, PageUp, and PageDown, [arrow key],
+ Ctrl-[arrow key], and Shift-[arrow key] when needed in the
+ Linux console, the FreeBSD console, the Hurd console, xterm,
+ rxvt, and Eterm. Also, use get_verbatim_kbinput(), with ASCII
+ interpretation disabled, to read in the sequences. (DLR)
+ get_skip_tilde_kbinput()
+ - Removed, as it is unneeded due to the expansion of
+ get_escape_seq_kbinput(). (DLR)
+ get_mouseinput()
+ - Modify to take an extra parameter indicating if we should
+ ungetch() the key equivalents of shortcuts we click on or not.
+ (DLR)
+ nanogetstr()
+ - Properly interpret the Meta key value in misc if we hit it at
+ the statusbar prompt. (DLR)
+ do_yesno()
+ - Add a few efficiency/extensibility tweaks. (David Benbennick)
+ - Convert to use the new low-level input functions, and remove
+ two last hardcoded widths left after the above tweaks. (DLR)
+ do_replace_highlight()
+ - Display a highlighted space if the word length is zero, so
+ that we can see zero-length regexes we're replacing. (DLR;
+ suggested by Mike Frysinger)
+- configure.ac:
+ - Check for glib 2.x and then 1.2.x if we need glib. (DLR)
+- faq.html:
+ - Add question explaining how verbatim input works, as well as a
+ few minor fixes. (DLR)
+- nano.1, nanorc.5:
+ - Add nano version numbers (minus any "-cvs" suffixes). (DLR)
+- nano.spec.in:
+ - Update for the 1.3 branch of nano. (DLR)
+- NEWS:
+ - Reformat so all lines are limited to 72 columns, add a few
+ typo fixes, and make a few minor cosmetic cleanups. (DLR)
+- THANKS:
+ - Add Danilo Segan, for the Serbian translation.
+
+GNU nano 1.3.0 - 2003.10.22
+- General:
+ - Complete overhaul and abstraction of the lowest level of
+ keyboard input, mostly rewritten but incorporating a few bits
+ from the old functions and adding support for Pico's Esc Esc
+ [three-digit decimal ASCII code] input method. New functions
+ get_kbinput(), get_verbatim_kbinput(), get_ignored_kbinput(),
+ get_accepted_kbinput(), get_ascii_kbinput(),
+ get_escape_seq_kbinput(), and get_skip_tilde_kbinput(). These
+ should work properly on FreeBSD (due to code and input
+ provided by Lee Nelson and Wouter van Hemel, respectively).
+ (DLR)
+ - The -K/--keypad command line/rcfile option has been removed,
+ and keypad() is now always TRUE. keypad_on() in winio.c and
+ the check for _use_keypad in configure.ac have both been
+ removed. (DLR)
+ - The -d/--rebinddelete command line/rcfile option, equivalent
+ to Pico's -d, has been added. It is intended to work around
+ the problem with Backspace/Delete confusion on some terminals,
+ notably FreeBSD; if your Backspace key acts like Delete, this
+ option will fix that. (DLR)
+ - Remove unneeded breaks at the ends of default: clauses. (DLR)
+ - Add the ability to repeat the last search without prompting
+ via Meta-W, and move the line wrapping toggle to Meta-L. New
+ function do_research(). (Wouter van Hemel)
+ - Added the ability to move to the beginning or end of the
+ paragraph, which Pico has via ^W^W (previous paragraph)
+ and ^W^O (next paragraph). Changes to do_justify(); new
+ functions do_para_operation(), do_para_begin(), and
+ do_para_end(). Note that the last three functions are
+ disabled if justification is disabled. (DLR)
+ - Make sure the "historylog" option isn't included at all if
+ NANO_SMALL is defined. (DLR)
+ - Source reorganization: move code to src/, docs to doc/.
+ (Jordi)
+ - Translation updates (see po/ChangeLog for details).
+ - Since SAMELINEWRAP is only used in nano.c, make it a static
+ variable in nano.c instead of a flag, and surround all
+ wrap_reset() calls with DISABLE_WRAPPING #ifdefs. (DLR)
+ - Change enum "topmidbotnone" to "topmidnone", as there's no
+ BOTTOM option anymore. (DLR)
+ - Split out the string-displaying routine from update_line()
+ into a separate function; convert the edit window, statusbar
+ display, and statusbar prompt to use it, so that they can all
+ properly display control characters and tabs; free and NULL
+ the backup search string in one place in the search code
+ instead of several; and do some other minor refactoring of
+ related display functions to simplify them. New functions
+ mark_order() and display_string(); new macro charmove();
+ changes to actual_x(), strnlenpt(), blank_bottombars(),
+ blank_edit(), get_page_start(), edit_add(), update_line(),
+ statusbar(), and do_replace_highlight(). (David Benbennick)
+ DLR: Add minor cosmetic tweaks, add missing NANO_SMALL #ifdef
+ around the text for a backwards search in the refactored code,
+ and enclose dump_buffer() and dump_buffer_reverse() in one
+ ENABLE_DEBUG #ifdef instead of two.
+ - Convert memmove() function calls to charmove() macro calls, as
+ the former all work on char*'s. (DLR)
+ - Miscellaneous #define cleanups: only include the prototype for
+ and definition of wrap_at if wrapping and/or justification are
+ enabled, remove duplicate wrap_at prototype, and define
+ DISABLE_MOUSE if NCURSES_MOUSE_VERSION isn't defined in nano.h
+ instead of all over the code. (DLR)
+ - Autogenerate the html versions of the manpages in the
+ Makefile.am's in doc/man/, make sure that they're properly
+ installed via "make dist", and make sure that "make distcheck"
+ works too. Also be sure to set EXTRA_DIST properly. (Jordi,
+ DLR and Jeff Bailey)
+- files.c:
+ read_file()
+ - After we've read in a file and possibly converted it from
+ DOS/Mac format, set fileformat back to 0 to prevent erroneous
+ conversion messages when we read other files in. (DLR)
+ do_browser()
+ - Some of the Pico compatibility options in the file browser
+ that don't work properly for current Pico have been removed.
+ Backspace, 'g', 'l', 'q', and 'u' are invalid. 'd' deletes
+ the highlighted file, and 'r' renames the highlighted file;
+ neither of these are implemented. (DLR)
+- global.c:
+ toggle_init()
+ - Change the message for the line wrapping toggle from "Auto
+ wrap" to "Auto line wrap", to more clearly associate it with
+ Meta-L. (DLR)
+ shortcut_init()
+ - Change multibuffer-enabled references to
+ opening/closing/toggling the previous/next loaded file to
+ toggling/switching to/closing the previous/next file buffer,
+ for consistency with other references. (DLR)
+- nano.c:
+ window_init()
+ - Set keypad() to TRUE regardless of whether PDCurses is being
+ used, as Meta-X apparently turns it off even under ncurses.
+ (DLR)
+ do_backspace()
+ - Vastly simplify, and remove dependency on page_up(). (David
+ Benbennick)
+ help_init()
+ - Document the support for Esc Esc [character]'s being
+ interpreted as Ctrl-[character], and the support for Pico's
+ Esc Esc [three-digit decimal ASCII code] input method. (DLR)
+ do_mark()
+ - Toggle MARK_ISSET at the beginning of the function instead of
+ setting it in one place and unsetting it in another place.
+ (David Benbennick)
+ do_suspend()
+ - Use handle_hupterm() to handle SIGHUP and SIGTERM so we can
+ properly deal with them while nano is suspended. (DLR; problem
+ found by David Benbennick)
+ abcd()
+ - Removed, as it's unneeded due to the low-level input overhaul.
+ (DLR)
+- nano.h:
+ - Define KEY_RESIZE and KEY_SUSPEND as -1 when slang is used, as
+ slang has no equivalent of either. When nano is compiled with
+ slang support, resizing the window doesn't generate
+ KEY_RESIZE, and pressing Ctrl-Z to suspend nano at the Linux
+ console with keypad(TRUE) generates Ctrl-Z instead of
+ KEY_SUSPEND, both unlike ncurses. (DLR)
+ - Define KEY_RESIZE as -1 if it isn't defined, as it isn't in
+ the curses library included with SunOS 5.7-5.9. Also define
+ KEY_SUSPEND as -1 if it isn't defined, in case it isn't in
+ more than just Slang. (DLR)
+ - Define all potentially missing keys as different negative
+ values (ERR is -1, so use -2, -3, etc.) so as to avoid having
+ duplicate case values when keys are missing. (DLR)
+- move.c:
+ - Remove unneeded inclusion of stdio.h, make various cleanups,
+ and preserve the cursor's coordinates when paging up and down.
+ (David Benbennick) DLR: Readd the ability to behave the old
+ way while paging, make it so the new behavior is only used in
+ smooth-scrolling mode, and modify page_down() to always go
+ down a full page (even when there's less than one page of text
+ left) for consistency.
+ page_up()
+ - Removed due to rewrite of movement functions. (David
+ Benbennick)
+- proto.h:
+ - Surround the do_prev_word() and do_next_word() prototypes with
+ NANO_SMALL #ifdefs, since the actual functions aren't included
+ in tiny mode. (DLR)
+- rcfile.c:
+ parse_colors()
+ - Generate an error if we try to use a bright background color
+ in a nanorc file. (DLR; found by Brand Huntsman)
+ - Make sure all rcfile error messages are capitalized, for
+ consistency. (DLR)
+- winio.c:
+ get_verbatim_kbinput()
+ - Fix a silly memory corruption bug that would occur when trying
+ to read a sequence of more than one key verbatim. (DLR)
+ get_accepted_kbinput()
+ Handle Ctrl-{ to Ctrl-~ correctly, and drop support for
+ converting Esc ` to Esc Space, since making Meta-[key]
+ correspond to Ctrl-[key] in all cases is inconsistent due to
+ the different natures of Contol and Meta key sequences. (DLR)
+ do_first_line()
+ - Call edit_update() with TOP instead of CENTER; both do the
+ same thing, but it works faster with TOP. (DLR)
+ nanogetstr()
+ - Don't let the user type in ASCII 127 at the statusbar prompt.
+ (DLR)
+ titlebar()
+ - Fix problem with the available space for a filename on the
+ titlebar's being short by one. (DLR)
+ edit_add()
+ - Fix problems with the marking highlight's being drawn
+ improperly in some cases. (DLR)
+ edit_update()
+ - Tweak for efficiency and remove the fix_editbot() call. (David
+ Benbennick)
+ do_credits()
+ - Update the copyright years to "1999-2003", to match those
+ given in the rest of the code. (DLR)
+- configure.ac:
+ - Change instances of "GNU Nano" to "GNU nano" for consistency.
+ (DLR)
+- nano.1, nanorc.5, nano.texi:
+ - Change all instances of $SYSCONFDIR to SYSCONFDIR, since
+ SYSCONFDIR is set at compile time and can't be overridden by
+ setting SYSCONFDIR in the environment. (David Benbennick)
+ - Remove -K/--keypad, and document -d/--rebinddelete. (DLR)
+ - Document the support for Esc Esc [character]'s being
+ interpreted as Ctrl-[character], and the support for Pico's
+ Esc Esc [three-digit decimal ASCII code] input method, if
+ applicable. (DLR)
+ - French translation by Jean-Philippe Guérard.
+- nano.1.html, nanorc.5.html:
+ - Regenerated. (DLR)
+- nanorc.sample:
+ - Remove duplicate "historylog" entry, remove "keypad" entry,
+ and add "rebinddelete" entry. (DLR)
+ - Update and add comments to the regexes for nanorc files.
+ (Brand Huntsman)
+ - Fix an attempt at a bright background color in the sample Java
+ source regexes. (DLR)
+ - Since tabs are shown as groups of spaces, they are interpreted
+ as such when parsed by color regexes. Accordingly, simplify
+ regexes that handle both spaces and tabs to just handle
+ spaces, as the results are the same. (DLR)
+- AUTHORS:
+ - Updated to show 1.2/1.3 maintainers.
+
+- 1.3 tree forks here
+
+GNU nano 1.2.2 - 2003.08.11
+- General:
+ - Translation updates (see po/ChangeLog for details).
+ - Change uncast nrealloc()s assigned to char pointers/arrays to
+ charealloc()s, and cast all other nrealloc()s and all
+ nmalloc()s. (David Benbennick and DLR)
+ - Remove gettext marks from all debug messages. Good for developers,
+ better for translators. (Jordi)
+ - Add translator comments on strings that should be short, like in
+ status bar strings, etc. (Jordi)
+- utils.c:
+ align()
+ - Tweak to avoid a potential problem when strp is non-NULL but
+ *strp is NULL. (David Benbennick)
+ nstricmp(), nstrnicmp()
+ - Add these functions, equivalent to strcasecmp() and
+ strncasecmp(), and convert nano to use them when strcasecmp()
+ and/or strncasecmp() are unavailable. (DLR)
+- winio.c:
+ do_help()
+ - Get rid of keypad_on() call for bottomwin, which should not be
+ needed (DLR).
+ nanogetstr()
+ - Fix problem with search history where a temporary string
+ added at the bottom of the history (but which was not in the
+ history) would not be preserved after scrolling down to the
+ blank bottom entry and then scrolling back up. (DLR)
+ - Fix problem where pressing down,up,down does not blank the
+ search prompt but keeps the previous search (DLR).
+ - Handle Alt-[-F and H (DLR, fixed home and end not working with
+ -K in statusbar).
+- configure.ac:
+ - Change the program used to detect a broken regexec() function
+ so that it works properly, using information found at
+ http://sources.redhat.com/ml/libc-hacker/2001-06/msg00015.html.
+ (DLR)
+- nanorc.sample:
+ - Revised comment explaining the non-escaping of quotes to cover
+ non-escaping of all shell-interpreted characters. (DLR)
+ - Fixes to the descriptions and examples in the comments, and
+ changes to some default values. (David Benbennick and DLR)
+ - Add regexes for Perl syntax. (Richard Smith, tweaked for
+ greater efficiency by David Benbennick)
+ - Add regexes for Java source syntax. (David Benbennick)
+ Regex for C++-style comments (colored the same way as C-style
+ comments) added by DLR.
+- THANKS:
+ - Added Laurentiu Buzdugan, for Romanian.
+ - Added Geir Helland, for Norwegian Bokmål.
+- TODO:
+ - Move the items for nano 1.2 to the "Old Requests" section,
+ and mark color syntax highlighting as done. (David Benbennick)
+- faq.html:
+ - Added question about nano's not showing color when it's
+ compiled with color support. (DLR; suggested by Jordi)
+- nano.1, nanorc.5:
+ - Formatting improvements by Jean-Philippe Guérard.
+ - Minor fixes by DLR.
+- nano.1.html, nanorc.5.html:
+ - Regenerated from nano.1 and nanorc.5. (DLR)
+
+GNU nano 1.2.1 - 2003.04.19
+- General:
+ - Translation updates (see po/ChangeLog for details).
+ - Work around broken regexec() on some systems that segfaults
+ when passed an empty string. This is known to be in glibc
+ 2.2.3. New function regexec_safe(). (David Benbennick)
+ - Fix various bugs with search string history logging: don't
+ print a broken error message and freeze if ~/.nano_history is
+ unreadable, actually show an error message in save_history()
+ if ~/.nano_history is unwritable, and prevent ~/.nano_history
+ from being completely overwritten by save_history() if it's
+ unreadable but writable. (David Benbennick)
+ - Only unset KEEP_CUTBUFFER in main() when we do something other
+ than cut text in the main input loop, instead of unsetting it
+ all over the place (which, as written, didn't handle cases
+ like a cut followed by M-Space properly). Also, instead of
+ checking for keyhandled's not being set inside the for loops,
+ do it in if blocks surrounding the for loops to increase
+ efficiency. (David Benbennick) DLR: Also unset KEEP_CUTBUFFER
+ if we hit a shortcut key other than the one for cutting text.
+ - Make it so a marked cut immediately followed by an unmarked
+ cut tacks the latter's text onto the end of the former's text
+ instead of putting it on a new line, as Pico does. (DLR)
+ - Convert instances of "(char *)nrealloc()" to the macro
+ charealloc(), which does the same thing. (DLR)
+ - Change justify_mode from a boolean int to a flag (DLR).
+- cut.c:
+ do_cut_text()
+ - Tweak where KEEP_CUTBUFFER is set so that a marked cut
+ immediately followed by an unmarked cut preserves the
+ cutbuffer between the two. (David Benbennick) DLR: Also
+ properly set KEEP_CUTBUFFER in tiny mode.
+ do_uncut_text()
+ - If we're about to uncut on the magicline, always make a new
+ magicline in advance, as Pico does. (DLR)
+- global.c:
+ shortcut_init()
+ - Simplify the #ifdef used to enable file insertion in view mode
+ if multibuffer support has been compiled in. (DLR)
+- nano.c:
+ justify_format()
+ - If we shave spaces off the end of the line, make sure totsize
+ is properly updated. (DLR; much simplified by David
+ Benbennick)
+- nano.h:
+ - Simplify #ifdefs relating to HAVE_STRCASECMP and
+ HAVE_STRNCASECMP. (David Benbennick)
+- search.c:
+ goto_abort()
+ - Removed, with all instances replaced with display_main_list(),
+ since with the removal of all the scattered calls to
+ SET(KEEP_CUTBUFFER), that function was all that was left of
+ it. (DLR)
+ do_find_bracket()
+ - If a matching bracket wasn't found, call update_line() after
+ setting current and current_x back to their original values,
+ in case current_x's original value is greater than the width
+ of the screen. (DLR)
+- winio.c:
+ nanogetstr()
+ - Remove a few unnecessary breaks occurring immediately after
+ gotos, and properly interpret the up and down arrow keys when
+ ALT_KEYPAD is set. (DLR)
+- configure.ac:
+ - Enable autodetection of broken regexec(). (DLR) Re-added
+ regex.h check to ensure compile under Debian w/autoconf 1.6.
+- README:
+ - Update obsolete 1.1.x information.
+- TODO:
+ - Fix typo. (David Benbennick)
+- faq.html:
+ - Update RPM links for nano 1.2.x. (DLR)
+
+GNU nano 1.2.0 - 2003.02.19
+- General:
+ - Translation updates (see po/ChangeLog for details).
+- files.c:
+ read_file()
+ - If the file we're loading has already been detected as a DOS
+ or Mac formatted file, don't turn on NOCONVERT if we find
+ binary chars in it. This is because if it's detected as
+ DOS/Mac format, at least one line has already been converted,
+ so setting NOCONVERT (which is supposed to signal that none
+ of the file should be converted) makes no sense. (DLR)
+- nano.c:
+ justify_format()
+ - Fix ugly behavior when wrapping spaces at the end of long
+ words (David Benbennick).
+- nanorc.5:
+ - Fix formatting error and update copyright year (Jordi).
+ - Several enhancements (David Benbennick).
+
+GNU nano 1.1.99pre3 - 2003.02.13
+- General:
+ - Translation updates (see po/ChangeLog for details).
+ - Fix globals and externs such that nano will compile with
+ DISABLE_SPELLER (David Benbennick).
+ - Fix unreasonable fill values by wrapping at length 0 instead
+ of erroring out, and don't start up if the window size is too
+ small but fill is set reasonably. Changes to
+ nano.c:global_init(), window_init(), and handle_sigwinch().
+ New macro MIN_EDITOR_COLS replaces MIN_FILL_LENGTH
+ (David Benbennick).
+ - Change ngettext macro to P_(), to avoid a clash with the
+ reserved C __ identifier (Jordi).
+ - Memory leak fixes for files.c:do_insertfile(),do_browser(),
+ nano.c:do_spell(), and search.c:do_replace() (David
+ Benbennick).
+ - Remove do_preserve_msg, as using -p still gives Pico-style
+ string behavior, so an annoying message every invocation is
+ probably unneeded (all cheer).
+ - Change resetpos function to be global (now called
+ resetstatuspos. Fixes annoying but small odd problem with
+ cursor placement when inserting a file. This needs to be done
+ better in 1.3 (originally by David Lawrence Ramsey). Added
+ this issue to TODO.
+- files.c:
+ cwd_tab_completion()
+ - Memory leak fix (David Benbennick).
+ input_tab()
+ - Fix assumption that matches is null terminated (David
+ Benbennick).
+ load_history()
+ - Fix segfault on loading huge strings from history file
+ (David Benbennick).
+ load_history(), save_history()
+ - Changed to look at $HOME before getpwuid(geteuid()), see
+ details in comment for rcfile.c:do_rcfile().
+ real_dir_from_tilde()
+ - Change check for the running user's home dir to use
+ getpwuid(geteuid()) rather than a getpwent() loop
+ (suggested by Jordi).
+- nano.c:
+ breakable()
+ - Fix incorrect return value on short lines (David Benbennick).
+ do_help()
+ - Fix line lengths not being computed properly, causes display
+ glitches most noticeable with < 20 rows. New function
+ nano.c:line_len(). (David Benbennick).
+ do_justify()
+ - Add regfree() to quote regex (David Benbennick).
+ - Only copy previous indent if AUTOINDENT is set (David
+ Benbennick).
+ do_suspend()
+ - Fix untranslated message (David Benbennick).
+ do_wrap()
+ - Fix isspace() call to operate on int.
+ help_init()
+ - Fix crashing in do_help when COLS < 23 (David Benbennick).
+ main()
+ - Fix nano not compiling with ENABLE_RCFILE and DISABLE_TABCOMP
+ (David Benbennick).
+ - Silence annoying compiler messages about clobbering and
+ uninitialized variables by moving variable inits to the top
+ of main() and re-initializing them after the sigsetjmp().
+- rcfile.c:
+ colortoint()
+ - Don't bomb after invalid color and print bad color name
+ (David Benbennick).
+ colortoint, parse_colors()
+ - Don't add strings with invalid fg colors at all.
+ do_rcfile()
+ - Revert (somewhat) previous behavior of looking at
+ $HOME, and only run getpw* if it is NULL. Most *nix programs
+ seem to only care about $HOME, and at the user-level
+ getpw* may not be reliable (and its slower).
+- search.c:
+ do_gotoline()
+ - Only goto_abort() if we *didnt* abort the command, making
+ the function seem horribly misnamed ;-) (David Benbennick).
+- winio.c:
+ browser_init(), striponedir(), do_browse_from()
+ - Various memory leak fixes (David Benbennick).
+ do_yesno(), do_help()
+ - Add defined(NCURSES_MOUSE_VERSION) to macro so systems that
+ don't understand MEVENT will compile.
+ nanogetstr()
+ - Remove unnecessary reset of x since it is now handled
+ elsewhere (David Lawrence Ramsey).
+ statusq()
+ - Always blank the statusbar on exit (David Benbennick).
+- nano.1, nano.1.html:
+ - Add initialization file comments, change some options from
+ bracketed to underlined to emphasize that they are not
+ optional.
+ - Add SEE ALSO section (Jordi).
+ - Moved nano.1 color and syntax sections to nanorc, pointed
+ nano.1 to nanorc.5 for initialization file. Changed
+ nanorc.5 variables to be italics to match nano.1. Added
+ nanorc.5.html to CVS tree.
+- nanorc.5:
+ - Add nanorc manpage, with descriptions of all available commands
+ (Jordi).
+- nanorc.sample:
+ - Make nanorc entry less tolerant of invalid colors.
+- nano.spec.in:
+ - Change default flags to --enable-all.
+- THANKS:
+ - Add Kalle Kivimaa and Kalle Olavi Niemitalo, for Finnish (Jordi).
+- UPGRADE:
+ - Add upgrading information document for 1.0 users (Jordi).
+
+GNU nano 1.1.99pre2 - 2003.02.03
+- General:
+ - Changed some translatable debug messages to use %s
+ instead of the function name, and removed gettext from
+ two strings that had no actual words in them that
+ should be translated. Suggested originally by
+ Christian Rose.
+ - Fix subexpression replacement to work consistently.
+ Affects search.c:replace_regexp() and
+ utils.c:strstrwrapper() (David Benbennick).
+ - Fix cursor position being saved when escaping out
+ of nanogetstr with keys like ^Y and ^V. New arg
+ resetpos to nanogetstr(), added static int
+ resetpos in statusq() (bug found by DLR).
+ - Fix constant curos updates from obliterating other
+ system messages, and fix statusbar message length.
+ Affects files.c:load_open_file(), nano.c:main(),
+ search.c:findnextstr(), winio.c:statusbar() and
+ do_cursorpos() (David Benbennick).
+ - Fix nano crashing when searching/replacing an invalid
+ regex (try "^*"). Changed regexp_init() to return
+ 1 or 0 based on regcomp()'s return value and search_init
+ to exit with an error message (sorry Jordi!). Added
+ another check when using last_search instead of answer.
+ - Move regcomp into rcfile.c rather than each display refresh
+ of winio.c. New function rcfile.c:nregcomp().
+ This fixes much of nano's resource hogging behavior
+ in syntax higlighting. (David Benbennick).
+ - Fix justify failing for certain lines, new function
+ nano.c:breakable() (David Benbennick).
+ - Fix screen getting trashed on signals nano can catch
+ (TERM and HUP). New global variable curses_ended,
+ changes to winio.c:statusbar() and nano.c:die()
+ (David Benbennick).
+- cut.c:
+ do_cut_text()
+ - Fix incorrect cursor location when cutting long lines
+ (David Benbennick).
+- files.c:
+ - Set a default PATH_MAX for getcwd() etc calls (David
+ Benbennick).
+ do_browse_from()
+ - Fix path checking to fix bad paths, escaping
+ the operating directory, new function readable_dir() (David
+ Benbennick).
+ do_browser()
+ - Fix incorrect path check for check_operating_dir()
+ (David Benbennick).
+ - Fix goto directory operating dir check and tilde expansion
+ (David Benbennick).
+ - Even more checks and operating dir fixes (David Benbennick).
+ do_insertfile()
+ - Add some more checks and fix recursion when toggling
+ multibuffer (David Benbennick).
+ open_file()
+ - Fix FD leak with file load error (David Benbennick).
+ add_open_file()
+ - Revert the fix for the supposed minor logic error from before;
+ it was keeping some updates from happening when they should,
+ which was leading to segfaults with both multibuffer and view
+ mode on. (DLR; found by David Benbennick)
+ save_history()
+ - Fix nrealloc return value being ignored (David Benbennick).
+ - Fix off-by-one bug causing write to unallocated memory
+ (David Benbennick).
+- global.c:
+ thanks_for_all_the_fish()
+ - Fix compiling with DEBUG and multibuffer (David Benbennick).
+- nano.c:
+ do_char()
+ - Remove unneeded check_statblank() (David Benbennick).
+ do_int_spell_fix(), do_int_speller()
+ - Fix crashes with mark position, current_x position,
+ and edit_update args (David Benbennick).
+ do_justify()
+ - Unset KEEP_CUTBUFFER so nano won't crash with subsequent
+ ^K cuts and justifies (David Benbennick).
+ do_mouse()
+ - Fix the mouse code to work with lines longer than COLS and
+ with the proper positioning, including special characters
+ (David Benbennick).
+ do_preserve_msg():
+ - Unsplit error message into a single fprintf call (Jordi).
+ main()
+ - Call load_file with arg 0 for insert, as we aren't really
+ doing an insert, allows new_file() to run if we open a
+ non-file at startup.
+ usage()
+ - Remove gettext markings from -p/--preserve (Jordi).
+ - Revamp -H option message to fit in 80 column terminal.
+ window_init()
+ - Fix leaking *WINDOWs (no pun intended) (David Benbennick).
+- search.c:
+ do_search(), do_replace_loop()
+ - Fix edit_update call to use CENTER instead of current_x
+ (related to David Benbennick's fixes for spelling).
+ do_replace_loop()
+ - Fix various bugs having to do with replace string length
+ and positioning (David Benbennick).
+ edit_refresh()
+ - Fix cursor being above as well as below the current screen
+ (David Benbennick).
+- winio.c:
+ bottombars()
+ - Change strcpy of gettext() "Up" string to strncpy of max
+ width 8, to stop stupid strcpy crash.
+ do_yesno()
+ - Fix mouse interaction bugs with yes/no prompt (David Benbennick).
+- nanorc.sample:
+ - Change comment to say magenta instead of purple.
+
+GNU nano 1.1.99pre1 - 2003.01.17
+- General:
+ - New date format for NEWS and ChangeLog.
+ - Completely removed PICO_MODE, as with the search/replace
+ history patch we should have the extended functionality we can
+ without being incompatible with Pico. Removed all code for
+ different search/replace string editing and alternate shortcut
+ list. I'm sure I won't even have to ask for feedback on this
+ one :-)
+ - Add in Pico's -p flag, (-p, --preserve). To preserve the XON
+ and XOFF keys (^Q and ^S). Add warning if we invoke -p and
+ add checks for using --preserve (to skip warning) and --pico
+ (to force showing it). New flag PRESERVE, function
+ do_preserve_msg(), changes to main(), signal_init().
+ - Search history and replace history up/down cursor arrows,
+ w/history tab completion, not available w/NANO_SMALL. Changes
+ to statusq(), others (Ken Tyler). Added shortcut to
+ search/replace shortcuts so people will know it's there,
+ forced KEY_UP and KEY_DOWN defs in nano.h (Chris, in case
+ blame needs to be placed later). Minor fixes by DLR: allow ^P
+ and ^N as alternatives to the up and down arrows, make sure
+ the "Up" shortcut is displayed properly in the help menu,
+ remove a few bits of unneeded and/or warning-generating code,
+ and fix some missing statusq() prompts with --enable-tiny.
+ - Added search/replace history log. Flag -H, --historylog.
+ Flags HISTORY_CHANGED and HISTORYLOG (only room for one more
+ flag!), added entries in nanorc.sample, new functions
+ log_history and save_history (Ken Tyler).
+ - Translation updates (see po/ChangeLog for details).
+ - Forward-ported Chris' --disable-wrapping-as-root option from
+ 1.0.9. Per Jordi's suggestions, have it override
+ $SYSCONFDIR/nanorc but not ~/.nanorc. (DLR)
+ - Change all references to /etc/nanorc in the documentation to
+ $SYSCONFDIR/nanorc. (DLR)
+ - Minor cosmetic tweaks to the ngettext() macro, and fix to
+ properly detect systems lacking ngettext() and correctly
+ compile on them; the previous fix didn't work. (DLR)
+ - Fix problems with some code sections' not being #ifdef'ed out
+ when they should be, or being #ifdef'ed out improperly. (David
+ Benbennick and DLR)
+ - Change FOLLOW_SYMLINKS to NOFOLLOW_SYMLINKS, and rework the
+ associated logic accordingly, throughout the code. (David
+ Benbennick)
+ - Rework #ifdefs to not include mouse_init() at all if
+ DISABLE_MOUSE is defined or NCURSES_MOUSE_VERSION isn't. (DLR)
+ - For consistency, change many references of (!x) to (x == NULL)
+ and (x) to (x != NULL). (DLR)
+ - Define KEY_IC properly (and KEY_DC more portably) when slang
+ support is enabled, and remove the hack to work around the
+ former's not being defined. (David Benbennick and DLR)
+ - Miscellaneous tweaks to update_color() calls, to make sure
+ they're called at the right times and that refreshes are done
+ afterwards only when needed. (David Benbennick)
+ - Renamed [have_]past_editbuff [have_]search_offscreen. (DLR)
+ - Add the "preserve" option to the nanorc file, to match
+ nanorc.sample. (DLR)
+ - Fixed awful scrolling in do_int_speller. Problem was
+ findnextstr() calling edit_update(), though screen updating
+ is not its business. Added checks in do_search() and
+ do_replace_loop() to do the checks. It really should not be
+ done here, as some function in winio.c should handle this,
+ but I can't seem to find a good place to put this check.
+ - Updated all copyright notices to say 2003 rather than 2002, as
+ nearly all the source files have been worked on this year
+ (DLR).
+- configure.ac:
+ - Added tr and eu to ALL_LINGUAS (Jordi).
+ - Fix now inaccurate description of --enable-tiny's effects; it
+ no longer disables NLS support. (DLR)
+ - Fix typo. (David Benbennick)
+ - Check for strcasecmp() and strncasecmp(), since they are
+ apparently only standard under BSD. (DLR)
+ - Small cleanups. Add copyright header, add autopoint support and
+ define bug report address and full package name in AC_INIT. Move
+ ALL_LINGUAS to po/LINGUAS, recommended place for gettext 0.11.
+ - Added --enable-all option to compile in all the extra stuff
+ we'd normally need extra flags for.
+- color.c:
+ update_color():
+ - Remove an unneeded edit_refresh() call after do_colorinit().
+ (David Benbennick)
+- cut.c:
+ do_cut_text()
+ - Fix a memory corruption problem caused by accessing edittop
+ after it was freed but before it was reset to a sane value
+ from current. (David Benbennick)
+ do_uncut_text()
+ - If uncutting more than one line of unmarked text at editbot,
+ don't center the screen, since Pico doesn't. (DLR)
+ - If uncutting previously unmarked text, uncut to end if we're
+ not at the beginning of the line, and set placewewant to 0 if
+ we are. This matches Pico's behavior. (DLR)
+- files.c:
+ load_file()
+ - Remove unneeded wmove() call. (David Benbennick)
+ read_line()
+ - Miscellaneous cleanups. (David Benbennick)
+ open_file()
+ - If we're in multibuffer mode and there's an error opening the
+ file in read-only mode, display the error message on the
+ statusbar regardless of the value of quiet. (DLR)
+ read_file()
+ - Miscellaneous cleanups. (David Benbennick)
+ - Fix len's being off by one when reading in Mac-format files,
+ exposed by one of David Benbennick's cleanups. (DLR)
+ - If NO_CONVERT isn't set when we first enter, and it gets set
+ while reading in the file, unset it again afterwards. (DLR)
+ do_insertfile()
+ - If we're in multibuffer mode and there's an error opening the
+ file that we're trying to insert, close the new buffer that we
+ made to hold it and reload the buffer we had open before.
+ (DLR)
+ add_open_file()
+ - Fix minor logic error when determining when to resave fileage
+ and filebot. (DLR)
+ load_open_file()
+ - If switching between files when CONSTUPDATE is set, only force
+ a cursor position display update if DISABLE_CURPOS isn't set.
+ This will ensure that the "Switching to [file]" messages are
+ shown. (DLR)
+ write_file()
+ - Change lineswritten from a long to an int, to match
+ filestruct->lineno. (DLR; mismatch found by David Benbennick)
+ real_dir_from_tilde()
+ - Since this is needed for proper interpretation of paths
+ containing tildes and not just for tab completion, include and
+ use it regardless of whether tab completion is disabled.
+ (David Benbennick and DLR)
+ input_tab()
+ - Variable name change: matchBuf -> matchbuf. (DLR)
+ diralphasort()
+ - Remove the HAVE_STRCASECMP #ifdef block; see the changes to
+ configure.ac and nano.h for why. (DLR)
+- global.c:
+ thanks_for_all_the_fish()
+ - Miscellaneous cleanups. (David Benbennick)
+- move.c:
+ do_page_down()
+ - If there's a page or less of text, do an edit_update() if the
+ mark is on; otherwise, the highlight won't be displayed. (DLR)
+- nano.c:
+ - Added free_history() list calls clean up, added init of list
+ headers, and modified statusq() calls (Ken Tyler).
+ do_prev_word()
+ - Make the assert match that in do_next_word(). (DLR)
+ do_enter()
+ - If smooth scrolling is on, and Enter is pressed on the
+ magicline, don't center the screen. (DLR)
+ do_justify()
+ - Fix memory corruption problem triggered when edittop and
+ current->next pointed to the same value and current->next was
+ destroyed during justification. (DLR)
+ - Center the screen when justification moves the cursor entirely
+ off the bottom of the screen, instead of when it moves the
+ cursor near the bottom of the screen, to more closely match
+ Pico's behavior. (DLR)
+ version()
+ - Remove obsolete reference to --enable-undo. (David Benbennick)
+ - Move up check for --disable-nls as it's independent of
+ --enable-tiny now (DLR).
+ do_int_speller()
+ - Make internal spell program use sort -f and uniq to create a
+ less redundant word list. [The only reason this is going in
+ during feature freeze is because the int speller is useless as
+ is and should either be improved or removed. I chose
+ improved].
+ - Change all child error checks to use one goto (gasp!) called
+ close_pipes_and_exit, so we don't leak FDs.
+ - Fix FD leaks which occur outside of errors (David Benbennick).
+ do_int_speller(), do_alt_speller()
+ - Programs now return char *, NULL for successful completion,
+ otherwise the error string to display. This allows us to give
+ more useful feedback to the user when spell checking fails.
+ ABCD()
+ - Renamed abcd(). (DLR)
+ main()
+ - Remove an unneeded do_colorinit() call, do major cleanups, and
+ allow loading of multiple files on the command line when
+ multibuffers are used. (David Benbennick)
+- nano.h:
+ - Make sure NO_RCFILE and COLOR_SYNTAX aren't set to the same
+ value. (DLR; discovered by Ken Tyler)
+ - If strcasecmp() and/or strncasecmp() aren't available, use
+ strcmp() and/or strncmp() instead. (DLR)
+- proto.h:
+ - Fix the #ifdef block for DISABLE_TABCOMP's being undefined
+ so that functions only used with tab completion are properly
+ #ifdef'ed out. (DLR)
+- search.c:
+ do_gotoline()
+ - Don't call blank_statusbar_refresh() so if there's an error
+ returned in multibuffer mode, we can actually see it.
+ do_search()
+ - Remove erroneously introduced near-duplicate call to
+ update_history(). (DLR)
+ print_replaced()
+ - Remove and replace with an equivalent ngettext() call. (DLR)
+ do_replace_loop()
+ - Fix bug where if text on the magicline was replaced (which can
+ be done via a regexp replace of "^$" with something other than
+ ""), a new magicline wouldn't be created. (DLR)
+ - Remove check for answer being a blank string, presumed to be
+ a PICO_MODE holdover, but it stops us from doing a blank
+ spelling replacement.
+ do_replace()
+ - For greater Pico compatibility, when an attempt to replace a
+ string results in 0 replacements due to the string's not being
+ found, display "[string] not found" instead of "Replaced 0
+ occurrences". (DLR)
+- utils.c:
+ is_cntrl_char()
+ - Rework to fix a problem with displaying certain high-bit
+ characters. (David Benbennick; reported by Andrzej Marecki)
+ align()
+ - Don't just assert that the string passed in isn't NULL; check
+ that it isn't and only do the alignment when it isn't. (David
+ Benbennick)
+ nmalloc(), nrealloc()
+ - If the size passed to nmalloc() or nrealloc() is zero, don't
+ die with an erroneous out-of-memory error. Also, change
+ their dying messages to "nano is out of memory!". (David
+ Benbennick)
+ charalloc()
+ - Removed and redefined as a macro that calls nmalloc(). (David
+ Benbennick)
+- winio.c:
+ nanogetstr()
+ - Tweak to make the cursor stay in the same place if we hit a
+ prompt-changing toggle while it's in the middle of the string.
+ Reset it to -1 (so next time we come here, it'll be set to the
+ end of the string) if we leave the prompt via Enter or Cancel.
+ Also fix minor problem with search history where the current
+ search item could be at the bottom of the history twice in a
+ row under certain conditions. (DLR)
+ - Remove parens in NANO_CONTROL_I check so nano won't complain if
+ just NANO_SMALL is defined (David Benbennick).
+ edit_refresh()
+ - Miscellaneous cleanups that fix a bug where the screen
+ isn't updated after uncutting chunks of upwardly marked cut
+ text that are over a page in length. (David Benbennick)
+ do_credits()
+ - Add David Benbennick to credits. (DLR)
+- nanorc.sample:
+ - Added comment to explain the non-escaping of quotes in
+ color regexes, based on info provided by David Benbennick.
+ (DLR)
+ - Added some examples for groff and the nanorc courtesy of
+ Robert D. Goulding.
+ - Added double hash marks to comment lines, so people who
+ uncomment the beginning of every line won't get syntax errors.
+- faq.html:
+ - Miscellaneous fixes and updates for typos, broken links, and
+ slashes at the end of directories. It is now fully compliant
+ with HTML 4.01 Transitional. (DLR and David Benbennick)
+ - Added docs about the new unified search string interface and
+ search histories, and added --enable-all into configure docs.
+- nano.texi:
+ - Typo fixes and updates. (David Benbennick)
+ - Updates for the most recent and not so recent changes.
+- nano.1, nano.1.html
+ - Updated for the --preserve and --historylog options.
+- TODO
+ - Added some wishlist stuff.
+- THANKS:
+ - Added Doruk Fisek and Peio Ziarsolo (Jordi).
+
+GNU nano 1.1.12 - 10/24/2002
+- General:
+ - Translation updates (see po/ChangeLog for details).
+ - Remove malloc.h, as it's unneeded and just causes annoyances on
+ *BSD systems. Added stdlib.h to global.c.
+ - Added Meta-Y toggle to disable/enable color syntax highlighting
+ completely. This may eventually be per-buffer, but that's too
+ complicated for a feature freeze.
+ - Disable VSTOP keystroke. Stops people accidentally locking up
+ nano (suggested by David Benbennick).
+ - Pluralize messages with ngettext() where needed. (David
+ Benbennick) Tweaked to compile on systems lacking ngettext()
+ by DLR (problem found by Ken Tyler).
+ - Update nano.1 and nano.1.html to show that nano now does an
+ emergency save on receiving SIGHUP or SIGTERM. (DLR)
+ - Don't include "nowrap" in the long options if
+ DISABLE_WRAPPING is defined. (DLR)
+- files.c:
+ read_file()
+ - Minor efficiency fixes, some of which fit in with the change
+ to ngettext() usage mentioned above. (David Benbennick)
+ do_browser()
+ - Make sure the value of path is mallocstrcpy()ed into retval
+ and not just assigned to it, to avoid memory corruption
+ problems. (DLR)
+- nano.c:
+ version()
+ - If ENABLE_NLS isn't defined, display "--disable-nls"
+ (suggested by Ken Tyler). (DLR)
+ justify_format()
+ - Make sure the double space maintained after sentence-ending
+ punctuation is done when that punctuation is immediately
+ followed by a bracket-type character, so justifying e.g.
+ sentences in parentheses works properly. (David Benbennick)
+ handle_hup()
+ - Renamed handle_hupterm() to show that it now handles SIGTERM
+ as well as SIGHUP. (DLR)
+ signal_init()
+ - Do an emergency save on receiving either SIGHUP or SIGTERM,
+ not just SIGHUP. (David Benbennick)
+ main()
+ - Fix a problem where control key commands were printed
+ literally instead of interpreted after a failed search of a
+ one-line file. (David Benbennick)
+- proto.h:
+ handle_hup()
+ - Renamed handle_hupterm(); see above for why. (DLR)
+- winio.c:
+ edit_add()
+ - Fix a potential infinite loop occurring with certain
+ zero-length regexes. (David Benbennick)
+
+GNU nano 1.1.11 - 10/01/2002
+- General:
+ - Translation updates (see po/ChangeLog for details).
+ - Upgraded to gettext 0.11.5 (Jordi).
+ - Updated nano.1, nano.1.html, and nano.texi to fix an
+ inaccuracy in the description of -Q/--quotestr. (DLR)
+ - Set REG_EXTENDED in all regcomp() calls. (DLR)
+ - Minor cosmetic code cleanups. (DLR)
+ - Changed do_insertfile to (a) report multibuffer status at the
+ prompt and allowing it to be toggled, taking into account the
+ need to keep the translatable strings, and (b) added a
+ variable inspath to keep track of what the string was before
+ toggling. I'm sure there's bugs, have at it.
+ - Make sure all functions have prototypes in proto.h, and swap
+ some functions around to put similar functions closer
+ together (for this, rename clear_bottombars() to
+ blank_bottombars()). (DLR; suggested by David Benbennick)
+ - More changes of char *'s to const char *'s when possible.
+ (David Benbennick)
+ - Fix various minor memory leaks in files.c. (David Benbennick)
+ - Fix minor problems with the operating directory code: set the
+ operating directory properly if it's specified only in a
+ nanorc file, and handle an operating directory of "/"
+ properly. New function init_operating_dir() to handle
+ setting it both on the command line and in the nanorc file.
+ (David Benbennick)
+ - Major rewrite of color and screen update routines to fix
+ minor bugs and increase efficiency. New function
+ set_colorpairs() for the former. (David Benbennick)
+- configure.ac:
+ - Added pt_BR to ALL_LINGUAS (Jordi).
+ - Changed --enable-color warning to be slightly less severe.
+ - Put the configure options in more or less alphabetical order,
+ and remove --enable-undo, since it doesn't do anything. (DLR)
+- files.c:
+ open_file()
+ - String change: "File "x" is a directory" -> ""x" is a
+ directory". (Jordi)
+ do_insertfile()
+ - Disallow multibuffer toggling at the "Insert File" prompt if
+ we're in both view and multibuffer mode, so as to keep proper
+ integration between the two, and make sure the toggle
+ actually works all the time otherwise. Also, make sure
+ TOGGLE_LOAD_KEY isn't referenced when NANO_SMALL and
+ ENABLE_MULTIBUFFER are both defined. (DLR)
+ open_prevfile_void(), open_nextfile_void()
+ - Return the return values of open_prevfile() and
+ open_nextfile(), respectively, instead of (incorrectly)
+ calling them and returning 0. (DLR)
+ real_dir_from_tilde()
+ - Rework to use getpwent() exclusively and end reliance on
+ $HOME. Adapted from equivalent code in do_rcfile(). (DLR)
+ input_tab()
+ - Most likely fixed the check marked with FIXME, so that tab
+ completion works properly when we're trying to tab-complete a
+ username and the string already contains data. (DLR)
+- global.c:
+ shortcut_init()
+ - Disable the new multibuffer toggle at the file insertion
+ prompt when NANO_SMALL and ENABLE_MULTIBUFFER are both
+ defined. (DLR)
+ thanks_for_all_the_fish()
+ - Make sure the reference to help_text is #ifdefed out when
+ --disable-help is used. (DLR)
+- move.c:
+ page_up()
+ - Fix bug where current is moved up two lines when the up arrow
+ is pressed on the top line of the edit window; this causes a
+ segfault if the top line in the edit window is the second
+ line of the file, as the line current ends up on doesn't
+ exist. (Jeff DeFouw)
+ do_down()
+ - Fix bug where, if the last line in the edit window is the
+ line before the magicline, and smooth scrolling is turned
+ off, pressing the down arrow on that last line centers the
+ cursor without updating the edit window. (Jeff DeFouw)
+- nano.c:
+ version()
+ - Put the listed configure options in more or less alphabetical
+ order. (DLR)
+ open_pipe()
+ - If we're in view mode here (in which case we're also in
+ multibuffer mode), don't set the modification flag. (DLR)
+ do_next_word(), do_prev_word()
+ - If we're on the last/first line of the file, don't center the
+ screen; Pico doesn't in the former case. (DLR)
+ do_backspace()
+ - Rework to call edit_refresh() regardless of the value of
+ current_x if ENABLE_COLOR is defined, so that multiple-line
+ color regexes are properly updated onscreen as they are in
+ do_delete(). (DLR)
+ do_delete()
+ - Rework to only call edit_refresh() unconditionally if
+ ENABLE_COLOR is defined; if it isn't, and we're not deleting
+ the end of the line, only call update_line(). (DLR)
+ do_wrap()
+ - Make sure wrapping is done properly when the number of
+ characters on the line is exactly one over the limit. (David
+ Benbennick)
+ - Restore the previous wrapping point behavior (pre 1.1.10)
+ (David Benbennick). Minor fix by DLR to prevent spaces from
+ being added to the ends of lines ending in spaces or lines
+ ending in tabs (the latter case found by David Benbennick).
+ do_alt_speller()
+ - Readd DLR's fix to preserve marking when using the alternate
+ spell checker; it was accidentally dropped. (David
+ Benbennick)
+ do_justify()
+ - Fix cosmetic problems caused when justifying on the
+ magicline, and a minor problem where the cursor would
+ sometimes be moved to the wrong line after justification.
+ (David Benbennick)
+ main()
+ - When searching through the main shortcut list looking for a
+ shortcut key, stop searching after finding one; this avoids a
+ rare segfault. (DLR)
+- nano.h:
+ - Change search toggles for case sensitive searching and regexp
+ searching to M-C and M-R, respectively. (DLR; suggested by
+ Chris)
+ - Add support for HP-UX's curses, which doesn't seem to support
+ KEY_HOME and KEY_END.
+- nanorc.sample:
+ - Fix the c-file regex for all caps words to be extended regex
+ format ({} instead of \{\}) (found by DLR).
+ - Add a better string matching sequence that includes escaped
+ quotes (thanks to Carl E. Lindberg, who doesn't even know he
+ helped ;-). Some unneeded \'s in that sequence removed, and
+ a new sequence to handle multi-line quotes added, by David
+ Benbennick.
+ - Add some examples for HTML and TeX files (David Benbennick).
+- rcfile.c:
+ parse_colors()
+ - Stop infinite loop when syntax doesn't begin with " char.
+- utils.c:
+ charalloc()
+ - Switch from using calloc() to using malloc(). (David
+ Benbennick)
+- faq.html:
+ - Typo fix. (DLR)
+- AUTHORS:
+ - Add David Benbennick. (Jordi and Chris)
+- TODO:
+ - Add entry in the 1.4 section for Pico's paragraph searching
+ ability (at the search prompt, ^W goes to the paragraph's
+ beginning, and ^O goes to the paragraph's end). (DLR)
+
+GNU nano 1.1.10 - 07/25/2002
+- General:
+ - Translation updates (see po/ChangeLog for details).
+ - Upgraded to gettext 0.11.2 (Jordi).
+ Removed intl/ entirely, and a few more tweaks by gettextize.
+ - i18nized a few strings used in DEBUG mode. (DLR)
+ - Some chars being assigned 0 are now assigned '\0'. (DLR)
+ - Put header file #includes in a more consistent order. (DLR)
+ - Remove some unneeded blank lines and spaces, and make some
+ spacing more consistent. (DLR)
+ - When possible, use iscntrl() to determine whether a character
+ is a control character or not. (DLR)
+ - Miscellaneous typo fixes. (DLR)
+ - Many fixes to the help browser and shortcut lists: efficiency
+ updates, consistency fixes, help text fixes and improvements,
+ and spacing improvements. (David Benbennick)
+ - Make some functions use const variables when possible, and
+ also make them static when necessary. (David Benbennick,
+ necessary redefined by Chris ;-)
+ - Add Carl Drinkwater's backup file option (-B or --backup on the
+ command line, M-B in nano's global shortcuts). If the original
+ file is unchanged from when it was loaded, it is backed up to
+ filename~; if the original file has been changed or deleted
+ since it was originally loaded, it isn't backed up. The backup
+ file retains the permissions, owner/group, and
+ access/modification times of the original file. This option is
+ disabled when --enable-tiny is used. It will not back up
+ temporary files. Minor fixes to it by David Benbennick and
+ DLR. Changes to open_file(), add_open_file(),
+ load_open_file(), write_file(), and do_writeout().
+ - Add \n's to the ends of "filename is %s" debugging strings.
+ (Carl Drinkwater)
+ - Add the long option --quotestr as an alternative for -Q, and
+ --regexp as an alternative for -R; they were listed in nano's
+ usage information, but weren't actually in nano. Also, display
+ "-?" as an alternative for "-h" in nano's usage information,
+ put the command line options in a more consistent (i.e. mostly
+ alphabetical) order in nano, put the long options in a more
+ consistent order in rcfile.c and nanorc.sample, don't include
+ rcfile options if their equivalent command line options are
+ disabled, and remove obsolete relative option from
+ nanorc.sample. (DLR)
+ - Change "File Name to Append/Prepend" to "File Name to
+ Append/Prepend to". The original prompt could confusingly
+ imply that we are appending/prepending another file to the
+ current file, when we are actually appending/prepending the
+ current file to another file. (DLR)
+ - Put nano.1, nano.1.html, and nano.texi up to date, and fix a
+ few inconsistencies in them. (DLR)
+ - Typo fixes for the ChangeLog. (David Benbennick and DLR)
+ - Complete rewrite of justification code to fix some bugs and
+ improve its functionality. (David Benbennick)
+ - If a variable isn't going to be used in tiny mode, #define it
+ out when possible. (David Benbennick)
+ - Major reworking of the cutting/screen-updating code in cut.c,
+ some functions in utils.c, the cursor placement code in
+ winio.c, and many, many other areas to increase efficiency.
+ (David Benbennick)
+ - Rework handling of prompts when there's a list of partial
+ filename matches on the screen: remove kludgy case-by-case
+ handling (which didn't even handle every case), and have
+ statusq() handle it directly for all cases. (David Benbennick
+ and DLR)
+ - Fix some warnings and errors that show up when using gcc's
+ -pedantic option. (DLR)
+ - Add a comment to nanorc.sample warning that an out-of-range
+ negative value for fill can make nano die complaining that
+ the screen is too small (which may not be immediately
+ obvious). (DLR)
+ - There were some opendir() calls in files.c without
+ corresponding closedir() calls; add them. (DLR)
+ - Move align() and null_at() from nano.c to utils.c, and move
+ the openfilestruct handling functions from nano.c to files.c.
+ (DLR)
+ - In color.c, start the "#ifdef ENABLE_COLOR" block after
+ including all the header files, as rcfile.c does; this fixes
+ a warning about ANSI C'S inability to handle blank files.
+ (DLR)
+ - Add new function is_cntrl_char() as a wrapper for iscntrl();
+ this is needed to treat ASCII 0x80-0x9f as control characters
+ consistently. (Without this, they will only be treated as
+ such when gettext is used; when it isn't used, they will be
+ printed as-is and be interpreted as commands by xterm, which
+ will corrupt the display.) (DLR)
+ - Add command line option -I/--ignorercfiles to ignore
+ $SYSCONFDIR/nanorc and ~/.nanorc. (Carl Drinkwater). Fix to
+ parsing getopt args (DLR).
+ - Fix minor bugs with importing certain text files in Mac
+ format. (DLR)
+- files.c:
+ append_slash_if_dir(), input_tab()
+ - Changed variable names: lastWasTab -> lastwastab, matchBuf ->
+ matchbuf. (DLR)
+ check_operating_dir()
+ - Memory leak fix. (David Benbennick)
+ check_writable_directory()
+ - Optimizations (David Benbennick).
+ cwd_tab_completion()
+ - Changed a variable name: dirName -> dirname. (DLR)
+ do_browser()
+ - Optimizations and mouse selection fixes (David Benbennick).
+ do_writeout()
+ - Fix problem with formatstr's being defined as NULL when
+ --enable-tiny is used. Since formatstr isn't ever used in tiny
+ mode, don't bother even creating the variable. (David
+ Benbennick and DLR)
+ do_insertfile()
+ - Memory leak fix (accidentally dropped 1st time).
+ (David Benbennick).
+ get_full_path()
+ - Memory leak fix. Also, make it properly interpret ~/ notation
+ so, among other things, the option "--operatingdir ~" works.
+ (David Benbennick)
+ - More optimizations (David Benbennick).
+ new_file()
+ - Make sure current_x is zero; this fixes a problem where the
+ current cursor position wasn't reset when reading in a file in
+ multibuffer mode. (David Benbennick)
+ - Use make_new_node rather than setting up fileage by hand
+ (David Benbennick).
+ read_file(), read_line()
+ - Rework to properly handle nulls in the input file, fix
+ detection of binary files to properly mark a file as binary if
+ the only binary characters it contains are ASCII 127's, and
+ after reading the last line of a file that doesn't end in a
+ newline, increment totsize. Remove previous kludge to set
+ totsize properly. (DLR)
+ write_file()
+ - Rework to properly handle nulls in the input file. When
+ appending/prepending, don't change the current file's name to
+ the name of the file it's being appended/prepended to. When
+ writing a marked selection to a file, save and restore totsize
+ so it isn't decreased by the size of the selection afterward.
+ (DLR)
+ - Optimizations (David Benbennick).
+- global.c:
+ free_toggles()
+ - Only include if we're not using tiny mode. (David Benbennick)
+ toggle_init()
+ - Remove global entries for search toggles, as they aren't really
+ global. (DLR)
+ - Don't reinititialize the toggles if they've already been
+ initialized; it's unnecessary and even causes a segfault in
+ do_toggle() if Pico emulation mode is the toggle in question.
+ Don't free the toggles here, either; it's unnecessary after the
+ above change. (David Benbennick)
+ - If wrapping is disabled, don't include the toggle for it.
+ (DLR)
+ shortcut_init()
+ - Rework IFHELP macro (David Benbennick).
+- move.c
+ page_down(), page_up()
+ - Put sanity checks for current_x back in, to avoid rare
+ segfaults (oops). Now, however, they are only called when
+ placewewant is zero instead of being called unconditionally;
+ see changes to winio.c:actual_x_from_start() below. (DLR)
+- nanorc.sample:
+ - Put in much less crappy example regex rules for c-file.
+- nano.c:
+ clear_filename()
+ - Remove this function, as it has unneeded functionality, is
+ short enough to be inlined, and is only called in two spots
+ anyway. (DLR)
+ die()
+ - Rework slightly to remove redundant printing of last message
+ and print all messages after resetting the terminal. (DLR)
+ do_backspace()
+ - Make sure placewewant is set properly, and that the mark is
+ moved backwards. (David Benbennick)
+ do_char()
+ - Fix a problem where, if ENABLE_COLOR wasn't used, typing
+ characters on a marked line before the beginning of the mark
+ would make the highlight short by one. (David Benbennick)
+ do_cont()
+ - Handle the case where the window was resized while we were
+ stopped. (David Benbennick)
+ do_delete()
+ - Make sure placewewant is set properly, to match Pico's
+ behavior. (DLR)
+ do_int_spell(), do_alt_spell()
+ - Rework to save the marked selection before doing spell checking
+ and restore it afterward. (DLR)
+ do_next_word(), do_prev_word()
+ - Fix a problem where highlighting isn't done properly after
+ calling either of these, and another problem where the cursor
+ would move back too far in certain cases with do_prev_word().
+ (David Benbennick)
+ do_toggle()
+ - Since the search mode toggles aren't global anymore, we don't
+ need to explicitly block them here anymore (which will end up
+ blocking the global backup mode toggle, which is the same as
+ the backwards search toggle). (DLR)
+ do_wrap()
+ - fill fixes and 'two short word wrap' bug (David Benbennick).
+ global_init()
+ - Call die_too_small() when fill is 0. (DLR)
+ handle_sigwinch()
+ - Make sure we adjust fill when the window is resized. (David
+ Benbennick)
+ - Call die_too_small() when fill is 0. (DLR)
+ help_init()
+ - Since the return value of snprintf() isn't well defined, use
+ sprintf() instead. (David Benbennick)
+ main()
+ - Rework to blank out filename manually before doing anything
+ with it, instead of calling clear_filename() in two places.
+ Make startline an int instead of a long, since it's supposed to
+ hold a line number. (DLR)
+ - Properly handle multiple -r settings on the command line. (Carl
+ Drinkwater)
+ - Fix a bug that prevented file insertion via the Insert key
+ from working at all when --enable-multibuffer wasn't used
+ (oops). (DLR)
+ - Adapt David Benbennick's fix to get fill to accept negative
+ numbers properly in parse_rcfile() (see below) to the
+ handlers for the -r and -T options as well, so that -r/-T 0
+ can be treated separately from -r/-T string. (DLR)
+ - Fix so that Esc-Esc-Space is properly treated as Ctrl-Space.
+ (DLR)
+ usage()
+ - List the options that are ignored for the purpose of Pico
+ compatibility, and make some minor consistency fixes. (DLR)
+- nano.h:
+ - Fix some space/tab formatting for flags (DLR).
+- proto.h:
+ - Remove external declaration of the global int fill, since
+ it's now static. (DLR)
+- rcfile.c:
+ parse_rcfile()
+ - Add David Benbennick's fix that allows fill to accept
+ negative numbers properly. Specifically, use strtol() there
+ instead of atoi() so that errors can be detected. Also
+ adapted for tabsize by DLR.
+ parse_next_regex(), colortoint()
+ - Only include if ENABLE_COLOR is defined. (DLR)
+- search.c:
+ search_init()
+ - Since the search mode toggles aren't global anymore, rework the
+ part of this function referencing them so that they still work.
+ (DLR)
+ - Remove unneeded toggles variable. (David Benbennick)
+ - Fix a problem where the first character of buf was overwritten
+ if the last search string was one third the number of columns
+ plus one. (David Benbennick)
+ findnextstr()
+ - Update the current line at current_x if we don't find a match.
+ Also, pass current_x_find to strstrwrapper() so we know whether
+ we're at the beginning of a string or not (see changes to
+ strstrwrapper() below), and reset it between lines. (DLR)
+ do_gotoline():
+ - Make sure placewewant is zero after we go to a line. (David
+ Benbennick)
+ do_gotopos()
+ - Simplify the sanity check to only put x within the range of the
+ current line; don't call actual_x() anymore. (DLR)
+- utils.c:
+ - Add sunder() and unsunder(). These functions convert nulls
+ other than the terminating null in strings to newlines and
+ back; they're used to handle null characters in files properly.
+ (DLR)
+ lowercase()
+ - Remove, since it isn't actually used anywhere. (David
+ Benbennick)
+ strstrwrapper()
+ - Set REG_NOTBOL when we're not at the beginning of a
+ string, to avoid false positives when searching for regular
+ expressions prefixed with ^. Make it take a new parameter,
+ line_pos, to determine where we are in the string. (DLR)
+ check_wildcard_match()
+ - Changed variable names: retryPat -> retrypat, retryText ->
+ retrytext. (DLR)
+- winio.c:
+ actual_x_from_start()
+ - Overhaul to make cursor placement more like that of Pico: add
+ sanity check for i, and then place i as close to the value of
+ xplus column as possible. This change is most noticeable when
+ moving down through binary files. (DLR)
+ do_credits()
+ - Fix for the i18ned credits so it will compile with -pedantic
+ (DLR & Chris).
+ do_help()
+ - Add support for the handled keyboard escape sequences in the
+ help menu, as they are needed with some terminals (e.g. xterm
+ with TERM=ansi). (DLR)
+ edit_refresh()
+ - Turn on leaveok() so the cursor doesn't bounce around the
+ screen while we're updating it (most noticeable when using
+ color syntax over a very slow connection).
+ do_replace_highlight()
+ - When using regexps, make sure the highlight is the length of
+ the search result and not the regexp string. (DLR)
+ nanogetstr()
+ - After the user presses Enter at the prompt, refresh the edit
+ window in case there's a list of possible filename matches
+ (left over from attempted tab completion) on it. (DLR)
+ statusbar()
+ - Limit statusbar display to the number of columns less four, and
+ don't allow it to go over its original row. (David Benbennick)
+ titlebar()
+ - Tweak text spacing and printing so that the titlebar text looks
+ better on smaller terminals. (Carl Drinkwater)
+ update_line()
+ - When marking control characters, make sure the mark moves
+ forward by two characters instead of one. Rework control
+ character display routine to display newlines within the line
+ (which should never occur under normal circumstances; they will
+ only be there if the line had nulls in it and was unsunder()ed
+ beforehand) as ^@'s. (DLR)
+ - Fix to properly treat ASCII 128-159 as control characters.
+ (DLR)
+- configure.ac:
+ - Added ms to ALL_LINGUAS (Jordi).
+ - Merged acconfig.h in (Jordi).
+ - Fixed so that --enable-debug defines DEBUG and undefines
+ NDEBUG. (Carl Drinkwater)
+- THANKS:
+ - Completed a bit (Jordi).
+ - Fixed David Benbennick's email address. (David Benbennick)
+ - Typo fix. (DLR)
+
+GNU nano 1.1.9 - 05/12/2002
+- General:
+ - Typos n misspellings all over the place (David Benbennick).
+ - Allow --tiny and --multibuffer to cooperate (who the heck
+ would want this is beyond me but ;-). Changes to
+ configure.ac, global.c, , (David Benbennick).
+ - Change to openfilestruct for multibuffer mode by DLR.
+ New functions nano.c:make_new_opennode(), free_openfilestruct(),
+ delete_opennode(), unlink_opennode(), splice_opennode(),
+ new struct openfilestruct in nano.h.
+ - Preliminary prepend code. This may be a bad idea, but I've
+ been wanting it for awhile now and we'll see how bad it messes
+ everything up. Changes to files.c:do_writeout(), write_file().
+ Fixes for O_CREAT & append compatibility by David Benbennick.
+ - Change from read() and write() to file streams by Jay Carlson.
+ Allows OS to implement read and write ahead rather than making
+ us do it. Hopefully merged properly.
+ - More cleanups with DISABLE flags, better free_shortcutage and
+ free_toggle, and get rid of unnecessary variable decls with
+ NANO_SMALL in shortcut_init() by David Benbennick.
+ - Added "syntax" command to .nanorc file, to allow multiple
+ syntaxes. New function color.c:update_color(), calls in various
+ files.c places, syntaxtype struct, global variables syntaxes,
+ syntaxfile_regexp and synfilematches. Global flag -Y ,--syntax
+ to specify the type on the command line, if there's no good
+ filename regex to use. Global variable syntaxstr.
+ - Changed many strcmp()s and strcpy()s to their equivalent
+ '\0' counterparts (David Lawrence Ramsey).
+ - Many changes to allow marked cutting to work with multiple
+ file buffers: changes to openfilestruct type in nano.h and
+ files.c (David Lawrence Ramsey).
+ - Changed NANO_SMALL to ENABLE_NLS for gettext disabling
+ (David Benbennick).
+ - Move next_key and pev_key definitions out of main() and into
+ global.c where they belong (David Benbennick).
+- color.c:
+ update_color()
+ - Add regfree call here to avoid memory leaks.
+- configure.ac:
+ - Define NDEBUG to silence asserts (David Benbennick).
+- files.c:
+ get_next_filename()
+ - Optimizations (David Benbennick).
+- global.c:
+ shortcut_init()
+ - Add missing free_shortcutage()s (David Benbennick).
+ thanks_for_all_the_fish()
+ - Only defined when using DEBUG, makes sense (David Benbennick).
+- nano.c:
+ die_save_file()
+ - Add missing free (David Benbennick).
+ do_justify()
+ - Optimizations (David Benbennick).
+ do_wrap()
+ - Complete rewrite (David Benbennick).
+ help_init()
+ - A little less readable, a lot shorter :-) (David Benbennick).
+ - Fix Meta-A not getting capitalized, and convert the ASCII
+ #s to their character equivalent.
+ main()
+ - Changed charalloc(), strcpy()s to mallocstrcpy()s.
+- nano.h:
+ - NANO_ALT_COMMAND and NANO_ALT_PERIOD were reversed (lol)
+ (David Benbennick).
+- nano.spec.in:
+ - Don't put Chris' name as the Packager in the distribution
+ by default (Im an idiot).
+ - Fixed Source line (David Lawrence Ramsey).
+- nano.1:
+ - Changed references to Debian GNU/Linux to Debian GNU (Jordi).
+- nano.1.html:
+ - Updated for -Y option (David Lawrence Ramsey).
+- rcfile.c:
+ - Made some rc file errors less fatal.
+ - Added in my patch for getpwent instead of relying on $HOME
+ (David Lawrence Ramsey).
+- winio.c:
+ edit_add()
+ - Changed some syntax highlight computations for the sake of COLS.
+ - Add in the necessary regfree() calls to stop nano from leaking
+ memory like a sieve when using color syntax highlighting :-)
+ bottombars(), onekey()
+ - Cleanups (David Benbennick).
+- po/gl.po:
+ - Galician translation updates (Jacobo Tarrio).
+- po/de.po:
+ - German translation updates (Michael Piefel).
+- po/fr.po:
+ - French translation updates (Jean-Philippe Guérard).
+- po/ca.po, po/es.po:
+ - Catalan and Spanish translation updates (Jordi).
+- po/sv.po:
+ - Swedish translation updates (Christian Rose).
+- po/nl.po:
+ - Dutch translation updates (Guus Sliepen).
+- po/it.po:
+ - Italian translation updates (Marco Colombo).
+- po/ru.po, po/uk.po:
+ - Russian and Ukrainian translation updates (Sergey A. Ribalchenko).
+- po/id.po:
+ - Indonesian translation updates (Tedi Heriyanto).
+- po/sv.po:
+ - Swedish translation updates (Christian Rose).
+
+GNU nano 1.1.8 - 03/30/2002
+- General
+ - Type misalignments and mem leaks in renumber_all, do_justify
+ and do_spell (Rocco & Steven Kneizys).
+ - New "External Command" code, originally by Dwayne Rightler,
+ various fixes and changes by Chris, Rocco and David Benbennick.
+ New function nano.c:open_pipe() and signal handler cancel_fork(),
+ changes to do_insertfile(), new list extcmd_list, cmd is
+ ^X after ^R.
+ - Added separate regex variable (color_regex and colormatches)
+ so that color syntax and regex search/replace can coexist.
+ - Added new nano.spec file from Brett <brett@bad-sports.com>,
+ added because maintaining the spec file is getting to be a large
+ hassle ;)
+- files.c:
+ check_writable_directory()
+ - Stat full_path, not path (Steven Kneizys).
+ open_pipe()
+ - I18nize the pipe error (DLR).
+ do_insertfile()
+ - Handle cancel from ExtCmd properly (David Benbennick).
+ read_file()
+ - Abort if we read a file of 0 lines (num_lines == 0), fixes BUG #70.
+ - Reverse tests to stop segfault on editing a new file of 0
+ lines (David Benbennick)
+ - Change input var to one char instead of array (David Benbennick).
+ - Move NO_CONVERT check up so chars get read in properly (DLR).
+- nano.c:
+ do_justify()
+ - More fixes for indented justify (David Benbennick).
+ do_int_speller()
+ - Fix zombie processes and spelling buffer issues (Rocco Corsi).
+ help_init()
+ - Capitalize Meta altkeys.
+ - Various fixes and string changes.
+ main()
+ - Put NANO_SMALL defines around toggle pointer (noticed by Jordi);
+ usage()
+ - Rewritten to encompass systems with and without GETOPT_LONG.
+ New function print1opt does most of the dirty work, stops
+ duplication of effort and eases translator's jobs. Also
+ breaks all the current translations ;-)
+- proto.h:
+ - Missing externs (Rocco).
+- rcfile.c:
+ do_rcfile()
+ - Reset lineno between system and local .nanorc file.
+ - Fix errno->strerror(errno) mismatch.
+ parse_rcfile()
+ - Don't use i for both for loop and atoi(), fixes lots of
+ potential crashes, 1st reported by Jean-Philippe Guérard.
+ rcfile_error()
+ - Don't print out the file name if we haven't opened the file
+ yet (lineno == 0).
+- search.c:
+ search_init()
+ - Fix a missing free (Rocco).
+ do_gotoline()
+ - Set placewewant if we actually move to a different line.
+- utils.c:
+ stristr()
+ - Defined regardless of NANO_SMALL (noticed by Jordi).
+ nperror()
+ - New wrapper for perror (David Benbennick).
+- winio.c:
+ do_credits()
+ - Add Thomas Dickey.
+ do_cursorpos()
+ - Make col numbering start from 1 (suggested by Andrew Ho).
+ update_line(), xpt()
+ - Add check for 127 (DLR).
+- po/sv.po:
+ - Swedish translation updates (Christian Rose).
+- po/de.po:
+ - German translation updates (Michael Piefel).
+- po/id.po:
+ - Indonesian translation updates (Tedi Heriyanto).
+- po/it.po:
+ - Serious typo.
+- po/ca.po, po/es.po:
+ - Catalan and Spanish translation updates (Jordi).
+ - Typo (DLR).
+- po/fr.po:
+ - French translation updates (Jean-Philippe Guérard).
+- po/gl.po:
+ - Galician translation updates (Jacobo Tarrio).
+- po/uk.po, po/ru.po:
+ - Russian and Ukrainian translation updates (Sergey A. Ribalchenko).
+- po/pl.po:
+ - Polish translation updates (Wojciech Kotwica).
+- po/fr.po:
+ - French translation updates (Jean-Philippe Guérard).
+- po/it.po:
+ - Italian translation updates (Marco Colombo).
+- po/da.po:
+ - Danish translation updates (Keld Simonsen).
+
+GNU nano 1.1.7 - 03/05/2002
+- General
+ - malloc->calloc, etc cleanups (DLR).
+ - New option, noconvert (-N, --noconvert) to completely stop
+ the translation of files from DOS or Mac format (DLR).
+ - New functions check_writable_directory() and safe_tempnam()
+ to get around the tempnam warning. More improvements (DLR)
+ Still needs testing.
+ - Added DOS and Mac format options to write file routine.
+ Changes to shortcut_init() and do_writeout().
+ - Removed stupid static definitions of toggles and shortcut
+ lists. Many changes to shortcut_init(), toggle_init(),
+ statusq(), nanogetstr(), main(), and many other places.
+ - Multibuffer mode now allows multiple empty filenames.
+ Changes to add_open_files(), removed open_file_dup_search(),
+ open_file_dup_fix(), etc (DLR).
+ - New code to handle multiple .save files. Changes to
+ die_save_file(), new function files.c:get_next_filename()
+ and utils.c:num_of_digits(). (Dwayne Rightler, DLR & Chris)
+ - Many malloc() cleanups and files.c tweaks by Steven Kneizys,
+ new functions utils.c:free_shortcutage() (got to love that
+ name!) & free_toggles(), and big cleanup program
+ thanks_for_all_the_fish() (originally
+ thanks_for_the_memories()). Mods to shortcut_init() by Chris.
+ - Preliminary quoting support for justify. New arg -Q,
+ --quotestr, changes to do_justify(), global variable
+ quotestr().
+- Makefile.am:
+ - Add SYSCONFDIR to DEFS, so we can have a $SYSCONFDIR/nanorc.
+ - Change localedir line to 1.0's version.
+ - Moved m4/ stuff to its own m4/Makefile.am.
+- m4/aclocal_inc.m4:
+ - New macro AM_ACLOCAL_INCLUDE, tells configure.ac where to look
+ for macros (Gergely Nagy).
+- configure.in:
+ - Renamed to configure.ac.
+- configure.ac:
+ - Moved to autoconf 2.52 (Jeff Bailey).
+ - Added call to AM_ACLOCAL_INCLUDE.
+- files.c:
+ read_byte()
+ - Added check for control characters (indicative of a binary
+ file), set NO_CONVERT if found (fixes by DLR).
+ do_insertfile()
+ - Added support for -o in prompt (Steven Kneizys).
+- global.c:
+ - Move openprev and opennext functions to shortcuts, they really
+ aren't toggles (DLR).
+- rcfile.c:
+ parse_next_regex()
+ - Allow " symbol to be in regex without leading \ by checking
+ for *ptr+1 is not the end of the regex.
+ do_rcfile()
+ - Parse rcfile in $SYSCONFDIR as well (Dwayne Rightler).
+- nano.1:
+ - Added Noconvert option to man page (DLR).
+- nano.c:
+ justify_format(), do_justify()
+ - Various fixes for starting blank spaces, spaces after
+ punctuation, & segfault with quoting strings (David Benbennick).
+ do_justify()
+ - Don't continue to justify string if it's indented more
+ (quoting wise) than the beginning of the justification.
+ help_init()
+ - Added message re: having multiple blank buffers (DLR).
+ main()
+ - Add 407 as equiv of 26, this seems to be sent when using
+ ^Z in linux console with keypad() enabled.
+- rcfile.c:
+ - Get rid of unneeded relativechars from rcopts (DLR).
+- search.c
+ do_replace(), findnextstr()
+ - Fixes for various search issues (Ken Tyler)
+- winio.c:
+ do_cursorpos()
+ - Rewritten to show col place as well as character place, without
+ needing an entirely separate flag.
+ bottombars(), onekey()
+ - Make bottom list dynamic with screen size (Guus Sliepen & Chris).
+ - More cleanups w/width of shortcut.
+- utils.c:
+ strcasestr(),revstrcasestr()
+ - Renamed to stristr and revstristr since strcasestr has not
+ been confirmed to be detected properly on various Linux
+ systems.
+ strstrwrapper()
+ - NANO_SMALL test was backwards (Ken Tyler).
+- winio.c:
+ strlenpt()
+ - Changed main function to strnlenpt() for new justify changes,
+ original function now just a stub.
+- nanorc.sample
+ - Mention unset in the sample nanorc.
+- po/ca.po, po/es.po:
+ - Catalan and Spanish translation updates (Jordi).
+- po/sv.po:
+ - Swedish translation updates (Christian Rose).
+- po/fr.po:
+ - French translation updates (Jean-Philippe Guérard).
+- po/nn.po:
+ - Norwegian nynorsk translation updates (Kjetil Torgrim Homme).
+- po/de.po:
+ - German translation updates (Michael Piefel).
+- po/it.po:
+ - Italian translation updates (Marco Colombo).
+- po/cs.po:
+ - Partial Czech translation updates (Vaclav Haisman).
+- po/hu.po:
+ - Hungarian translation updates, or to be precise, rewrite
+ (Gergely Nagy).
+- po/uk.po, po/ru.po:
+ - Russian and Ukrainian translation updates (Sergey A. Ribalchenko).
+- po/da.po:
+ - Danish translation updates (Keld Simonsen).
+- po/nb.po:
+ - Norwegian bokmål translation updates (Stig E Sandoe).
+- po/nl.po:
+ - Dutch translation updates (Guus Sliepen).
+- po/pl.po:
+ - Polish translation updates (Wojciech Kotwica).
+
+nano-1.1.6 - 01/25/2002
+- General
+ - Add Meta-A as alternate keystroke for ^^ for people with
+ non-US keyboards.
+ - Add Alt-G (NANO_ALT_GOTO_KEY) as alternate for goto dir in
+ browser.
+ - Better partial word checking code. New function
+ search.c:is_whole_word(), changes to findnextstr(),
+ and nano.c:do_int_spell_fix() (Rocco Corsi).
+ - Added multiple-line regex support. Format in .nanorc is
+ start="regex" end="regex". Cleaned up nanorc:parse_colors(),
+ added parse_next_regex(), changes to edit_add in winio.c(),
+ changes to colortype, cleaning up some old cruft.
+ - Upgrade to gettext 0.10.40, probably broke everything again :)
+ - Upgraded to and then downgraded from automake 1.5, as there
+ are severe security implications.
+- color.c:
+ do_colorinit()
+ - Moved some comments and braces around so color can work
+ w/slang (DLR).
+- global.c:
+ shorcut_init()
+ - Replace hard coded ALT_G and ALT_H values in the replace
+ and goto shortcuts with their macro counterparts NANO_ALT_*_KEY.
+- nano.c:
+ usage()
+ - Remove extra \n in --keypad description (Jordi).
+ main()
+ - Check that alt value is an alpha char before comparing to
+ val - 32, fixes Alt-R calling doprev instead of replace.
+ do_char()
+ - Run edit_refresh() if ENABLE_COLOR is defined so adding
+ multi-liners will update (e.g. /* in C).
+ do_int_spell_fix()
+ - Temporarily unset REVERSE_SEARCH if it's set (Rocco Corsi).
+ do_suspend()
+ - Call tcsetattr() to restore the old terminal settings, so
+ tcsh can use ^C after suspend for example (fixes BUG #68).
+ do_wrap()
+ - Move "right" increment to part where new line is created,
+ should change (fix?) some wrapping problems with autoindent.
+ version()
+ - Show --enable-multibuffer independently of --enable-extra being
+ compiled in (Jordi).
+- nano.h:
+ - Changed color struct slightly, because of previous issue with
+ applying color painting in order, the "str" portion was
+ useless. Renamed "val" in colortype to "start", added "end"
+ for multi-line color strings.
+- rcfile.c:
+ General
+ - Took silly variables being passed everywhere like lineno and
+ filename and made them static variables.
+ - Re-indented.
+ - Added stdarg.h to includes.
+ rcfile_error()
+ - Now automatically prepends the "error in line blah at foo"
+ message to error messages.
+ parse_colors()
+ - Added section for computing "end" section.
+ parse_next_word()
+ - Added support for "\ ", in word parsing.
+- search.c:
+ do_search()
+ - Check position of cursor and return value of findnextstr and
+ tell user if search string only occurs once (Rocco & Chris).
+ findnextstr()
+ - Fix off by one in check for wrap around (Rocco Corsi).
+- winio.c:
+ edit_refresh()
+ - Rename lines to nlines to fix AIX breakage (reported by
+ Dennis Cranston, re-reported by arh14@cornell.edu).
+ edit_add()
+ - Refuse to honor regex matches of 0 characters when applying
+ color highlighting, and say so on the statusbar. Otherwise
+ we go into an infinite loop, the error message should clue
+ users into the fact that their regex is doing something bad.
+- THANKS:
+ - Oops, correct Eivind's entry. His translation was Norwegian nynorsk,
+ not bokmål as we claimed (Jordi).
+- .cvsignore
+ - Added config.guess config.sub install-sh missing & mkinstalldirs
+- po/ca.po, po/es.po:
+ - Catalan and Spanish translation updates (Jordi).
+- po/sv.po:
+ - Swedish translation update (Christian Rose).
+- po/de.po:
+ - German translation update (Michael Piefel).
+- po/fr.po:
+ - French translation update (Jean-Philippe Guérard).
+- po/ru.po, po/uk.po:
+ - Russian and Ukrainian translation updates (Sergey A. Ribalchenko).
+- po/no.po:
+ - Moved to po/nn.po, which is the correct name for Norwegian nynorsk.
+- po/nn.po:
+ - Norwegian nynorsk translation updates (Kjetil Torgrim Homme).
+- po/nb.po:
+ - New Norwegian bokmål translation (Stig E Sandoe <stig@ii.uib.no>).
+- po/da.po:
+ - Danish translation update (Keld Simonsen).
+
+nano-1.1.5 - 01/05/2002
+- General
+ - Better integration of View mode (-v) and multibuffer.
+ Fixes to new_file(), do_insertfile_void(), shortcut_init()
+ (David Lawrence Ramsey).
+ - The keypad handling has changed (again). We now use
+ the keypad() function by default. New flag -K, --keypad
+ allows the old behavior for those using the keypad arrow keys
+ and rxvt-based terminals.
+ - Updated copyright notices to 2002 (Jordi).
+- nano.c:
+ die()
+ - Only save files that were modified (David Lawrence Ramsey).
+ do_cont()
+ - Run signal_init() after doupdate() so ^Y wont suddenly
+ start suspending after returning from ^Z suspend in Hurd.
+ signal_init()
+ - Unconditionally disable VDSUSP if it exists, stops ^Y
+ suspending nano on the Hurd.
+ help_init()
+ - Typo fixes in help strings (Jordi).
+ - New variable helplen needed cause currslen is not always
+ the length we want (bug found by David Lawrence Ramsey).
+ - Typo in file switch string (found by David Lawrence Ramsey).
+ main()
+ - Handle Alt prev/next file keys (,.), as well as normal ones (<>).
+ - Handle OS-specific insert keys by jump to do_insertkey (David
+ Lawrence Ramsey).
+- files.c:
+ read_file()
+ - Make conversion message less confusing (suggested by Jordi).
+- rcfile.c:
+ parse_next_word()
+ - Get rid of ptr == \n check to abort, screws up option
+ parsing (bug found by David Lawrence Ramsey)
+- winio.c:
+ update_line()
+ - set realdata check to >= 1 && <= 31, lack of > 0 check screwed
+ high ascii characters.
+ titlebar()
+ - gettextized a pair of strings.
+ bottombars()
+ - Get rid of that annoying reversed line when color is on! :)
+ edit_add()
+ - Little fixes to let color highlights not bleed onto the next line.
+ statusq()
+ - Initialize "list".
+- m4/gettext.m4:
+ - Back down to 1.1.3 version.
+- faq.html:
+ - Various link updates and other fixes (Aaron S. Hawley).
+ - Typo fixes (David Lawrence Ramsey).
+- AUTHORS
+ - Add DLR.
+- po/sv.po:
+ - Swedish translation update (Christian Rose).
+- po/ru.po, po/uk.po:
+ - Russian and Ukrainian translations updates (Sergey A. Ribalchenko).
+- po/ca.po, po/es.po:
+ - Catalan and Spanish translations updates (Jordi).
+- po/pl.po:
+ - New Polish, partial translation, by Cezary Sliwa <sliwa@cft.edu.pl>.
+ - Wojciech Kotwica <wkotwica@post.pl> completed it and is the new
+ official maintainer.
+- po/fr.po:
+ - French translation update (Michel Robitaille).
+- po/gl.po:
+ - Galician translation update (Jacobo Tarrío).
+- po/it.po:
+ - Italian translation update (Marco Colombo).
+- po/de.po:
+ - German translation update (Michael Piefel).
+- po/fr.po:
+ - French translation update (Jean-Philippe Guérard).
+
+nano-1.1.4 - 12/11/2001
+- General
+ - Preliminary syntax highlighting support. New functions
+ colortoint() and parse_color() in rcfile.c, new code in
+ edit_add() in winio.c to actually do the highlighting. It's
+ not even close to pretty yet :P
+ - Many int/long alignments (David Lawrence Ramsey).
+- files.c:
+ - Fixes for tab completion and screen refresh (David Lawrence
+ Ramsey).
+ add_open_file()
+ - Get rid of unsetting MARK_ISSET because otherwise writing
+ marked text will automatically unset the marker with
+ multibuffer enabled.
+- global.c:
+ - Define currshortcut and currslen when either DISABLE_MOUSE
+ or DISABLE_HELP or DISABLE_BROWSER is not defined (Silvan
+ Minghetti).
+- nano.c:
+ main()
+ - Add Esc-[-[IGL] keys for FreeBSD Console (PgUp,PgDn,Insert).
+ - Added better Hurd support for function keys (Alt-V,U,9,@,F).
+ signal_init()
+ - do SIG_IGN for the SIGTSTP sigaction regardless of whether
+ we have _POSIX_VDISABLE or not (more Hurd fixes)
+ help_init()
+ - Typo fixes and additions to the new help texts.
+ do_curpos()
+ - Now takes arg for constant updating to always show the cursor
+ position (David Lawrence Ramsey).
+ do_wrap()
+ - Many fixes (David Lawrence Ramsey).
+ do_spell()
+ - Dont prompt for replace if we don't change the word in
+ question (Rocco Corsi).
+- po/de.po:
+ - German translation updates (Karl Eichwalder).
+- po/ru.po:
+ - Russian translation updates (Sergey A. Ribalchenko).
+- po/sv.po:
+ - Swedish translation updates (Christian Rose).
+- po/da.po:
+ - Danish translation updates (Keld Simonse).
+- po/es.po:
+ - Spanish translation updates (Jordi).
+- po/fr.po:
+ - French translation updates (Michel Robitaille).
+- m4/gettext.m4:
+ - diff against mutt 1.2.5's gettext.m4.
+
+nano-1.1.3 - 10/26/2001
+- General
+ - Finally wrote function-specific help mode. Changes to
+ nano.c:help_init() and winio.c:do_help(). Changed
+ currshortcut and currslen #ifdefs to depend on both
+ DISABLE_HELP and DISABLE_MOUSE being defined to not
+ include. Changed all the shortcuts and lengths.
+ - Fixed null_at to ACTUALLY DO SOMETHING with its arg. Again,
+ this was causing nasty errors if the call to nrealloc moved
+ where the data was located.
+ - Changed header comments to say "version 2" instead of "version
+ 1" as the COPYING file is actually version 2 of the GPL (bug
+ noticed by Jordi Mallach).
+- cut.c:
+ do_cut_text()
+ - Check to see whether marked text is contained within edit
+ window and if so only do an edit_refresh (variable dontupdate
+ replaces cuttingpartialline).
+ do_uncut_text()
+ - Similar display fixes (David Lawrence Ramsey).
+- faq.html
+ - Removed nano-editor.org FTP site address [deprecated] and added
+ the GNU one.
+- files.c:
+ - Added status messages for converted DOS and Mac files.
+ People should know that their file wasnt normally formatted.
+ load_file()
+ - Status message when trying to load an already loaded file with multiple
+ buffers (David Lawrence Ramsey).
+ read_file()
+ - Get rid of useless linetemp variable and name num_lines int
+ (David Lawrence Ramsey).
+- nano.c:
+ - New function do_prev_word, similar to do_next_word. Hard coded as
+ Alt-space, as next word is hard coded as control-space. Fixed
+ goofy logic setting x pos to value of last line when hitting the
+ beginning of first line, prog should simply abort. Added
+ the #ifdefs around the code in main().
+- nano.h:
+ - Additional #define, SMALL_TOO to determine how long
+ MAIN_LIST_LEN is. We need this because of the find matching
+ bracket code.
+ main()
+ - Moved #ifndef NANO_SMALL down past the case 0: line so
+ control-space doesn't insert a \0 (ack!)
+- rcfile.c:
+ - Fix incorrect number of rc options (David Lawrence Ramsey).
+- po/sv.po:
+ - Updated Swedish translation (Christian Rose).
+- po/da.po:
+ - Updated Danish translation (Keld Simonsen).
+- po/es.po:
+ - Style updates to Spanish translation (Santiago Vila).
+- po/ru.po, po/uk.po:
+ - Updated Russian and Ukrainian translation (Sergey A. Ribalchenko).
+
+nano-1.1.2 - 10/03/2001
+- General
+ - Added BUGS #63 & 64. Fixes in search_init() and nanogetstr(),
+ new flag CLEAR_BACKUPSTRING because there's no easy way to
+ clear the backupstring without making it global (messy), so we
+ use a flag instead (just as messy?)
+ - --enable-tiny now leaves out the Auto Indent code, do you really
+ need that on a bootdisk? =-)
+ - New flag -o, --operatingdir, similar to Pico's -o mode. New
+ function check_operating_dir(), changes to load_file (arg),
+ open_file_dup_search (arg), new function do_gotopos for -F
+ (David Lawrence Ramsey).
+ - Code to read/write dos formatted files. Massive amounts of
+ new code in read_line and write_file. New cmdline flag
+ (-D --dos) to automatically write the file in DOS format,
+ regardless of the original format.
+ - Mac file writing supported too. Flag -M, --mac. Toggle
+ Meta-O (MacOS? OS-X? =-)
+ - New smooth scroll code by Ken Tyler. New flag -S, --smooth,
+ changes to page_up() and page_down(). Many fixes to paging by
+ David Lawrence Ramsey.
+ - Bracket (brace, parens, etc) matching code by Ken Tyler.
+ New functions do_find_bracket(), changes to findnextstr(),
+ command is Meta-] (hope you dont mind since I already sold off
+ Meta-O to the MacOS file code Ken...) Fixes to bracket_msg
+ by DLR.
+ - Call do_gotopos from do_alt_spell() to keep position
+ consistent when invoking alt speller (DLR).
+ - Readded DISABLE_CURPOS because in certain instances (like
+ all the "Search Wrapped" lines) the cursor position will
+ be different yet we don't want the cursor position displayed.
+ - Take control-space out of -tiny build, unneeded.
+- cut.c:
+ cut_marked_segment()
+ - Add magic line when cutting a selection including filebot
+ (discovered by DLR, fixed by DLR & Chris, fixes BUG #66).
+ do_cut_text()
+ - Don't recenter the line when cutting one line (DLR) (Bug #65).
+- faq.html:
+ - Notes about the Free Translation Project.
+ - Debian additions.
+- files.c:
+ do_writeout()
+ - Expanded strings to not use %s and ?: to determine
+ write/append string to be nice to translators.
+ new_file()
+ - Initialize totsize (DLR).
+- nano.c:
+ main()
+ - Added var constcheck as a CRC-like check of whether cursor
+ pos has changed and if so update the pos with -c.
+ - Many tweaks and changes from numerics to char equivs
+ (David Lawrence Ramsey).
+ - Fix the KEY_IC being undefined when using slang.
+ do_mouse()
+ - Send 27 when the menu item clicked is an alt key seq... The
+ lines aren't lined up since the menu width changed though,
+ this breakage depends on whether the new widths will be kept
+ or not (FEEDBACK!!)
+ - Change k based on currslen to allow the new widths in
+ bottombars().
+ do_wrap()
+ - Fixes for Pico incompatibility in cases 2b and 2c.
+ (David Lawrence Ramsey).
+ global_init()
+ - New arg save_cutbuffer, allows cutbuffer to not be lost when
+ using multibuffer.
+- nano.1:
+ - Added new features, fixed some typos (Jordi).
+- nano.texi:
+ - Corrected the Mouse Toggle section, noticed by Daniel Bonniot.
+ - Added many command line options, toggles and other additions
+ (Jordi).
+- rcfile.c:
+ - NUM_RCOPTS fix (DLR).
+ - Add tabsize support to rc file (Nathan Heagy).
+ - Fix incorrect argument in fill and tabsize error message
+ (Nathan Heagy)
+- search.c:
+ - Changed search prompt to "Search" followed by a list of
+ bracketed, free-standing modifiers that do not imply a grammar,
+ and the (to replace) string separately. Hopefully this resolves
+ the i18n problems that this provoked.
+ findnextstr()
+ - Various fixes that need testing (Ken Tyler).
+- winio.c:
+ - Add David Lawrence Ramsey to credits.
+ bottombars()
+ - Spread out the menu items, feedback definitely needed on this.
+ nanogetstr()
+ - More key fixes (David Lawrence Ramsey)
+ - Don't be clever and wasteful, just repaint every iteration.
+- po/nl.po:
+ - New Dutch translation, by Guus Sliepen <guus@nl.linux.org>.
+- po/ca.po, po/es.po:
+ - Updated Catalan and Spanish translation (Jordi).
+- po/gl.po:
+ - Updated Galician translation (Jacobo Tarrío).
+- po/da.po:
+ - New Danish translation, by Keld Simonsen <keld@dkuug.dk>.
+- po/sv.po:
+ - Updated Swedish translation (Christian Rose).
+- po/it.po:
+ - Updated Italian translation (Marco Colombo).
+- po/fi.po:
+ - Updated Finnish translation (Pauli Virtanen).
+
+nano-1.1.1 - 07/28/2001
+- General
+ - Reverted included gettext from 0.10.38 to 0.10.35 in intl/ dir.
+ - Added m4/ directory to allow rebuilding using only the internal
+ version of gettext.m4 (Albert Chin).
+- nano.c:
+ main()
+ - Change the multibuffer getopt option to 'F' (David Lawrence
+ Ramsey)
+ do_mark()
+ - Temporarily disable cursorpos when enabled to be able to see
+ the mark (un)set message (Ken Tyler).
+- nanorc.sample
+ - Typo fixes and updates (David Lawrence Ramsey)
+- files.c:
+ new_file()
+ - Do add_open_files if there aren't any open yet (David Lawrence
+ Ramsey).
+ close_open_file()
+ - Try to open the next file first, then the previous one
+ (David Lawrence Ramsey).
+- global.c:
+ shortcut_init()
+ - Rewrote the whereis and replace lists to put CANCEL at the end
+ of the list, and not include the toggle functions when using
+ NANO_SMALL.
+- nano.h:
+ - Fix type in INSERTFILE_LIST_LEN.
+ - Rewrote all the macro definitions to be a little less messy,
+ for the #ifdefs anyway.
+- rcfile.c:
+ - Update for the multibuffer option (oops) (David Lawrence Ramsey).
+- search.c:
+ - Added #ifdef NANO_SMALLs around the REVERSE_SEARCH code.
+ search_init()
+ - add #ifdef NANO_SMALL around toggles code.
+- winio.c:
+ bottombars()
+ - Fixed an off by one that wasn't letting lines with odd #
+ shortcuts work in certain cases.
+
+nano-1.1.0 - 07/15/2001
+- General
+ - New global variables currshortcut and currslen to support using
+ the mouse with the shortcuts. Also supports clicking on files
+ in browser. Added #ifdef DISABLE_MOUSE around this code also.
+ - Changed mouse disabling code from depending on --enable-tiny
+ to its own flag, --disable-mouse. The --tiny option defines
+ this automatically, but now just mouse support can be disabled
+ if desired.
+ - File Browser supports the "Goto Directory"
+ - Added rcfile.c source file. Only includes much of anything when
+ --enable-nanorc is used. Tons of new funcs, most notably
+ do_rcfile() called from nano.c:main(). Added much needed
+ function ncalloc(), will have to go through source code later
+ and change the appropriate calls which used nmalloc for lack of
+ an appropriate calloc function *** FIXME ***
+ - After "Alternate" spell checker is called, cursor is repositioned on
+ the same line as before ^T was pressed.
+ - Moved config.h up in all .c files #include list (Albert Chin).
+ - Added config.guess and config.sub to distribution because,
+ apparently, newer autoconf/automakes can't live without them.
+ - Various spelling updates by David Lawrence Ramsey.
+ - Changed all string allocations to charalloc(), new function
+ designed to take nmalloc argument but call calloc based on
+ (char *) size.
+ - New macro DISABLE_WRAPJUSTIFY to easily check for both wrapping
+ and justify being disabled. This allows us to compile out the
+ -r flag if neither are set, and will also allow us to comment
+ out -W when it is written.
+ - Allow fill to take a negative value to signify a "from right side"
+ value. This allows the value to vary with the screen size yet
+ still be correct. New static value wrap_at to minimize code
+ impact. Updated man page and info file.
+ - Allow file appending. New shortcut list nano_insertfile_list (since
+ insert and write routines can't share shortcut lists anymore),
+ new args to do_writeout and write_file called append, and of source
+ code changes to those functions.
+ - Allow backwards searching. Drastic rewrite of the search prompt
+ string by Chris. All other code by Ken Tyler. New globals
+ nano_reverse_msg, new functions revstrstr and revstrcasestr,
+ many changes to search functions. Not too big a code size
+ increase!
+ - Moved extension functions (Case Sensitive, Regexp, and Backwards
+ Search, Append key in write file function) to Meta keys, as
+ people are complaining loudly about nano not being control-key
+ compatible with Pico, which is a Bad Thing (TM). Changes to
+ shortcut_init, toggle_init, new toggles for backwards and regexp
+ (and you can now toggle all search options including regexp at
+ the Search: prompt!) Changes to nanogetstr to enable Meta
+ keys to be grabbed, changes to onekey to print M-style shortcuts.
+ - New macro TOGGLE which just toggles, no more silly checking
+ ISSET and then using SET or UNSET when we want a simple toggle
+ for a flag.
+ - Added multiple buffer capability (God help us). New configure
+ option --enable-multibuffer (-F), changes to do_insertfile(),
+ do_insertfile_void(), toggle_init(), do_gotoline(), edit_update(),
+ and write_file(), new functions add_open_file(),
+ open_file_change_name(), load_open_file(), open_file_dup_search(),
+ open_file_dup_fix(), open_prevfile(), open_nextfile(),
+ close_open_file(), get_full_path(), die_save_file(), etc.
+ (David Lawrence Ramsey).
+ - Using --enable-extra automatically defines --enable-multibuffer
+ changes to version() and configure.in.
+ - Moved to gettext 0.10.38 at the last second, sure to break
+ something, but at least I can run make distcheck!
+- Makefile.am:
+ - Include ABOUT-NLS and the new THANKS files to the distributed list.
+- THANKS:
+ - Initial, incomplete list of people to thank.
+ - Added some more people.
+- configure.in:
+ - New option, --enable-nanorc, which allows people to have a .nanorc
+ initialization file and set options normally used on the command
+ line, and color later on.
+ - Added --enable-color option to allow color and syntax highlighting
+ (stub as of now).
+- cut.c:
+ add_to_cutbuffer()
+ - Remove useless statements (Rocco).
+ cut_marked_segment()
+ - Add bizarre copy of bot node, else *BSD goes ballistic (fixes
+ BUG #60).
+ - Added 'destructive' argument. Allows the selected text to be
+ added to the cutbuffer without changing the contents of the
+ file. This allows writing selection to separate files.
+ do_cut_text()
+ - If the line is empty when using -k and wasn't already added,
+ create a dummy line and add it to the cutbuffer (fixes bug #61)
+ - Reset marked_cut if we blow away the cutbuffer.
+ - Moved the case of current == mark_beginbuf into cut_marked
+ segment, so do_writeout could call it when writing selection to
+ file.
+ do_uncut_text()
+ - Reset cutbuffer even if we're uncutting marked or cut to end text!
+- faq.html:
+ - Brought the FAQ up to date, many little changes (Jordi).
+ - Added sections 3.7 and 3.8 for the multibuffer and nanorc support.
+- files.c:
+ do_browser()
+ - Minor fixes to the processing of SELECT function (Rocco)
+ - Added the "Goto Directory" code (Rocco)
+ - Don't shift the size of the file is it's less than 1K. Fixed
+ files less than 1K being displayed as 0B (Rocco).
+ - More Picoish keystrokes for the browser, ^P, ^N, etc, for up,
+ down, etc, and add the consistent ^C to exit (Jim Knoble).
+ do_writeout()
+ - New code to allow writing selected text to a separate file.
+ When this is done, the current state is preserved.
+ write_file()
+ - New arg, nonamechange, means whether or not to update the
+ current filename after writing the file out.
+ - Increment lineswritten when the very last line isn't null.
+ Fixes off by one count when writing selection to file.
+- global.c:
+ - Updated some of the lists for the "Goto Directory" code (Rocco)
+- move.c:
+ page_up()
+ - Rewritten with a loop to make screen updates work when
+ mark is set (fixes bug #59).
+ do_home(), do_end()
+ - Don't keep cutbuffer.
+- nano.1:
+ - Added the missing -r flag (Jordi).
+- nano.c:
+ do_alt_speller()
+ - Reposition cursor on same line as before ^T was called (Rocco)
+ ABCD(), main()
+ - Add Alt-whatever-[a-d] support as well as Alt-whatever-[A-D].
+ main()
+ - Code to silently process "-g" and "-j" (Rocco)
+ - Added Alt-[-7,8 support for home/end keys (Jeff Teunissen).
+ signal_init()
+ - Reorder sigaction calls, use sigfillset() to stop SIGTSTP and
+ SIGCONT from being interrupted, allows suspending nano
+ to work more reliably, esp. with mutt, etc.
+ do_suspend()
+ - Don't try to play with the handler inside the handler. Just
+ raise a SIGSTOP. We also now write the "use "fg"" message to
+ stdout instead of stderr.
+ - Added _POSIX_VDISABLE macro to fully ignore suspend keystroke.
+ Eliminates the possibility that nano can be suspended when
+ it's not supposed to be. Many many many thanks to Jordi and
+ Tom Lear for helping out finding and fixing this bug!
+ do_cont()
+ - Now just does a refresh call instead of playing with the SIGTSTP
+ handler.
+- nano.h:
+ - Updated the BROWSER_LIST_LEN for the "Goto Directory" code (Rocco)
+- proto.h:
+ - New shortcut list added: gotodir_list (Rocco).
+- search.c:
+ do_gotoline()
+ - Optimizations, remove "$" goes-to-last-line, less messages (Rocco)
+ do_replace()
+ - If we manage to make it in somehow with VIEW_MODE on, abort
+ nicely (fixes BUG #59).
+- utils.c
+ strcasestr()
+ - Replaced by mutt's mutt_stristr function, because the thought
+ of dynamically allocating memory and copying each line in a file
+ to do a search or replace was causing me to lose sleep.
+- winio.c:
+ actual_x()
+ - Remove inline from function decl (Albert Chin).
+- po/POTFILES.in:
+ - Added utils.c to the list.
+- po/es.po, po/ca.po:
+ - Updated (Jordi).
+- po/gl.po:
+ - Galician translation by Jacobo Tarrío.
+- po/uk.po, po/ru.po:
+ - New Ukrainian and Russian translations by Sergey A. Ribalchenko
+ <fisher@obu.ck.ua>, thanks!
+- po/id.po:
+ - Updated Indonesian translation by Tedi Heriyanto.
+- po/it.po
+ - Updated Italian translation by Marco Colombo.
+- po/no.po:
+ - New Norwegian translation by Eivind Kjørstad <ekj@vestdata.no>.
+- po/sv.po:
+ - New Swedish translation by Christian Rose <menthos@menthos.com>.
+
+nano 1.1 tree forked here 04/07/2001
+
+nano 1.0.1 - 04/06/2001
+- General:
+ - added configure option --disable-wrapping. Does what it says,
+ no wrapping or checks are done. Separate from --enable-tiny,
+ some may want a bare-bones Pico clone that does wrap text.
+ Affects configure, nano.c:do_char() and check_wrap() obviously,
+ version(), and do_char().
+- aclocal.m4:
+ - Minor patch for intl check (really this time) (Albert Chin)
+- faq.html:
+ - Fixed typo in section 6.1 (discovered by Bob Farmer).
+- files.c:
+ - fix two typos in comments, one in ChangeLog (Matthias Andree)
+ diralphasort()
+ - Stop abort on symlinks (Matthias Andree)
+ - use strcasecmp to sort directory if available, pilot does that
+ as well (Matthias Andree)
+ filestat(), do_browse()
+ - Changed lstat calls to stat, which fixes the browser not
+ following links to directories. We only use lstat() when
+ printing the details of the file, and if it is a link, then
+ check via lstat() for link to a directory. If it is
+ a directory, display (dir), else use the normal "--".
+ do_browser()
+ - Fix broken size suffix off-by-one errors (Matthias Andree)
+ cwd_tab_completion(), do_browse_from()
+ - Use PATH_MAX instead of 0 arg to getcwd (Matthias Andree).
+ - Changed above to use PATH_MAX only when defined on the
+ system, as the HURD e.g. does not support it.
+- intl/Makefile.in:
+ distclean
+ - added intl/libintl.h to the rm -f rule, should fix the unresolved
+ gettext symbols problem (Jordi).
+
+nano-1.0.0 - 03/22/2001
+- General
+ - Added void to functions declared as () args, nano.c:do_mark()
+ and search.c:regexp_cleanup(). (Christian Weisgerber).
+ - Changed internal variables called "new" to "newnode" to avoid
+ the "new" C++ reserved word, even though there is likely no way
+ nano will EVER be compilable with a C++ compiler. (suggested by
+ Rocco Corsi).
+- ca.po, es.po:
+ - Final tweaks for Nano 1.0.
+- cs.po:
+ - Czech translation from Vaclav Haisman.
+- nano.info:
+ - Added dir entry (Albert Chin).
+- winio.c:
+ statusq()
+ - Added NANO_BACK_KEY and NANO_FORWARD_KEY cases for left and right.
+
+1.0-test prerelease - 03/17/2001
+- nano.c:
+ do_wrap()
+ - Added case for autoindenting text causing new line (Adam).
+ - Added SAMELINE case to above. Added checks to cases 1b and
+ 2b for placement of cursor.
+- move.c:
+ page_down()
+ - Check for totlines < editwinrows in check for superfluous
+ edit update (fixed BUG #57).
+- search.c:
+ print_replaced()
+ - s/occurence/occurrence typos (Jordi).
+ search_init()
+ - If using Pico mode and regex and same answer is entered, use
+ last_search string instead of answer (fixes BUG #56).
+- nano.texi:
+ - Meta-Z correction and grammar in --enable-tiny desc (Neil Parks).
+
+nano-0.9.99pre3 - 02/19/2001
+- General
+ GNU compliance issues:
+ - Reworked shortcut list, put "Get Help" into default list,
+ removed "Goto Line", aligned "Read File" with "Write Out" and
+ "Replace" with "Where is" for consistency.
+ - Added texinfo manual nano.texi. Added texi options to
+ Makefile.am.
+- configure.in:
+ - Autoconf compatibility fixes (Pavel Roskin)
+ - Added separate check for resizeterm().
+ - ALL_LINGUAS: added hu and ca.
+- cut.c:
+ do_cut_text()
+ - marked text cut fixes (Rocco) (Fixes bug #54).
+- nano.c:
+ do_delete()
+ - Added check for current->next == fileptr, as we have a magic
+ line code again, fixes silliness at the end of the last line
+ before the magic line (reported by J.A. Neitzel).
+ do_justify()
+ - If the keystroke after the justify is not the unjustify key,
+ blank the statusbar (bug reported by Neil Parks).
+ main()
+ - Added ENABLE_NLS check around gettext stuff.
+- winio.c:
+ do_yesno()
+ - Added localized yes, no and all strings to function and rewrote
+ handler for the new format.
+- de.po:
+ - Translation updates by Florian König.
+- fi.po:
+ - Translation updates by Pauli Virtanen.
+- hu.po:
+ - Hungarian translation by Horvath Szabolcs.
+- id.po:
+ - Translation updates by Tedi Heriyanto.
+- es.po:
+ - Translation updates and grammatical/typo fixes (Jordi).
+- ca.po:
+ - Catalan translation by Jordi Mallach :)
+ - Miquel Vidal <miquel@sindominio.net> went over it and corrected
+ many typos and completed bits that remained untranslated by error.
+
+nano-0.9.99pre2 - 01/31/2001
+General
+ - Removed center_x and center_y globals. center_y was
+ completely unused and center_x was only used a few places,
+ easily replaced with COLS / 2 (oops, not current_x & y (Rob)).
+ - Deleted free_node, duplicate of delete_node, and changed all
+ free_node calls to delete_node.
+ - Fix for resizing the window in modes other than normal edit mode
+ Changes to handle_sigwinch(), main(). Fixes bug #52 (Rocco).
+- files.c:
+ write_file()
+ - Don't free() realname on error, if it needs to be free()d later
+ it will be (fixes crash on successful write after failed write,
+ discovered by David Sobon).
+ username_tab_completion()
+ - Optimization and removal of useless vars (Rocco).
+ - Rewritten using getpwent (suggested by Rocco).
+ - Removed redundant conditional (Rocco).
+ real_dir_from_tilde()
+ - Rewritten using getpwent (suggested by Adam, much optimized by
+ Rocco).
+- global.c:
+ - Don't define toggles global or toggle_init_one if using --tiny.
+- nano.c:
+ do_justify()
+ - Added restoration of totsize after unjustify command.
+ usage()
+ - Add arg to -T help (Rocco).
+ global_init(), handle_sigwinch()
+ - Messy loops replaced with memset calls (Rocco).
+ do_alt_speller()
+ - Added code to parse multi-word alt_speller strings.
+ - Fix initialization before fork() (Rocco).
+- proto.h:
+ - Fix do_credits() proto (oops!)
+- winio.c:
+ nanogetstr()
+ - Sanity check for x overrunning the string buffer len.
+
+nano 0.9.99pre1 - 01/17/2001
+General
+ - Changed #ifdefs to check for both DISABLE_TABCOMP and
+ NANO_SMALL, makes tiny option leave out tab completion, which
+ should be left out in that circumstance. Saves at least 5k.
+ - Previous change to #ifdefs DISABLE_TABCOMP and NANO_SMALL rolled
+ back. (Rocco)
+ - Various #ifdef & #ifndef cleanups. (Rocco)
+ - Added message for when keypad goes awry. Added code in main and
+ function print_numlock_warning() to notify user, and added an
+ appropriate section in the faq to refer to this brokenness.
+ - Added macros in nano.h for magic values that might be unclear in
+ nano.c:global_init(). (Rocco)
+- configure.in:
+ - Fix for _use_keypad check breaking slang support (Christian
+ Weisgerber).
+ - Changed to automatically define the 5 DISABLE variables when
+ NANO_SMALL (enable-tiny) is requested at configure.
+- faq.html:
+ - Added some info on making the binary smaller with the configure
+ script.
+ - Added section on keypad bugginess.
+- files.c:
+ real_dir_from_tilde()
+ - Oops, fix case where buf ="~", silly crash (bug discovered by
+ Neil Parks).
+ do_browser()
+ - Added space and - keys to do page up and down.
+ cwd_tab_completion(), input_tab()
+ - Changed bare malloc/calloc calls to nmalloc (found by Rocco).
+ - Added memset() to matchBuf to ensure sanity (Rocco, Adam).
+- nano.c:
+ ABCD()
+ - New function, figures out what kbinput to return given
+ input common to several switch statements, allows us to
+ support the default Konsole key settings.
+ main()
+ - Alternate speller option no longer valid if DISABLE_SPELLER is
+ active. (Rocco)
+ - Removed direct calls to usage() (#else) for -k (cut) or -s (speller)
+ options when these have been disabled. (Rocco)
+ - Initialized kbinput to get around stupid compiler warning.
+ nano_small_msg()
+ - This function has been removed. All references now call
+ nano_disabled_msg. (Rocco)
+ version()
+ - When NANO_SMALL (enable-tiny) is defined, the 5 main DISABLE
+ variables (SPELLER, HELP, JUSTIFY, BROWSER, TABCOMP) are not
+ reported as enabled when Nano is called with -V (--version)
+ command line option. (Rocco)
+ usage()
+ - Alternate speller option no longer valid if DISABLE_SPELLER is
+ active. (Rocco)
+ window_init(), handle_sigwinch()
+ - Added check for not having enough LINES to do anything useful,
+ if so die with an error. (Rocco)
+ die_too_small()
+ - Function to print the window too small error message, avoids
+ repeated string defs and globals.
+ do_justify()
+ - Small fix for totsize calculation (Rob)
+
+- fi.po:
+ - Update by Pauli Virtanen.
+
+nano 0.9.25 - 01/07/2001
+General -
+ - New file browser code. New functions in files.c:do_browser(),
+ helper functions browser_init(), tail(), striponedir(),
+ filestat(). New shortcut list browser_list. Some new
+ strings to translate. Added function do_browse_from().
+ - Keypad code has been changed slightly. Now checks for
+ _use_keypad flag in window to see whether or not to turn
+ the keypad() back off when finished (taken from aumix). Moved
+ to winio.c where it should probably be anyway. New configure
+ check for _use_keypad in window struct. This will have to do
+ for now.
+ - Moved keypad() calls for PDCurses from main() to window_init()
+ so the keypad continues to work after a Meta-X, for example.
+ Fixed bug #51.
+- faq.html:
+ - Fix typos and small mistakes (Jordi).
+- files.c:
+ username_tab_completion()
+ - Added the (char *) sizeof when allocating memory for the filename
+ array (Rocco).
+ cwd_tab_completion()
+ - removed skipping . and .. when tabulating matches.
+ - Added the (char *) sizeof when allocating memory for the filename
+ array (Rocco).
+ do_writeout()
+ - Now takes an argument so the string typed in can be retained
+ when calling the browser.
+ do_browser()
+ - Don't decrement longest by the length of path. Fixes crashes
+ on entering various dirs (Rocco).
+ - Don't ungetch() the exit key, unneeded, fixes inserting a file
+ causes exit code.
+- move.c:
+ page_down()
+ - Don't do an edit_update when there is only one page of text
+ (fileage == edittop && filebot == editbot). Fixes Bug #50.
+- nano.c:
+ main()
+ - Reorder the getopt options to be more or less alphabetical
+ (suggested by Sven Guckes).
+- winio.c:
+ do_cursorpos()
+ - Optimizations and cleanups by Rocco Corsi.
+ do_credits()
+ - Spell Erik Andersen's name right.
+ titlebar()
+ - Now takes an arg, needed for browser function.
+ do_help()
+ - Changed way of temporarily bringing up shortcuts at the
+ bottom in the help screen (actually works).
+- utils.c:
+ mallocstrcpy()
+ - Takes char pointers now instead of void (makes debugging a
+ helluva lot easier)
+ - Duh, don't do anything if src == dest!
+- es.po:
+ - Updates for file browser (Jordi).
+
+nano 0.9.24 - 12/18/2000
+General
+ - Added --disable-help option, affects acconfig.h, configure(.in),
+ winio.c:do_help, nano.c:help_init,help_text_init,version.
+ - Changed filename to no longer use PATH_MAX, so it can work on the
+ HURD. Changes in files.c:write_file(), new function
+ nano.c:clear_filename(), many changed in main(), a few other
+ places. Please test this!
+ - Added -b, -e, and -f flags, which we ignore as nano provides
+ their functionality already.
+- cut.c:
+ do_uncut_text()
+ - Fix renumbering bug when uncutting marked text at filebot.
+ - Fix screen not being displayed when we are uncutting marked
+ text at editbot (Bug discovered by Ken Tyler).
+ - Fix magic line not getting created when (you guessed it)
+ uncutting marked text at filebot (Ryan Krebs).
+- files.c:
+ read_file()
+ - If we encounter an error and insert is not set, run new_file().
+ (bug discovered by Ben Roberts).
+ write_file()
+ - Change open call flags, basically copy joe's way of doing it so
+ a more recent version will actually be included in (un)stable.
+ - Remove useless fstat call.
+ open_file()
+ - Added check for S_ISBLK and S_ISCHR, don't open device files!
+- nano.c:
+ renumber()
+ - Don't stupidly assign the value of prev->lineno if prev == NULL!
+ main()
+ - Added code to check for Alt-Alt (27-27) keystrokes and set the
+ next keystroke as a control sequence. New variable
+ modify_control_key. Removed #ifdef _POSIX_VDISABLE check
+ around Control-S,Q,Z handlers because we need it now for
+ the Alt-Alt-x code.
+ - Added --view option to getopt_long() call. Bug discovered
+ by Rocco Corsi.
+ help_init()
+ - Fix off by one error that was making ^G help in normal mode and
+ ^_ in Pico mode not be displayed in the help (bug discovered by
+ Rocco Corsi).
+ do_toggle()
+ - Added fix_editbot() call to fix improper redisplay of edit
+ window when using nohelp toggle (bug discovered by Rocco Corsi).
+- nano.1, nano.1.html:
+ - Updated man page for -b, -e, -f and expanded explanation for -p.
+- winio.c
+ do_help()
+ - Force keypad on so F-keys and PageUp/Down will work properly.
+ Added check for NANO_EXIT_FKEY to loop.
+- utils.c:
+ new_magicline()
+ - Increment totsize!! We decrement it when we've read a file,
+ everywhere else it should automatically be incremented
+
+nano 0.9.23 - 12/08/2000
+General
+ - Changed --disable-spell to --disable speller. The term is
+ "speller" for -s, so it should be --disable-speller.
+- files.c:
+ write_file()
+ - Added tmp check to TMP_OPT section (how appropriate).
+ - Added new consistency checking code from securityfocus
+ article by Oliver Friedrichs, and use O_EXCL if tmp == 1.
+ - We now run check on result of lstat(), not stat(), to be
+ safer. New variable anyexists, we use still use realexists
+ later in the program.
+ - OOPS, line up link/unlink/rename check if conditional with
+ top if conditional. Option -l has been broken for 9 versions,
+ no one noticed?!
+ - Added saving perms at end of link so we can apply them to the
+ new file if --nofollow is used.
+- winio.c:
+ edit_add()
+ - Off by one display error (fix by Rocco Corsi).
+ do_replace_highlight()
+ - New code to handle being past COLS (Rocco Corsi).
+ - Moved from search.c, as it's definitely a winio function now =)
+ update_line()
+ - More '$' display fixes (Rocco Corsi).
+
+nano 0.9.22 - 12/02/2000
+- General
+ - Username tab completion code, and cleaned up existing tabcomp
+ code. New functions real_dir_from_tide(), append_slash_if_dir(),
+ username_tab_completion is more than a stub now =-).
+ - Ignore key sequence 543 & 545, right control and alt keys in
+ windows. Affects main() and winio.c:nanogetstr().
+ - Took out help from spell_list and changed SPELL_LIST_LEN to 1.
+ Is using a spell checker THAT difficult? =-)
+ - New function nano_disabled_msg(), to alert that certain
+ functions have been disabled, similar to nano_tiny feature.
+- New configure options:
+ - Added configure argument --disable-tabcomp. Affects
+ bottom of files.c and write_file, utils.c:check_wildcard_match()
+ and winio.c:nanogetstr().
+ - New options --enable-extra. New code in nano.c:version() to
+ print out various options from ./configure, function do_credits().
+ - Added --disable-spell option for those who want to just disable
+ the spell check feature. Affects the spelling functions
+ do_spell, do_int_speller and do_alt_speller.
+ - Added --disable-justify to get rid of the justify function.
+ Affects do_justify() (not surprisingly).
+- files.c:
+ write_file()
+ - Unsetting modified on temp files bug fixed (Rocco Corsi).
+ - Okay, if tmp == 1 and the file exists, we abort.
+ do_insertfile()
+ - Added call to real_name_from tilde, oops. Added check for
+ DISABLE_TABCOMP.
+ read_file()
+ - Added check for fileptr == NULL.
+- global.c:
+ shortcut_init()
+ - Now takes an argument as to whether to display the unjustify
+ shortcut or the normal uncut text one. Needed to accommodate
+ the kludgey unjustify code.
+- nano.1, nano.1.html:
+ - Updated date on pages because of -p changes.
+ - Added "NOTES" section, where I explain what nano.save & friends
+ are.
+ - Added a copyright notice for the manpage, under the GPL.
+ - Other minor changes.
+- nano.c:
+ do_justify()
+ - Wrote unjustify code. Borrows cutbuffer and stores the unjustified
+ text there, then grabs the next keystroke and, if the unjustify
+ key, gets rid of the justified text and calls do_uncut_text.
+ Added macro NANO_UNJUSTIFY_KEY.
+ do_int_spell*
+ - Various fixes (Rocco Corsi).
+ - Changed abort of program to aborting based on value of "edit a
+ replacement" question, and not caring about the replace loop
+ return value. That way the user can get out of the replace loop
+ and continue spell checking (very important to me anyway).
+ version()
+ - Took out huge check for the various --disabled macros,
+ eventually there will be too many to reasonably check for.
+ nano_small_msg(), nano_disabled_msg()
+ - Added checks for disabled functions to see whether or not to
+ declare them.
+ do_next_word()
+ - Update the previous line as well as the current one in case we
+ have moved beyond COLS or back from COLS, patch submitted
+ by Ryan Krebs.
+ die()
+ - Now creates .save file using variable-length strings. Also
+ calls write_file with tmp == 1, which happens to do exactly what
+ we want (abort on save file exists and use mode 0600).
+ handle_sighup()
+ - Now calls die instead of writing on its own and exiting normally.
+- search.c:
+ do_replace_highlight()
+ - New function, displays the currently selected word as highlighted
+ in the spell check. Called from do_replace_loop (Rocco Corsi).
+ - Added calls to curs_set(0) and (1) to disable the cursor when
+ highlighting, looks much better.
+- es.po:
+ - Traditional Spanish strings updates.
+
+nano 0.9.21 - 11/23/2000
+- AUTHORS
+ - Added Rocco Corsi.
+- nano.c:
+ main()
+ - Changed check for argc == 1 to argv[optind] == NULL to decide
+ whether or not to display "New File" in the statusbar.
+- search.c:
+ findnextstr()
+ - Fix current_x increment bug by using another variable (Rocco Corsi).
+ search_init()
+ - Silly typo in our "one simple call" of statusq. Stopped
+ previous search string from being displayed.
+ do_replace()
+ - Copy back the previous value of last_replace into answer if
+ using PICO_MODE and answer == ""
+- winio.c:
+ do_up()
+ - Deleted first update_line() call, screws up display when marker is
+ set.
+- nano.1, nano.1.html
+ - Updated man page for new -p definition.
+
+nano 0.9.20 - 11/18/2000
+- General
+ - Ran source through indent -kr again. Make everything pretty.
+ - Changed behavior of "search" and "replace" prompts to make all
+ previous values editable. This change was made so that you can
+ replace with the null string without needing a special key for it.
+ changed code in search_init(), do_replace(), nanogetstr (see
+ below).
+ - Added some missing gettext calls here and there (Jordi).
+ - Revamped nanogetstr() and calls to it to use variable length
+ strings.
+ MANY changes in nanogetstr(), many chances in search.c, new
+ function mallocstrcpy which is sure to be a programmatic
+ nightmare, changed last_search, last_replace, answer to
+ pointers. New function not_found_msg in search.c for displaying
+ truncated strings in statusbar when the string is not found
+ (-pedantic fixes by Rocco Corsi). We disable this feature when
+ using PICO_MODE (-p).
+ - New spelling code by Rocco Corsi. New functions
+ do_int_speller, do_alt_speller, changes to do_spell in nano.c,
+ New functions search_init_globals and do_replace_loop, changes
+ to search_init(), do_replace, findnextstr, moved last_search and
+ last_replace back to nano.c (*shrug*).
+ - New tab completion code. Used check_wildcard_match, input_tab,
+ cwd_tab_completion, username_tab_completion from busybox,
+ hacked them a lot, changes to nanogetstr(). nanogetstr() and
+ statusq() now take an arg for whether or not to allow tab
+ completion.
+ - Fixed value being input in statusbar during a search or replace
+ and CASE_SENSITIVE or the other search is called and the
+ string being typed in is blown away. Reported by Ken Tyler.
+ - Changed PICO_MSGS flag to PICO_MODE, changed help strings
+ accordingly.
+- files.c:
+ do_writeout()
+ - Change strcpy to answer to mallocstrcpy.
+- global.c
+ - New global replace_list_2, for 2nd half of the replace dialog
+ ("Replace with:"), has fewer options than first half because
+ they were inappropriate.
+ toggle_init()
+ - Added #ifdef around toggle_regex_msg to get rid of compiler
+ warning.
+
+- nano.c:
+ keypad_on()
+ - New function, toggles turning the keypad on and off in edit and
+ bottomwin(). Added call to this in finish(), fixes bug #45.
+- search.c
+ findnextstr()
+ - New arg for begin_x variable, basically a rewrite that
+ makes a little more sense and isn't quite as messy (Rocco Corsi).
+ - Update the line we're checking if not the whole screen, because
+ it's quite possible the search team could exist somewhere way
+ to the right on the same line, for example.
+ replace_abort()
+ - Add reset of placewewant, stops cursor from jumping when moving
+ cursor after a replace.
+ do_replace()
+ - Added code for Gotoline key after entering the search term.
+ Fixes bug #46.
+ - Removed redundant code involving processing replacement string.
+ Converted if statements to switch statements.
+ - Optimizations by Rocco Corsi.
+ - Removed code for deleted shortcuts from in replace_list_2.
+ do_search()
+ - Converted if statements to one switch statement.
+- winio.c
+ nanogetstr()
+ - Added check for 343 in while loop to get rid of getting "locked"
+ into statusbar" bug in odd $TERMs like iris-ansi.
+ - Changed check to return -2 on "enter" from answer == ""
+ to answer == def.
+ - Fixed fallthrough code because there was no break. Make much
+ more sense now.
+ - Added check for ASCII 54[124] when using PDCurses, ignore them
+ if noticed.
+ nanoget_repaint()
+ - New function, removes about 30 lines of duplicate code in
+ nanogetstr().
+ - Black magic code to make $ appear in prompt if we're past
+ COLS.
+ blank_edit()
+ - Removed wrefresh() call, much less choppy now. If there's a need
+ for a wrefresh after a specific call, let me know.
+- es.po:
+ - Updated translation for 0.9.20 (Jordi).
+
+nano 0.9.19 - 10/02/2000
+- General
+ - Added PDCurses support under cygwin, which allows building
+ a nice stand-alone nano.exe for those poor Windows users.
+ Extra check in configure.in for initscr() in -lcurses (as
+ PDcurses has no tgetent), some #ifdef PDCURSES statements
+ in main().
+ - Changed web site and email to new nano-editor.org domain.
+- nano.c
+ - Added (int) casts to remove compile warnings with -Wall.
+ main()
+ - Added check for _POSIX_VDISABLE around term variable definition.
+- search.c
+ - Added initializations for last_search and last_replace (Rocco Corsi)
+
+nano 0.9.18 - 09/18/2000
+- General
+ - Changed _POSIX_VERSION checks in regex code to HAVE_REGEX_H,
+ added check for regex.h in configure.in.
+- configure.in:
+ - Added default case for cross-compiling to get rid of annoying
+ AC_TRY_RUN warning.
+- cut.c:
+ do_cut_text()
+ - Don't immediately abort if we're on filebot and the marker is
+ set (fixes bug #42).
+- files.c:
+ open_file()
+ - Fix for bug #44 (Rocco Corsi).
+- global.c:
+ shortcut_init()
+ - Added in FKEYs that for some reason were left out. *boggle*
+- nano.c:
+ main()
+ - Added check for _POSIX_VDISABLE and use raw mode if not
+ available, allows nano to work with cygwin.
+ - Added gettext calls to enable/disable strings (Jordi).
+ - Revamped a great deal of the F-key and keypad key handling,
+ because we not longer use keypad() (see below).
+ - Removed keypad() call because nano was not working with the
+ keypad in many terms, which is very bad.
+ - Made insert key call do_insertfile().
+ do_toggle()
+ - Rewrote function to allow NOHELP toggle to work on systems
+ without a working resizewin(). New function window_init().
+ mouse_init()
+ - Add keypad only if mouse support is on, otherwise mouse doesn't
+ work. I guess you have to choose between having the mouse and
+ having a working keypad for the time being (thank god for Meta-M).
+- winio.c:
+ total_refresh()
+ - Added titlebar() call.
+ onekey()
+ - Off by one error fix fix ;-) (Rocco Corsi).
+
+- search.c:
+ findnextstr()
+ - Reset starting at current for search instead of begin.
+- es.po:
+ - Translated new strings and minor updates (Jordi).
+- de.po
+ - Revised translations by floki@bigfoot.com
+
+nano-0.9.17 - 09/04/2000
+- General
+ - New shortcuts to toggle certain options that are normally only
+ flags via Alt/Meta. See Alt-C,E,I,K,M,P,X,Z. New struct called
+ toggles in nano.h, toggle_init(), toggle_init_one() in global.c
+ called from shortcut_init(), and do_toggle in nano.c. Also
+ moved the signal code into a separate function in nano.c called
+ signal_init(). Moved "struct sigaction act"into a static in
+ nano.c.
+ - Changed from Alt-key symbol (@) which is completely nonstandard
+ to the *nix "Meta" symbol (M-). Changed help_init to show
+ the M-key usage and the help text to explain keys which generate
+ Meta. Moved the toggle Meta keystrokes to the first column
+ instead of the third as they are the primary keystrokes for the
+ functions. Thanks Mini editor team :->
+ - Changed last_search and last_replace vars to statically
+ allocated (hence nulled) and moved to search.c (Matt Kraai).
+- global.c:
+ toggle_init()
+ - Changed "No auto wrap" and "No help mode" to "Auto wrap" and
+ "Help mode". See the change to do_toggle() below.
+- nano.c:
+ do_mouse()
+ - Patch for handling lines w/tabs and mouse better (Ben Roberts).
+ do_wrap()
+ - Made wrapping code less ambitious.
+ do_toggle()
+ - Added checks for no help and no wrap mode, and print opposite
+ enable/disable message.
+ do_suspend(), do_cont():
+ - New functions, handle suspend signal in a Pico-like manner and
+ work with Meta-Z.
+- winio.c:
+ total_refresh()
+ - Added edit_refresh() call to actually update the screen if messy.
+ edit_refresh_clearok()
+ - New function, does a total update for edit refresh, needed to fix
+ lack of reversed text on searching with MARK_ISSET.
+ onekey()
+ - Off by one error fix (Rocco Corsi).
+
+ update_line()
+ - Added check for binary data >= 1 and <= 26, and use ^+letter
+ to display it. Should fix editing text files with binary
+ data in them. Placing of the cursor seems to be a bit screwed
+ though...
+- search.c:
+ search_abort()
+ - Now calls edit_refresh_clearok when MARK_ISSET to handle screen
+ ugliness bug (reported by Ken Tyler).
+ findnextstr():
+ - Added reset for placewewant (Ben Roberts).
+ - Fixed check for string that only occurs on the same line failing
+ (discovered by Ken Tyler).
+
+nano-0.9.16 - 08/09/2000
+- cut.c:
+ do_cut_text()
+ - Fixed getting locked into cutbuffer on cutting first line of file.
+ - Added check_statblank().
+ - Check for fileptr == filebot, if so return, we shouldn't bother
+ cutting the magic line.
+ do_uncut_text()
+ - Added check_statblank().
+- nano.c:
+ main()
+ - Changed tabsize long arg to actually accept an argument *sigh*.
+- po/Makefile.in.in:
+ - Patch to handle $DESTDIR (orig by Dan Harnett contributed by
+ Christian Weisgerber)
+- configure.in:
+ - New (and severally revised =) slang test code (Albert Chin-A-Young)
+
+nano-0.9.15 - 08/03/2000
+- Changed edit_update call to take arguments TOP, CENTER or BOTTOM.
+ Affects many many functions. Removed functions edit_update_top and
+ edit_update_bot.
+- Added global variable tabsize, we no longer screw with the curses
+ library in order to implement -T (suggested by Christian Weisgerber).
+- configure.in:
+ - Finally fixed check for slang to report "no" if not called
+ with --with-slang or --without-slang
+- nano.c:
+ splice_node()
+ - New function, abstracts linking in nodes. Fixes bug #36.
+ null_at()
+ - New function, nulls a string at a given index and realigns it.
+ delete_buffer()
+ - Removed, same as free_filestruct().
+ do_backspace()
+ - Now calls page_up_center instead of page_up (as it should?)
+ do_enter()
+ - Fixed typo (?) in check for inptr->next. Caused lots of
+ grief for editing lines at filebot.
+ main()
+ - Removed now useless usertabsize variable (Christian Weisgerber).
+- search.c:
+ replace_abort()
+ - redundant, now just calls search abort until it does something
+ different.
+- winio.c:
+ edit_refresh()
+ - Added check for current line "running" off the screen.
+ Hopefully this will not cause any recursive lockups.
+ (Who am I kidding, of course it will!)
+ - Added check to stop infinite loop calling edit_update.
+ edit_update()
+ - Rewritten, hopefully this will remove a lot of the
+ scrolling the cursor back and forth needlessly.
+- move.c:
+ page_down()
+ - do an edit_update() at last case. Made function more like
+ Pico's version, only move down to two lines before editbot.
+ page_up()
+ - Made function more like Pico's version, only move down to two
+ lines after edittop.
+
+nano-0.9.14 - 07/27/2000
+- nano.h:
+ - Set CUT_TO_END to a different bit than TEMP_OPT. Fixes bug #32.
+- cut.c:
+ do_cut_text()
+ - Added check for MARK_ISSET when using CUT_TO_END. Fixes bug #31.
+ - Simplified check for freeing cutbuffer. Added checks for doing
+ multiple cuts with -k, now sets marked_cut to 2 for later
+ processing by do_uncut_text().
+ do_uncut_text()
+ - Added handler for uncutting with -k cuts.
+- files.c:
+ write_file()
+ - Removed (redundant) check for writing out files with -t.
+ do_writeout()
+ - Changed check for filename to filename[0]. Added some code,
+ overall fixes bug #30 =-)
+- nano.c:
+ do_justify() & do_wrap():
+ - totsize-related fixes (Rob)
+- de.po
+ - Revised translations by floki@bigfoot.com
+
+nano-0.9.13 - 07/23/2000
+- Implemented Pico's -k mode. New flag CUT_TO_END, option (-k, --cut),
+ affects do_cut_text in cut.c. Not available with SMALL_NANO because it
+ depends on the marker code which is not available with that setting.
+- Changed static temp_opt to flag TEMP_OPT. Fixed bug #29 (using
+ -t with an unwritable file causes users to get locked into editor).
+- move.c
+ page_down()
+ - Don't edit_refresh() if the bottom of the file is in the edit
+ buffer. (Adam)
+- nano.c:
+ main():
+ - TABSIZE now set before first call to edit_refresh (Bill Soudan)
+ - Different ^C kill code (patch by Christian Weisgerber).
+ die():
+ - More intelligent emergency-save filename selection (Rob)
+ do_spell():
+ - Changed exit semantics a bit so that aspell wouldn't get
+ all screwy (bug discovered by Joshua Jensen.
+- files.c:
+ read_file():
+ - Added init of buf variable, hopefully this will stop the
+ "bleeding" of text seen with mutt and using i18n.
+ write_file():
+ - Added code to check to see if using -l and the file is not
+ in fact a link. This should fix the behavior where a file
+ that does not have write permission but could be removed and
+ rewritten is saved without error. Please test this feature
+ and give feedback.
+- search.c:
+ search_init():
+ - Added " (to replace)" statement to end of search string if
+ we are doing a replace. Manually converted all the translations
+ from '%s' to '%s%s' to ensure they still work with the new code.
+ Also put in the translation for " (replace)" in the .po's. Hope
+ I didn't step on your toes doing this Jordi. (Chris)
+ do_search(), do_replace():
+ - Removed call to search_abort()/replace_abort() before call to
+ the opposite function.
+ - Fixed bug #28.
+ findnextstr()
+ - do not center string found if it is currently visible. (Adam)
+- fr.po:
+ - French update by Clement Laforet <clem_laf@wanadoo.fr>.
+- es.po:
+ - Updated strings to 0.9.13 (Jordi).
+
+nano-0.9.12 - 07/07/2000
+- all:
+ - New regexp search feature by Bill Soudan. New flags USE_REGEXP
+ and REGEXP_COMPILED, new functions regexp_init, regexp_cleanup
+ replace_line, replace_regexp in search.c, changes to
+ search_init() and do_replace() and strstrwrapper().
+ - Added _POSIX_VERSION check to regexp code. Better than nothing
+ for non-POSIX systems...
+ - Made search functions & keys more like Pico. Added goto line from
+ search and replace function, changed wording to "No Replace" instead
+ of "To Search", "To Replace" to simply "Replace", and changed to
+ Pico's keystroke by default, ^R. Affects search_init(),
+ do_search() in search.c, globals in nano.h and
+ shortcut_init() in global.c.
+ - changed 'sprintf' calls to safer 'snprintf' (Rob)
+- cut.c
+ - further totsize update corrections
+- files.c:
+ - changed do_insertfile to call fix_editbot (Rob)
+ - Magic Line code in read_file (Rob)
+- nano.c:
+ - Removed dual alt_speller variables, oops! (Rocco Corsi)
+ - Removed unnecessary do_oldspell function (Rocco Corsi). Added
+ SMALL_NANO #ifdef around actual spell function.
+ - Moved page_up() to move.c where is belongs.
+ - Corrected FIXME in do_enter with explanation. (Rob)
+ - Fixed FIXME in do_justify, resulted in creation of
+ fix_editbot [also fixed in do_enter] (winio.c) (Rob)
+ help_init():
+ - Moved newline out of if statement (Rocco Corsi)
+ do_char():
+ - Magic Line related code in do_char (Rob)
+ do_backspace(), do_delete():
+ - Added magic line code here too.
+
+- de.po:
+ - Revised translations by floki@bigfoot.com.
+- fi.po:
+ - Finnish translation by pauli.virtanen@saunalahti.fi.
+- utils.c:
+ - Added new_magicline()
+- winio.c:
+ - Added stdlib.h to includes, found by OpenBSD gcc.
+ - lots of new commenting around display functions
+ do_yesno(), nanogetstr():
+ - Removed now unnecessary raw/cbreak combos.
+ - Removed gettext calls from "Y(es)", "N(o)", "A(ll)" and "^C", till
+ we decide if those keybindings should be translated. (Jordi)
+ clear_bottomwin():
+ - Removed wrefresh(edit) call.
+ edit_update_top():
+ - Fixed a bug that caused nano to not update when
+ current->next == NULL (e.g. paging down to the very bottom of
+ ABOUT NLS wouldn't work).
+ fix_editbot:
+ - Added (should rebuild editbot from a valid edittop) (Rob)
+ edit_add:
+ - removal of redundant call to mvwaddnstr
+
+nano-0.9.11 - 06/20/2000
+- New flag "-T" or "--tabsize" to specify how to display tab widths.
+ Affects main() in nano.c, strlenpt(), xpt() and actual_x() (et al) in
+ winio.c, and nano.h. Many hardcoded "8"s have been changed to the
+ TABSIZE int. Added changes to nano.1 and nano.1.html.
+- id.po:
+ - Indonesian translation by Tedi Heriyanto.
+- es.po:
+ - Updated translation (Jordi Mallach).
+- winio.c
+ - Rewrite of display functions to correct the display problems
+ we had been seeing. Affects: add_marked_sameline, edit_add,
+ and many others. (Rob Siemborski)
+ - totsize fixes (Rob Siemborski)
+ total_refresh():
+ - Cut display_main_list call, as this function is only supposed to
+ refresh what's already on the screen, not go through the process
+ of adding the text again.
+- cut.c:
+ - totsize fixes (Rob Siemborski)
+- nano.c:
+ - experimental do_wrap and check_wrap (Adam Rogoyski)
+ - Removed editwineob, as it was redundant for (editwinrows - 1).
+ Changed all calls to editwinrows - 1 in nano.c and move.c.
+ - Removed all functions that were split into other files.
+ Affects LOTS of funcs.
+ do_enter():
+ - Added reset of placewewant to end.
+ do_insertfile():
+ - Fix display problem when using ctrl-r to load a file
+ into the buffer (Rob Siemborski)
+ handle_sigwinch():
+ - Added titlebar(), edit_refresh() and display_main_list() calls
+ because a resize wasn't picking up on possible different width
+ correctly.
+- utils.c:
+ - Moved nmalloc() and nrealloc() here.
+- move.c:
+ - New file, contains movement functions (like do_home(), do_up(),
+ do_down(), page_up(), etc...).
+- files.c:
+ - Contains functions for files (read_file, insert_file,
+ do_writeout(), etc).
+- search.c:
+ - Contains all our searching and related functions, (do_search(),
+ findnextstr(), do_replace(), do_gotoline()).
+
+nano-0.9.10 - 06/04/2000
+- es.po:
+ - Translation updates (Jordi).
+- AUTHORS, nano.1.html, TODO, README:
+ - Documentation and email address updates (Jordi).
+- nano.c:
+ main():
+ - Moved Adam's termio code down to after getopt() and before initscr()
+ to stop people losing their SIGINT character when using args that
+ exit nano before it runs (--version, --help, etc).
+
+nano-0.9.9 - 05/31/2000
+- Makefile.am:
+ - Added proper lines for defining LOCALEDIR.
+- configure.in:
+ - Spelling fixes (Jordi Mallach)
+ - Removed CFLAGS changes for gcc, reduces portability according to
+ some, and it certainly doesn't seem to decrease exe size.
+- es.po:
+ - Spanish translation updates (Jordi Mallach)
+- POTFILES.in:
+ - Added global.c file, was screwing up translations (i.e. they
+ weren't getting done).
+- cut.c:
+ add_to_cutbuffer():
+ - Added totsize increment.
+ - Cut fixes and optimizations (Rob Siemborski).
+ do_uncut_text():
+ - Added totsize increment in several places.
+- nano.c:
+ headers:
+ - Removed LOCALEDIR define.
+ do_justify():
+ - Added edit_refresh() call (bug discovered by Adam).
+ page_down_center():
+ - Added call to edit_update(current) for last case. Removed
+ increment of current_y since it's now just wasteful.
+ do_enter():
+ - Added totsize increment.
+ renumber(), renumber_all():
+ - Removed totsize-- and totsize init in renumber_all.
+ do_mouse():
+ - Added edit_refresh() call to show highlight updates. Removed
+ unnecessary wrefresh(edit).
+ main():
+ - Moved up locale calls so that translated --help messages would
+ actually get translated.
+ do_backspace(), do_delete():
+ - Added decrement of totsize.
+ init_help_msg():
+ - New function, initializes help text if NANO_SMALL isn't set (fixes
+ broken i18n).
+ read_file():
+ - malloc call changed to nmalloc (Rob Siemborski).
+- winio.c:
+ total_refresh():
+ - Completely rewrote function, not quite so brain-damaged now.
+
+nano-0.9.8 - 05/18/2000
+- nano.c:
+ main():
+ - Added awesome code that disables the CINTR and CQUIT
+ character (Adam Rogoyski). Removed raw()/noraw() calls so that
+ nano gets input in 'normal' mode, which is the Right Way(tm) to
+ do it. ^S, ^Z and ^Q now work properly as a result, as well as
+ ^C. New variable term, global variable oldterm to save previous
+ term settings, and changes to finish() and die().
+ - Added extra #ifdefs in getopt code, so that above code and
+ flag init is run even if GETOPT_LONG is not #defined.
+ - Added memset line before sigactions. (Adam Rogoyski)
+ do_suspend():
+ Removed function, see above for why.
+- winio.c:
+ update_line(), center_cursor():
+ - Removed wrefresh(edit) from bottom of functions. wrefresh
+ should now only be called once, at the bottom of the main()
+ loop.
+- global.c:
+ shortcut_init():
+ - Removed suspend sc_init call and suspend message because suspend
+ is no longer needed in the shortcut list to work properly.
+
+nano-0.9.7 - 05/14/2000
+- nano.c:
+ do_home(), do_end():
+ - Added calls to update_line for the current line, fixes
+ lack of update (bug discovered by Alberto García).
+ main():
+ - Added SET(FOLLOW_SYMLINKS) before getopt call, fixes not
+ following symlinks even when -l isn't set, and "no changes"
+ error when nano is called from crontab -e (Adam Rogoyski).
+- cut.c:
+ do_cut_text():
+ - Added edit_update_top to cut when mark is set, fixes lack of
+ display update (bug discovered by Ken Tyler).
+
+nano-0.9.6 - 05/08/2000
+- New Italian translation (it.po), by Daniele Medri.
+- nano.c:
+ page_up(), page_down():
+ - Added reset of placewewant to 0, as it should be.
+ do_up(), do_down():
+ - Added call to update_line() for line we move from and line we
+ move to, in order to keep the highlighting correct.
+ do_wrap():
+ - Added var chop, new code to wrap lines more like Pico, mostly.
+ THIS STILL DEFINITELY NEEDS TO BE REWRITTEN!
+- winio.c:
+ do_help():
+ - Added edit_refresh() before exit.
+ update_cursor():
+ - Removed cursor updating which really wasn't needed anyway.
+ edit_update():
+ - Removed yucky code that didn't work, this function now just
+ computes edittop and editbot and calls edit_refresh() to do the
+ rest, which removes a lot of duplicate code...
+
+nano-0.9.5 - 05/01/2000
+- Removed bytes from file struct because it was computationally wasteful.
+- cut.c:
+ do_uncut_text():
+ - Added call to edit_refresh().
+- nano.c:
+ do_backspace():
+ - Added reset of editbot when deleting the last line of the file
+ (bug discovered by Adam).
+ do_char():
+ - Removed call to reset_cursor().
+ do_delete():
+ - Added similar check as to do_backspace().
+ do_enter():
+ - Added call to edit_refresh().
+ do_left(), right():
+ - Added call to update_line(), still redundant but better...
+ do_up(), do_down():
+ - Added refresh calls both for current line and line to which
+ we are moving.
+ main():
+ - Removed inefficient call to edit_refresh() after every keystroke.
+ It is now up each function to leave the screen in a good state.
+- winio.c:
+ do_cursorpos()
+ - Rewritten to not use bytes from filestruct by an incremental sum.
+ update_line(), reset_cursor():
+ - Optimized calls to xplustabs() through a single variable.
+ - update_line() now takes a new arg, an index into the string
+ for where to update the line from. Needed for new update
+ code.
+- configure.in:
+ - Better checks for slang, allows argument to --with-slang.
+ (Albert Chin-A-Young)
+ - Removed -Iintl from CFLAGS in gcc check.
+- Makefile.am:
+ - Addition of -Iintl for gettext (Albert Chin-A-Young)
+
+nano-0.9.4 - 04/25/2000
+ - Fixed calls to no_help and changed them to the more consistent
+ ISSET(NO_HELP). Fixed return val of no_help to be what it should (2,
+ not 1. Code to temporarily disable NO_HELP when in the
+ help system. (Adam Rogoyski)
+- cut.c:
+ do_marked_cut(), do_cut(), do_uncut():
+ - Commented out unnecessary bits when NANO_SMALL is being used.
+- winio.c:
+ xpt(), strlenpt(), actual_x():
+ - Added check for value of data[i] & 0x80, if so do not make
+ character 2 chars wide (orig. by Chris, 0x80 check by Adam).
+ edit_refresh():
+ - New check for temp == NULL (bad thing), if so go back to the
+ previous line. New filestruct var hold points to prev line.
+ Fixes segfault when paging down to the end of a file.
+- nano.c:
+ write_file():
+ - Added check for if file exists and is not equal to the current
+ filename, prompt for overwrite (Adam Rogoyski).
+ do_down():
+ - Removed check for current->next == NULL, now checks return value
+ of do_down before setting current_x = 0 (discovered by Adam).
+ do_justify():
+ - Fixed segfault when reaching the last line (tried to assign
+ current->next->data when current->next == NULL) (discovered
+ by Adam).
+- utils.c:
+ - Removed extra macro defs that are now in nano.h.
+- nano.h:
+ - Changed macro SET() to use |= instead of ^=. Fixes bug in
+ cut code when cutting more than one line, and cutbuffer gets
+ blown away when it shouldn't.
+
+nano-0.9.3 - 04/29/2000
+- cut.c:
+ do_marked_cut():
+ - Fixed off by one error in cut code for marked text.
+ do_cut_text():
+ - Removed check for being on the last line, part of
+ magic line code.
+ add_to_cutbuffer():
+ - Moved tmp->prev = inptr line to part where cutbuffer != NULL.
+ - Added inptr->prev = NULL for case where cutbuffer == NULL.
+- nano.c:
+ do_backspace(), do_char():
+ - Removed "magic line" code. It was basically causing more bugs
+ than it was helping for the sake of compatibility. This fixes
+ at least one known segfault condition.
+ do_enter():
+ - Added setting editbot to new node if the new node is the last
+ node in the file.
+ write_file():
+ - Changed writing file behavior. Now, if last line of the file
+ has any data on it, we write a newline on it, else we don't.
+- winio.c:
+ add_marked_sameline():
+ - New code that checks for whether the begin and end of the marker
+ are on different lines. Missing previously.
+ edit_add():
+ - added some more checks for text length. Cleaned up some
+ mvwaddnstrs that could be written more simply as waddnstrs.
+ edit_refresh():
+ - Removed check for temp == filebot, it is now treated like any other
+ line. Fixes a bug where selected text on the last line shows
+ normally.
+ xpt():
+ - Removed an extra computation for tabs variable that was incorrect.
+ xplustabs():
+ - Since xpt now actually works, this func is now just a wrapper for
+ xpt(current, current_x)
+- nano.1, nano.1.html:
+ - Added -l option to man pages.
+- configure.in:
+ - New option --enable-tiny, #defines NANO_SMALL in config.h.
+ Disables call to gettext in functions and other i18n stuff in
+ nano.c, the detailed help mode, the resize functions, and the
+ justify code which no one ever uses.
+ - New option --with-slang. Enables slang libraries instead of
+ ncurses, requires slcurses.h for wrapper functions. (Based
+ on patches for 0.8.7 by Glenn McGrath).
+
+nano-0.9.2 - 04/15/2000
+- This release just fixes the serious segfault problem if nano is
+ invoked any way other than using the absolute path. The bug was
+ in the new code for checking whether nano is invoked as 'pico'.
+
+nano-0.9.1 - 04/14/2000
+- Added Pico compatibility for ^T when in search or switch to switch
+ to the opposite function. Added one to REPLACE_LIST_LEN and
+ WHEREIS_LIST_LEN in nano.h, new args to sc_init_one in global.c and
+ new strings that will have to be gettext()ed. New argument 'replacing'
+ to search_init(). Handlers in do_replace and do_search().
+- New write code, now follows symbolic links instead of replacing them
+ with the new file. New option (-l, --nofollow) to enable the old
+ (incorrect, but secure) behavior (Adam Rogoyski).
+- nano.c:
+ do_wrap():
+ - Fixed another bug relating to wrapping, and which would cause
+ a segfault *sigh*.
+ do_replace():
+ - Incremented current_x by the length of the replacement
+ text inside the main replace loop. Fixes bug #15.
+ add_marked_sameline():
+ - New function, handles marked text when start & end of marker is
+ on one line, also supports most marked text when cursor > COLS.
+ main():
+ - Code to check if nano is invoked as 'pico', and if so
+ automatically set pico_msgs (Robert Jones).
+
+nano-0.9.0 - 04/07/2000
+- nano.1, nano.1.html: Updated man page with my email address and homepage.
+- winio.c:
+ reset_cursor(), update_line():
+ - Changed update algorithm for x value to (COLS - 7) multiple when x
+ value > (COLS - 2).
+- edit_refresh():
+ - Removed inner loop code, now calls update_line() for each line
+ in question, MUCH nicer.
+- xplustabs(), xpt():
+ - Removed redundant increment of tabs when column no % 8 == 0.
+ - Added check for data[i] < 32, most of such bits are 2 chars wide.
+- update_line():
+ - Fixed a stupid call to strlenpt with col when we should have
+ been using actual_col. Ugh.
+
+nano-0.8.9 - 03/22/2000
+- nano.c:
+ empty_line(), no_spaces(), justify_format(), do_justify():
+ Actually added these (screwup applying patch).
+ do_justify(): Added call to set_modified().
+
+nano-0.8.8 - 03/12/2000
+- Preliminary internationalization support. Many many functions modified
+ to use gettext (via _() macro). es.po file included. (Jordi Mallach)
+ New dirs po/ and intl/, changes to configure.in and Automake.am to
+ support i18n.
+- nano.c:
+ includes: Added sys/param.h and limits.h. (Adam Rogoyski).
+ statics: Changed some things that were not necessarily static
+ (Adam Rogoyski).
+ nrealloc(): New function, similar to nmalloc(). Changed calls from
+ realloc() to nrealloc (Adam Rogoyski).
+ empty_line(), no_spaces(), justify_format(), do_justify():
+ New functions for justify function (Adam Rogoyski).
+- winio.c:
+ blank_edit(): Added wrefresh call to edit so that screen updates (like
+ on ^L) actually work.
+ xplustabs(), xpt(), strlenpt(): Fixed off-by-one buglets (Adam Rogoyski).
+
+nano-0.8.7 - 03/01/2000
+- main.c:
+ do_wrap(): Better fix for segfaults, and fix for lines being wrapped
+ to a single character on one line when no good place to
+ break the line exists, and for wrapping lines longer than
+ COLS.
+- nano.1.html:
+ Html version of man page, now included in dist. For
+ the benefit of nano packages in Linux distributions.
+
+nano-0.8.6 - 02/24/2000
+- global.c:
+ shortcut_init():
+ Added shortcuts for goto_line and do_replace when using
+ pico_msgs. Oops.
+- nano.c:
+ statics: Changed fill back to 0 from 71 by default (Adam Rogoyski).
+ do_wrap(): Added check for backing up past tabs, which we shouldn't do.
+ Removed check for backing up past spaces first.
+ main(): Added for loop to check for alt keys instead of hard list.
+ do_enter(): Fix for bug #14, added call to reset_cursor and messed
+ up do_char quite a bit.
+ version(): Added time and date stamp for compile on version message.
+ Added mail and web page info.
+- README: Updated mailing list info.
+
+nano-0.8.5 - 02/18/2000
+- nano.c:
+ main(): Finally fixed tilde being input on page up/down keys in
+ certain terminal types. Fix was input 26->91->5[34] check
+ for 126, if so make the kbinput PAGE UP/DOWN, else unget
+ the keystroke and continue. Added #include <ioctl.h> for
+ ioctl call.
+ handle_hup():
+ Handler for hangup signal. Belated include of patch from
+ Tim Sherwood.
+- winio.c:
+ edit_refresh():
+ Temporary fix for selecting text when temp == current.
+ edit_refresh() is now unmanageably complex, and must be
+ revamped.
+ check_statblank():
+ Added check for constupdate, makes things less choppy
+ (Adam Rogoyski)
+
+nano-0.8.4 - 02/11/2000
+- Moved global variables that were only (or mostly) used in one file into
+ its proper file as a static. Affects cut.c, nano.c, global.c (Andy Kahn).
+- global.c:
+ shortcut_init():
+ Removed redundant NANO_CONTROL_H from backspace shortcut,
+ added char 127 which should have been there.
+- nano.c:
+ main(): Fix for loops looping until MAIN_LEN, added -1 to stop
+ segfaults (Adam Rogoyski).
+- Makefile.am: Added all source filenames (Adam Rogoyski).
+- nano.1: Fixed mail addressed and added mailing list address.
+- README: Updated my email address and the nano web page.
+
+nano-0.8.3 - 02/08/2000
+- New Pico mode (-p, --pico), toggles (more) compatibility with the
+ Pico messages displayed in the shortcut list. Note that there are still
+ small differences in this mode.
+- nano.h: New shortcut struct format, for the benefit of i18n and
+ our help menu. Removed shortcut message macros, they are
+ now all in shortcut_init in global.c.
+- nano.c:
+ do_wrap(): Removed resetting of current_x when we are in fact
+ wrapping to the next line, fixes a bug in -i mode.
+ do_enter():
+ Rewrote the autoindent mode code to be a lot less pretty,
+ but a lot more magical.
+ main():
+ Removed case for ignoring char 126 (~). That's kind of
+ important, we'll have to fix handling that sequence when
+ paging up/down on a terminal some other way... Revamped
+ main switch loop in much snazzier fashion based on the
+ shortcut list.
+- winio.c:
+ New function display_main_list. Affects all functions
+ that used to call bottombars() with main_list. Added
+ because we now only call bottombars with the macro
+ MAIN_VISIBLE instead of MAIN_LIST_LEN, because of the
+ changes to the main_list shortcut list (see global.c below).
+ New function do_help, our preliminary dynamic help system.
+- Many many funcs:
+ Changed from int to void to allow one uniform type to call
+ from the shortcut struct. Also a few functions that do
+ not simple have void argument have new functions called
+ funcname_void(void) to be called from the shortcut list.
+ do_cut_text and do_uncut_text were changed to void
+ arguments because they were never called with a filestruct
+ other than *current anyway.
+- global.c:
+ Shortcut list main_list was expanded to cover all
+ shortcuts that could be caught in the main loop.
+ Consequently there is a new macro MAIN_VISIBLE which tells
+ how many items in the main list to actually show.
+
+nano-0.8.2 - 02/02/2000
+- Added initial mouse (-m, --mouse) support. New global variable
+ use_mouse. (Adam Rogoyski)
+
+- nano.c: Set initial value of fill to COLS - 8 rather than just 72
+ regardless. (Adam Rogoyski).
+ do_delete():
+ Deleted call to do_backspace() when on the end of a line,
+ because it won't update the line properly.
+ do_backspace():
+ Removed unnecessary pointer manipulation that was being
+ handled by unlink_node().
+ open_file():
+ Added check for trying to open a directory (currently we
+ segfault on this). Bug pointed out by Chad Ziccardi.
+
+nano-0.8.1 - 01/28/2000
+- Implemented Pico's -r (fill) mode, command line flag -r or --fill. New
+ global variable fill, affects check_wrap(), do_wrap(), main(), usage(),
+ global.c and proto.h.
+- nano.c:
+write_file(): Added (incredibly) necessary check for EPERM when
+ link() fails. This allows us to actually save
+ files via rename() on filesystems that dont
+ support hard links (AIEEEEEE).
+do_goto():
+ Fixed a stupid mistake where we were calling
+ bottombars() with replace_list instead of goto_list.
+- nano.h:
+ New char *help in shortcut structure for help
+ feature. Added NANO_*_MSG and NANO_*_HELP #defines
+ for help function and i18n.
+- global.c:
+ New functions shortcut_init (called in nano.c) and
+ sc_init_one() to initialize the shortcuts without
+ using {}s (for i18n).
+
+nano-0.8.0 - 01/25/2000
+- View flag (-v, --view) implemented. Global variable view_mode, affects
+ main loop of nano.c and new_file(). (me)
+- nano.c:
+ split checks for TERMIOS_H and TERMIO_H up so we
+ can (theoretically) include them both, which is good.
+handle_sigwinch():
+ Added check for ncurses.h. (Andy Kahn)
+do_spell():
+ We now only try ispell because we don't as of yet
+ handle the 'spell' program the right way, now that
+ I finally know what the right way is =-). Added
+ call to edit_update(fileage) to stop segfaults.
+global_init():
+ Added initialization of edit* filestruct pointers
+ to stop segfaults on spell check.
+usage():
+ Check for getopt_long, and if no leave out the
+ GNU options everyone seems to love so much (Andy Kahn)
+main():
+ Added checks for getopt_long (Andy Kahn)
+ We ignore character 126 because it gets put into
+ the buffer when we page up/down on a vt terminal.
+write_file():
+ Fixes for umask (Adam Rogoyski). Renamed tmpfile
+ variable to tmp. Documented the tmp option
+ better in the function comments. Fixed my
+ stupidly commented out check for tmp on setting
+ umask which I really like =>
+- nano.h:
+ Made desc variable in shortcut struct a pointer
+ instead of a fixed-length string.
+- utils.c:
+ Fixed check for config.h before nano.h.
+- configure.in:
+ New checks for getopt_long, getopt.h, removed
+ CFLAGS and LDFLAGS changes. Gonna have to run
+ strip manually now =-) (Andy Kahn)
+ Added check for HAVE_WRESIZE, new file acconfig.h
+ (me).
+
+nano-0.7.9 - 01/24/2000
+- New autoindent feature. Command flag 'i' or '--autoindent'. New
+ function do_char() to clean up character output, global
+ variable autoindent in global.c. (Graham Mainwaring)
+- New flag 't' or '--tempfile', like Pico's -t mode, automatically saves
+ files on exit without prompting. Affects do_writeout(). Also
+ do_writeout() now takes a parameter for if exiting.
+ Global variable temp_opt in global.c (Graham Mainwaring)
+- Preliminary spell program support. Added command flag '-s' or
+ '--speller' for alternative speller command. Added function do_spell()
+ and exit_spell() to nano.c. New global variable alt_speller.
+- nano.c:
+ main(): We now ignore input of decimal 410 because these get entered
+ when we resize the screen. Sorted options in getopt()
+ switch statement.
+ usage(): Sorted options and changed tabs to make room for -s option.
+ write_file(): Now takes a second parameter 'tmpfile', uses mask 0600 and
+ doesn't print the number of lines written on the statusbar.
+ global_init():
+ Added more initializations to globals to support do_spell().
+
+nano-0.7.8 - 01/23/2000
+- Stubbed justify function. Affects main() in nano.c and nano.h defines.
+- Added Fkey equivalents for Pico compatibility. Affects nano.h defines
+ and main() in nano.c
+- Removed redundant reset_cursor() calls from the blank() routines.
+- nano.c:
+ main(): Fixed typo in main while loop for NANO_ALT_REPLACE_KEY.
+ Removed check for isprint() characters in main while loop
+ for people with odd character sets *shrug*. Added some X
+ window F-key combos.
+ read_line(): New function, consolidates of most of the special
+ sections of the file reading code. (Rob Siemborski)
+ do_replace(): Many scattered fixes. (Rob Siemborski)
+ write_file(): Added check for empty filename.
+- winio.c:
+ nanogetstr(): Fixes for deleting at places other than the end of the
+ buffer, cut support. (Adam Rogoyski)
+ blank_edit(): New function, blanks edit buffer. Added call to it in
+ total_refresh().
+- configure: Checks for glib if snprintf or vsnprintf aren't available
+ (Andy Kahn). Changed warning message when no termcap lib
+ is found.
+
+nano-0.7.7 - 01/19/2000
+- Option '-v' for version moved to '-V', because -v is Pico's "read only"
+ mode (affects getopt() in main() and usage() function in nano.c
+- New flag -c, always show cursor position. Affects main() in nano.c and
+ statusbar() in winio.c
+- Option '-x' doesn't show help window at the bottom of the editor.
+ New variable no_help in nano.h and proto.h, affects main(), usage(),
+ and global_init() in nano.c, blank_bottombars(), clear_bottomwin(),
+ bottombars(), and do_yesno() in winio.c (I had to apply this patch by
+ hand =P) (Adam Rogoyski)
+- nano.c:
+ handle_sigwinch(): New function (Adam Rogoyski), handles resizing.
+ page_up(), page_down():
+ - New functions. We now set the cursor at the top right corner,
+ not at the center line, and page up and down a full screen
+ rather than a half screen. Original functions renamed to
+ page_up_center() and page_down_center().
+ main():
+ - Added check for keystroke key sequence 407 or NANO_CONTROL_Z
+ in main while loop because suspend mode was broken. This should
+ fix it, at least for now.
+ - Added long option support (By popular harassment ;-) - Added
+ #include for getopt.h, changed getopt() to getopt_long().
+ Options added so far: --version (-V), --nowrap (-w), --suspend
+ (-z), --help (-h), --nohelp (-x).
+ - Rewrote signal statements (Adam Rogoyski)
+
+nano 0.7.6 - 01/15/2000
+- New ChangeLog format
+- nano.c:
+ main(): Bound CONTROL_H to backspace (oops)
+ Added more Alt-[-key combinations, for page up & down.
+ read_bytes(): New function (Adam Rogoyski)
+ read_file(): Optimizations - malloc()s *buf a little at a time rather
+ than one huge buffer, and replaced the strcat at the end
+ with an index variable. Added call to read_bytes().
+ do_next_word(): New function, binding is control-space (0) (me)
+
+- winio.c:
+ bottombars(): Fixed non-expanding shortcut keys at bottom of screen.
+ (formula is extra space needed = COLS / 6 - 13).
+ actual_x() & strlenpt():
+ Added bug#9 fix - when tabs % 8 == 0, we should only
+ increment tabs by 1.
+ titlebar(): Fixed overrun in titlebar on very long filenames.
+
+0.7.5 Pico 'last line' feature added (Rob Siemborski & me). Eliminated
+ writing a newline at EOF. do_cursorpos and do_replace are now not
+ directly bound to signals but picked up as their control sequences
+ in raw mode. Bug fix in do_backspace. Fixed bug #9 (woohoo!)
+0.7.4 Optimized (obfuscated?) edit_refresh. Malloc() calls checked for
+ available memory, align bug fixed (Big Gaute).
+
+--- As of version 0.7.4 TIP is renamed to nano.
+
+0.7.3 Fixed a double blank_statusbar() when jumping to first and last
+ lines. Took out unnecessary updates in load_file. Bug fix in
+ do_left. Missing updates to totlines, fixed bug #7 (last line not
+ having a newline at the end doesn't get read, bugfix in do_replace
+ with replace all, more/better comments (Robert Siemborski)
+0.7.2 Our first patch accepted into the source! configure fixes
+ and optimizations (Erik Anderson). Added missing stdarg.h to winio.c.
+ Bug fix in update_line for editing long lines. Fixed arguments
+ being put into the filename when none is specified. Preliminary
+ +line command argument function.
+0.7.1 configure tweak for better FreeBSD support. Removed refresh() from
+ edit_refresh to stop cursor "jumping" during screen updates. This
+ will probably cause a bug or two. Replace is now Alt-R (@R) and
+ Goto line is Alt-G (@G), but they have control key aliases of ^\ and
+ ^_ respectively. Made Control-F,B,N,P work like they do in Pico.
+ Control-G will become the Help key, but for now is stubbed out.
+0.7.0 Fixed missing stdlib.h from cut.c. Fixed a few message bugs in
+ findnextstr. Bound Control-D to Delete. Refixed segfault on zero
+ length file. Added Esc-[-A,B,C,D cursor key sequences.
+0.6.9 Preliminary cursor position function. Split up tip.c more, made
+ new files cut.c and winio.c. Fixed a bug in cut_marked_segment
+ that was leaving out a character.
+0.6.8 By request, optchr in main() is now an int. Removed unneeded
+ globals. Bound functions for next/prev page, and wrote functions
+ do_home and do_end.
+0.6.7 Bugfix in do_uncut_text for totlines. Broke up open_file and
+ created read_file. Implemented Insert File. Fixes in tipgetstr
+ for erroneous keystrokes. Added leave_cursor arg to do_yesno().
+0.6.6 Fixes in do_search(), do_replace(), do_writeout, and do_exit() for
+ aborted searches and more Pico-compatible messages. statusq() now
+ returns -2 on a blank entry instead of -1. Bug fix in actual_x().
+0.6.5 More BSD compatibility. Fixed two bugs in do_uncut_text
+ regarding buffers with filebot in them. Fixins in do_backspace
+ and do_enter. Removed unused variables. Removed strip_newline.
+0.6.4 Took out the awful newlines from each string buffers. This will
+ certainly cause more bugs. Fixes in do_exit(). Better empty file
+ handling (I hope).
+0.6.3 Implemented ^E. Removed now unneeded wrapline from filestruct.
+ do_enter() rewritten.
+0.6.2 Better default file permissions. Complete rewrite of do_wrap().
+ Better handling of editing with cursor near COLS - 1.
+0.6.1 Starting to implement wrapping toggle. Fix for unhandled control
+ codes being entered into the buffer. Bug fix in actual_x; more
+ > COLS - 1 functionality, especially on lines with TABs. Fixed being
+ locked into cutbuffer when cutting more than one marked screen of
+ text.
+0.6.0 We have TABs!!! To do this, placewewant is now set to the actual
+ width on the screen we want to be, not an index of current->data.
+ New functions xplustabs and actual_x convert the actual place
+ the cursor should be on the screen to and from the place in the
+ string.
+0.5.5 Changed do_right to test do_down before setting current_x to 0,
+ eliminating the "looping" on the last line when holding the right
+ arrow. Preliminary support for longer than COLS - 1 lines.
+ Wrote do_delete.
+0.5.4 Fixed a bug in total_update that wasn't repainting the screen
+ properly. tipgetstr is much more messy but text is now more
+ editable ;) Fixed crash on entering a new file, hopefully. Awful
+ stub for tab handling, only in do_right() to save me some sanity.
+0.5.3 Added check for malloc.h. Implementing uncut from marker slowly.
+ Fixed a few bugs in do_uncut when not uncutting from marked text.
+ I would not trust your data with the mark code right now, but then
+ we're not at version 1.0 yet so dont trust anything ;)
+0.5.2 Added reset_cursor() before end of update_line so cursor doesn't
+ jump after each keystroke entered. Select text stubbed. Fixed
+ a bug in total_refresh(). Setting a mark will highlight properly,
+ but does not actually affect what gets put in the cutbuffer (yet).
+0.5.1 Writing a file out causes modified to be set back to 0. Good.
+ Set_modified function written. Cut and uncut text now set
+ modified when called.
+0.5.0 Half way there! Implemented write out, save function seems
+ stable. Changed statusbar blank routing to not refresh, a separate
+ program calls it and then refreshes. Made the program not clear
+ the screen on exit, just the bottom two lines (like Pico).
+0.4.2 Implemented replace all in replace function. Crude exit function
+ (asks yes or no if modified but does not write to file).
+0.4.1 Implementing search & replace. Fixed crash on deleting at top of
+ edit buffer. Implemented "timeout" of statusbar messages.
+ Implemented ^A and ^E (beginning and end of line).
+0.4.0 Split code into global.c and proto.h to allow for better multiple
+ file handling. Added #defines for the majority of the shortcut
+ keys in tip.h for easy modification.
+0.3.1 Write edit_refresh which doesn't move the screen around, just
+ updates what's there already. do_wrap() and do_enter() added.
+0.3.0 Preliminary cutbuffer (cut and uncut) support.
+0.2.7 Check for Modification added. do_search() works.
+0.2.5 Rewrite of file data struct.
+0.2 Read in data to buffer, bound keystrokes to stub functions,
+ initial cursor movement on screen. Initial autoconf support.
+0.1 Initial program setup w/ncurses
+
+$Id: ChangeLog.pre-2.1 4199 2007-12-17 23:05:11Z dolorous $
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..7d1c323
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,365 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+ The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package, generally using the just-built uninstalled binaries.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'. This
+is known as a "VPATH" build.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+ By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS
+ KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..9f696c7
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,11 @@
+## $Id: Makefile.am 4227 2008-03-15 23:14:34Z astyanax $
+AUTOMAKE_OPTIONS = gnu no-dependencies
+
+SUBDIRS = doc m4 po src
+
+EXTRA_DIST = ABOUT-NLS AUTHORS BUGS COPYING COPYING.DOC ChangeLog \
+ ChangeLog.pre-2.1 INSTALL NEWS README README.SVN \
+ THANKS TODO UPGRADE config.rpath install-sh missing \
+ mkinstalldirs nano.spec
+
+ACLOCAL_AMFLAGS = -I m4
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..275e550
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,729 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(srcdir)/nano.spec.in $(top_srcdir)/configure ABOUT-NLS \
+ AUTHORS COPYING COPYING.DOC ChangeLog INSTALL NEWS THANKS TODO \
+ config.guess config.rpath config.sub depcomp install-sh \
+ missing mkinstalldirs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glib-2.0.m4 \
+ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = nano.spec
+CONFIG_CLEAN_VPATH_FILES =
+depcomp =
+am__depfiles_maybe =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d "$(distdir)" \
+ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr "$(distdir)"; }; }
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURSES_LIB = @CURSES_LIB@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKGDATADIR = @PKGDATADIR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = gnu no-dependencies
+SUBDIRS = doc m4 po src
+EXTRA_DIST = ABOUT-NLS AUTHORS BUGS COPYING COPYING.DOC ChangeLog \
+ ChangeLog.pre-2.1 INSTALL NEWS README README.SVN \
+ THANKS TODO UPGRADE config.rpath install-sh missing \
+ mkinstalldirs nano.spec
+
+ACLOCAL_AMFLAGS = -I m4
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+nano.spec: $(top_builddir)/config.status $(srcdir)/nano.spec.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzma: distdir
+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+ $(am__remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lzma*) \
+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @$(am__cd) '$(distuninstallcheck_dir)' \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+ ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am am--refresh check check-am clean clean-generic \
+ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
+ dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
+ distclean distclean-generic distclean-hdr distclean-tags \
+ distcleancheck distdir distuninstallcheck dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..bd73632
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,1318 @@
+2010.11.22 - GNU nano 2.2.6 "Pimp my BBS" wants you to go to
+ www.desertbus.org and donate a few bucks for the great
+ Child's Play Charity! This is just a small release to
+ update a bug where restricted mode was not particularly
+ restricted since key bindings were introduced. It also
+ signals the return of win32 builds which now feature
+ nanorc support; please see the FAQ for details of how
+ to enable it, this feature is a bit of a kludge for now.
+ Remember that when all else fails, USE SPACE JUMP.
+
+2010.08.05 - GNU nano 2.2.5 "Inactivity timeout" is now available.
+ This release includes slightly less restrictive checkng
+ when writing files in strange environments (e.g.
+ when being used out of crontab). For very strange situations
+ (such as where you cannot change the permissions on the
+ file you're writing, there is a new rc file option
+ "allow_insecure_backup" to be even more permissive and
+ allowing the write to proceed. Also included are
+ some syntax highlighting updated, and that is about it.
+ Keep fighting the good fight children.
+
+2010.04.15 - GNU nano 2.2.4 is nobody's fool. First and foremost,
+ this relase includes some security fixes due to
+ an assessment of nano's vulnerability to symlink attacks
+ on open files. The CVEs fixed with this release are
+ CVE-2010-1160 and CVE-2010-1161. Also included are fixes
+ for various crash modes when using the spell checker
+ on new files in multibuffer mode (surely you've used
+ that combination recently? No?) as well as a fixing
+ the 'file was modified' message when saving to a
+ new filename (since how would nano know?). And
+ the list would not be complete without our
+ third-times-the-charm fixes to page up/down due to
+ the soft wrapping code. The lone new feature
+ included is a new syntax higlighting definition for
+ cmake-related files. Please do consider upgrading to
+ this release if still using the 2.0 series since
+ fixes for that version are still forthcoming.
+
+
+2010.02.11 - GNU nano 2.2.3 "fumbling toward stability" is released.
+ This release contains a fix for only one bug, but a
+ rather irritating one: when paging up/down with smooth
+ scrolling, the cursor position was not being preserved
+ due to a bug in 2.2.2. With such a targeted fix
+ like this what could POSSIBLY go WRONG? Hahaha.
+ Enjoy and if you find new bugs, as always please
+ use Savannah's bug tracker.
+ http://savannah.gnu.org/bugs/?func=additem&group=nano
+
+2010.01.17 - GNU nano 2.2.2 is released for you, you, you. This
+ release includes fixes for: crashed when writing
+ backup files in certain conditions, improper
+ screen centering when moving up/down in various
+ combination of smooth scrolling and soft wrapping modes,
+ a search crash on the armel arch, and issues with
+ lots of keybinding customizations causing crashing
+ particularly on FreeBSD. Also included are better
+ help menu entries for forward/back in the file browser,
+ some man page tweaks and one assert fix. As always,
+ share and enjoy!
+
+2009.12.12 - GNU nano 2.2.1 "DLR strikes back" is open for business.
+ This release fixes many bugs, including: missing
+ keybindings for page up/down and GotoDir in the browser,
+ ^P/^N in the help menu, and restoration of M-W as the
+ default re-search binding. Other fixes include several
+ issues with compiler warnings and configure options, and
+ documentation updates, including the nano texinfo manual,
+ nano and nanorc man pages, and UPGRADE file, and some
+ missing syntax highliting entries for the saple nanorc.
+ And no release would be complete without the latest round
+ of 'final' soft wrapping fixes! Finally, nano will no
+ longer print a warning when attempting to insert the
+ contents of a read-only file into an existing buffer.
+ Enjoy and Happy Hanukkah.
+
+
+2009.11.30 - GNU nano 2.2.0 "Doc Brown" is released! The culmination
+ of almost two years of development and hot on the heels
+ of nano's 10th birthday is available for all your
+ editing needs! Bugs fixed since the last release
+ include several fixes for tiny mode (involving both
+ the help keys and replace menu text), more 'final'
+ fixes for soft wrapping, and several typo and documentation
+ updates including nanorc tweaks and a new syntax
+ highlighting file for makefiles. Also included is a long
+ standing fix for random crashing when using nanorc on
+ FreeBSD, and nano will no longer clear the screen on
+ suspend to maintain compatibility with other *nix editors.
+ For those who haven't been playing along at home, please
+ see the official web page for the summary of new
+ features since 2.0. Special thanks to all who have
+ submitted bug reports recently in support of our new
+ stable release, and apologies for all those bugs we
+ didn't yet find :-) Peace to all.
+
+2009.11.21 - GNU nano 2.1.99pre2 is available for a special pre-Black
+ Friday discount. Included are some (hopefully
+ final) fixes for issues with last page display
+ caused by the soft wrapping code, and a fix for
+ a long standing issue with hittig the home key when
+ going through the search history. On the features
+ front, nano will now attempt to retain the proper
+ ownership and permissions when trying to create a
+ .save file due to receiving a signal. Nano can also
+ now unbind keys from one or more menus via the 'unbind'
+ keyword. Finally, passing --fill or --nowrap on
+ the command line will now override any related
+ .nanorc entries. Speak now or forever hold your bugs!
+
+2009.11.15 - GNU nano 2.1.99pre1 "take a bow" is out there, man, it's
+ out there all right. This release contains mainly
+ bugfixes, underscoring that we are preparing for the
+ next stable series release. Included are many fixes
+ for the new soft wrapping code, compiler warning tweaks,
+ and the modification time warning no longer triggers
+ when saving a file as a new name. Also include are
+ some fixes for various nanorc options, and there are
+ surely more bugs to find before we call the code base
+ stable, so please keep those reports coming!
+
+2009.09.14 - GNU nano 2.1.11 is on very thin ice, very thin ice, very thin
+ ice. This release includes two new features: first, nano
+ will check whether the current file is writable when it
+ is opened, and warn if it is not on the status bar. Secondly,
+ a new soft-wrapping (AKA full line display) option is
+ available, which will attempt to fully display the contents
+ of lines longer than the width of the screen without the
+ usual truncation and a '$' symbol at the end of the line.
+ It can be enabled via Meta-$ inside the editor, via the
+ -$ or --softwrap command line flags, or "set softwrap"
+ in your .nanorc). As always please report any bugs to the
+ nano Savannah project page
+ (http://savannah.gnu.org/bugs/?func=additem&group=nano)
+ Remember: data loss happens, back up your files.
+
+2009.07.28 - GNU nano 2.1.10 "Ellie" is released. This version includes
+ various fixes for portability including some older HP-UX
+ compiler combos, various compiler warnings, and some crash
+ fixes in the undo code. On the topic of the latter item,
+ the undo code is now marked as experimental since it can
+ cause severe stability and memory issues, and thus now
+ requires a flag (-u, --undo) in order to enable it.
+ Please feel free to continue to test the undo code and
+ thanks again for using nano for your text editing needs.
+ Go team Nano!
+
+2009.02.16 - GNU nano 2.1.9 wonders what all that glass is doing on the
+ floor! This release is primarily meant as a less buggy
+ version of 2.1.8, particularly for issues with the new
+ sped-up syntax highlighting code. Other fixes include
+ configure-time detection of groff HTML support before
+ attempting to generate the HTML version of man pages,
+ and using ~ or ~username syntax in .nanorc should now
+ work again. Also, nano will now only ask for one
+ acknowledgement of errors it encounters when parsing
+ nanorc files, and a new flag -q (--quiet) will silence
+ these messages altogether. Give it a go, and happy
+ birthday lenny!
+
+2009.02.07 - GNU nano 2.1.8 "unsafe at any speed" is released. This
+ release include some long overdue performance
+ improvements in syntax color highlighting, the ability
+ to abort running searches (useful mainly when
+ editing very large files) and the ability to use nano
+ like a pager for viewing standard input (i.e. "nano -").
+ Additionally, there are gentoo syntax highlighting
+ updates and fixes for issues with reading files
+ in a directory with strange parent directory permissions.
+ The key bindings code was also substantially changed
+ in order to be more ISO-C compatible. Be sure to use
+ the Savannah page not only for bug reports but for any
+ features you would like to see before the next stable
+ series is released. Have fun with it!
+
+
+2008.11.10 - GNU nano 2.1.7 "Effingham" is ready to make good on those
+ campaign promises of lower bug rates and 50% more pie.
+ This release includes a new check for external
+ modifications when saving a file, some code and
+ documentation cleanups, and more bug fixes for
+ the new undo code (but we continue to welcome your bug
+ reports via the Savananh bug page at
+ http://savannah.gnu.org/bugs/?func=additem&group=nano.
+ Come get some.
+
+2008.10.03 - GNU nano 2.1.6 was for new features before it was against
+ them. This release includes more undo capability,
+ several new syntax highlighting configurations including
+ Objective C, OCaml, and Fortran, and a new capability
+ to activate highlighting based on the 1st line of the
+ file being edited. Also, the new default configure
+ options now include color syntax highlighting, .nanorc
+ support, multibuffer and extras. These items can still
+ be disabled and are not enabled with --enable-tiny. Bug
+ fixes include better signal handling under Cygwin, and
+ that's about it. Again please remember to
+ submit bug reports via Savannah at
+ http://savannah.gnu.org/bugs/?func=additem&group=nano
+ as undo functions certainly need more testing.
+ Bon appetit.
+
+2008.08.30 - GNU nano 2.1.5 is ready to lead on day one. This release
+ contains a better fix for incorrectly reported successful
+ writes on full filesystems, more helpful messages when
+ an internal error occurs in the undo code, and fixes for
+ various combinations of configure-time options and
+ compiler flags. Also included is new support for
+ changing the rc file name at configure time, and
+ using GNU-style regexes for word-boundaries on systems
+ which do not support them natively, as well as the ever
+ popular translation updates. Rock the tarball.
+
+2008.08.09 - GNU nano 2.1.4 "I told you so!" is released. This release
+ includes fixes for several severe issues with the new
+ undo/redo code. Also the behavior of writing
+ files when using backup mode has changed as well: if writing
+ the backup file fails, nano will not attempt to write the
+ current file. This should help folks who enjoy "extreme
+ text editing" i.e. editing files on file systems which
+ are likely to run out of space; see Savannah bug 24000.
+ Have fun with it!
+
+2008.08.04 - GNY nano 2.1.3 "least stable version ever" is released. This
+ release includes new (and experimental) undo and redo
+ functionality for most text operations. The default
+ key bindings are Meta-U for undo and Meta-E for redo, but
+ these can be remapped using the new 2.1 keybinding code.
+ Also included are some fixes for configuring using wide
+ curses, crashing when invoking the help menu with
+ certain locales, and not saving the search history when
+ compiled with configure options.
+
+2008.04.24 - GNU nano 2.1.2 "New York City" is released. This release
+ contains fixes for binding bad keys, some
+ configure-specific compilation failures, and more issues
+ with the new input back end and in particular the status
+ bar. Also fixed are some long standing issues with
+ compiling on AIX, and a segfault when making the terminal
+ window too small. Rest in Peace Tim and George!
+
+2008.04.01 - GNU nano 2.1.1 wont get fooled again. This release contains
+ fixes for the new user-rebindable keys (in particular
+ bracket match which was mis-bound), and various
+ problems with translations and configure-related
+ compilation problems are now fixed as well.
+ It also contains new syntax highlighting
+ definitions for TCL, PHP, Gentoo and Debian-related
+ files, and some documentation updates as well.
+ Please continue to send reports with the key
+ binding code to the Savannah page
+ (https://savannah.gnu.org/bugs/?group=nano).
+
+2008.03.18 - GNU nano 2.1.0 "under old mismanagement" is released.
+ This first release in the 2.1 development series
+ introduces rebinadble keys for most actions inside
+ the editor. Please see the nanorc(5) page for
+ more information on configuring key bindings. Please
+ also report all keybinding bugs (crashes, missing
+ menu functions) using the Savannah bug tracker URL,
+ https://savannah.gnu.org/bugs/?group=nano and
+ thanks for sticking with us!
+
+2007.12.20- GNU nano 2.0.7 keeps its balance. This release fixes
+ several bugs, among others: a segfault and several
+ cursor positioning problems when uncutting text or
+ inserting files into the current buffer; a problem where
+ the total number of characters would be miscalculated
+ when replacing single-byte characters with multibyte
+ ones; several minor issues with the statusbar prompt
+ involving text display and mouse support; and several
+ oddities when tab-completing in the middle of a line.
+ It also improves autodetection of DOS and Mac format
+ files, properly supports the mouse wheel when using a
+ version of ncurses built with the --enable-ext-mouse
+ option, fixes some problems under NetBSD curses, adds a
+ lot of translation updates, and adds more minor
+ documentation updates. Slang curses emulation support
+ has also been changed to turn off all the options that
+ --enable-tiny does, as it's hopelessly broken otherwise.
+ Finally, nano is now licensed under the GNU GPL version
+ 3 or later, and its documentation is now dual-licensed
+ under the GNU GPL version 3 or later and the GNU FDL
+ version 1.2 or later. Have fun.
+
+2007.04.26- GNU nano 2.0.6 "that was quick" is released. This release
+ fixes a potential segfault after justifying text marked
+ from the bottom up. It also adds one more minor
+ documentation update. Enjoy.
+
+2007.04.22- GNU nano 2.0.5 braces for impact. Among other things, this
+ release fixes various problems (including a segfault)
+ when trying to open or save a file in a directory
+ beginning with "~" that isn't a home directory; fixes a
+ problem where a file with no name could be saved over an
+ existing filename with no warning about overwriting it;
+ properly disallows opening directories or device files
+ from "include" commands in nanorc files; no longer
+ displays a misleading prompt when trying to save in
+ restricted mode with the mark on; and properly supports
+ the Cancel and Shift-Cancel keys. It also improves
+ several color syntaxes to highlight trailing whitespace,
+ just as the Java syntax does, and adds yet more minor
+ documentation updates. Have fun.
+
+2007.04.06 - GNU nano 2.0.4 heralds the dawn. This release contains
+ proper support for the Ctrl-[arrow key], Shift-[arrow
+ key], and F13-F16 keys under Xfce's Terminal. It also
+ adds still more minor documentation updates. Enjoy.
+
+2007.01.29 - GNU nano 2.0.3 flows toward its ending. This release
+ contains several minor optimizations to make the
+ executable a little smaller under some circumstances,
+ some translation updates, improvements to the color
+ syntax for Python, and still more minor documentation
+ updates. Have fun.
+
+2006.12.20 - GNU nano 2.0.2 forges ahead. This release fixes a segfault
+ when trying to save in a nonexistent directory; fixes
+ handling of strings containing nulls at the "Write File",
+ "Insert File", "Execute Command", and "Go to Directory"
+ prompts; fixes several minor memory leaks; fixes two
+ more potential compilation warnings; adds a few
+ translation updates; and adds a few more minor
+ documentation updates. Enjoy.
+
+2006.11.20 - GNU nano 2.0.1 emerges from its cocoon. This release
+ contains several bugfixes: saving one file over another
+ will now always warn about overwriting it, overwriting
+ a file is no longer possible when saving a new file in
+ restricted mode, and zero-length Unicode characters are
+ now highlighted properly when nano is built without
+ regular expression support. It also adds several minor
+ documentation updates. Have fun with it.
+
+2006.11.06 - GNU nano 2.0.0 does its little dance. This release adds
+ documentation updates and a few cosmetic tweaks.
+ For those who haven't been following nano 1.3
+ development, there are a ton of new features, including
+ support for UTF-8, moving to a specified line and column
+ instead of just a line, improved color syntax
+ highlighting, inserting previously untypeable characters
+ using "Verbatim Input" mode, and copying text into the
+ cutbuffer without cutting it. There are also fixes for
+ some long-standing bugs, such as the "NumLock glitch"
+ from nano 1.2.x, and the inability to unjustify text
+ after resizing. Finally, there are also a ton of
+ translation updates and new translations, as well as new
+ color syntaxes. See the UPGRADE file for more
+ information, and enjoy the new stable release.
+
+2006.10.25 - GNU nano 1.9.99pre3 learns to appreciate life. This
+ release fixes a bug where the screen sometimes wouldn't
+ be updated properly after copying text into the
+ cutbuffer, fixes a potential warning while compiling,
+ and fixes a few other minor inconsistencies. Have fun.
+
+2006.10.02 - GNU nano 1.9.99pre2 crosses the threshold. This release
+ fixes a few more bugs: cursor positioning after leaving
+ the statusbar prompt has been fixed, and verbatim input
+ at the statusbar prompt now properly handles newlines.
+ Enjoy.
+
+2006.08.29 - GNU nano 1.9.99pre1 passes through the flames. This
+ release fixes various bugs in the last version: the
+ mouse support properly ignores everything except clicks
+ of the left mouse button; the statusbar is now blanked
+ properly when it should be; indenting and unindenting
+ operate on the current line when the mark is off; nano
+ should build on Tru64, NetBSD, and other systems that
+ use termcap instead of terminfo in their curses
+ libraries; the built-in file browser now properly
+ navigates file lists that take up only one row; the
+ cursor position is now completely restored after
+ inserting a file into the current buffer, and after
+ inserting the output of a command into a new buffer; the
+ ^X shortcut at the search prompt has been removed, as
+ official Pico doesn't include it and it's too easily
+ confused with Exit; the screen is updated properly after
+ scrolling a line without moving the cursor; the keyboard
+ input routines behave more consistently; and so on.
+ Have fun with it.
+
+2006.06.26 - GNU nano 1.3.12 escapes the darkness. This release
+ contains the last new features that nano will have
+ before 2.0: copying text into the cutbuffer without
+ cutting it, indenting lines of marked text with a single
+ keystroke, reworked help text that should be easier for
+ new users, searching for filenames in the file browser,
+ the ability to include color regexes in files separate
+ from nanorc files, etc. It also contains many bugfixes.
+ Text can now be unjustified after justifying it and
+ resizing the window; the screen is now cleared when
+ suspending; the "default" color syntax is now handled
+ properly at all times; lines of text containing tabs are
+ now wrapped at the right place; double-column characters
+ are now properly displayed when past the right edge of
+ the screen; invalid multi-line color regexes are now
+ ignored; and so on. Enjoy.
+
+2006.03.30 - GNU nano 1.3.11 awakens from its fever dream. This release
+ focuses mostly on bugfixes, which include better
+ handling of the cursor at the statusbar prompt, support
+ for certain combinations of Shift and keypad keys in
+ both normal and --rebind-keypad mode, a fix for a minor
+ display problem after some searches, a real fix for a
+ long-standing segfault when displaying overly long
+ lines, and a real fix for nano's not hanging up properly
+ in xterm under certain circumstances. There are also
+ several new features, such as the ability to set the
+ characters used as brackets when searching for matching
+ brackets, and tab completion of directories at the "Go
+ To Directory" prompt. Have fun.
+
+2005.12.23 - GNU nano 1.3.10 rises to the surface. This release
+ contains several new features as well as fixes for
+ several longstanding bugs. The former include the
+ ability to scroll up or down single lines without
+ scrolling the cursor, reworked bracket searching code
+ that doesn't require regular expression support,
+ reworked command execution code that uses $SHELL if
+ available instead of hardcoding "/bin/sh", and the
+ ability to no longer add newlines to files that don't
+ end in them via the -L/--nonewlines option. The latter
+ include fixes to the statusbar prompt so that mouse
+ clicks work properly on it, fixes to the Yes/No/All
+ prompt so that mouse clicks on it work properly when
+ -O/--morespace is used, and fixes to the resize handling
+ so that nano dies properly when the terminal is too
+ small to display a prompt. Enjoy.
+
+2005.10.23 - GNU nano 1.3.9 breaks through the wall. This release
+ includes major enhancements as well as bugfixes. The
+ enhancements include better handling of invalid UTF-8,
+ expansion of the word count option to also count lines
+ and characters in the file or selection, more efficient
+ screen update routines, a readded -K/--rebindkeypad
+ option to work around numeric keypad problems on
+ terminals that don't show the usual NumLock glitch, a
+ new -W/--wordbounds option to properly detect words
+ containing punctuation when moving among them, and
+ massive improvements to the color code such as handling
+ of unspecified foreground colors, more efficient memory
+ usage for color regexes, and new reserved syntaxes
+ "default" and "none". The bugfixes include fixes for
+ the rewritten history code, fixes for potential line
+ numbering problems on 64-bit platforms, fixes for a few
+ long-standing minor display problems, a fix for erroneous
+ hangups occurring while waiting for input, and a fix for
+ a segfault when displaying certain overly long lines.
+ Have fun with it.
+
+2005.06.30 - GNU nano 1.3.8 floats at its own level. This release
+ contains several new features. Among other things, you
+ can now move to a specified column number as well as
+ line number within a file, file backups saved in a
+ backup directory will have unique names, the search and
+ replace history routines should work more consistently,
+ you can get a word count by pressing Meta-D at the edit
+ window, and there's a new -E/--tabstospaces option to
+ convert all typed tabs to spaces (--backupdir's short
+ option has been changed to -C). In terms of bugfixes,
+ this release contains fixes for minor problems with
+ screen updates, UTF-8 display, and flow control; a fix
+ for a segfault when displaying some lines ending with
+ tabs; better handling of constant cursor position
+ display; improved color parsing in the rcfile; and
+ support for the "Regexp" toggle in tiny mode
+ (-R/--regexp is gone, and --restricted's short option
+ has been changed to -R), among other things. Enjoy.
+
+2005.04.10 - GNU nano 1.3.7 claws its way to the top. This release
+ mostly contains bugfixes for the massive amount of new
+ code in 1.3.6. Among other things, nano builds with
+ debug support again; going into the help browser at the
+ "Read File" prompt no longer kicks you out of the prompt
+ after you exit the help browser; paragraph searching no
+ longer skips over certain cases of single-line
+ paragraphs; the titlebar no longer cuts off some UTF-8
+ strings prematurely; and the text displayed in the help
+ browser is now wrapped as it was in nano 1.2.x, taking
+ UTF-8 support into account. New features include an
+ --enable/disable-utf8 configure option to explicitly
+ turn detection of UTF-8 support on or off, and sample
+ regexes for C++ as well as C. Have fun.
+
+2005.03.20 - GNU nano 1.3.6 "shout it from the rooftops" is released.
+ This release finally includes the long-awaited support
+ for UTF-8. Other new features include the ability to
+ insert UTF-8 characters using verbatim input; the
+ ability to delete all text from the cursor position to
+ the end of the file via ^W^X as (patched) Pico does;
+ improvements to input and output so that pasted text
+ displays faster, improvements to the statusbar prompt so
+ that more edit window shortcuts, including verbatim
+ input and previous/next word search, work in it; a new
+ option to allow using the formerly always-blank second
+ line of the screen as part of the edit window; and the
+ ability to refresh the help browser and file browser
+ windows via Ctrl-L. Notable bug fixes include a fix for
+ a segfault when using full justify, and a fix for the
+ long-standing bug where nano would keep running if the
+ terminal it was in died unexpectedly. Enjoy.
+
+2004.11.22 - GNU nano 1.3.5 hurls itself forward. New features in this
+ release include the ability to replace only marked text
+ when the mark is on, improvements to smooth scrolling so
+ that it applies everywhere instead of just affecting the
+ movement keys, improvements to how files are opened so
+ that they are no longer displayed unnecessarily, support
+ for multiple +LINE arguments in addition to multiple
+ filenames on the command line, autodetection of the
+ format to save a file in based on the format it was in
+ when it was opened, the ability to toggle both ways
+ between the "Read File" and "Execute Command" prompts
+ and the "Search" and "Go to Line" prompts, and support
+ for cross-compiling nano. As for bug fixes, the
+ "tabsize" nanorc option works again, mouse clicks on the
+ shortcut list trigger the right shortcuts again,
+ tab-completing a filename with %'s in it no longer
+ causes a segfault, the internal spell checker no longer
+ skips words after the cursor position when the cursor is
+ in the middle of the file, and spell checking of only
+ marked text now works properly. Have fun with it.
+
+2004.08.17 - GNU nano 1.3.4 marches forth after a false start. This
+ release mainly features fixes for the bugs that crept
+ into the last release. Among other things, nano now
+ compiles again with certain options, quoted justify now
+ works properly on systems without regex.h, full justify
+ no longer segfaults when used on a file with no
+ paragraphs, previous paragraph searching works properly
+ again, tab completion is properly disabled when needed
+ in restricted mode, Ctrl-C is no longer disabled after
+ using the alternate spell checker, the permissions of a
+ newly created file now match those of nano 1.2.x again,
+ and replacing all text in a file now properly updates
+ the screen in all cases. New features include sample
+ regexes for patch files, improvements to the sample
+ regexes for C files, and support for strings greater
+ than 1023 characters and/or containing nulls in
+ .nano_history. Additionally, the full justify keystroke
+ has been changed to match current Pico, and whitespace
+ display mode is now turned off by default. Enjoy.
+
+2004.06.28 - GNU nano 1.3.3 marches forth. There are several new
+ features in this release, including a restricted mode
+ that provides better security than just setting an
+ operating directory, the ability to justify the entire
+ file at once, support for a "smart" home key that can
+ leap from the beginning of text on a line to the true
+ beginning of the line (or the reverse) in one stroke,
+ support for specifying an alternative spell checker in
+ $SPELL, the ability to specify the characters used to
+ display spaces and tabs so that they can easily be told
+ apart, and the ability to specify the characters marking
+ the ends of sentences as used in justification. There
+ are also several bug fixes; among other things,
+ justification now keeps spaces at the ends of all but
+ the last line of a paragraph as Pico does, saving a
+ marked selection no longer changes the current filename
+ to the filename the selection was saved under, resizing
+ now works better and no longer corrupts the screen under
+ slang, and the movement functions now avoid doing
+ unnecessary redraws and hence work faster. In short,
+ there are a lot of new things to play with. Enjoy.
+
+2004.03.31 - GNU nano 1.3.2 is prepared for the void. New features in
+ this release include the ability to spell-check only
+ marked text and the ability to save all backup files in
+ a specified directory instead of wherever the original
+ files are. Bug fixes include a fix for a segfault when
+ replacing certain regular expressions, fixes for some
+ misbehavior when doing searches, minor fixes to verbatim
+ input mode and keyboard input in general, better
+ handling of window resizes at certain times, and
+ allowing the mark to be saved properly again when
+ switching between multiple file buffers. nano has also
+ been ported to the Tandem NonStop Kernel. Have fun.
+
+2004.01.09 - GNU nano 1.3.1 is outside the gates. This release
+ features, among other things, fixes for the input
+ routines to deal with some problems they had, a
+ reorganized shortcut list for the help browser, minor
+ Pico compatibility improvements for the file browser,
+ fixes for misbehavior when replacing certain regular
+ expressions, and the ability to highlight those regular
+ expressions properly. It also allows searching without
+ prompting to work in view mode, adds support for glib
+ 2.x for those systems that need it, updates the .spec
+ file for the 1.3 branch, prompts you first when you try
+ to save a file under a different name, and adds a new
+ verbatim input mode that acts as ^V does under vi, but
+ with additional Pico compatibility (explained in the
+ FAQ). Basically, a bunch of fixes and a few new
+ features for your editor of choice. Enjoy.
+
+2003.10.22 - GNU nano 1.3.0 is loosed upon the world. This is the first
+ release in the unstable 1.3.x series, and as such it
+ includes a lot of new features, including the addition
+ of a -d option for those FreeBSD users with Backspace
+ keys that act like Delete keys, the ability to repeat
+ the last search without prompting, the ability to search
+ for the beginning or end of a paragraph, new smooth
+ paging routines to go with the smooth scrolling
+ routines, and various improvements to the input and
+ display routines to make them behave more intuitively.
+ It also includes the usual load of bugfixes. Enjoy.
+
+2003.08.11 - GNU nano 1.2.2 is released, only four months since the
+ last version :-). This release includes fixes for
+ broken regex detection, search history recall, and
+ keypad handling with -K. Debugging strings are no
+ longer translated and comments denote where translations
+ should be as short as possible (i.e. the statusbar).
+ There are new examples for syntax highlighting, and
+ documentation updates and fixes. The 1.3.0 CVS tree
+ will be opening soon for all your nano desires, so stay
+ tuned!
+
+2003.04.19 - Happy Easter! GNU nano 1.2.1 is released. This release
+ features a new check for broken regexec()
+ implementations and some variable, function and macro
+ cleanups. Fixes are included for search history,
+ cutting marked text, alt keyboard mode, and the usual
+ translation and documentation updates.
+
+2003.02.19 - GNU nano 1.2.0 is released. Few changes from pre3, just
+ some doc and translation updates, and bugfixes for
+ justify and file conversion. For those of you who
+ haven't kept up with the 1.1 unstable series, v1.2
+ brings nanorc support, color syntax highlighting,
+ multiple file buffers, search/replace history and much
+ much more. Please read the UPGRADE file for details,
+ and enjoy GNU nano 1.2.0.
+
+2003.02.13 - GNU nano 1.1.99pre3 "The last testing version, no
+ really!" is released. This release includes fixes for
+ wrapping (again), resizing, color syntax highlighting,
+ rcfile parsing, the mouse code, more memory leaks, and
+ some reversion of the code to get the user's home
+ directory (nano will now again rely on $HOME). There
+ are also translation updates, a new manual page for the
+ nanorc file, and an UPGRADE file detailing the changes
+ since version 1.0. Please submit reports for any bugs
+ you might find to the development team
+ (nano-devel@gnu.org), and enjoy nano almost-1.2.0 ;-)
+
+2003.02.03 - GNU nano 1.1.99pre2 "bugs in my pockets, bugs in my
+ shoes" is released. There are, not surprisingly, only
+ bugfixes in this release as we move toward the stable
+ 1.2.0 release. Fixes are included for translatable
+ string format, subexpression replacement, constant
+ cursor position, invalid search regexes, justify, screen
+ state on SIGHUP and SIGTERM, cutting to end cuts with
+ long lines, many file browser and operating directory
+ bugs, memory and file descriptor leaks, marker code,
+ spell checker, the mouse code with long lines, multiple
+ buffers and non-file open errors, replacement string
+ length, and a silly but serious history message crash.
+ There is also a drastic improvement in CPU utilization
+ for the color regex code.
+ Depending on the number of bugs found in this
+ release, there may be a 1.1.99pre3 or RC1, or just a
+ 1.2.0 release. Most of the major bugs seem to have been
+ worked out, so if you are waiting for a good time to
+ test nano before the official 1.2.0 release, this would
+ be the one to use. Happy bug hunting!
+
+2003.01.17 - GNU nano 1.1.99pre1 "enough already" has been released.
+ This release is, barring bug fixes and documentation
+ updates, what version 1.2.0 has looked like, feature
+ wise. There will very likely be bugs, just due the
+ volume of changes made in this release. Search and
+ replace string history has been added, including an
+ option to log history to ~/.nano_history (-H,
+ --historylog). Because of this, the Pico incompatible
+ search/replace string behavior that used to be the
+ default has been deleted. The old "pico" flag (-p) is
+ now compatible with Pico's "preserve" mode for allowing
+ flow control characters; by default this version ignores
+ both ^Q and ^S. The --disable-wrapping-as-root
+ configure option has been forward ported from version
+ 1.0.x, and a new flag to enable all extra options
+ (--enable-all) has been added. The internal spell
+ checker has been improved, meaning you will now be
+ prompted only once for each unique capitalization of a
+ given word.
+ There have also been lots of bug fixes,
+ including the "trying to insert a directory name in
+ multibuffer mode bug", the ugly spell checker scrolling,
+ the color code, cutting text crashes, justification,
+ deleting the "magic line" via replace, and cursor
+ positioning on the statusbar. There have also been the
+ usual helping of translation and documentation updates.
+ Please send all new feedback on this release
+ direct to the development list (nano-devel@gnu.org).
+
+10/24/2002 - GNU nano 1.1.12 "Make Jordi happy" is released. This
+ release demonstrates that nano is starting to freeze for
+ version 1.2. New features include a Meta-Y toggle for
+ syntax highlighting, pluralized i18n, and a handler for
+ SIGTERM. Nano now ignores XOFF (^S) to stop accidental
+ lock-ups, and no longer references malloc.h.
+ Also included are fixes for zero-length regex
+ matches, segfaults with --disable-mouse, justification,
+ memory corruption with the browser, version and help
+ cmdline output, and translation updates. Aside from the
+ (currently up in the air) search history behavior, the
+ next version of nano should be 1.1.99pre1. Have fun!
+
+10/01/2002 - GNU nano 1.1.11 "Oddball" is released. This release
+ features a new version of gettext, a new and improved
+ syntax highlighting engine, and some updates for the
+ nanorc.sample file. The toggles for case sensitivity
+ (Meta-C) and regular expressions (Meta-R) have changed
+ in the search and replace prompts, multibuffer status is
+ now displayed and can be toggled from the insert file
+ menu, and some wrapping behavior that changed in 1.1.10
+ has reverted. The --enable-color warning was also made
+ less severe, as the color syntax code has improved, and
+ nano now uses extended regexes in the .nanorc file.
+ Also included are fixes for various memory
+ leaks, the operating directory option, username tab
+ completion, the page_up and down arrow, go to previous
+ word and next word, nanorc parser and line wrapping
+ code. Have fun!
+
+07/25/2002 - At long last! GNU nano 1.1.10 "What didn't we break?" is
+ released. This version of GNU nano features version
+ 0.11.2 of gettext, building with automake 1.6, some new
+ code for displaying control characters, browser
+ improvements, a new backup file option (-B, --backup), a
+ new option to ignore rc files (-I,--ignorercfiles),
+ compatibility with -pedantic, handling null characters
+ before EOF, a slightly sportier nanorc.sample and more.
+ Fixes are included included for justification,
+ the reading and writing file routines, resizing and fill
+ length, millions of memory leaks, the usage screen was
+ updated, and the the --quotestr and --regexp really work
+ now ;-) Enjoy :)
+
+05/12/2002 - GNU nano 1.1.9 is released, happy Mother's Day! This
+ release includes many new features, including a prepend
+ mode (^O,M-P), a new "syntax" command in the .nanorc to
+ allow multiple syntax highlighting types, and a new -Y,
+ --syntax flag to set a specific one if there's no
+ filename regex to match it against (i.e. w/mutt). The
+ ^space and M-space keys will now show up in the help
+ menu, which itself has been tweaked a bit, and many more
+ configure options should now cooperate (like the odd
+ pairing of --enable-tiny and --enable-multibuffer). The
+ marker should now work when using multiple buffers, and
+ the huge memory leak in color syntax highlighting has
+ been fixed. A lot of new stuff for everyone's favorite
+ text editor ;) Have fun!
+
+03/30/2002 - GNU nano 1.1.8 is released. New features include an
+ "Insert Output of External Command", ^R^X, and a .spec
+ file is now included in the distribution. There are
+ cleanups in the usage code, fixes for regex parsing, the
+ file browser, the NO_CONVERT auto-detect, indented
+ justification, the internal spell checker, and a serious
+ bug where reading a file of 0 lines would hang nano.
+ Also, the "show position" code now shows the starting
+ column as 1 instead of 0. Have fun!
+
+03/05/2002 - GNU nano 1.1.7 "lets change everything and see what breaks"
+ is released. New features include new flags
+ -N,--noconvert to stop any file format conversion and
+ -Q, --quotestr for the new quoted text justification, a
+ new tempnam() implementation to avoid silly warnings,
+ DOS and Mac file options in the Write File dialog,
+ multiple save files (file.1) for abnormal exits, ^C now
+ shows column as well as character position, and
+ multibuffer allows duplicate files, even unnamed ones.
+ Also, the static shortcut and toggle lengths are
+ history, nano now reads SYSCONFDIR/nanorc if rc file
+ support is enabled, and nano is now built with (and
+ requires for rebuilding) autoconf 2.5.
+ This release also includes fixes for some memory
+ leaks, detecting DOS and Mac file format, justification,
+ suspending keys, search & replace under various
+ conditions, variable width for shortcuts, and the usual
+ ton of translation updates.
+
+01/25/2002 - GNU nano 1.1.6 is released. Lots of new features in this
+ release. New Meta-keys were added as alternates for
+ control sequences: Meta-A for the marker key (^^), and
+ Meta-G for the 'goto dir' key in the file browser (^_).
+ The color syntax highlighting now supports multiple
+ lines via start="regex" end="regex" syntax, and the
+ .nanorc regex format itself has changed. Also, the
+ gettext code was upgraded to version 0.10.40, and nano
+ will now display a message if only occurrence of a given
+ search exists.
+ For bugfixes, there are fixes for spelling,
+ stray newlines in the usage() function, suspend issues
+ with tcsh, auto-indent and wrapping clashes, ugly code
+ in rcfile.c, global variable compatibility with AIX.
+ There are also oodles of translation updates. Have fun
+ with it.
+
+01/05/2002 - GNU nano 1.1.5 is out. The main new feature in this
+ release is the changed behavior of the keypad. Nano now
+ does the Right Thing and used keypad() by default. If
+ you wish to use the keypad arrow keys in certain
+ terminals, you may use the -K or --keypad flag to use
+ the old behavior. Users of other OSes should see better
+ handling of their non-keypad keys in this release. Other
+ changes include more Hurd fixes, fixes parsing the
+ .nanorc, display fixes for the color syntax
+ highlighting, gettext stabilization and many translation
+ updates. This is almost like a stable release, much
+ like in the 0.9.x series when every other release was
+ the most stable one :) Have fun!
+
+12/11/2001 - GNU nano 1.1.4 is released. This release contains
+ rudimentary color syntax support (but it's still
+ broken), compatibility fixes for the Hurd and FreeBSD,
+ spell checker and wrapping fixes, and more. It seems
+ that the amount of interest in the code is inversely
+ proportional to the amount of time since last release,
+ so it's time to show the world all the changes since
+ 1.1.3 ;) Have fun with it!
+
+10/26/2001 - GNU nano 1.1.3 is released. As far as new features go,
+ the help system is now available for all functions in
+ the editor. Also, nano will also now print a message on
+ the status bar when it automatically converts a file
+ from Mac or DOS format, and trying to load a file that
+ has already been loaded in multibuffer mode will now
+ also cause an error message. There is now a "goto
+ previous word" which you can use by hitting Meta-Space
+ Bar.
+ As for fixes, a SEVERE bug in the null_at code
+ which discarded the memory address of reallocated memory
+ has been fixed. This is probably the biggest bug fix in
+ well over the last year of development. There are also
+ some display fixes for when the screen shouldn't center
+ itself on cut or uncut text. Also, the comments in the
+ header files incorrectly said that nano was distributed
+ under version 1 of the GPL when the accompanying license
+ was the GPLv2.
+ If you're using nano-1.1, it is highly
+ recommended you upgrade to this release. If using 1.0,
+ wait for version 1.0.6 which should be available early
+ next week. Enjoy!
+
+10/03/2001 - GNU nano 1.1.2 is out there. Many new features in this
+ release, including support for auto-converting from DOS
+ and Mac formatted files, as well as toggles for writing
+ out files in these formats. Pico's -o flag has been
+ implemented, as has some new smooth scrolling code
+ (which can be used in place of the default jerky
+ scrolling behavior). Also, there is now a "find
+ matching bracket/brace/etc" feature (Meta-]). The
+ .nanorc file now accepts setting the tabsize, and the
+ help text at the bottom of the editor is now better
+ spaced out in the search/replace prompts. There are
+ also the usual helping of bugfixes, translation updates
+ and, surely a bug or two. You better get ready!
+
+07/28/2001 - GNU nano 1.1.1 is released. Our second 1.1 unstable
+ release features many bugfixes from the initial release,
+ in particular fixes for the multibuffer code, and
+ various compiler macro fixes. The shortcut lists for
+ the search and replace prompts are a little more logical
+ (with cancel the last option again), and the included
+ gettext was re-downgraded to 0.10.35 due to problems on
+ the PPC platform. GNU nano now includes its own aclocal
+ macros in the m4/ directory to allow rebuilding the
+ configure script to work on platforms regardless of
+ their gettext version.
+
+07/15/2001 - GNU nano 1.1.0 is released. This is the first release
+ in the 1.1.x unstable series of GNU nano. It
+ incorporates all changes up to the 1.0.3 release, and
+ also includes many many new features, including
+ appending to as well as overwriting files, writing
+ marked text to a separate file, dynamic wrap length,
+ lots more compatibility with Pico, and new optional
+ features like .nanorc file support and multiple file
+ buffers! All in all, plenty of new stuff that's sure to
+ introduce lots of bugs ;-) Have fun with it, but be
+ careful, unstable means unstable.
+
+07/01/2001 - GNU nano 1.0.3 is the "mutt" release. This release
+ features oodles of bug fixes with cutting text,
+ especially with the -k (cut to end) option. There is
+ also a new suspend handler which should make nano play
+ better with mutt (the code for which came from mutt
+ itself; many many thanks to Jordi Mallach and Tom Lear
+ for working late into the night fixing this). Nano now
+ also features mutt's case insensitive string compare
+ function for more speed and less memory usage. Two new
+ translations are included, Ukrainian and Russian.
+
+05/12/2001 - GNU nano 1.0.2 is the "just the bugfixes ma'am" release.
+ The most noticeable fixes are for display errors using
+ page up/down with the marker code, and view mode (-v)
+ not stopping the replace function. Other fixes include
+ being able to use the arrow keys while holding down the
+ ctrl key in certain TERMs, and there are many
+ documentation updates and spelling tweaks. We also have
+ a new Galician translation (provided by Jacobo Tarrío).
+ Have fun with it!
+
+04/06/2001 - GNU nano 1.0.1 is out there. The only new feature is a
+ configure option for those who want to disable all word
+ wrapping from nano, --disable-wrapping. Bug fixes this
+ release include some bugs with autoconf and i18n, and
+ several fixes in the file browser including a segfault
+ on Solaris, symlinks to directories now work properly,
+ and nano now sorts files case insensitively like Pilot.
+ Have fun with it.
+
+03/22/2001 - GNU Nano 1.0 is released! The autoindent wrapping bug
+ has been fixed, as well as strange bug when using Pico
+ mode and regex search. There have also been some minor
+ spelling and documentation updates. As stated on the
+ website, there are currently no known bugs with nano,
+ but some will pop up eventually and they will be
+ addressed in subsequent releases. We hope you enjoy
+ this first stable release of nano, and as always,
+ feedback is welcome! nano@nano-editor.org.
+
+02/19/2001 - Nano 0.9.99pre3 brings a lot of changes! The most
+ important being that nano is now officially a GNU
+ program. Some changes have been made for GNU
+ compatibility (like the default list of shortcuts, "^G
+ Get Help" is now Listed and "^_ Goto Line" is not). The
+ Yes/No/All keys have finally been internationalized
+ also. All in all, quite a few changes, considering nano
+ is supposed to be in a code freeze. But there are the
+ usual helping of bugfixes, a nasty bug when cutting text
+ in -k mode and some compatibility issues with older
+ ncurses libraries have also been fixed. All in all, a
+ lot to see.
+
+01/31/2001 - Nano 0.9.99pre2 is released. Not surprisingly, all that is
+ new is bugfixes, bugfixes, bugfixes. There were a few
+ cleanups in unneeded global variables and duplicate
+ functions, but most is just fixing. Specifically, there
+ is now a preliminary (read: needs testing) fix for
+ resizing the editor in any mode other than normal edit
+ mode. Other fixes include some more tab completion
+ segfaults, and an silly segfault that occurred when
+ successfully writing a file on the 2nd try (i.e. after
+ an initial write error). Slowly but surely, on toward
+ 1.0 we travel.
+
+01/17/2001 - Nano 0.9.99pre1 is released. This is the first pre-1.0
+ release of nano, and is also the first release since the
+ code freeze for nano 1.0. Don't expect (or request) any
+ new features between now and nano 1.0, only bugfixes,
+ optimizations and doc/translation updates. For fixes, a
+ nasty segfault when trying to insert one's home
+ directory (~), some checks for the NumLock key making
+ the keypad go awry, window size sanity checks, many
+ autoconf fixes, and support for the KDE konsole keypad
+ layout. Have fun.
+
+01/07/2001 - Nano 0.9.25 is the "Just one more feature I swear!"
+ release. It includes one new feature that Pico has had
+ forever, a built-in file browser. Since not everyone
+ may want this option, there is a --disable-browser
+ option to the configure script as well. Other changes
+ include slightly different keypad handling, and a bugfix
+ for crashes when tab completion in certain instances.
+ Have fun and Happy New Year!
+
+12/18/2000 - Nano 0.9.24 is released. This version contains the last of
+ the security fixes for writing files, as well as for a
+ nasty segfault when nano is unable to open a file for
+ reading, among other fixes. Nano also now cowardly
+ refuses to open device files, to stop silly things like
+ trying to open /dev/zero. New features include being
+ Able to use Meta-Meta-<key> as Control-<key>, better
+ HURD support, and some new flags have been added for
+ Pico compatibility. Upgrading to this version is highly
+ recommended.
+
+12/08/2000 - Nano 0.9.23 is the "race conditions bite" release. The
+ main reason for this release is the less-than-optimal
+ fix for the security issue in nano with following
+ symbolic links. Hopefully this will fix the problem
+ permanently. The --nofollow option also works again for
+ those who are real security nuts. There are also some
+ display and search fixes, and the --disable-spell
+ function was renamed to --disable-speller to be in line
+ with nano and Pico's "speller" term.
+
+12/02/2000 - Nano 0.9.22 is released, with many more changes and
+ additions than imaginable. The most important change is
+ a fix for unsafe handling of symbolic links which could
+ lead to symlink attacks if nano were to exit because of
+ an error or signal. Also there are better checks when
+ saving files.
+ As for new features, username tab completion is now
+ working well, the internal spell checker code has been
+ tweaked, you can now unjustify if you don't like how the
+ justify formatted your text, and there are more options
+ for configure, including --disable-spell and
+ --disable-justify and --enable-extra (for those who like
+ surprises). All in all, a whole lot of changes in a
+ little over a week.
+
+11/23/2000 - Happy Thanksgiving! Nano 0.9.21 is our "last version was
+ a big turkey" release. It fixes several bugs introduced
+ by the previous version, as well as a few long- standing
+ display bugs. All 0.9.20 users are strongly encouraged
+ to upgrade to this release.
+
+11/18/2000 - Nano 0.9.20 is finally out the door. Probably the biggest
+ change is the brand new way nano displays previous
+ search and replace strings (they are now editable!)
+ This is a break from Pico's (inconsistent) interface, so
+ if you don't like the new way, "Pico" mode (-p on the
+ command line or Meta-P within nano) still works the
+ "old" way.
+ Other new features include being able to deal with
+ search strings of any length, a new internal spell
+ feature (courtesy of Mr. Rocco Corsi) and tab completion
+ when reading in or writing out files! There's also the
+ usual billion or so bug fixes. Feedback on this release
+ is welcome because so much has changed, especially with
+ the previous string display in search and replace.
+ Email -> nano@nano-editor.org <-. If you like
+ something, don't like something, or just want to order a
+ pizza, let us know!
+
+10/02/2000 - Nano 0.9.19 is the "Chris is getting married in less than
+ a week and needs a distraction" release. There are only
+ a few actual code changes, mainly portability and
+ compiler warning fixes. Nano now also supports
+ PDCurses, which enables easily-built nano executables
+ for Windows NT and 95/98 for the brave. The official
+ nano site has changed (again) as well, check out
+ www.nano-editor.org for all the latest nano schtuff.
+
+09/18/2000 - Nano 0.9.18 is unleashed. It has some new keyboard
+ handling code, Cygwin support out of the box, and a more
+ portable handler for the NOHELP toggle. There is also a
+ fix for a somewhat serious bug whereby trying to insert
+ a directory instead of a normal file would destroy the
+ contents of the editor. A must-see. Four stars.
+
+09/04/2000 - Nano 0.9.17, the Labor Day release, is released after a
+ quiet spell (almost an entire month since last release!)
+ New features include better (not yet perfect) binary
+ display support and toggle support for most of the
+ program flags (M-c, M-i, M-z, M-x, M-p, M-w, M-m, M-k
+ and M-e for -c, -i, -x, -p, -w, -k, and -R).
+
+08/09/2000 - Nano 0.9.16, after some struggling, is released. This
+ release should fix a few of the holes that 0.9.15 dug.
+ The "cutting text on the first line" bug is fixed, as is
+ the "cutting text on the last line" bug. Nice symmetry
+ there huh? Also the --tabsize argument should now work
+ as well as by using -T.
+
+08/03/2000 - Nano 0.9.15 is the "I can't think of a release description"
+ release. There are the usual gala of display bugfixes,
+ a fix for the the nasty bug in -k mode that could create
+ a loop in the file being edited, and some other code
+ cleanup. Also, the -T option should now work regardless
+ of the curses library used. Yay.
+
+07/27/2000 - Nano 0.9.14 is officially the "13 is so unlucky it should
+ be skipped as a version number" release. One typo
+ caused unending problems (calling nano with either -t or
+ -k caused both flags to be used). The -k code is also
+ now closer in functionality to Pico's -k mode; please
+ note that this code is not finished yet. Working on
+ this code has made me realize that there is not enough
+ abstraction in the code, and I will be working on that
+ for the next release. Until then, have fun with this
+ version.
+
+07/23/2000 - Nano 0.9.13 has a few new bits and bobs, most notably the
+ -k option from Pico (cut to end of line). The majority
+ of changes in this release are bugfixes, however,
+ including the usual display fixes and fixes for writing
+ to symbolic links and un-writable files. Barring any
+ other major changes, this should be the feature set for
+ nano 1.0, whenever it might be released =-)
+
+07/07/2000 - Nano 0.9.12 (The "lucky day" release) is bursting with new
+ features, bug fixes, and yummy fruit flavor. For
+ changes, the alternate replace keystroke ^W^T is now
+ ^W^R to be compatible with later versions of Pico. ^W^T
+ is now goto line, again for Pico compatibility. As for
+ new features, the wonderful/hated magic line code has
+ returned with a vengeance! Also, regular expression
+ searches and replaces have been incorporated via the -R
+ flag. And, of course, there are the usual helping of
+ display and other bug fixes to top it all off.
+
+06/20/2000 - Nano 0.9.11 presents drastic rewrites of the most buggy
+ routines in the program, specifically the wrapping code
+ and almost all of the display routines. There are many
+ improvements and bugfixes to the display subsystem in
+ general, but there may be bugs lurking yet. Also, after
+ many MANY requests, there is now an option to set the
+ displayed tab width (-T, --tabsize). Note that this
+ function just changes the way tabs LOOK in the editor,
+ the tabs you input are still real tabs of normal width
+ (usually 8 characters); nano just makes them look
+ smaller or bigger while in the editor. New in the
+ translation department is an Indonesian translation
+ (id).
+
+06/06/2000 - Nano 0.9.10 is primarily a bugfix for the loss of SIGINT
+ when using "run and terminate" flags (for example,
+ --help). There are also some minor documentation
+ updates. This version of nano is the most stable in
+ quite some time, and is likely to be the most stable for
+ awhile. Users are encouraged to upgrade to this
+ version.
+
+05/31/2000 - Nano 0.9.9 introduces much better working i18n support,
+ more portability, and a ton of bugfixes. While nano is
+ not likely anywhere near 1.0 in terms of code quality,
+ it gets a quantum leap closer with this release.
+
+05/18/2000 - Nano 0.9.8 (the 'what broke now?' release) should fix
+ the resize crash people have been experiencing. It also
+ offers a new input method that should allow nano to do
+ things the right way (like ^S, ^Q, custom suspend keys)
+ and hopefully won't break with non-US keyboards. There
+ are also the obligatory display fixes and speedups.
+ Have fun with it.
+
+05/14/2000 - Nano 0.9.7 (the Mother's Day release) continues in the long
+ line of display fixes, and also fixes the broken symlink
+ behavior (i.e. symlinks weren't being followed by
+ default). Hopefully all major bugs can be worked out
+ soon and we can have a 1.0 release before the end of the
+ year, but who knows.
+
+05/08/2000 - Nano 0.9.6 cleans up a lot of the display bugs that 0.9.5
+ uncovered. There are improvements (and some remaining
+ segfaults) in the wrapping code, and even more display
+ optimizations. I would still say 0.9.4 or 0.9.2 are the
+ most stable versions of nano to date, but this one may
+ not be too bad =-)
+
+05/01/2000 - Nano 0.9.5 attempts to speed up the display of text
+ to be at least somewhat reasonable. Much code profiling
+ has been done to reduce the ridiculous number of
+ redundant display updates. This will probably expose a
+ lot of bugs that can then be fixed, so this release is
+ probably not for the faint of heart. For anyone
+ curious, I would call nano 0.9.2 the most stable version
+ recently, so use that if you're not particularly
+ concerned with being on the bleeding edge.
+
+04/25/2000 - Nano 0.9.4 fixes some problems in 0.9.3 with the last
+ line code and related segfaults. It also now has much
+ better handling for 8-bit characters. The --enable-tiny
+ code also produces a smaller executable.
+
+04/19/2000 - Nano 0.9.3 is officially the "Micro$oft" release. It
+ underscores the recent problem of bugfixes introducing
+ more bugs than they fix. The most important change to
+ this version of nano is the removal of the "magic line".
+ You will no longer see a blank line at the end of the
+ file. If you want a new line at the end of your file,
+ you'll have to hit enter to get one.
+
+ NOTE: THIS BREAKS COMPATIBILITY WITH PICO.
+ Unfortunately, this feature has been causing many many
+ problems with nano so it is being removed for the time
+ being, and perhaps indefinitely.
+
+ Other new stuff includes an --enable-tiny option to make
+ nano ultra small (disabling i18n, detailed help and the
+ marker and mouse code), and --with-slang to use the
+ slang libraries instead of ncurses.
+
+04/15/2000 - Nano 0.9.2 just fixes the serious segfault problem if
+ nano is invoked any way other than using the absolute
+ path. The bug was in the new code for checking whether
+ nano is invoked as 'pico'.
+
+04/14/2000 - 0.9.1 has some more Pico compatibility built-in. The
+ option to switch to/from Search and Search/Replace (^T)
+ is now available, and nano now displays the more
+ Pico-like shortcut list when invoked as 'pico' (i.e. if
+ 'pico' is a symlink to nano). There is an important
+ change to the handling of symbolic links as well. Now,
+ nano does the "correct" thing and automatically writes
+ to the object of the symlink, rather than replace the
+ symlink with the updated file. This behavior is still
+ available with the --nofollow or -l flags.
+ Other new things include a fix for the infamous
+ "recursive replace" bug, and more bugfixes in the
+ wrapping code.
+
+04/07/2000 - Nano 0.9.0 has some updates, new language support and
+ a much better refresh setup (It's still not great,
+ but...) There should also be more stability editing
+ long lines, as there was a stupid mistake in the
+ update_line call. Silly me =)
+
+03/22/2000 - Nano 0.8.9 is basically just a bugfix release of 0.8.8
+ to reflect the current stagnant status of the project.
+ Most things work, the rest doesn't doesn't work because
+ (a) I can't fix it or I would have already done so, and
+ (b) the amount of patches I'm receiving right now is
+ quite negligible. Fortunately, this release marks the
+ first release since I have acquired ownership of the
+ nano pages on SourceForge. Here's hoping SF will get us
+ some more visibility, translators and patches.
+
+03/12/2000 - After a hiatus, I have finally moved (not unpacked though)
+ to my new home into Albany. Thus I should now have more
+ time to work on nano. Nano 0.8.8, the "dear god what
+ broke this time?" release, incorporates patches for both
+ i18n and many bugfixes. It is VERY likely something
+ broke this version, and it's likely I didn't even apply
+ the i18n stuff properly, so *it* may not even work.
+
+ I would like to announce that I'm going to need
+ translations soonish, so if you are fluent in other
+ languages than English (or even better, if your native
+ language is not English) and you would like to submit a
+ translation file to me, please feel free to do so. If
+ you do, I will list your name and email in the AUTHORS
+ file as the maintainer of the .po file, and from then on
+ it is yours to take care of and keep up to date.
+
+03/01/2000 - Well, to continue my trend of going back on my previous
+ release's comments, nano 0.8.7 is released. The
+ crashing behavior was still occurring, and this most
+ recent fix also fixes some other wrapping problems, so
+ here you go. There may be another release soon, there
+ may not be, is that vague enough? =)
+
+02/25/2000 - More minor bugfixes in 0.8.6, the bizarre behavior at the
+ end of a page has ceased, thankfully. I'm also moving
+ next weekend, so don't be shocked if you don't see a new
+ version of nano next week =-)
+
+02/11/2000 - Okay, here we go again. Aside from a few minor fixes and
+ some under-the-hood changes, you won't notice much
+ different in this version of nano. I haven't gotten
+ much feedback on the help feature, is it simply amazing
+ or does no one care? Write and let me know! =)
+
+02/08/2000 - Nano 0.8.3 marks the first time in a long time that there
+ has been more than three days since the last release.
+ New features include an initial help mode (YAY!),
+ hopefully much more support for i18n out of the box, and
+ a flag for more Pico compatibility in the shortcut lists
+ displayed. This release also marks the new nano
+ distribution site, http://www.asty.org/nano and email
+ address nano@asty.org for bugs, etc.
+
+02/02/2000 - Okay, I hate to go back on what I said in the last release,
+ but I may be changing jobs very soon. I will release
+ version 0.8.2 as is (no i18n, no help menu (yet). I
+ expect things to settle down by the end of next week,
+ and then I can try to start on the i18n support and help
+ menu; look for these new features in version 0.8.5 to
+ 0.9.0.
+
+01/28/2000 - Nano 0.8.1 marks our first official step toward
+ internationalization (i18n) and the help system (^G). I
+ will be merging in Jordi's patches for initial i18n in
+ the next version, and will implement the help system
+ with i18n built into it shortly after that. Please
+ don't hesitate to send bug reports, as long as you're
+ sure the fault lies with nano =-).
+
+01/25/2000 - Nano 0.8.0 is officially the 'let's try and be at least a
+ little portable, mmmmkay?' release. There are many
+ portability checks and fixes; many thanks to Andy Kahn
+ for his patches. I removed the broken do_spell behavior
+ with the 'spell' program; for now, we only try to call
+ 'ispell' until I write a better method to handle the
+ output of the normal 'spell' command.
+
+01/24/2000 - Nano 0.7.9 features many new features. Among them are a
+ new autoindent feature (-i, --autoindent), tempfile flag
+ like Pico's -t flag (-t, --tempfile), and preliminary
+ spelling program support. The spelling function tries
+ to run 'spell' and then 'ispell' in that order, but you
+ can specify another spelling program with -s or
+ --speller.
+
+01/17/00 - Nano 0.7.7 is officially the 'way too much stuff changed this
+ release' release. It's the busy time at work for me, so
+ please don't get offended if your patch doesn't get
+ included in the next immediate version of nano. I'm
+ sure all the changes in this release will cause a few
+ bugs, so 0.7.8 will primarily be about fixing those
+ bugs.
+
+ Things added this release include resizability (kinda),
+ new -x and -c flags (see nano -h for help), long command
+ line flag support, and the usual array of bugfixes.
+
+01/15/00 - Nano 0.7.6 is officially the 'lightning' release. It now
+ loads large files much faster than previous versions,
+ and is even much faster than Pico or vi in some rather
+ rudimentary tests. Many thanks to Adam Rogoyski for the
+ read_byte patch!
+
+01/09/00 - As of this version (0.7.4), TIP has officially been renamed
+ to nano. The new homepage is at
+ http://faculty.plattsburgh.edu/astyanax/nano. Please
+ update your bookmarks, tell your friends, and all that
+ jazz.
+
+$Id: NEWS 4516 2010-08-11 02:42:32Z astyanax $
diff --git a/README b/README
new file mode 100644
index 0000000..abbb892
--- /dev/null
+++ b/README
@@ -0,0 +1,72 @@
+
+ GNU nano - an enhanced clone of the Pico text editor.
+
+Overview
+
+ The nano project was started because of a few "problems" with the
+ wonderfully easy-to-use and friendly Pico text editor.
+
+ First and foremost is its license: the Pine suite does not use the
+ GPL or a GPL-friendly license, and has unclear restrictions on
+ redistribution. Because of this, Pine and Pico are not included
+ with many GNU/Linux distributions. Also, other features (like go
+ to line number or search and replace) were unavailable until
+ recently or require a command line flag. Yuck.
+
+ nano aims to solve these problems by emulating the functionality of
+ Pico as closely as possible while addressing the problems above and
+ perhaps providing other extra functionality.
+
+ The nano editor is now an official GNU package. For more
+ information on GNU and the Free Software Foundation, please see
+ http://www.gnu.org/.
+
+How to compile and install nano
+
+ Download the nano source code, then:
+ tar zxvf nano-x.y.z.tar.gz
+ cd nano-x.y.z
+ ./configure
+ make
+ make install
+
+ It's that simple. Use --prefix with configure to override the
+ default installation directory of /usr/local.
+
+ If you configured with the "--enable-nanorc" option, after
+ installation you might copy the doc/nanorc.sample to your home
+ directory, rename it to ".nanorc", and then edit it according to
+ your taste.
+
+Web Page
+
+ http://www.nano-editor.org/
+
+Mailing List and Bug Reports
+
+ Savannah hosts all the nano-related mailing-lists.
+
+ + info-nano@gnu.org is a very low traffic list
+ used to announce new nano versions or other important
+ information about the project.
+ + help-nano@gnu.org is for those seeking to get help without
+ wanting to hear about the technical details of its
+ development.
+ + nano-devel@gnu.org is the list used by the people
+ that make nano and a general development discussion list, with
+ moderate traffic.
+
+ To subscribe, send email to nano-<name>-request@gnu.org with a
+ subject of "subscribe", where <name> is the list you want to
+ subscribe to.
+
+ For general bug reports, send a description of the problem to
+ nano@nano-editor.org or directly to the development list.
+
+Current Status
+
+ GNU nano has reached its third stable milestone, 2.0.x.
+ Development of new features continues in the 2.1.x branch, while
+ 2.0.x versions are dedicated to bug-fixing and polishing.
+
+$Id: README 4057 2007-01-29 12:40:48Z dolorous $
diff --git a/README.SVN b/README.SVN
new file mode 100644
index 0000000..f5476f2
--- /dev/null
+++ b/README.SVN
@@ -0,0 +1,87 @@
+INSTRUCTIONS TO COMPILE AND INSTALL NANO CVS VERSIONS
+=====================================================
+
+GNU nano is available from SVN, but building this needs a bit more care
+than the official stable and unstable tarballs.
+
+
+Prerequisites
+-------------
+
+To successfully compile GNU nano from CVS, you'll need the following
+packages:
+
+- autoconf (version >= 2.54)
+- automake (version >= 1.7)
+- gettext (version >= 0.11.5)
+- groff (version >= 1.12)
+- texinfo (version >= 4.0)
+- subversion (aka svn)
+- ssh (with support for the SSH version 2 protocol)
+- glib 2.x (if your system doesn't have vsnprintf(), which the configure
+ script will check for)
+- make, gcc and the normal development libraries (curses or slang, etc.)
+
+These should be available on your GNU mirror. Note that you'll need a
+version of curses or slang with wide character support if you want nano
+to use UTF-8.
+
+
+Download the source
+-------------------
+
+To obtain the current nano development code (called 'trunk'), use the
+following command. It will create a copy of the files in a subdirectory
+of your current working directory called 'nano':
+
+ $ svn co svn://svn.savannah.gnu.org/nano/trunk/nano
+
+If you want to download the stable SVN branch instead, use:
+
+ $ svn co svn://svn.savannah.gnu.org/nano/branches/nano_2_0_branch/nano
+
+
+Generate the configure script
+-----------------------------
+
+Once you have the sources in the "nano" directory,
+
+ $ cd nano
+ $ ./autogen.sh
+
+This will set up a configure script and a Makefile.in file.
+
+
+Configure your build
+--------------------
+
+To configure your build, run the configure script from the nano source
+directory:
+
+ $ ./configure [--add-options-here]
+
+
+Build and install
+-----------------
+
+From the nano source directory, build the code with:
+
+ $ make
+
+Then, once it's done compiling, run
+
+ $ make install
+
+which should copy various files (i.e. the nano executable, the info and
+man pages, and syntax highlighting pattern files) to their appropriate
+directories.
+
+If you're installing into the default install directory (/usr/local),
+you'll need to run that "make install" command with root privileges.
+
+
+Problems?
+---------
+
+Please submit any bugs in the SVN branch using the Savannah project's
+bug tracker (https://savannah.gnu.org/bugs/?group=nano)
diff --git a/THANKS b/THANKS
new file mode 100644
index 0000000..4efd9ec
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,62 @@
+The following people have helped GNU nano in some way or another.
+If we missed you here, let us know!
+
+
+Sharuzzaman Ahmat Raslan <sharuzzaman@excite.com>
+ Malay translator
+Laurentiu Buzdugan <buzdugan@voyager.net> Romanian translator
+CHAO Wei-Lun <chaoweilun@pcmail.com.tw> Traditional Chinese translator
+Ricardo Cárdenes Medina <ricardo@conisys.com> Spanish translator
+Marco Colombo <magicdice@inwind.it> Italian translator
+Yavor Doganov <yavor@doganov.org> Bulgarian translator
+Karl Eichwalder <keichwa@gmx.net> German translator
+Doruk Fisek <dfisek@fisek.com.tr> Turkish translator
+Jean-Philippe Guérard <jean-philippe.guerard@laposte.net>
+ French translator
+Geir Helland Norwegian bokmål translator
+Tedi Heriyanto <tedi_h@gmx.net> Indonesian translator
+Václav Haisman <V.Haisman@sh.cvut.cz> Czech translator
+Szabolcs Horvath <horvaths@janus.gimsz.sulinet.hu>
+ Hungarian translator
+Kalle Kivimaa <kalle.kivimaa@iki.fi> Finnish Translator
+Eivind Kjørstad <ekj@vestdata.no> Norwegian nynorsk translator
+Florian König <floki@bigfoot.com> German translator
+Wojciech Kotwica <wkotwica@post.pl> Polish translator
+Clement Laforet <clem_laf@wanadoo.fr> French translator
+Gergely Nagy <algernon@debian.org> Hungarian translator
+Kalle Olavi Niemitalo <kon@iki.fi> Finnish Translator
+Claudio Neves <cneves@nextis.com> Brazilian Portuguese translator
+Daniel Nylander <po@danielnylander.se> Swedish Translator
+Michael Piefel <piefel@informatik.hu-berlin.de> German translator
+Sergey A. Ribalchenko <fisher@obu.ck.ua> Russian, Ukrainian translator
+Michel Robitaille <robitail@IRO.UMontreal.CA> French translator
+Christian Rose <menthos@menthos.com> Swedish translator
+Stig E Sandoe <stig@ii.uib.no> Norwegian bokmål translator
+Benno Schulenberg <benno@nietvergeten.nl> Dutch translator
+Danilo Segan <dsegan@gmx.net> Serbian translator
+Keld Simonsen <keld@dkuug.dk> Danish translator
+Guus Sliepen <guus@nl.linux.org> Dutch translator
+Cezary Sliwa <sliwa@cft.edu.pl> Polish translator
+Pierre Tane <tanep@bigfoot.com> French translator
+Jacobo Tarrío <jtarrio@trasno.net> Galician translator
+Kjetil Torgrim Homme <kjetilho@linpro.no> Norwegian nynorsk translator
+Miquel Vidal <miquel@sindominio.net> Catalan translator
+Phan Vinh Thinh <teppi82@gmail.com> Vietnamese translator
+Pauli Virtanen <pauli.virtanen@saunalahti.fi> Finnish translator
+Peio Ziarsolo <peio@sindominio.net> Basque translator
+
+Ben Armstrong <synrg@sanctuary.nslug.ns.ca> Negative -r value idea, code
+Thomas Dickey <dickey@herndon4.his.com> Curses help and advice
+Sven Guckes <guckes@math.fu-berlin.de> Advice and Advocacy
+Thijs Kinkhorst <thijs@kinkhorst.com> rnano.1 manpage
+Jim Knoble <jmknoble@pobox.com> Pico compat for browser
+Ryan Krebs <fluffy@highwire.stanford.edu> Many bug fixes and testing
+Roy Lanek <lanek@ranahminang.net> Advice and advocacy
+Chuck Mead <csm@MoonGroup.com> Feedback and RPM stuff
+Mike Melanson <melanson@pcisys.net> Bugs
+Neil Parks <nparks@acsmail.com> Bug reports and fixes
+Jeremy Robichaud <robicj@yahoo.com> Beta tester
+Bill Soudan <wes0472@rit.edu> Regex code, etc
+Ken Tyler <kent@werple.net.au> Search fixes and more
+
+$Id: THANKS 3303 2006-03-15 22:44:43Z jordi $
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..5756119
--- /dev/null
+++ b/TODO
@@ -0,0 +1,99 @@
+TODO file (? means the feature may be implemented, but not definitely)
+------------------------------------------------------------------------
+
+For the future (no targeted version, catch-all)
+- Compatibility with vi/emacs status files so we can let other editors
+ know we're in a file?
+- FriBidi support?
+- Port to DJGPP?
+- Make matching bracket searches sophisticated enough to skip over
+ brackets inside comments?
+- Allow indentation of marked text by spaces as well as tabs?
+- Allow indentation to add just enough columns to reach the nearest
+ multiple of tabsize, rather than always adding tabsize columns?
+- Allow conversion between different character sets. Maybe use glib's
+ iconv() if the system's iconv() is inadequate, since we already use
+ glib's vsnprintf() if the system lacks vsnprintf()?
+- Allow color syntaxes to apply to more than just color, so that we can
+ e.g. specify a different alternate spell checker depending on which
+ file type we have open.
+- Allow even better file type detection than we have currently, e.g.
+ through libmagic?
+- Allow setting marks (saved positions, not to be confused with the mark
+ set via Ctrl-^) at various lines and/or columns in the buffer, and
+ allow movement between them with a single keystroke? (we're running
+ out of keystrokes)
+- Allow searching for and replacing newlines.
+- Fix handling of bad/incomplete UTF-8 sequences to display one Unicode
+ FFFD (Replacement Character) per sequence instead of one per byte.
+
+For version 2.4:
+- New regression framework built on expect.
+- Allow text searches in the help browser.
+- Handle window resizes better. After we resize, we should stay
+ wherever we were before we resized, as Pico does.
+- Add the ability to move to different lines of the screen with a single
+ keystroke, e.g. M-` (M-~) to go to the top line, M-& (M-7) to go to
+ the center line, and M-' (M-") to go to the last line.
+- Detect when we're pasting text, so that we can handle it differently
+ (i.e. faster than currently with screen redraws)
+- Allow piping marked text to an external command and replacing it with
+ the command's output (as the internal spell checker already does with
+ the "spell" command)?
+
+For version 2.2:
+- Rebindable keys? [DONE]
+- Undo/Redo keys (M-U and M-E)? [DONE]
+- Fix problems with color syntaxes' highlighting lines too aggressively [DONE]
+- Allow nano to work like a pager (read from stdin) [DONE]
+- Allow color syntaxes to be selected based on more than just filename
+ extension, [DONE]
+- Allow soft wrapping as well as hard wrapping? [DONE]
+
+For version 2.0:
+- UTF-8 support. [DONE]
+- Support for paragraph searches. [DONE]
+- Support for justifying the entire file at once. [DONE]
+- Support for filename searches in the file browser. [DONE]
+- Keystroke to implement "Add next sequence as raw" like vi's ^V. [DONE]
+- Spell check selected text only. [DONE]
+- Make "To Line" (^W^T) and "Read from Command" (^R^X) reenter their
+ parent menu when their keystroke is entered a second time (^W^T^T and
+ (^R^X^X) (requires figuring out when to keep cursor position and when
+ not to). [DONE]
+- Fix resetstatuspos global which we shouldn't have. [DONE]
+
+For version 1.2:
+- Single line scroll up/down? [DONE]
+- Color syntax highlighting? (certainly seems like there's a demand for
+ it.) [DONE]
+- .nanorc [DONE]
+- Backup making (filename~)? [DONE]
+- Search (etc.) string history [DONE]
+- Implement Pico's -j and -g flags, as they are pretty easy to do.
+ [DONE]
+- Make mouse support work with clicking on the shortcuts (-m). Must
+ make global variable pointing to current shortcut list to determine
+ what keystroke to ungetch(). [DONE].
+- Implement -o (chroot of sorts) [DONE]
+- Allow -r to take a negative argument, meaning right margin instead of
+ left (allows resizing that way), formerly -W arg. [DONE]
+
+For version 1.0:
+- Implement Spelling [DONE]
+- Implement Help [DONE]
+- Internationalization [In progress, translators welcome!]
+- Allow nano to be resized in X. [DONE]
+- On page up/down, put the cursor on the first line (like Pico), not the
+ center line [DONE]
+- Rewrite edit_refresh, if at all possible [DONE]
+- Implement justify function [DONE]
+- Cut to end of line [DONE]
+- Built-in speller command [needed for version 1.0] [DONE]
+- Better statusbar interaction (scrolling, tab completion for filename)
+ [needed for version 1.0] [DONE]
+- Now do username completion [DONE].
+- Unjustify command (^U after ^J) [DONE =-].
+- Username completion (~user) [DONE =-].
+
+$Id: TODO 4516 2010-08-11 02:42:32Z astyanax $
diff --git a/UPGRADE b/UPGRADE
new file mode 100644
index 0000000..72c6d67
--- /dev/null
+++ b/UPGRADE
@@ -0,0 +1,111 @@
+GNU nano upgrading information
+==============================
+
+Visible changes since 2.0
+-------------------------
+* Editor Features
+ - The ability to rebind (reassign) keys using the nanorc.
+ - The ability to read standard input like a pager ("nano -").
+ - Color syntax highlighting can be set by the first line of a file.
+ - The ability to silence nanorc error messages (-q).
+ - Undo/redo operations (-u).
+ - Soft wrapping of text (-$).
+
+* File Handling
+ - Better handling of backup files: if nano can't write a backup file,
+ it won't try to write the original file afterward.
+ - Emergency savefiles retain ownerships and permissions when possible.
+ - Performance improvements in color syntax highlighting.
+
+Visible changes since 1.2
+-------------------------
+* Editor Features
+ - Support for UTF-8.
+ - Moving to a specified line and column of a file, instead of just a
+ line (+LINE,COLUMN).
+ - Smart home key (-A).
+ - Creation of unique backup files in a specified directory (-C <dir>).
+ - Insertion of spaces instead of a tab when Tab is pressed (-E).
+ - The long option for -K is now --rebindkeypad.
+ - Regular expression searching can now be toggled when nano is built
+ with --enable-tiny, so -R now means something else (see below).
+ - Restricted mode that provides more security than -o (-R).
+ - Blanking of the statusbar after 1 keystroke instead of 25 (-U).
+ - Word searches can optionally skip over punctuation (-W).
+ - Workaround for Delete's acting like Backspace (-d).
+ - Many more options are supported in the nanorc.
+ - Improvements to color syntax highlighting support: case insensitive
+ matching, the ability to include color syntaxes in separate files,
+ the ability to specify background colors without foreground colors,
+ etc.
+ - Insertion of single-byte characters via Esc Esc <000-255>.
+ - Insertion of all characters via "Verbatim Input" mode.
+ - Workaround for the "NumLock glitch".
+ - Meta-W now repeats the last search. Wrapping is now toggled via
+ Meta-L.
+ - Replacing and spell checking only selected text.
+ - Indenting lines with one keystroke.
+ - Copying text into the cutbuffer without cutting it.
+ - Scrolling the text up and down single lines without moving the
+ cursor.
+ - PageUp and PageDown work more smoothly when using -S.
+ - Scrolling the help text up and down single lines.
+ - Cutting all text from the current position to the end of the file
+ with one keystroke.
+ - Justifying the entire file with one keystroke.
+ - Justifying without removing spaces from the ends of lines.
+ - Unjustifying after justifying and immediately resizing.
+ - Going to the first or last line of the current paragraph.
+ - Going to the first or last line of the file without having to go to
+ the "Search" prompt.
+ - Searching for filenames in the file browser.
+ - Displaying spaces and tabs differently to make it easier to tell
+ them apart.
+ - Many more functions available at the statusbar prompt: moving to the
+ next or previous word, searching for matching brackets, "Verbatim
+ Input" mode, etc.
+ - The glibc 2.2.3 crashes involving extended regular expressions are
+ no longer worked around, as they can break anything using extended
+ regular expressions, and glibc 2.2.3 is old. You should upgrade to
+ at least glibc 2.2.4.
+
+* File Handling
+ - Automatic adding of newlines to the ends of files without them can
+ now be disabled (-L).
+ - Converting from and to DOS/Mac file format is now toggled only at
+ the "Write File" prompt, via Meta-D and Meta-M, and the default file
+ format to save in is now set depending on what format the file was
+ originally in. -D now makes nano use bold text instead of reverse
+ video text, and Meta-D at the edit window now does a
+ word/line/character count. -O now makes the unused second line of
+ the screen part of the edit window, and Meta-O at the edit window
+ now toggles this behavior.
+ - Converting files that contain a mix of DOS and Mac format lines.
+ - Automatic switching on of -N with binary files has been removed, as
+ it causes problems with UTF-8 support.
+
+Visible changes since 1.0
+-------------------------
+* Editor Features
+ - Complete Pico compatibility (--pico has been removed, and -p means
+ something else, see below).
+ - nanorc support (see nanorc.sample included in sources).
+ - Smooth scrolling (-S).
+ - Support for searching for matching braces, brackets, etc.
+ - Help for all editor features.
+ - Color syntax highlighting support.
+ - Quote string support, useful for mail agents, etc. (-Q).
+ - Insertion of output of external commands.
+ - Optional enabling of XON and XOFF control characters (-p).
+ - Tons of bugfixes/enhancements for already existing features.
+
+* File Handling
+ - Overwriting and appending or prepending to files.
+ - Writing marked text to separate files.
+ - Multiple file buffers (-F).
+ - Converting from and to DOS/Mac file format (-D/-M, -N to disable).
+ - Better control character handling.
+ - Creation of backup files (-B).
+ - Search/replace history (-H).
+
+See the GNU nano manual for detailed information on each feature.
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..f55b305
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,960 @@
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
+[m4_warning([this file was generated for autoconf 2.65.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([m4/ac_define_dir.m4])
+m4_include([m4/gettext.m4])
+m4_include([m4/glib-2.0.m4])
+m4_include([m4/iconv.m4])
+m4_include([m4/isc-posix.m4])
+m4_include([m4/lib-ld.m4])
+m4_include([m4/lib-link.m4])
+m4_include([m4/lib-prefix.m4])
+m4_include([m4/progtest.m4])
diff --git a/config.guess b/config.guess
new file mode 100755
index 0000000..dc84c68
--- /dev/null
+++ b/config.guess
@@ -0,0 +1,1501 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+# Free Software Foundation, Inc.
+
+timestamp='2009-11-20'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) 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., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner. Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[456])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ *:Interix*:*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ arm*:Linux:*:*)
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ fi
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ LIBC=gnu
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=${UNAME_MACHINE}el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=${UNAME_MACHINE}
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-gnu
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ i386)
+ eval $set_cc_for_build
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ UNAME_PROCESSOR="x86_64"
+ fi
+ fi ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000..8fbe824
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,282 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define this to enable debug messages and assert warnings. */
+#undef DEBUG
+
+/* Define this to disable the built-in file browser. */
+#undef DISABLE_BROWSER
+
+/* Define this to disable the help text display. */
+#undef DISABLE_HELP
+
+/* Define this to disable the justify routines. */
+#undef DISABLE_JUSTIFY
+
+/* Define this to disable the mouse support. */
+#undef DISABLE_MOUSE
+
+/* Define this to disable the setting of the operating directory (chroot of
+ sorts). */
+#undef DISABLE_OPERATINGDIR
+
+/* Define this to disable text wrapping as root by default. */
+#undef DISABLE_ROOTWRAPPING
+
+/* Define this to disable the spell checker functions. */
+#undef DISABLE_SPELLER
+
+/* Define to disable the tab completion functions for files and search
+ strings. */
+#undef DISABLE_TABCOMP
+
+/* Define this to disable all text wrapping. */
+#undef DISABLE_WRAPPING
+
+/* Define this to have syntax highlighting, requires regex.h and ENABLE_NANORC
+ too! */
+#undef ENABLE_COLOR
+
+/* Define this to enable multiple file buffers. */
+#undef ENABLE_MULTIBUFFER
+
+/* Define this to use .nanorc files. */
+#undef ENABLE_NANORC
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#undef ENABLE_NLS
+
+/* Define this if your system has sufficient UTF-8 support (a wide curses
+ library, iswalnum(), iswpunct(), iswblank() or iswspace(), nl_langinfo,
+ mblen(), mbstowcs(), mbtowc(), wctomb(), and wcwidth()). */
+#undef ENABLE_UTF8
+
+/* Define if the system supports GNU-style word boundaries in regexes. */
+#undef GNU_WORDBOUNDS
+
+/* Define to 1 if you have the <curses.h> header file. */
+#undef HAVE_CURSES_H
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+#undef HAVE_DOPRNT
+
+/* Define to 1 if you have the `getdelim' function. */
+#undef HAVE_GETDELIM
+
+/* Define to 1 if you have the `getline' function. */
+#undef HAVE_GETLINE
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long' function. */
+#undef HAVE_GETOPT_LONG
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `isblank' function. */
+#undef HAVE_ISBLANK
+
+/* Define to 1 if you have the `iswalnum' function. */
+#undef HAVE_ISWALNUM
+
+/* Define to 1 if you have the `iswblank' function. */
+#undef HAVE_ISWBLANK
+
+/* Define to 1 if you have the `iswpunct' function. */
+#undef HAVE_ISWPUNCT
+
+/* Define to 1 if you have the `iswspace' function. */
+#undef HAVE_ISWSPACE
+
+/* Define to 1 if you have the <libintl.h> header file. */
+#undef HAVE_LIBINTL_H
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if you have the `mblen' function. */
+#undef HAVE_MBLEN
+
+/* Define to 1 if you have the `mbstowcs' function. */
+#undef HAVE_MBSTOWCS
+
+/* Define to 1 if you have the `mbtowc' function. */
+#undef HAVE_MBTOWC
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <ncurses.h> header file. */
+#undef HAVE_NCURSES_H
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+#undef HAVE_NL_LANGINFO
+
+/* Define to 1 if you have the <regex.h> header file. */
+#undef HAVE_REGEX_H
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#undef HAVE_STRCASECMP
+
+/* Define to 1 if you have the `strcasestr' function. */
+#undef HAVE_STRCASESTR
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#undef HAVE_STRNCASECMP
+
+/* Define to 1 if you have the `strnlen' function. */
+#undef HAVE_STRNLEN
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define this if your curses library has the use_default_colors() command. */
+#undef HAVE_USE_DEFAULT_COLORS
+
+/* Define to 1 if you have the `vprintf' function. */
+#undef HAVE_VPRINTF
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Define to 1 if you have the `wctomb' function. */
+#undef HAVE_WCTOMB
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#undef HAVE_WCTYPE_H
+
+/* Define to 1 if you have the `wcwidth' function. */
+#undef HAVE_WCWIDTH
+
+/* Define this to enable extra stuff. */
+#undef NANO_EXTRA
+
+/* Define this to make the nano executable as small as possible. */
+#undef NANO_TINY
+
+/* Shut up assert warnings :-) */
+#undef NDEBUG
+
+/* Define this if you need the _XOPEN_SOURCE_EXTENDED macro for color support
+ */
+#undef NEED_XOPEN_SOURCE_EXTENDED
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Where data are placed to. */
+#undef PKGDATADIR
+
+/* Specify alternate rcfile name (default: .nanorc) */
+#undef RCFILE_NAME
+
+/* Define this if you know your curses library allows LINES and COLS to be
+ redefined to deal with a resizing bug */
+#undef REDEFINIG_MACROS_OK
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to use the slang wrappers for curses instead of native curses. */
+#undef USE_SLANG
+
+/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Version number of package */
+#undef VERSION
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
diff --git a/config.rpath b/config.rpath
new file mode 100755
index 0000000..5ead758
--- /dev/null
+++ b/config.rpath
@@ -0,0 +1,513 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+# Copyright 1996-2002 Free Software Foundation, Inc.
+# Taken from GNU libtool, 2001
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+#
+# The first argument passed to this file is the canonical host specification,
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+shlibext=
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+wl=
+if test "$GCC" = yes; then
+ wl='-Wl,'
+else
+ case "$host_os" in
+ aix3* | aix4* | aix5*)
+ wl='-Wl,'
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ wl='-Wl,'
+ ;;
+ irix5* | irix6*)
+ wl='-Wl,'
+ ;;
+ linux*)
+ echo '__INTEL_COMPILER' > conftest.$ac_ext
+ if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null
+ then
+ :
+ else
+ # Intel icc
+ wl='-Qoption,ld,'
+ fi
+ ;;
+ osf3* | osf4* | osf5*)
+ wl='-Wl,'
+ ;;
+ solaris*)
+ wl='-Wl,'
+ ;;
+ sunos4*)
+ wl='-Qoption ld '
+ ;;
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ if test "x$host_vendor" = xsni; then
+ wl='-LD'
+ else
+ wl='-Wl,'
+ fi
+ ;;
+ esac
+fi
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+ case "$host_os" in
+ aix3* | aix4* | aix5*)
+ # On AIX, the GNU linker is very broken
+ ld_shlibs=no
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can use
+ # them.
+ ld_shlibs=no
+ ;;
+ beos*)
+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ cygwin* | mingw* | pw32*)
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ sunos4*)
+ hardcode_direct=yes
+ ;;
+ *)
+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ if test "$ld_shlibs" = yes; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ fi
+else
+ case "$host_os" in
+ aix3*)
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ else
+ aix_use_runtimelinking=no
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+ fi
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct=yes
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ esac
+ fi
+ if test "$aix_use_runtimelinking" = yes; then
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ else
+ hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
+ fi
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ libext=lib
+ ;;
+ darwin* | rhapsody*)
+ hardcode_direct=yes
+ ;;
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+ freebsd2.2*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ freebsd2*)
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ freebsd*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ hardcode_minus_L=yes # Not in the search PATH, but as the default
+ # location of the library.
+ ;;
+ irix5* | irix6*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ netbsd*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ newsos6)
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ openbsd*)
+ hardcode_direct=yes
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ else
+ case "$host_os" in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ osf3*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ osf4* | osf5*)
+ if test "$GCC" = yes; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ # Both cc and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+ sco3.2v5*)
+ ;;
+ solaris*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ sunos4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ sysv4)
+ if test "x$host_vendor" = xsno; then
+ hardcode_direct=yes # is this really true???
+ else
+ hardcode_direct=no # Motorola manual says yes, but my tests say they lie
+ fi
+ ;;
+ sysv4.3*)
+ ;;
+ sysv5*)
+ hardcode_libdir_flag_spec=
+ ;;
+ uts4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ dgux*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ ld_shlibs=yes
+ fi
+ ;;
+ sysv4.2uw2*)
+ hardcode_direct=yes
+ hardcode_minus_L=no
+ ;;
+ sysv5uw7* | unixware7*)
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+fi
+
+# Check dynamic linker characteristics
+libname_spec='lib$name'
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+case "$host_os" in
+ aix3*)
+ shlibext=so
+ ;;
+ aix4* | aix5*)
+ shlibext=so
+ ;;
+ amigaos*)
+ shlibext=ixlibrary
+ ;;
+ beos*)
+ shlibext=so
+ ;;
+ bsdi4*)
+ shlibext=so
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ ;;
+ cygwin* | mingw* | pw32*)
+ case $GCC,$host_os in
+ yes,cygwin*)
+ shlibext=dll.a
+ ;;
+ yes,mingw*)
+ shlibext=dll
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
+ ;;
+ yes,pw32*)
+ shlibext=dll
+ ;;
+ *)
+ shlibext=dll
+ ;;
+ esac
+ ;;
+ darwin* | rhapsody*)
+ shlibext=dylib
+ ;;
+ freebsd1*)
+ ;;
+ freebsd*)
+ shlibext=so
+ ;;
+ gnu*)
+ shlibext=so
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ shlibext=sl
+ ;;
+ irix5* | irix6*)
+ shlibext=so
+ case "$host_os" in
+ irix5*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in
+ *-32|*"-32 ") libsuff= shlibsuff= ;;
+ *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 ;;
+ *-64|*"-64 ") libsuff=64 shlibsuff=64 ;;
+ *) libsuff= shlibsuff= ;;
+ esac
+ ;;
+ esac
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ ;;
+ linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+ ;;
+ linux-gnu*)
+ shlibext=so
+ ;;
+ netbsd*)
+ shlibext=so
+ ;;
+ newsos6)
+ shlibext=so
+ ;;
+ openbsd*)
+ shlibext=so
+ ;;
+ os2*)
+ libname_spec='$name'
+ shlibext=dll
+ ;;
+ osf3* | osf4* | osf5*)
+ shlibext=so
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+ sco3.2v5*)
+ shlibext=so
+ ;;
+ solaris*)
+ shlibext=so
+ ;;
+ sunos4*)
+ shlibext=so
+ ;;
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ shlibext=so
+ case "$host_vendor" in
+ motorola)
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+ uts4*)
+ shlibext=so
+ ;;
+ dgux*)
+ shlibext=so
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ shlibext=so
+ fi
+ ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_sys_lib_search_path_spec=`echo "X$sys_lib_search_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_sys_lib_dlsearch_path_spec=`echo "X$sys_lib_dlsearch_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec="$escaped_sys_lib_search_path_spec"
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec="$escaped_sys_lib_dlsearch_path_spec"
+
+EOF
diff --git a/config.sub b/config.sub
new file mode 100755
index 0000000..2a55a50
--- /dev/null
+++ b/config.sub
@@ -0,0 +1,1705 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+# Free Software Foundation, Inc.
+
+timestamp='2009-11-20'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) 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., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray | -microblaze)
+ os=
+ basic_machine=$1
+ ;;
+ -bluegene*)
+ os=-cnk
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fido | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | lm32 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore | mep | metag \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nios | nios2 \
+ | ns16k | ns32k \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | rx \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | ubicom32 \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | z8k | z80)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | picochip)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | lm32-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64octeon-* | mips64octeonel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* | rx-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+ | tron-* \
+ | ubicom32-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa*-* \
+ | ymp-* \
+ | z8k-* | z80-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16)
+ basic_machine=cr16-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ microblaze)
+ basic_machine=microblaze-xilinx
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ tile*)
+ basic_machine=tile-unknown
+ os=-linux-gnu
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ z80-*-coff)
+ basic_machine=z80-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* | -aros* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* | -cegcc* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -dicos*)
+ os=-dicos
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mep-*)
+ os=-elf
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -cnk*|-aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/configure b/configure
new file mode 100755
index 0000000..238dbf9
--- /dev/null
+++ b/configure
@@ -0,0 +1,9911 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.65 for GNU nano 2.2.6.
+#
+# Report bugs to <nano-devel@gnu.org>.
+#
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org and nano-devel@gnu.org
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='GNU nano'
+PACKAGE_TARNAME='nano'
+PACKAGE_VERSION='2.2.6'
+PACKAGE_STRING='GNU nano 2.2.6'
+PACKAGE_BUGREPORT='nano-devel@gnu.org'
+PACKAGE_URL='http://www.gnu.org/software/nano/'
+
+ac_unique_file="src/nano.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+GROFF_HTML_FALSE
+GROFF_HTML_TRUE
+CURSES_LIB
+GLIB_MKENUMS
+GOBJECT_QUERY
+GLIB_GENMARSHAL
+GLIB_LIBS
+GLIB_CFLAGS
+PKG_CONFIG
+USE_NANORC_FALSE
+USE_NANORC_TRUE
+USE_COLOR_FALSE
+USE_COLOR_TRUE
+PKGDATADIR
+USE_NLS_FALSE
+USE_NLS_TRUE
+POSUB
+LTLIBINTL
+LIBINTL
+INTLLIBS
+LTLIBICONV
+LIBICONV
+USE_NLS
+MSGMERGE
+XGETTEXT
+GMSGFMT
+MSGFMT
+MKINSTALLDIRS
+LN_S
+EGREP
+GREP
+CPP
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_dependency_tracking
+enable_largefile
+with_gnu_ld
+enable_rpath
+with_libiconv_prefix
+enable_nls
+with_libintl_prefix
+enable_debug
+enable_tiny
+enable_extra
+enable_browser
+enable_help
+enable_justify
+enable_mouse
+enable_operatingdir
+enable_speller
+enable_tabcomp
+enable_wrapping
+enable_wrapping_as_root
+enable_color
+enable_multibuffer
+enable_nanorc
+enable_all
+enable_utf8
+with_slang
+enable_altrcname
+enable_glibtest
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information."
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures GNU nano 2.2.6 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/nano]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+ --target=TARGET configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of GNU nano 2.2.6:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --disable-largefile omit support for large files
+ --disable-rpath do not hardcode runtime library paths
+ --disable-nls do not use Native Language Support
+ --enable-debug Enable debugging (disabled by default)
+ --enable-tiny Disable features for the sake of size
+ --disable-extra Disable extra features, currently only easter eggs
+ --disable-browser Disable built-in file browser
+ --disable-help Disable help functions
+ --disable-justify Disable justify/unjustify functions
+ --disable-mouse Disable mouse support (and -m flag)
+ --disable-operatingdir Disable setting of operating directory (chroot of sorts)
+ --disable-speller Disable spell checker functions
+ --disable-tabcomp Disable tab completion functions
+ --disable-wrapping Disable all wrapping of text (and -w flag)
+ --disable-wrapping-as-root Disable wrapping of text as root by default
+ --disable-color Disable color and syntax highlighting
+ --disable-multibuffer Disable multiple file buffers
+ --disable-nanorc Disable use of .nanorc files
+ --enable-all Enable ALL extra nano functionality (ignored for compatibility as all options default to on)
+ --enable-utf8 Enable UTF-8 support
+ --enable-altrcname Specify alternate rcfile name (default: .nanorc)
+ --disable-glibtest do not try to compile and run a test GLIB program
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-gnu-ld assume the C compiler uses GNU ld default=no
+ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib
+ --without-libiconv-prefix don't search for libiconv in includedir and libdir
+ --with-libintl-prefix=DIR search for libintl in DIR/include and DIR/lib
+ --without-libintl-prefix don't search for libintl in includedir and libdir
+ --with-slang=DIR Use the slang library instead of curses
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <nano-devel@gnu.org>.
+GNU nano home page: <http://www.gnu.org/software/nano/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+GNU nano configure 2.2.6
+generated by GNU Autoconf 2.65
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to nano-devel@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_func
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by GNU nano $as_me 2.2.6, which was
+generated by GNU Autoconf 2.65. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ for ac_t in install-sh install.sh shtool; do
+ if test -f "$ac_dir/$ac_t"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/$ac_t -c"
+ break 2
+ fi
+ done
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if test "${ac_cv_target+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$target_alias" = x; then
+ ac_cv_target=$ac_cv_host
+else
+ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+ as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+am__api_version='1.11'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='nano'
+ VERSION='2.2.6'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+
+
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "C compiler cannot create executables
+See \`config.log' for more details." "$LINENO" 5; }; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+eval as_val=\$$as_ac_Header
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+ ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = x""yes; then :
+ MINIX=yes
+else
+ MINIX=
+fi
+
+
+ if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+# define __EXTENSIONS__ 1
+ $ac_includes_default
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_safe_to_define___extensions__=yes
+else
+ ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+ test $ac_cv_safe_to_define___extensions__ = yes &&
+ $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+ $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+ $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+ $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+ $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strerror in -lcposix" >&5
+$as_echo_n "checking for strerror in -lcposix... " >&6; }
+if test "${ac_cv_lib_cposix_strerror+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcposix $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char strerror ();
+int
+main ()
+{
+return strerror ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_cposix_strerror=yes
+else
+ ac_cv_lib_cposix_strerror=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cposix_strerror" >&5
+$as_echo "$ac_cv_lib_cposix_strerror" >&6; }
+if test "x$ac_cv_lib_cposix_strerror" = x""yes; then :
+ LIBS="$LIBS -lcposix"
+fi
+
+
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test "${ac_cv_sys_large_files+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ fi
+fi
+
+
+
+
+
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+
+
+
+
+
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGFMT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$MSGFMT" in
+ /*)
+ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ ac_cv_path_MSGFMT="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
+ ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GMSGFMT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GMSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ # Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_XGETTEXT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$XGETTEXT" in
+ /*)
+ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+ ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ rm -f messages.po
+
+ # Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGMERGE+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$MSGMERGE" in
+ /*)
+ ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then
+ ac_cv_path_MSGMERGE="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
+ ;;
+esac
+fi
+MSGMERGE="$ac_cv_path_MSGMERGE"
+if test "$MSGMERGE" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "$GMSGFMT" != ":"; then
+ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
+ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ : ;
+ else
+ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5
+$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; }
+ GMSGFMT=":"
+ fi
+ fi
+
+ if test "$XGETTEXT" != ":"; then
+ if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
+ (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ : ;
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
+$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
+ XGETTEXT=":"
+ fi
+ rm -f messages.po
+ fi
+
+ ac_config_commands="$ac_config_commands default-1"
+
+
+
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | [A-Za-z]:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the path of ld
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${acl_cv_path_LD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+ test "$with_gnu_ld" != no && break
+ else
+ test "$with_gnu_ld" != yes && break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${acl_cv_prog_gnu_ld+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+ acl_cv_prog_gnu_ld=yes
+else
+ acl_cv_prog_gnu_ld=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if test "${acl_cv_rpath+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
+ wl="$acl_cv_wl"
+ libext="$acl_cv_libext"
+ shlibext="$acl_cv_shlibext"
+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ hardcode_direct="$acl_cv_hardcode_direct"
+ hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec"
+ sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec"
+ # Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then :
+ enableval=$enable_rpath; :
+else
+ enable_rpath=yes
+fi
+
+
+
+
+
+
+
+
+ use_additional=yes
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then :
+ withval=$with_libiconv_prefix;
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/lib"
+ fi
+ fi
+
+fi
+
+ LIBICONV=
+ LTLIBICONV=
+ INCICONV=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='iconv '
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
+ else
+ :
+ fi
+ else
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ if test $use_additional = yes; then
+ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+ found_dir="$additional_libdir"
+ found_so="$additional_libdir/lib$name.$shlibext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ else
+ if test -f "$additional_libdir/lib$name.$libext"; then
+ found_dir="$additional_libdir"
+ found_a="$additional_libdir/lib$name.$libext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+ found_dir="$dir"
+ found_so="$dir/lib$name.$shlibext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ else
+ if test -f "$dir/lib$name.$libext"; then
+ found_dir="$dir"
+ found_a="$dir/lib$name.$libext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ if test "$hardcode_direct" = yes; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ haveit=
+ for x in $LDFLAGS $LIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
+ fi
+ if test "$hardcode_minus_L" != no; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
+ fi
+ fi
+ additional_includedir=
+ case "$found_dir" in
+ */lib | */lib/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INCICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ if test -n "$found_la"; then
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ if test "X$additional_libdir" != "X/usr/lib"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/lib"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$hardcode_libdir_separator"; then
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+ else
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ for found_dir in $ltrpathdirs; do
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
+ done
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+ # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+ enableval=$enable_nls; USE_NLS=$enableval
+else
+ USE_NLS=yes
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+
+
+
+ LIBINTL=
+ LTLIBINTL=
+ POSUB=
+
+ if test "$USE_NLS" = "yes"; then
+ gt_use_preinstalled_gnugettext=no
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
+$as_echo_n "checking for GNU gettext in libc... " >&6; }
+if test "${gt_cv_func_gnugettext2_libc+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <libintl.h>
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+int
+main ()
+{
+bindtextdomain ("", "");
+return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_domain_bindings
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_gnugettext2_libc=yes
+else
+ gt_cv_func_gnugettext2_libc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext2_libc" >&5
+$as_echo "$gt_cv_func_gnugettext2_libc" >&6; }
+
+ if test "$gt_cv_func_gnugettext2_libc" != "yes"; then
+
+
+
+
+
+ am_save_CPPFLAGS="$CPPFLAGS"
+
+ for element in $INCICONV; do
+ haveit=
+ for x in $CPPFLAGS; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+ fi
+ done
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ am_cv_lib_iconv=yes
+ am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+ if test "$am_cv_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+ else
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+
+
+
+
+
+
+ use_additional=yes
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-libintl-prefix was given.
+if test "${with_libintl_prefix+set}" = set; then :
+ withval=$with_libintl_prefix;
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/lib"
+ fi
+ fi
+
+fi
+
+ LIBINTL=
+ LTLIBINTL=
+ INCINTL=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='intl '
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value"
+ else
+ :
+ fi
+ else
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ if test $use_additional = yes; then
+ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+ found_dir="$additional_libdir"
+ found_so="$additional_libdir/lib$name.$shlibext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ else
+ if test -f "$additional_libdir/lib$name.$libext"; then
+ found_dir="$additional_libdir"
+ found_a="$additional_libdir/lib$name.$libext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIBINTL; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+ found_dir="$dir"
+ found_so="$dir/lib$name.$shlibext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ else
+ if test -f "$dir/lib$name.$libext"; then
+ found_dir="$dir"
+ found_a="$dir/lib$name.$libext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+ else
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ if test "$hardcode_direct" = yes; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+ else
+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ haveit=
+ for x in $LDFLAGS $LIBINTL; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
+ fi
+ if test "$hardcode_minus_L" != no; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+ else
+ LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a"
+ else
+ LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name"
+ fi
+ fi
+ additional_includedir=
+ case "$found_dir" in
+ */lib | */lib/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INCINTL; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ if test -n "$found_la"; then
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ if test "X$additional_libdir" != "X/usr/lib"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/lib"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIBINTL; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIBINTL; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$dep"
+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$hardcode_libdir_separator"; then
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+ else
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ for found_dir in $ltrpathdirs; do
+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir"
+ done
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
+$as_echo_n "checking for GNU gettext in libintl... " >&6; }
+if test "${gt_cv_func_gnugettext2_libintl+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $INCINTL"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBINTL"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <libintl.h>
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias ();
+int
+main ()
+{
+bindtextdomain ("", "");
+return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_gnugettext2_libintl=yes
+else
+ gt_cv_func_gnugettext2_libintl=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$gt_cv_func_gnugettext2_libintl" != yes && test -n "$LIBICONV"; then
+ LIBS="$LIBS $LIBICONV"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <libintl.h>
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias ();
+int
+main ()
+{
+bindtextdomain ("", "");
+return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ LIBINTL="$LIBINTL $LIBICONV"
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ gt_cv_func_gnugettext2_libintl=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext2_libintl" >&5
+$as_echo "$gt_cv_func_gnugettext2_libintl" >&6; }
+ fi
+
+ if test "$gt_cv_func_gnugettext2_libc" = "yes" \
+ || { test "$gt_cv_func_gnugettext2_libintl" = "yes" \
+ && test "$PACKAGE" != gettext; }; then
+ gt_use_preinstalled_gnugettext=yes
+ else
+ LIBINTL=
+ LTLIBINTL=
+ INCINTL=
+ fi
+
+
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+ else
+ USE_NLS=no
+ fi
+ fi
+
+ if test "$USE_NLS" = "yes"; then
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
+$as_echo_n "checking how to link with libintl... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
+$as_echo "$LIBINTL" >&6; }
+
+ for element in $INCINTL; do
+ haveit=
+ for x in $CPPFLAGS; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+ fi
+ done
+
+ fi
+
+
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
+
+
+$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
+
+ fi
+
+ POSUB=po
+ fi
+
+
+
+ INTLLIBS="$LIBINTL"
+
+
+
+
+
+
+ if test x$USE_NLS = xyes; then
+ USE_NLS_TRUE=
+ USE_NLS_FALSE='#'
+else
+ USE_NLS_TRUE='#'
+ USE_NLS_FALSE=
+fi
+
+
+
+pkgdatadir=${datadir}/${PACKAGE}
+
+ prefix_NONE=
+ exec_prefix_NONE=
+ test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
+ test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
+ eval ac_define_dir="\"$pkgdatadir\""
+ eval ac_define_dir="\"$ac_define_dir\""
+ PKGDATADIR="$ac_define_dir"
+
+
+cat >>confdefs.h <<_ACEOF
+#define PKGDATADIR "$ac_define_dir"
+_ACEOF
+
+ test "$prefix_NONE" && prefix=NONE
+ test "$exec_prefix_NONE" && exec_prefix=NONE
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+for ac_header in getopt.h libintl.h limits.h regex.h sys/param.h wchar.h wctype.h stdarg.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+eval as_val=\$$as_ac_Header
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+ enableval=$enable_debug; if test x$enableval = xyes; then
+
+$as_echo "#define DEBUG 1" >>confdefs.h
+ debug_support=yes
+fi
+fi
+
+
+if test x$debug_support != xyes; then
+
+$as_echo "#define NDEBUG 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-tiny was given.
+if test "${enable_tiny+set}" = set; then :
+ enableval=$enable_tiny; if test x$enableval = xyes; then
+
+$as_echo "#define NANO_TINY 1" >>confdefs.h
+ tiny_support=yes
+
+$as_echo "#define DISABLE_BROWSER 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_HELP 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_JUSTIFY 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_MOUSE 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_OPERATINGDIR 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_SPELLER 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_TABCOMP 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_WRAPPING 1" >>confdefs.h
+
+fi
+fi
+
+
+
+# Check whether --enable-extra was given.
+if test "${enable_extra+set}" = set; then :
+ enableval=$enable_extra; if test x$enableval != xno; then
+
+$as_echo "#define NANO_EXTRA 1" >>confdefs.h
+ extra_support=yes
+fi
+else
+ if test x$enable_tiny != xyes; then
+
+$as_echo "#define NANO_EXTRA 1" >>confdefs.h
+ extra_support=yes
+ fi
+fi
+
+
+# Check whether --enable-browser was given.
+if test "${enable_browser+set}" = set; then :
+ enableval=$enable_browser; if test x$enableval != xyes; then
+
+$as_echo "#define DISABLE_BROWSER 1" >>confdefs.h
+
+fi
+fi
+
+
+# Check whether --enable-help was given.
+if test "${enable_help+set}" = set; then :
+ enableval=$enable_help; if test x$enableval != xyes; then
+
+$as_echo "#define DISABLE_HELP 1" >>confdefs.h
+
+fi
+fi
+
+
+# Check whether --enable-justify was given.
+if test "${enable_justify+set}" = set; then :
+ enableval=$enable_justify; if test x$enableval != xyes; then
+
+$as_echo "#define DISABLE_JUSTIFY 1" >>confdefs.h
+
+fi
+fi
+
+
+# Check whether --enable-mouse was given.
+if test "${enable_mouse+set}" = set; then :
+ enableval=$enable_mouse; if test x$enableval != xyes; then
+
+$as_echo "#define DISABLE_MOUSE 1" >>confdefs.h
+
+fi
+fi
+
+
+# Check whether --enable-operatingdir was given.
+if test "${enable_operatingdir+set}" = set; then :
+ enableval=$enable_operatingdir; if test x$enableval != xyes; then
+
+$as_echo "#define DISABLE_OPERATINGDIR 1" >>confdefs.h
+
+fi
+fi
+
+
+# Check whether --enable-speller was given.
+if test "${enable_speller+set}" = set; then :
+ enableval=$enable_speller; if test x$enableval != xyes; then
+
+$as_echo "#define DISABLE_SPELLER 1" >>confdefs.h
+
+fi
+fi
+
+
+# Check whether --enable-tabcomp was given.
+if test "${enable_tabcomp+set}" = set; then :
+ enableval=$enable_tabcomp; if test x$enableval != xyes; then
+
+$as_echo "#define DISABLE_TABCOMP 1" >>confdefs.h
+
+fi
+fi
+
+
+# Check whether --enable-wrapping was given.
+if test "${enable_wrapping+set}" = set; then :
+ enableval=$enable_wrapping; if test x$enableval != xyes; then
+
+$as_echo "#define DISABLE_WRAPPING 1" >>confdefs.h
+
+fi
+fi
+
+
+# Check whether --enable-wrapping-as-root was given.
+if test "${enable_wrapping_as_root+set}" = set; then :
+ enableval=$enable_wrapping_as_root; if test x$enableval != xyes; then
+
+$as_echo "#define DISABLE_ROOTWRAPPING 1" >>confdefs.h
+
+fi
+fi
+
+
+# Check whether --enable-color was given.
+if test "${enable_color+set}" = set; then :
+ enableval=$enable_color; if test x$enableval != xno; then
+ if test x$ac_cv_header_regex_h = xyes; then
+
+$as_echo "#define ENABLE_NANORC 1" >>confdefs.h
+ nanorc_support=yes
+
+$as_echo "#define ENABLE_COLOR 1" >>confdefs.h
+ color_support=yes
+ else
+ as_fn_error "
+*** The header file regex.h was not found. If you wish to use color
+*** support this header file is required. Please either install C
+*** libraries that include the regex.h file or call the configure
+*** script with --disable-color." "$LINENO" 5
+ fi
+fi
+else
+ if test x$enable_tiny != xyes; then
+ if test x$ac_cv_header_regex_h = xyes; then
+
+$as_echo "#define ENABLE_NANORC 1" >>confdefs.h
+ nanorc_support=yes
+
+$as_echo "#define ENABLE_COLOR 1" >>confdefs.h
+ color_support=yes
+ else
+ as_fn_error "
+*** The header file regex.h was not found. If you wish to use color
+*** support this header file is required. Please either install C
+*** libraries that include the regex.h file or call the configure
+*** script with --disable-color." "$LINENO" 5
+ fi
+ fi
+
+fi
+
+
+# Check whether --enable-multibuffer was given.
+if test "${enable_multibuffer+set}" = set; then :
+ enableval=$enable_multibuffer; if test x$enableval != xno; then
+
+$as_echo "#define ENABLE_MULTIBUFFER 1" >>confdefs.h
+ multibuffer_support=yes
+fi
+else
+ if test x$enable_tiny != xyes; then
+
+$as_echo "#define ENABLE_MULTIBUFFER 1" >>confdefs.h
+ multibuffer_support=yes
+ fi
+fi
+
+
+# Check whether --enable-nanorc was given.
+if test "${enable_nanorc+set}" = set; then :
+ enableval=$enable_nanorc; if test x$enableval != xno; then
+
+$as_echo "#define ENABLE_NANORC 1" >>confdefs.h
+ nanorc_support=yes
+fi
+else
+ if test x$enable_tiny != xyes; then
+
+$as_echo "#define ENABLE_NANORC 1" >>confdefs.h
+ nanorc_support=yes
+ fi
+fi
+
+
+# Check whether --enable-all was given.
+if test "${enable_all+set}" = set; then :
+ enableval=$enable_all; if test x$enableval = xyes; then
+ echo "--enable-all option no longer needed, ignoring for compatibility"
+fi
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable UTF-8 support" >&5
+$as_echo_n "checking whether to enable UTF-8 support... " >&6; }
+# Check whether --enable-utf8 was given.
+if test "${enable_utf8+set}" = set; then :
+ enableval=$enable_utf8; if test x$enableval = xyes; then
+ enable_utf8=yes
+else
+ enable_utf8=no
+fi
+else
+ enable_utf8=auto
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_utf8" >&5
+$as_echo "$enable_utf8" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use slang" >&5
+$as_echo_n "checking whether to use slang... " >&6; }
+CURSES_LIB_NAME=""
+
+# Check whether --with-slang was given.
+if test "${with_slang+set}" = set; then :
+ withval=$with_slang; case "$with_slang" in
+ no)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+ if test x$with_slang != xyes; then
+ # Add additional search path
+ LDFLAGS="-L$with_slang/lib $LDFLAGS"
+ CPPFLAGS="-I$with_slang/include $CPPFLAGS"
+ fi
+
+ if test x$enable_utf8 != xno; then
+ ac_fn_c_check_header_mongrel "$LINENO" "slcurses.h" "ac_cv_header_slcurses_h" "$ac_includes_default"
+if test "x$ac_cv_header_slcurses_h" = x""yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SLutf8_enable in -lslang" >&5
+$as_echo_n "checking for SLutf8_enable in -lslang... " >&6; }
+ _libs=$LIBS
+ LIBS="$LIBS -lslang"
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Can not use slang when cross-compiling" >&5
+$as_echo "$as_me: WARNING: *** Can not use slang when cross-compiling" >&2;}
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <slcurses.h>
+int main(void)
+{
+ SLutf8_enable(1);
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define USE_SLANG 1" >>confdefs.h
+ slang_support=yes
+ CURSES_LIB_WIDE=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang"
+ else
+ CURSES_LIB="-lslang"
+ fi
+ CURSES_LIB_NAME=slang
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ # We might need the term library
+ for termlib in ncurses curses termcap terminfo termlib; do
+ as_ac_Lib=`$as_echo "ac_cv_lib_${termlib}''_tputs" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tputs in -l${termlib}" >&5
+$as_echo_n "checking for tputs in -l${termlib}... " >&6; }
+if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-l${termlib} $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tputs ();
+int
+main ()
+{
+return tputs ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$as_ac_Lib=yes"
+else
+ eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+eval as_val=\$$as_ac_Lib
+ if test "x$as_val" = x""yes; then :
+ tcap="-l$termlib"
+fi
+
+ test -n "$tcap" && break
+ done
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SLutf8_enable in -lslang $tcap" >&5
+$as_echo_n "checking for SLutf8_enable in -lslang $tcap... " >&6; }
+ LIBS="$LIBS $tcap"
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Can not use slang when cross-compiling" >&5
+$as_echo "$as_me: WARNING: *** Can not use slang when cross-compiling" >&2;}
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <slcurses.h>
+int main(void)
+{
+ SLutf8_enable(1);
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define USE_SLANG 1" >>confdefs.h
+ slang_support=yes
+ CURSES_LIB_WIDE=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang $tcap"
+ else
+ CURSES_LIB="-lslang $tcap"
+ fi
+ CURSES_LIB_NAME=slang
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ # We might need the math library
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SLutf8_enable in -lslang $tcap -lm" >&5
+$as_echo_n "checking for SLutf8_enable in -lslang $tcap -lm... " >&6; }
+ LIBS="$LIBS -lm"
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Can not use slang when cross-compiling" >&5
+$as_echo "$as_me: WARNING: *** Can not use slang when cross-compiling" >&2;}
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <slcurses.h>
+int main(void)
+{
+ SLutf8_enable(1);
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define USE_SLANG 1" >>confdefs.h
+ slang_support=yes
+ CURSES_LIB_WIDE=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang $tcap -lm"
+ else
+ CURSES_LIB="-lslang $tcap -lm"
+ fi
+ CURSES_LIB_NAME=slang
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+else
+ as_fn_error "
+*** The header file slcurses.h was not found. If you wish to use
+*** slang support this header file is required. Please either
+*** install a version of slang that includes the slcurses.h file or
+*** do not call the configure script with --with-slang." "$LINENO" 5
+fi
+
+
+ fi
+
+ if eval "test x$CURSES_LIB_NAME = x"; then
+ # Reset libs if the above slang tests failed
+ if test x$enable_utf8 != xno; then
+ LIBS=$_libs
+ fi
+
+ ac_fn_c_check_header_mongrel "$LINENO" "slcurses.h" "ac_cv_header_slcurses_h" "$ac_includes_default"
+if test "x$ac_cv_header_slcurses_h" = x""yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SLtt_initialize in -lslang" >&5
+$as_echo_n "checking for SLtt_initialize in -lslang... " >&6; }
+ _libs=$LIBS
+ LIBS="$LIBS -lslang"
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Can not use slang when cross-compiling" >&5
+$as_echo "$as_me: WARNING: *** Can not use slang when cross-compiling" >&2;}
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <slcurses.h>
+int main(void)
+{
+ SLtt_initialize(NULL);
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define USE_SLANG 1" >>confdefs.h
+ slang_support=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang"
+ else
+ CURSES_LIB="-lslang"
+ fi
+ CURSES_LIB_NAME=slang
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ # We might need the term library
+ for termlib in ncurses curses termcap terminfo termlib; do
+ as_ac_Lib=`$as_echo "ac_cv_lib_${termlib}''_tputs" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tputs in -l${termlib}" >&5
+$as_echo_n "checking for tputs in -l${termlib}... " >&6; }
+if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-l${termlib} $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tputs ();
+int
+main ()
+{
+return tputs ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$as_ac_Lib=yes"
+else
+ eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+eval as_val=\$$as_ac_Lib
+ if test "x$as_val" = x""yes; then :
+ tcap="-l$termlib"
+fi
+
+ test -n "$tcap" && break
+ done
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SLtt_initialize in -lslang $tcap" >&5
+$as_echo_n "checking for SLtt_initialize in -lslang $tcap... " >&6; }
+ LIBS="$LIBS $tcap"
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Can not use slang when cross-compiling" >&5
+$as_echo "$as_me: WARNING: *** Can not use slang when cross-compiling" >&2;}
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <slcurses.h>
+int main(void)
+{
+ SLtt_initialize(NULL);
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define USE_SLANG 1" >>confdefs.h
+ slang_support=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang $tcap"
+ else
+ CURSES_LIB="-lslang $tcap"
+ fi
+ CURSES_LIB_NAME=slang
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ # We might need the math library
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SLtt_initialize in -lslang $tcap -lm" >&5
+$as_echo_n "checking for SLtt_initialize in -lslang $tcap -lm... " >&6; }
+ LIBS="$LIBS -lm"
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Can not use slang when cross-compiling" >&5
+$as_echo "$as_me: WARNING: *** Can not use slang when cross-compiling" >&2;}
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <slcurses.h>
+int main(void)
+{
+ SLtt_initialize(NULL);
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define USE_SLANG 1" >>confdefs.h
+ slang_support=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang $tcap -lm"
+ else
+ CURSES_LIB="-lslang $tcap -lm"
+ fi
+ CURSES_LIB_NAME=slang
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+else
+ as_fn_error "
+*** The header file slcurses.h was not found. If you wish to use
+*** slang support this header file is required. Please either
+*** install a version of slang that includes the slcurses.h file or
+*** do not call the configure script with --with-slang." "$LINENO" 5
+fi
+
+
+ fi
+
+ if test "${_libs+set}" = "set"; then
+ LIBS=$_libs
+ fi
+
+ if test x$with_slang != xyes; then
+ LDFLAGS=${_ldflags}
+ fi
+ ;;
+ esac
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test x$CURSES_LIB_NAME = xslang; then
+
+$as_echo "#define NANO_TINY 1" >>confdefs.h
+ tiny_support=yes
+
+$as_echo "#define DISABLE_BROWSER 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_HELP 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_JUSTIFY 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_MOUSE 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_OPERATINGDIR 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_SPELLER 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_TABCOMP 1" >>confdefs.h
+
+
+$as_echo "#define DISABLE_WRAPPING 1" >>confdefs.h
+
+fi
+
+ if test x$color_support = xyes; then
+ USE_COLOR_TRUE=
+ USE_COLOR_FALSE='#'
+else
+ USE_COLOR_TRUE='#'
+ USE_COLOR_FALSE=
+fi
+
+ if test x$nanorc_support = xyes; then
+ USE_NANORC_TRUE=
+ USE_NANORC_FALSE='#'
+else
+ USE_NANORC_TRUE='#'
+ USE_NANORC_FALSE=
+fi
+
+
+# Check whether --enable-altrcname was given.
+if test "${enable_altrcname+set}" = set; then :
+ enableval=$enable_altrcname; if test x$enableval != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define RCFILE_NAME "$enableval"
+_ACEOF
+ rcfilename=$enableval
+fi
+fi
+
+
+
+for ac_func in getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+if test x$enable_utf8 != xno; then
+ for ac_func in iswalnum iswblank iswpunct iswspace nl_langinfo mblen mbstowcs mbtowc wctomb wcwidth
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+fi
+
+if test x$ac_cv_func_vsnprintf = xno; then
+ # Check whether --enable-glibtest was given.
+if test "${enable_glibtest+set}" = set; then :
+ enableval=$enable_glibtest;
+else
+ enable_glibtest=yes
+fi
+
+
+ pkg_config_args=glib-2.0
+ for module in . glib
+ do
+ case "$module" in
+ gmodule)
+ pkg_config_args="$pkg_config_args gmodule-2.0"
+ ;;
+ gmodule-no-export)
+ pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
+ ;;
+ gobject)
+ pkg_config_args="$pkg_config_args gobject-2.0"
+ ;;
+ gthread)
+ pkg_config_args="$pkg_config_args gthread-2.0"
+ ;;
+ esac
+ done
+
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ no_glib=""
+
+ if test x$PKG_CONFIG != xno ; then
+ if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then
+ :
+ else
+ echo *** pkg-config too old; version 0.7 or better required.
+ no_glib=yes
+ PKG_CONFIG=no
+ fi
+ else
+ no_glib=yes
+ fi
+
+ min_glib_version=2.0.0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5
+$as_echo_n "checking for GLIB - version >= $min_glib_version... " >&6; }
+
+ if test x$PKG_CONFIG != xno ; then
+ ## don't try to run the test against uninstalled libtool libs
+ if $PKG_CONFIG --uninstalled $pkg_config_args; then
+ echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
+ enable_glibtest=no
+ fi
+
+ if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
+ :
+ else
+ no_glib=yes
+ fi
+ fi
+
+ if test x"$no_glib" = x ; then
+ GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+ GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
+ GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+
+ GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
+ GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
+ glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+ glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+ glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+ if test "x$enable_glibtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+ LIBS="$GLIB_LIBS $LIBS"
+ rm -f conf.glibtest
+ if test "$cross_compiling" = yes; then :
+ echo $ac_n "cross compiling; assumed OK... $ac_c"
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.glibtest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = g_strdup("$min_glib_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_glib_version");
+ exit(1);
+ }
+
+ if ((glib_major_version != $glib_config_major_version) ||
+ (glib_minor_version != $glib_config_minor_version) ||
+ (glib_micro_version != $glib_config_micro_version))
+ {
+ printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
+ $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
+ glib_major_version, glib_minor_version, glib_micro_version);
+ printf ("*** was found! If pkg-config was correct, then it is best\n");
+ printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
+ printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+ printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+ printf("*** required on your system.\n");
+ printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+ printf("*** to point to the correct configuration files\n");
+ }
+ else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
+ (glib_minor_version != GLIB_MINOR_VERSION) ||
+ (glib_micro_version != GLIB_MICRO_VERSION))
+ {
+ printf("*** GLIB header files (version %d.%d.%d) do not match\n",
+ GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+ printf("*** library (version %d.%d.%d)\n",
+ glib_major_version, glib_minor_version, glib_micro_version);
+ }
+ else
+ {
+ if ((glib_major_version > major) ||
+ ((glib_major_version == major) && (glib_minor_version > minor)) ||
+ ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
+ glib_major_version, glib_minor_version, glib_micro_version);
+ printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
+ major, minor, micro);
+ printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
+ printf("***\n");
+ printf("*** If you have already installed a sufficiently new version, this error\n");
+ printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+ printf("*** being found. The easiest way to fix this is to remove the old version\n");
+ printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
+ printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+ printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+ printf("*** so that the correct libraries are found at run-time))\n");
+ }
+ }
+ return 1;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ no_glib=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_glib" = x ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5
+$as_echo "yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6; }
+ :
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** A new enough version of pkg-config was not found."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig/"
+ else
+ if test -f conf.glibtest ; then
+ :
+ else
+ echo "*** Could not run GLIB test program, checking why..."
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+ LIBS="$LIBS $GLIB_LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <glib.h>
+#include <stdio.h>
+
+int
+main ()
+{
+ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version));
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding GLIB or finding the wrong"
+ echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+else
+ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means GLIB is incorrectly installed."
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ GLIB_CFLAGS=""
+ GLIB_LIBS=""
+ GLIB_GENMARSHAL=""
+ GOBJECT_QUERY=""
+ GLIB_MKENUMS=""
+ as_fn_error "
+*** vsnprintf() not found. GLIB 2.x not found either. You should
+*** install the GLIB 2.x library which can be found at
+*** ftp://ftp.gtk.org/." "$LINENO" 5
+ fi
+
+
+
+
+
+ rm -f conf.glibtest
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
+$as_echo_n "checking return type of signal handlers... " >&6; }
+if test "${ac_cv_type_signal+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <signal.h>
+
+int
+main ()
+{
+return *(signal (0, 0)) (0) == 1;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_type_signal=int
+else
+ ac_cv_type_signal=void
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
+$as_echo "$ac_cv_type_signal" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define RETSIGTYPE $ac_cv_type_signal
+_ACEOF
+
+
+for ac_func in vprintf
+do :
+ ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
+if test "x$ac_cv_func_vprintf" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_VPRINTF 1
+_ACEOF
+
+ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
+if test "x$ac_cv_func__doprnt" = x""yes; then :
+
+$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
+
+fi
+
+fi
+done
+
+
+for ac_func in getopt_long
+do :
+ ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long"
+if test "x$ac_cv_func_getopt_long" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_GETOPT_LONG 1
+_ACEOF
+
+fi
+done
+
+
+if eval "test x$CURSES_LIB_NAME = x"; then
+ for ac_header in ncurses.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "ncurses.h" "ac_cv_header_ncurses_h" "$ac_includes_default"
+if test "x$ac_cv_header_ncurses_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_NCURSES_H 1
+_ACEOF
+
+fi
+
+done
+
+
+ if test x$enable_utf8 != xno; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for get_wch in -lncursesw" >&5
+$as_echo_n "checking for get_wch in -lncursesw... " >&6; }
+if test "${ac_cv_lib_ncursesw_get_wch+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lncursesw $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char get_wch ();
+int
+main ()
+{
+return get_wch ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_ncursesw_get_wch=yes
+else
+ ac_cv_lib_ncursesw_get_wch=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_get_wch" >&5
+$as_echo "$ac_cv_lib_ncursesw_get_wch" >&6; }
+if test "x$ac_cv_lib_ncursesw_get_wch" = x""yes; then :
+ CURSES_LIB="-lncursesw" CPPFLAGS="-I/usr/include/ncursesw $CPPFLAGS" CURSES_LIB_NAME=ncursesw CURSES_LIB_WIDE=yes
+fi
+
+ fi
+
+ if eval "test x$CURSES_LIB_NAME = x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lncurses" >&5
+$as_echo_n "checking for initscr in -lncurses... " >&6; }
+if test "${ac_cv_lib_ncurses_initscr+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lncurses $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char initscr ();
+int
+main ()
+{
+return initscr ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_ncurses_initscr=yes
+else
+ ac_cv_lib_ncurses_initscr=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_initscr" >&5
+$as_echo "$ac_cv_lib_ncurses_initscr" >&6; }
+if test "x$ac_cv_lib_ncurses_initscr" = x""yes; then :
+ CURSES_LIB="-lncurses" CURSES_LIB_NAME=ncurses
+fi
+
+ fi
+fi
+
+if eval "test x$CURSES_LIB_NAME = x"; then
+ for ac_header in curses.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "curses.h" "ac_cv_header_curses_h" "$ac_includes_default"
+if test "x$ac_cv_header_curses_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_CURSES_H 1
+_ACEOF
+
+fi
+
+done
+
+
+ if test x$enable_utf8 != xno; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for get_wch in -lcurses" >&5
+$as_echo_n "checking for get_wch in -lcurses... " >&6; }
+if test "${ac_cv_lib_curses_get_wch+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcurses $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char get_wch ();
+int
+main ()
+{
+return get_wch ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_curses_get_wch=yes
+else
+ ac_cv_lib_curses_get_wch=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_get_wch" >&5
+$as_echo "$ac_cv_lib_curses_get_wch" >&6; }
+if test "x$ac_cv_lib_curses_get_wch" = x""yes; then :
+ CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses CURSES_LIB_WIDE=yes
+fi
+
+ fi
+
+ if eval "test x$CURSES_LIB_NAME = x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lcurses" >&5
+$as_echo_n "checking for initscr in -lcurses... " >&6; }
+if test "${ac_cv_lib_curses_initscr+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcurses $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char initscr ();
+int
+main ()
+{
+return initscr ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_curses_initscr=yes
+else
+ ac_cv_lib_curses_initscr=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_initscr" >&5
+$as_echo "$ac_cv_lib_curses_initscr" >&6; }
+if test "x$ac_cv_lib_curses_initscr" = x""yes; then :
+ CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses
+fi
+
+ fi
+fi
+
+if eval "test x$CURSES_LIB_NAME = x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+*** No curses lib available. Consider getting the official ncurses
+*** distribution from ftp://ftp.gnu.org/pub/gnu/ncurses if you get
+*** errors compiling nano." >&5
+$as_echo "$as_me: WARNING:
+*** No curses lib available. Consider getting the official ncurses
+*** distribution from ftp://ftp.gnu.org/pub/gnu/ncurses if you get
+*** errors compiling nano." >&2;}
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using $CURSES_LIB_NAME as the curses library" >&5
+$as_echo "Using $CURSES_LIB_NAME as the curses library" >&6; }
+fi
+
+as_ac_Lib=`$as_echo "ac_cv_lib_$CURSES_LIB_NAME''_use_default_colors" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for use_default_colors in -l$CURSES_LIB_NAME" >&5
+$as_echo_n "checking for use_default_colors in -l$CURSES_LIB_NAME... " >&6; }
+if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$CURSES_LIB_NAME $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char use_default_colors ();
+int
+main ()
+{
+return use_default_colors ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$as_ac_Lib=yes"
+else
+ eval "$as_ac_Lib=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+eval ac_res=\$$as_ac_Lib
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+eval as_val=\$$as_ac_Lib
+ if test "x$as_val" = x""yes; then :
+
+$as_echo "#define HAVE_USE_DEFAULT_COLORS 1" >>confdefs.h
+
+fi
+
+
+
+LIBS="$LIBS $CURSES_LIB"
+
+
+
+if test "x$GLIB_CFLAGS" != "x"; then
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+fi
+if test "x$GLIB_LIBS" != "x"; then
+ LDFLAGS="$LDFLAGS $GLIB_LIBS"
+fi
+
+if test x$enable_utf8 != xno && \
+ test x$CURSES_LIB_WIDE = xyes && \
+ test x$ac_cv_func_iswalnum = xyes && \
+ test x$ac_cv_func_iswpunct = xyes && \
+ (test x$ac_cv_func_iswblank = xyes || test x$ac_cv_func_iswspace = xyes) && \
+ test x$ac_cv_func_nl_langinfo = xyes && \
+ test x$ac_cv_func_mblen = xyes && \
+ test x$ac_cv_func_mbstowcs = xyes && \
+ test x$ac_cv_func_mbtowc = xyes && \
+ test x$ac_cv_func_wctomb = xyes && \
+ test x$ac_cv_func_wcwidth = xyes; then
+
+$as_echo "#define ENABLE_UTF8 1" >>confdefs.h
+
+else
+ if test x$enable_utf8 = xyes; then
+ as_fn_error "
+*** UTF-8 support was requested, but insufficient UTF-8 support was
+*** detected in your curses and/or C libraries. Please verify that your
+*** slang was built with UTF-8 support or your curses was built with
+*** wide character support, and that your C library was built with wide
+*** character support." "$LINENO" 5
+ elif test x$enable_utf8 != xno; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+*** Insufficient UTF-8 support was detected in your curses and/or C
+*** libraries. If you want UTF-8 support, please verify that your slang
+*** was built with UTF-8 support or your curses was built with wide
+*** character support, and that your C library was built with wide
+*** character support." >&5
+$as_echo "$as_me: WARNING:
+*** Insufficient UTF-8 support was detected in your curses and/or C
+*** libraries. If you want UTF-8 support, please verify that your slang
+*** was built with UTF-8 support or your curses was built with wide
+*** character support, and that your C library was built with wide
+*** character support." >&2;}
+ fi
+fi
+
+if test x$color_support = xyes; then
+ # now check for the end of word boundary support (/< and />)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU-style word boundary regex support" >&5
+$as_echo_n "checking for GNU-style word boundary regex support... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Can't check for GNU-style word boundary support when cross-compiling" >&5
+$as_echo "$as_me: WARNING: *** Can't check for GNU-style word boundary support when cross-compiling" >&2;}
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#include <regex.h>
+int main(void)
+{
+ regex_t r;
+ size_t nmatch;
+ regmatch_t pmatch;
+
+ if (regcomp(&r, "\\\\>", REG_EXTENDED|REG_NOSUB))
+ return 1;
+ if (regexec(&r, "word boundary", nmatch, &pmatch, 0))
+ return 1;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define GNU_WORDBOUNDS 1" >>confdefs.h
+ gnu_wordbounds=yes
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+# if test x$CURSES_LIB_NAME = xcurses; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE_EXTENDED is needed" >&5
+$as_echo_n "checking whether _XOPEN_SOURCE_EXTENDED is needed... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Can't check need for _XOPEN_SOURCE_EXTENDED when cross-compiling" >&5
+$as_echo "$as_me: WARNING: *** Can't check need for _XOPEN_SOURCE_EXTENDED when cross-compiling" >&2;}
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <curses.h>
+int main(void)
+{
+ int testcolor = COLOR_WHITE;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+else
+ if test "$cross_compiling" = yes; then :
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run test program while cross compiling
+See \`config.log' for more details." "$LINENO" 5; }
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifndef _XOPEN_SOURCE_EXTENDED
+#define _XOPEN_SOURCE_EXTENDED 1
+#endif
+#include <curses.h>
+int main(void)
+{
+ int testcolor = COLOR_WHITE;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+$as_echo "#define NEED_XOPEN_SOURCE_EXTENDED 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not sure" >&5
+$as_echo "not sure" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Couldn't successfully compile basic color test with or without _XOPEN_SOURCE_EXTENDED" >&5
+$as_echo "$as_me: WARNING: *** Couldn't successfully compile basic color test with or without _XOPEN_SOURCE_EXTENDED" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** This build may not compile. Consider configuring with --disable-color or installing ncurses" >&5
+$as_echo "$as_me: WARNING: *** This build may not compile. Consider configuring with --disable-color or installing ncurses" >&2;}
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+#fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether LINES and COLS can be redefined" >&5
+$as_echo_n "checking whether LINES and COLS can be redefined... " >&6; }
+if test "$cross_compiling" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Can't check for macro redefinability when cross-compiling" >&5
+$as_echo "$as_me: WARNING: *** Can't check for macro redefinability when cross-compiling" >&2;}
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <curses.h>
+int main(void)
+{
+ LINES = 80;
+ COLS = 25;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+$as_echo "#define REDEFINIG_MACROS_OK 1" >>confdefs.h
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+
+# Check for groff html support
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for HTML support in groff" >&5
+$as_echo_n "checking for HTML support in groff... " >&6; }
+groff -t -mandoc -Thtml </dev/null >/dev/null
+if test $? -ne 0 ; then
+ echo "no"
+ echo "*** Will not generate HTML version of man pages ***"
+ echo "*** Consider installing a newer version of groff with HTML support ***"
+ groff_html_support=no
+else
+ echo "yes"
+ groff_html_support=yes
+fi
+ if test x$groff_html_support = xyes; then
+ GROFF_HTML_TRUE=
+ GROFF_HTML_FALSE='#'
+else
+ GROFF_HTML_TRUE='#'
+ GROFF_HTML_FALSE=
+fi
+
+
+
+ac_config_files="$ac_config_files Makefile doc/Makefile doc/nanorc.sample doc/man/Makefile doc/man/fr/Makefile doc/syntax/Makefile doc/texinfo/Makefile m4/Makefile po/Makefile.in src/Makefile nano.spec"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ test "x$cache_file" != "x/dev/null" &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_NLS_TRUE}" && test -z "${USE_NLS_FALSE}"; then
+ as_fn_error "conditional \"USE_NLS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_COLOR_TRUE}" && test -z "${USE_COLOR_FALSE}"; then
+ as_fn_error "conditional \"USE_COLOR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_NANORC_TRUE}" && test -z "${USE_NANORC_FALSE}"; then
+ as_fn_error "conditional \"USE_NANORC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GROFF_HTML_TRUE}" && test -z "${GROFF_HTML_FALSE}"; then
+ as_fn_error "conditional \"GROFF_HTML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by GNU nano $as_me 2.2.6, which was
+generated by GNU Autoconf 2.65. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <nano-devel@gnu.org>.
+GNU nano home page: <http://www.gnu.org/software/nano/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+GNU nano config.status 2.2.6
+configured by $0, generated by GNU Autoconf 2.65,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ as_fn_error "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+ # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
+ # from automake.
+ eval 'ALL_LINGUAS''="$ALL_LINGUAS"'
+ # Capture the value of LINGUAS because we need it to compute CATALOGS.
+ LINGUAS="${LINGUAS-%UNSET%}"
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+ "doc/nanorc.sample") CONFIG_FILES="$CONFIG_FILES doc/nanorc.sample" ;;
+ "doc/man/Makefile") CONFIG_FILES="$CONFIG_FILES doc/man/Makefile" ;;
+ "doc/man/fr/Makefile") CONFIG_FILES="$CONFIG_FILES doc/man/fr/Makefile" ;;
+ "doc/syntax/Makefile") CONFIG_FILES="$CONFIG_FILES doc/syntax/Makefile" ;;
+ "doc/texinfo/Makefile") CONFIG_FILES="$CONFIG_FILES doc/texinfo/Makefile" ;;
+ "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;;
+ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+ "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+ "nano.spec") CONFIG_FILES="$CONFIG_FILES nano.spec" ;;
+
+ *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+ || as_fn_error "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[ ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_t"; then
+ break
+ elif $ac_last_try; then
+ as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ as_fn_error "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&2;}
+
+ rm -f "$tmp/stdin"
+ case $ac_file in
+ -) cat "$tmp/out" && rm -f "$tmp/out";;
+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+ } >"$tmp/config.h" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$tmp/config.h" "$ac_file" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+ || as_fn_error "could not create -" "$LINENO" 5
+ fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+ "default-1":C)
+ for ac_file in $CONFIG_FILES; do
+ # Support "outfile[:infile[:infile...]]"
+ case "$ac_file" in
+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ esac
+ # PO directories have a Makefile.in generated from Makefile.in.in.
+ case "$ac_file" in */Makefile.in)
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+ rm -f "$ac_dir/POTFILES"
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
+ # on $ac_dir but don't depend on user-specified configuration
+ # parameters.
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ if test -n "$ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ # Hide the ALL_LINGUAS assigment from automake.
+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ fi
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ GMOFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ done
+ fi
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+ if test -f "$f"; then
+ case "$f" in
+ *.orig | *.bak | *~) ;;
+ *) cat "$f" >> "$ac_dir/Makefile" ;;
+ esac
+ fi
+ done
+ fi
+ ;;
+ esac
+ done ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit $?
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..6388c03
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,616 @@
+# Configuration for GNU nano - a small and user-friendly text editor
+#
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+# Free Software Foundation, Inc.
+#
+# GNU nano is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3, or (at your option) any
+# later version.
+#
+# GNU nano 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 GNU nano; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
+# USA.
+#
+# $Id: configure.ac 4516 2010-08-11 02:42:32Z astyanax $
+
+AC_INIT([GNU nano], [2.2.6], [nano-devel@gnu.org], [nano])
+AC_CONFIG_SRCDIR([src/nano.c])
+AC_CANONICAL_TARGET([])
+AM_INIT_AUTOMAKE
+AC_CONFIG_HEADERS([config.h])
+
+AC_PREREQ(2.54)
+
+dnl Checks for programs.
+
+AC_GNU_SOURCE
+AC_PROG_CC
+AC_PROG_LN_S
+AC_ISC_POSIX
+AC_SYS_LARGEFILE
+
+dnl Internationalization macros.
+
+AM_GNU_GETTEXT_VERSION(0.11.5)
+AM_GNU_GETTEXT([external], [need-ngettext])
+AM_CONDITIONAL(USE_NLS, test x$USE_NLS = xyes)
+
+dnl Data location.
+
+pkgdatadir=${datadir}/${PACKAGE}
+AC_DEFINE_DIR([PKGDATADIR], [pkgdatadir], [Where data are placed to.])
+
+dnl Checks for header files.
+
+AC_HEADER_STDC
+AC_CHECK_HEADERS(getopt.h libintl.h limits.h regex.h sys/param.h wchar.h wctype.h stdarg.h)
+
+dnl Checks for options.
+
+AC_ARG_ENABLE(debug,
+[ --enable-debug Enable debugging (disabled by default)],
+[if test x$enableval = xyes; then
+ AC_DEFINE(DEBUG, 1, [Define this to enable debug messages and assert warnings.]) debug_support=yes
+fi])
+
+if test x$debug_support != xyes; then
+ AC_DEFINE(NDEBUG, 1, [Shut up assert warnings :-)])
+fi
+
+AC_ARG_ENABLE(tiny,
+[ --enable-tiny Disable features for the sake of size],
+[if test x$enableval = xyes; then
+ AC_DEFINE(NANO_TINY, 1, [Define this to make the nano executable as small as possible.]) tiny_support=yes
+ AC_DEFINE(DISABLE_BROWSER, 1, [Define this to disable the built-in file browser.])
+ AC_DEFINE(DISABLE_HELP, 1, [Define this to disable the help text display.])
+ AC_DEFINE(DISABLE_JUSTIFY, 1, [Define this to disable the justify routines.])
+ AC_DEFINE(DISABLE_MOUSE, 1, [Define this to disable the mouse support.])
+ AC_DEFINE(DISABLE_OPERATINGDIR, 1, [Define this to disable the setting of the operating directory (chroot of sorts).])
+ AC_DEFINE(DISABLE_SPELLER, 1, [Define this to disable the spell checker functions.])
+ AC_DEFINE(DISABLE_TABCOMP, 1, [Define to disable the tab completion functions for files and search strings.])
+ AC_DEFINE(DISABLE_WRAPPING, 1, [Define this to disable all text wrapping.])
+fi])
+
+
+AC_ARG_ENABLE(extra,
+[ --disable-extra Disable extra features, currently only easter eggs],
+[if test x$enableval != xno; then
+ AC_DEFINE(NANO_EXTRA, 1, [Define this to enable extra stuff.]) extra_support=yes
+fi],
+ [if test x$enable_tiny != xyes; then
+ AC_DEFINE(NANO_EXTRA, 1, [Define this to enable extra stuff.]) extra_support=yes
+ fi])
+
+AC_ARG_ENABLE(browser,
+[ --disable-browser Disable built-in file browser],
+[if test x$enableval != xyes; then
+ AC_DEFINE(DISABLE_BROWSER, 1, [Define this to disable the built-in file browser.])
+fi])
+
+AC_ARG_ENABLE(help,
+[ --disable-help Disable help functions],
+[if test x$enableval != xyes; then
+ AC_DEFINE(DISABLE_HELP, 1, [Define this to disable the help text display.])
+fi])
+
+AC_ARG_ENABLE(justify,
+[ --disable-justify Disable justify/unjustify functions],
+[if test x$enableval != xyes; then
+ AC_DEFINE(DISABLE_JUSTIFY, 1, [Define this to disable the justify routines.])
+fi])
+
+AC_ARG_ENABLE(mouse,
+[ --disable-mouse Disable mouse support (and -m flag)],
+[if test x$enableval != xyes; then
+ AC_DEFINE(DISABLE_MOUSE, 1, [Define this to disable the mouse support.])
+fi])
+
+AC_ARG_ENABLE(operatingdir,
+[ --disable-operatingdir Disable setting of operating directory (chroot of sorts)],
+[if test x$enableval != xyes; then
+ AC_DEFINE(DISABLE_OPERATINGDIR, 1, [Define this to disable the setting of the operating directory (chroot of sorts).])
+fi])
+
+AC_ARG_ENABLE(speller,
+[ --disable-speller Disable spell checker functions],
+[if test x$enableval != xyes; then
+ AC_DEFINE(DISABLE_SPELLER, 1, [Define this to disable the spell checker functions.])
+fi])
+
+AC_ARG_ENABLE(tabcomp,
+[ --disable-tabcomp Disable tab completion functions],
+[if test x$enableval != xyes; then
+ AC_DEFINE(DISABLE_TABCOMP, 1, [Define to disable the tab completion functions for files and search strings.])
+fi])
+
+AC_ARG_ENABLE(wrapping,
+[ --disable-wrapping Disable all wrapping of text (and -w flag)],
+[if test x$enableval != xyes; then
+ AC_DEFINE(DISABLE_WRAPPING, 1, [Define this to disable all text wrapping.])
+fi])
+
+AC_ARG_ENABLE(wrapping-as-root,
+[ --disable-wrapping-as-root Disable wrapping of text as root by default],
+[if test x$enableval != xyes; then
+ AC_DEFINE(DISABLE_ROOTWRAPPING, 1, [Define this to disable text wrapping as root by default.])
+fi])
+
+AC_ARG_ENABLE(color,
+[ --disable-color Disable color and syntax highlighting],
+if test x$enableval != xno; then
+ if test x$ac_cv_header_regex_h = xyes; then
+ AC_DEFINE(ENABLE_NANORC, 1, [Define this to use .nanorc files.]) nanorc_support=yes
+ AC_DEFINE(ENABLE_COLOR, 1, [Define this to have syntax highlighting, requires regex.h and ENABLE_NANORC too!]) color_support=yes
+ else
+ AC_MSG_ERROR([
+*** The header file regex.h was not found. If you wish to use color
+*** support this header file is required. Please either install C
+*** libraries that include the regex.h file or call the configure
+*** script with --disable-color.])
+ fi
+fi,
+ if test x$enable_tiny != xyes; then
+ if test x$ac_cv_header_regex_h = xyes; then
+ AC_DEFINE(ENABLE_NANORC, 1, [Define this to use .nanorc files.]) nanorc_support=yes
+ AC_DEFINE(ENABLE_COLOR, 1, [Define this to have syntax highlighting, requires regex.h and ENABLE_NANORC too!]) color_support=yes
+ else
+ AC_MSG_ERROR([
+*** The header file regex.h was not found. If you wish to use color
+*** support this header file is required. Please either install C
+*** libraries that include the regex.h file or call the configure
+*** script with --disable-color.])
+ fi
+ fi
+)
+
+AC_ARG_ENABLE(multibuffer,
+[ --disable-multibuffer Disable multiple file buffers],
+[if test x$enableval != xno; then
+ AC_DEFINE(ENABLE_MULTIBUFFER, 1, [Define this to enable multiple file buffers.]) multibuffer_support=yes
+fi],
+ [if test x$enable_tiny != xyes; then
+ AC_DEFINE(ENABLE_MULTIBUFFER, 1, [Define this to enable multiple file buffers.]) multibuffer_support=yes
+ fi])
+
+AC_ARG_ENABLE(nanorc,
+[ --disable-nanorc Disable use of .nanorc files],
+[if test x$enableval != xno; then
+ AC_DEFINE(ENABLE_NANORC, 1, [Define this to use .nanorc files.]) nanorc_support=yes
+fi],
+ [if test x$enable_tiny != xyes; then
+ AC_DEFINE(ENABLE_NANORC, 1, [Define this to use .nanorc files.]) nanorc_support=yes
+ fi])
+
+AC_ARG_ENABLE(all,
+[ --enable-all Enable ALL extra nano functionality (ignored for compatibility as all options default to on)],
+[if test x$enableval = xyes; then
+ echo "--enable-all option no longer needed, ignoring for compatibility"
+fi])
+
+AC_MSG_CHECKING([whether to enable UTF-8 support])
+AC_ARG_ENABLE(utf8,
+[ --enable-utf8 Enable UTF-8 support],
+[if test x$enableval = xyes; then
+ enable_utf8=yes
+else
+ enable_utf8=no
+fi],
+[enable_utf8=auto])
+AC_MSG_RESULT($enable_utf8)
+
+AC_MSG_CHECKING([whether to use slang])
+CURSES_LIB_NAME=""
+AC_ARG_WITH(slang,
+[ --with-slang[=DIR] Use the slang library instead of curses],
+[ case "$with_slang" in
+ no)
+ AC_MSG_RESULT(no)
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+
+ if test x$with_slang != xyes; then
+ # Add additional search path
+ LDFLAGS="-L$with_slang/lib $LDFLAGS"
+ CPPFLAGS="-I$with_slang/include $CPPFLAGS"
+ fi
+
+ if test x$enable_utf8 != xno; then
+ AC_CHECK_HEADER(slcurses.h,
+ AC_MSG_CHECKING([for SLutf8_enable in -lslang])
+ _libs=$LIBS
+ LIBS="$LIBS -lslang"
+ AC_TRY_RUN([
+#include <slcurses.h>
+int main(void)
+{
+ SLutf8_enable(1);
+ return 0;
+}],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
+ CURSES_LIB_WIDE=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang"
+ else
+ CURSES_LIB="-lslang"
+ fi
+ CURSES_LIB_NAME=slang],
+ [AC_MSG_RESULT(no)
+
+ # We might need the term library
+ for termlib in ncurses curses termcap terminfo termlib; do
+ AC_CHECK_LIB([${termlib}], tputs, [tcap="-l$termlib"])
+ test -n "$tcap" && break
+ done
+
+ AC_MSG_CHECKING([for SLutf8_enable in -lslang $tcap])
+ LIBS="$LIBS $tcap"
+ AC_TRY_RUN([
+#include <slcurses.h>
+int main(void)
+{
+ SLutf8_enable(1);
+ return 0;
+}],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
+ CURSES_LIB_WIDE=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang $tcap"
+ else
+ CURSES_LIB="-lslang $tcap"
+ fi
+ CURSES_LIB_NAME=slang],
+ [AC_MSG_RESULT(no)
+
+ # We might need the math library
+ AC_MSG_CHECKING([for SLutf8_enable in -lslang $tcap -lm])
+ LIBS="$LIBS -lm"
+ AC_TRY_RUN([
+#include <slcurses.h>
+int main(void)
+{
+ SLutf8_enable(1);
+ return 0;
+}],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
+ CURSES_LIB_WIDE=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang $tcap -lm"
+ else
+ CURSES_LIB="-lslang $tcap -lm"
+ fi
+ CURSES_LIB_NAME=slang],
+ [AC_MSG_RESULT(no)],
+ AC_MSG_WARN([*** Can not use slang when cross-compiling]))],
+ AC_MSG_WARN([*** Can not use slang when cross-compiling]))],
+ AC_MSG_WARN([*** Can not use slang when cross-compiling])),
+ AC_MSG_ERROR([
+*** The header file slcurses.h was not found. If you wish to use
+*** slang support this header file is required. Please either
+*** install a version of slang that includes the slcurses.h file or
+*** do not call the configure script with --with-slang.]))
+ fi
+
+ if eval "test x$CURSES_LIB_NAME = x"; then
+ # Reset libs if the above slang tests failed
+ if test x$enable_utf8 != xno; then
+ LIBS=$_libs
+ fi
+
+ AC_CHECK_HEADER(slcurses.h,
+ AC_MSG_CHECKING([for SLtt_initialize in -lslang])
+ _libs=$LIBS
+ LIBS="$LIBS -lslang"
+ AC_TRY_RUN([
+#include <slcurses.h>
+int main(void)
+{
+ SLtt_initialize(NULL);
+ return 0;
+}],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang"
+ else
+ CURSES_LIB="-lslang"
+ fi
+ CURSES_LIB_NAME=slang],
+ [AC_MSG_RESULT(no)
+
+ # We might need the term library
+ for termlib in ncurses curses termcap terminfo termlib; do
+ AC_CHECK_LIB([${termlib}], tputs, [tcap="-l$termlib"])
+ test -n "$tcap" && break
+ done
+
+ AC_MSG_CHECKING([for SLtt_initialize in -lslang $tcap])
+ LIBS="$LIBS $tcap"
+ AC_TRY_RUN([
+#include <slcurses.h>
+int main(void)
+{
+ SLtt_initialize(NULL);
+ return 0;
+}],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang $tcap"
+ else
+ CURSES_LIB="-lslang $tcap"
+ fi
+ CURSES_LIB_NAME=slang],
+ [AC_MSG_RESULT(no)
+
+ # We might need the math library
+ AC_MSG_CHECKING([for SLtt_initialize in -lslang $tcap -lm])
+ LIBS="$LIBS -lm"
+ AC_TRY_RUN([
+#include <slcurses.h>
+int main(void)
+{
+ SLtt_initialize(NULL);
+ return 0;
+}],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
+ if test x$with_slang != xyes; then
+ CURSES_LIB="-L${with_slang}/lib -lslang $tcap -lm"
+ else
+ CURSES_LIB="-lslang $tcap -lm"
+ fi
+ CURSES_LIB_NAME=slang],
+ [AC_MSG_RESULT(no)],
+ AC_MSG_WARN([*** Can not use slang when cross-compiling]))],
+ AC_MSG_WARN([*** Can not use slang when cross-compiling]))],
+ AC_MSG_WARN([*** Can not use slang when cross-compiling])),
+ AC_MSG_ERROR([
+*** The header file slcurses.h was not found. If you wish to use
+*** slang support this header file is required. Please either
+*** install a version of slang that includes the slcurses.h file or
+*** do not call the configure script with --with-slang.]))
+ fi
+
+ if test "${_libs+set}" = "set"; then
+ LIBS=$_libs
+ fi
+
+ if test x$with_slang != xyes; then
+ LDFLAGS=${_ldflags}
+ fi
+ ;;
+ esac], [AC_MSG_RESULT(no)])
+
+if test x$CURSES_LIB_NAME = xslang; then
+ AC_DEFINE(NANO_TINY, 1, [Define this to make the nano executable as small as possible.]) tiny_support=yes
+ AC_DEFINE(DISABLE_BROWSER, 1, [Define this to disable the built-in file browser.])
+ AC_DEFINE(DISABLE_HELP, 1, [Define this to disable the help text display.])
+ AC_DEFINE(DISABLE_JUSTIFY, 1, [Define this to disable the justify routines.])
+ AC_DEFINE(DISABLE_MOUSE, 1, [Define this to disable the mouse support.])
+ AC_DEFINE(DISABLE_OPERATINGDIR, 1, [Define this to disable the setting of the operating directory (chroot of sorts).])
+ AC_DEFINE(DISABLE_SPELLER, 1, [Define this to disable the spell checker functions.])
+ AC_DEFINE(DISABLE_TABCOMP, 1, [Define to disable the tab completion functions for files and search strings.])
+ AC_DEFINE(DISABLE_WRAPPING, 1, [Define this to disable all text wrapping.])
+fi
+
+AM_CONDITIONAL(USE_COLOR, test x$color_support = xyes)
+AM_CONDITIONAL(USE_NANORC, test x$nanorc_support = xyes)
+
+AC_ARG_ENABLE(altrcname,
+[ --enable-altrcname Specify alternate rcfile name (default: .nanorc)],
+[if test x$enableval != no; then
+ AC_DEFINE_UNQUOTED(RCFILE_NAME, "$enableval", [Specify alternate rcfile name (default: .nanorc)]) rcfilename=$enableval
+fi])
+
+dnl Checks for functions.
+
+AC_CHECK_FUNCS(getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf)
+
+if test x$enable_utf8 != xno; then
+ AC_CHECK_FUNCS(iswalnum iswblank iswpunct iswspace nl_langinfo mblen mbstowcs mbtowc wctomb wcwidth)
+fi
+
+if test x$ac_cv_func_vsnprintf = xno; then
+ AM_PATH_GLIB_2_0(2.0.0,,
+ AC_MSG_ERROR([
+*** vsnprintf() not found. GLIB 2.x not found either. You should
+*** install the GLIB 2.x library which can be found at
+*** ftp://ftp.gtk.org/.]),
+ glib)
+fi
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+
+dnl Checks for library functions.
+AC_TYPE_SIGNAL
+AC_FUNC_VPRINTF
+AC_CHECK_FUNCS(getopt_long)
+dnl Checks for libraries.
+
+if eval "test x$CURSES_LIB_NAME = x"; then
+ AC_CHECK_HEADERS(ncurses.h)
+
+ if test x$enable_utf8 != xno; then
+ AC_CHECK_LIB(ncursesw, get_wch, [CURSES_LIB="-lncursesw" CPPFLAGS="-I/usr/include/ncursesw $CPPFLAGS" CURSES_LIB_NAME=ncursesw CURSES_LIB_WIDE=yes])
+ fi
+
+ if eval "test x$CURSES_LIB_NAME = x"; then
+ AC_CHECK_LIB(ncurses, initscr, [CURSES_LIB="-lncurses" CURSES_LIB_NAME=ncurses])
+ fi
+fi
+
+if eval "test x$CURSES_LIB_NAME = x"; then
+ AC_CHECK_HEADERS(curses.h)
+
+ if test x$enable_utf8 != xno; then
+ AC_CHECK_LIB(curses, get_wch, [CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses CURSES_LIB_WIDE=yes])
+ fi
+
+ if eval "test x$CURSES_LIB_NAME = x"; then
+ AC_CHECK_LIB(curses, initscr, [CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses])
+ fi
+fi
+
+if eval "test x$CURSES_LIB_NAME = x"; then
+ AC_MSG_WARN([
+*** No curses lib available. Consider getting the official ncurses
+*** distribution from ftp://ftp.gnu.org/pub/gnu/ncurses if you get
+*** errors compiling nano.])
+else
+ AC_MSG_RESULT([Using $CURSES_LIB_NAME as the curses library])
+fi
+
+AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1, [Define this if your curses library has the use_default_colors() command.]))
+
+dnl Parse any configure options.
+
+LIBS="$LIBS $CURSES_LIB"
+
+AC_SUBST(CURSES_LIB)
+
+if test "x$GLIB_CFLAGS" != "x"; then
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+fi
+if test "x$GLIB_LIBS" != "x"; then
+ LDFLAGS="$LDFLAGS $GLIB_LIBS"
+fi
+
+if test x$enable_utf8 != xno && \
+ test x$CURSES_LIB_WIDE = xyes && \
+ test x$ac_cv_func_iswalnum = xyes && \
+ test x$ac_cv_func_iswpunct = xyes && \
+ (test x$ac_cv_func_iswblank = xyes || test x$ac_cv_func_iswspace = xyes) && \
+ test x$ac_cv_func_nl_langinfo = xyes && \
+ test x$ac_cv_func_mblen = xyes && \
+ test x$ac_cv_func_mbstowcs = xyes && \
+ test x$ac_cv_func_mbtowc = xyes && \
+ test x$ac_cv_func_wctomb = xyes && \
+ test x$ac_cv_func_wcwidth = xyes; then
+ AC_DEFINE(ENABLE_UTF8, 1, [Define this if your system has sufficient UTF-8 support (a wide curses library, iswalnum(), iswpunct(), iswblank() or iswspace(), nl_langinfo, mblen(), mbstowcs(), mbtowc(), wctomb(), and wcwidth()).])
+else
+ if test x$enable_utf8 = xyes; then
+ AC_MSG_ERROR([
+*** UTF-8 support was requested, but insufficient UTF-8 support was
+*** detected in your curses and/or C libraries. Please verify that your
+*** slang was built with UTF-8 support or your curses was built with
+*** wide character support, and that your C library was built with wide
+*** character support.])
+ elif test x$enable_utf8 != xno; then
+ AC_MSG_WARN([
+*** Insufficient UTF-8 support was detected in your curses and/or C
+*** libraries. If you want UTF-8 support, please verify that your slang
+*** was built with UTF-8 support or your curses was built with wide
+*** character support, and that your C library was built with wide
+*** character support.])
+ fi
+fi
+
+if test x$color_support = xyes; then
+ # now check for the end of word boundary support (/< and />)
+ AC_MSG_CHECKING([for GNU-style word boundary regex support])
+ AC_TRY_RUN([
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#include <regex.h>
+int main(void)
+{
+ regex_t r;
+ size_t nmatch;
+ regmatch_t pmatch;
+
+ if (regcomp(&r, "\\\\>", REG_EXTENDED|REG_NOSUB))
+ return 1;
+ if (regexec(&r, "word boundary", nmatch, &pmatch, 0))
+ return 1;
+ return 0;
+}],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(GNU_WORDBOUNDS, 1, [Define if the system supports GNU-style word boundaries in regexes.]) gnu_wordbounds=yes,
+ AC_MSG_RESULT(no),
+ AC_MSG_WARN([*** Can't check for GNU-style word boundary support when cross-compiling])
+)
+# if test x$CURSES_LIB_NAME = xcurses; then
+ AC_MSG_CHECKING([whether _XOPEN_SOURCE_EXTENDED is needed])
+ AC_TRY_RUN([
+#include <curses.h>
+int main(void)
+{
+ int testcolor = COLOR_WHITE;
+ return 0;
+}], AC_MSG_RESULT(no),
+ AC_TRY_RUN([
+#ifndef _XOPEN_SOURCE_EXTENDED
+#define _XOPEN_SOURCE_EXTENDED 1
+#endif
+#include <curses.h>
+int main(void)
+{
+ int testcolor = COLOR_WHITE;
+ return 0;
+}],
+ AC_DEFINE(NEED_XOPEN_SOURCE_EXTENDED, 1, [Define this if you need the _XOPEN_SOURCE_EXTENDED macro for color support])
+ AC_MSG_RESULT(yes),
+ AC_MSG_RESULT(not sure)
+ AC_MSG_WARN([*** Couldn't successfully compile basic color test with or without _XOPEN_SOURCE_EXTENDED])
+ AC_MSG_WARN([*** This build may not compile. Consider configuring with --disable-color or installing ncurses])),
+ AC_MSG_WARN([*** Can't check need for _XOPEN_SOURCE_EXTENDED when cross-compiling]))
+ fi
+#fi
+
+AC_MSG_CHECKING([whether LINES and COLS can be redefined])
+AC_TRY_RUN([
+#include <curses.h>
+int main(void)
+{
+ LINES = 80;
+ COLS = 25;
+ return 0;
+}],
+AC_DEFINE(REDEFINIG_MACROS_OK, 1, [Define this if you know your curses library allows LINES and COLS to be redefined to deal with a resizing bug])
+AC_MSG_RESULT(yes),
+AC_MSG_RESULT(no),
+AC_MSG_WARN([*** Can't check for macro redefinability when cross-compiling]))
+
+
+# Check for groff html support
+AC_MSG_CHECKING([for HTML support in groff])
+groff -t -mandoc -Thtml </dev/null >/dev/null
+if test $? -ne 0 ; then
+ echo "no"
+ echo "*** Will not generate HTML version of man pages ***"
+ echo "*** Consider installing a newer version of groff with HTML support ***"
+ groff_html_support=no
+else
+ echo "yes"
+ groff_html_support=yes
+fi
+AM_CONDITIONAL(GROFF_HTML, test x$groff_html_support = xyes)
+
+
+AC_CONFIG_FILES([
+Makefile
+doc/Makefile
+doc/nanorc.sample
+doc/man/Makefile
+doc/man/fr/Makefile
+doc/syntax/Makefile
+doc/texinfo/Makefile
+m4/Makefile
+po/Makefile.in
+src/Makefile
+nano.spec
+])
+
+AC_OUTPUT
diff --git a/depcomp b/depcomp
new file mode 100755
index 0000000..df8eea7
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,630 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
+# Software Foundation, Inc.
+
+# 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
+# the Free Software Foundation; either version 2, or (at your option)
+# 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, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by `PROGRAMS ARGS'.
+ object Object file output by `PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputing dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u="sed s,\\\\\\\\,/,g"
+ depmode=msvisualcpp
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like `#:fec' to the end of the
+ # dependency line.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> "$depfile"
+ echo >> "$depfile"
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts `$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
+ "$@" -Wc,-M
+ else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
+ "$@" -M
+ fi
+ stat=$?
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+icc)
+ # Intel's C compiler understands `-MD -MF file'. However on
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # ICC 7.0 will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want:
+ # sub/foo.o: sub/foo.c
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+ # ICC 7.1 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using \ :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+ sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add `dependent.h:' lines.
+ sed -ne '2,${
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+ # With Tru64 cc, shared objects can also be used to make a
+ # static library. This mechanism is used in libtool 1.4 series to
+ # handle both shared and static libraries in a single compilation.
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+ #
+ # With libtool 1.5 this exception was removed, and libtool now
+ # generates 2 separate objects for the 2 libraries. These two
+ # compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.o.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ tmpdepfile4=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for `:'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ "$@" $dashmflag |
+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no eat=no
+ for arg
+ do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ if test $eat = yes; then
+ eat=no
+ continue
+ fi
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -arch)
+ eat=yes ;;
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix=`echo "$object" | sed 's/^.*\././'`
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E |
+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E 2>/dev/null |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvcmsys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..15f35ee
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,7 @@
+if USE_COLOR
+SUBDIRS = man syntax texinfo
+else
+SUBDIRS = man texinfo
+endif
+
+EXTRA_DIST = faq.html
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 0000000..b30918f
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,562 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/nanorc.sample.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glib-2.0.m4 \
+ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = nanorc.sample
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = man texinfo syntax
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURSES_LIB = @CURSES_LIB@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKGDATADIR = @PKGDATADIR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@USE_COLOR_FALSE@SUBDIRS = man texinfo
+@USE_COLOR_TRUE@SUBDIRS = man syntax texinfo
+EXTRA_DIST = faq.html
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+nanorc.sample: $(top_builddir)/config.status $(srcdir)/nanorc.sample.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic ctags \
+ ctags-recursive distclean distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/faq.html b/doc/faq.html
new file mode 100644
index 0000000..70baba5
--- /dev/null
+++ b/doc/faq.html
@@ -0,0 +1,331 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>The GNU nano editor FAQ</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+</head>
+<body text="#330000" bgcolor="#ffffff" link="#0000ef" vlink="#51188e" alink="#ff0000">
+<h1>The GNU nano editor FAQ</h1>
+<h2>Table of Contents</h2>
+<h2><a href="#1">1. General</a></h2>
+<blockquote><p><a href="#1.1">1.1 About this FAQ</a><br>
+ <a href="#1.2">1.2. How do I contribute to it?</a><br>
+ <a href="#1.3">1.3. What is GNU nano?</a><br>
+ <a href="#1.4">1.4. What is the history behind nano?</a><br>
+ <a href="#1.5">1.5. Why the name change from TIP?</a><br>
+ <a href="#1.6">1.6. What is the current version of nano?</a><br>
+ <a href="#1.7">1.7. I want to read the manpage without having to download the program!</a></p></blockquote>
+<h2><a href="#2">2. Where to get GNU nano.</a></h2>
+<blockquote><p><a href="#2.1">2.1. FTP and WWW sites that carry nano.</a><br>
+ <a href="#2.2">2.2. RedHat and derivatives (.rpm) packages.</a><br>
+ <a href="#2.3">2.3. Debian (.deb) packages.</a><br>
+ <a href="#2.4">2.4. By subversion (for the brave).</a></p></blockquote>
+<h2><a href="#3">3. Installation and Configuration</a></h2>
+<blockquote><p><a href="#3.1">3.1. How do I install the RPM or DEB package?</a><br>
+ <a href="#3.2">3.2. Compiling from source: WHAT THE HECK DO I DO NOW?</a><br>
+ <a href="#3.3">3.3. Why does everything go into /usr/local?</a><br>
+ <a href="#3.4">3.4. I get errors about 'bindtextdomain','gettext', and/or 'gettextdomain'. What can I do about it?</a><br>
+ <a href="#3.5">3.5. nano should automatically run strip on the binary when installing it!</a><br>
+ <a href="#3.6">3.6. How can I make the executable smaller? This is too bloated!</a><br>
+ <a href="#3.7">3.7. Tell me more about this multibuffer stuff!</a><br>
+ <a href="#3.8">3.8. Tell me more about this verbatim input stuff!</a><br>
+ <a href="#3.9">3.9. How do I make a .nanorc file that nano will read when I start it?</a></br>
+ <a href="#3.9.1">3.9.1. How about in Win32?</a></p></blockquote>
+<h2><a href="#4">4. Running</a></h2>
+<blockquote><p><a href="#4.1">4.1. How do I open a file with a name beginning with '+' from the command line?</a><br>
+ <a href="#4.2">4.2. Ack! My Backspace/Delete/Enter/Meta/double bucky key doesn't seem to work! What can I do?</a><br>
+ <a href="#4.3">4.3. Ack! My numeric keypad's keys don't work properly when NumLock is off! What can I do?</a><br>
+ <a href="#4.4">4.4. Ack! When I hold down a Meta key combination for a while, the character of the held key gets inserted now and then. What gives?</a><br>
+ <a href="#4.5">4.5. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</a><br>
+ <a href="#4.6">4.6. nano crashes when I type &lt;insert keystroke here&gt;!</a><br>
+ <a href="#4.7">4.7. nano crashes when I resize my window. How can I fix that?</a><br>
+ <a href="#4.8">4.8. [version 1.3.12 and later] I'm using glibc 2.2.3, and nano crashes when I use color support or do regular expression searches. How can I fix that?</a><br>
+ <a href="#4.9">4.9. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</a><br>
+ <a href="#4.10a">4.10a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</a><br>
+ <a href="#4.10b">4.10b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</a><br>
+ <a href="#4.11">4.11. How do I make nano my default editor (in Pine, mutt, etc.)?</a><br>
+ <a href="#4.12">4.12. I've compiled nano with color support, but I don't see any color when I run it!</a><br>
+ <a href="#4.13">4.13. How do I select text for or paste text from the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</a><br>
+ <a href="#4.14">4.14. When I paste text into a document, each line gets indented further than the last. Why does nano do this, and how can I avoid it?</a></p></blockquote>
+<h2><a href="#5">5. Internationalization</a></h2>
+<blockquote><p><a href="#5.1">5.1. There's no translation for my language!</a><br>
+ <a href="#5.2">5.2. I don't like the translation for &lt;x&gt; in my language. How can I fix it?</a><br>
+ <a href="#5.3">5.3. What is the status of Unicode support?</a></p></blockquote>
+<h2><a href="#6">6. Advocacy and Licensing</a></h2>
+<blockquote><p><a href="#6.1">6.1. Why should I use nano instead of Pico?</a><br>
+ <a href="#6.2">6.2. Why should I use Pico instead of nano?</a><br>
+ <a href="#6.3">6.3. What is so bad about the older Pine license?</a><br>
+ <a href="#6.4">6.4. Okay, well, what mail program should I use then?</a></p></blockquote>
+<h2><a href="#7">7. Miscellaneous</a></h2>
+<blockquote><p><a href="#7.1">7.1. nano-related mailing lists.</a><br>
+ <a href="#7.2">7.2. I want to send the development team a big load of cash (or just a thank you).</a><br>
+ <a href="#7.3">7.3. How do I submit a bug report or patch?</a><br>
+ <a href="#7.4">7.4. How do I join the development team?</a><br>
+ <a href="#7.5">7.5. Can I have write access to the subversion tree?</a></p></blockquote>
+<h2><a href="#8">8. ChangeLog</a></h2>
+<hr width="100%">
+<h1><a name="1"></a>1. General</h1>
+<h2><a name="1.1"></a>1.1 About this FAQ</h2>
+<blockquote><p>This FAQ was originally written and maintained by Chris Allegretta &lt;<a href="mailto:chrisa@asty.org">chrisa@asty.org</a>&gt;, who also happens to be the creator of nano. It was then maintained by David Lawrence Ramsey &lt;<a href="mailto:pooka109@gmail.com">pooka109@gmail.com</a>&gt;. Maybe someone else will volunteer to maintain this FAQ someday, who knows...</p></blockquote>
+<h2><a name="1.2"></a>1.2. How do I contribute to it?</h2>
+<blockquote><p>Your best bet is to send it to the nano email address, <a href="mailto:nano@nano-editor.org">nano@nano-editor.org</a> and if it is useful enough it will be included in future versions.</p></blockquote>
+<h2><a name="1.3"></a>1.3. What is GNU nano?</h2>
+<blockquote><p>GNU nano is designed to be a free replacement for the Pico text editor, part of the Pine email suite from <a href="http://www.washington.edu/pine/">The University of Washington</a>. It aims to &quot;emulate Pico as closely as possible and perhaps include extra functionality&quot;.</p></blockquote>
+<h2><a name="1.4"></a>1.4. What is the history behind nano?</h2>
+<blockquote><p>Funny you should ask!</p>
+ <p><b>In the beginning...</b></p>
+ <p>For years Pine was THE program used to read email on a Unix system. The Pico text editor is the portion of the program one would use to compose his or her mail messages. Many beginners to Unix flocked to Pico and Pine because of their well organized, easy to use interfaces. With the proliferation of GNU/Linux in the mid to late 90's, many University students became intimately familiar with the strengths (and weaknesses) of Pine and Pico.</p>
+ <p><b>Then came Debian...</b></p>
+ <p>The <a href="http://www.debian.org/">Debian GNU/Linux</a> distribution, known for its strict standards in distributing truly &quot;free&quot; software (i.e. software with no restrictions on redistribution), would not include a binary package for Pine or Pico. Many people had a serious dilemma: they loved these programs, but the versions available at the time were not truly free software in the <a href="http://www.gnu.org/philosophy/free-sw.html">GNU</a> sense of the word.</p>
+ <p><b>The event...</b></p>
+ <p>It was in late 1999 when Chris Allegretta (our hero) was yet again complaining to himself about the less-than-perfect license Pico was distributed under, the 1000 makefiles that came with it and how just a few small improvements could make it the Best Editor in the World (TM). Having been a convert from Slackware to Debian, he missed having a simple binary package that included Pine and Pico, and had grown tired of downloading them himself.</p>
+ <p>Finally something snapped inside and Chris coded and hacked like a madman for many hours straight one weekend to make a (barely usable) Pico clone, at the time called TIP (Tip Isn't Pico). The program could not be invoked without a filename, could not save files, had no help text display, spell checker, and so forth. But over time it improved, and with the help of a few great coders it matured to the (hopefully) stable state it is today.</p>
+ <p>In February 2001, nano was declared an official GNU program by Richard Stallman. nano also reached its first production release on March 22, 2001.</p></blockquote>
+<h2><a name="1.5"></a>1.5. Why the name change from TIP?</h2>
+<blockquote><p>On January 10, 2000, TIP was officially renamed to nano because of a namespace conflict with another program called 'tip'. The original 'tip' program &quot;establishes a full duplex terminal connection to a remote host&quot;, and was included with many older Unix systems (and newer ones like Solaris). The conflict was not noticed at first because there is no 'tip' utility included with most GNU/Linux distributions (where nano was developed).</p></blockquote>
+<h2><a name="1.6"></a>1.6. What is the current version of nano?</h2>
+<blockquote><p>The current version of nano *should* be 2.2.0. Of course, you should always check the nano homepage to see what the latest and greatest version is.</p></blockquote>
+<h2><a name="1.7"></a>1.7. I want to read the man page without having to download the program!</h2>
+<blockquote><p>Jeez, demanding, aren't we? Okay, look <a href="http://www.nano-editor.org/dist/v2.2/nano.1.html">here</a>.</p></blockquote>
+<hr width="100%">
+<h1><a name="2"></a>2. Where to get GNU nano.</h1>
+<h2><a name="2.1"></a>2.1. FTP and WWW sites that carry nano.</h2>
+<blockquote><p>The nano distribution can be downloaded at the following fine web and ftp sites:</p>
+ <ul>
+ <li><a href="http://www.nano-editor.org/dist/">http://www.nano-editor.org/dist/</a></li>
+ <li><a href="http://www.ewtoo.org/~astyanax/nano/dist/">http://www.ewtoo.org/~astyanax/nano/dist/</a></li>
+ <li><a href="ftp://ftp.gnu.org/pub/gnu/nano/">ftp://ftp.gnu.org/pub/gnu/nano/</a></li>
+ </ul>
+</blockquote>
+<h2><a name="2.2"></a>2.2. RedHat and derivatives (.rpm) packages.</h2>
+<blockquote>
+ <ul>
+ <li><a href="http://www.nano-editor.org/dist/v2.2/RPMS/">http://www.nano-editor.org/dist/v2.2/RPMS/</a></li>
+ <li><a href="http://www.ewtoo.org/~astyanax/nano/dist/v2.2/RPMS/">http://www.ewtoo.org/~astyanax/nano/dist/v2.2/RPMS/</a></li>
+ </ul>
+</blockquote>
+<h2><a name="2.3"></a>2.3. Debian (.deb) packages.</h2>
+<blockquote><p>Debian users can check out the current nano packages for:</p>
+ <ul>
+ <li><a href="http://packages.debian.org/stable/editors/nano.html">stable</a></li>
+ <li><a href="http://packages.debian.org/testing/editors/nano.html">testing</a></li>
+ <li><a href="http://packages.debian.org/unstable/editors/nano.html">unstable</a></li>
+ </ul>
+ <p>You can also have a look at the <a href="ftp://ftp.debian.org/debian/pool/main/n/nano/">Package Pool</a> to see all the available binary and source packages.</p>
+ <p>Note that versions &lt; 0.9.10 are probably not for those wanting to get serious work done, so if you are using Debian 2.2, check that you have updated to 2.2r3, which comes with nano 0.9.23. If you're tracking unstable, you probably have the newest version already.</p></blockquote>
+<h2><a name="2.4"></a>2.4. By subversion (for the brave).</h2>
+<blockquote><p>For the 'bleeding edge' current version of nano, you can use subversion to download the current source code. <b>Note:</b> believe it or not, by downloading code that has not yet stabilized into an official release, there could quite possibly be bugs, in fact the code may not even compile! Anyway, see <a href="http://svn.savannah.gnu.org/viewvc/trunk/nano/README.SVN?root=nano&view=markup">the nano SVN document</a> for info on anonymous SVN access to the nano source.</p></blockquote>
+<hr width="100%">
+<h1><a name="3"></a>3. Installation and Configuration</h1>
+<h2><a name="3.1"></a>3.1. How do I install the RPM or DEB package?</h2>
+<blockquote><p>It's simple really! As root, type <b>rpm -Uvh nano-x.y.z-1.i386.rpm</b> if you have a RedHat-ish system or <b>dpkg -i nano_x.y.z-1.deb</b> if you have a Debian-ish system, where <b>x.y.z</b> is the release of nano. There are other programs to install packages, and if you wish to use those, knock yourself out.</p></blockquote>
+<h2><a name="3.2"></a>3.2. Compiling from source: WHAT THE HECK DO I DO NOW?</h2>
+<blockquote><p>Okay, take a deep breath, this really isn't hard. Unpack the nano source with a command like:</p>
+ <p><b>tar -zxvf nano-x.y.z.tar.gz</b></p>
+ <p>If you get error messages about the -z option, try this:</p>
+ <p><b>gzip -dc nano-x.y.z.tar.gz | tar xvf -</b></p>
+ <p>(again, where x.y.z is the version number in question). Then you need to run configure with any options you might want (if any).</p>
+ <p>The average case is this:</p>
+ <p><b>cd nano-x.y.z/</b><br>
+ <b>./configure</b><br>
+ <b>make</b><br>
+ <b>make install</b> (as root, of course)</p></blockquote>
+<h2><a name="3.3"></a>3.3. Why does everything go into /usr/local?</h2>
+<blockquote><p>Well, that's what the <b>configure</b> script defaults to. If you wish to change this, simply do this:</p>
+ <p><b>./configure --prefix=/usr</b></p>
+ <p>to put nano into /usr/bin when you run <b>make install</b>.</p></blockquote>
+<h2><a name="3.4"></a>3.4. I get errors about 'bindtextdomain', 'gettext', and/or 'gettextdomain'. What can I do about it?</h2>
+<blockquote><p>Try doing a <b>./configure --with-included-gettext</b> and see if that solves your problem. You may need to do a <b>make clean; make</b> to get it to work fully.</p></blockquote>
+<h2><a name="3.5"></a>3.5. nano should automatically run strip on the binary when installing it!</h2>
+<blockquote><p>Actually, it does, but you have to use <b>make install-strip</b>. The default make install does not, and will not, run strip automatically.</p></blockquote>
+<h2><a name="3.6"></a>3.6. How can I make the executable smaller? This is too bloated!</h2>
+<blockquote><p>Actually, there are several parts of the editor that can be disabled. You can pass arguments to the <b>configure</b> script that disable certain features. Here's a brief list:</p>
+ <pre>
+ <b>--disable-tabcomp</b> Disable tab completion functions
+ <b>--disable-justify</b> Disable justify/unjustify functions
+ <b>--disable-speller</b> Disable spell checker functions
+ <b>--disable-help</b> Disable help functions
+ <b>--disable-browser</b> Disable built-in file browser
+ <b>--disable-wrapping</b> Disable all wrapping of text (and -w flag)
+ <b>--disable-mouse</b> Disable mouse support (and -m flag)
+ <b>--disable-operatingdir</b> Disable setting of operating directory</pre>
+ <p>There's also the <b>--enable-tiny</b> option which disables everything above, as well as some larger chunks of the program (like the marker code that you use Control-^ to select with). Also, if you know you aren't going to be using other languages you can use <b>--disable-nls</b> to disable internationalization and save a few K to a few dozen K depending on if you have locale support on your system. And finally there's always good old <b>strip</b> to strip all debugging code and code that exists in libraries on your system.</p>
+ <p>If, on the other hand, you can't live without bells and whistles, you could try:</p>
+ <pre>
+ <b>--enable-extra</b> Enable extra features, currently only easter eggs
+ <b>--enable-nanorc</b> Enable use of .nanorc files
+ <b>--enable-color</b> Enable color and syntax highlighting
+ <b>--enable-multibuffer</b> Enable having multiple file buffers open
+ <b>--enable-all</b> Enable all of the above features
+ <b>--disable-wrapping-as-root</b>
+ Disable text wrapping by default when the user is
+ root</pre></blockquote>
+<h2><a name="3.7"></a>3.7. Tell me more about this multibuffer stuff!</h2>
+<blockquote><p>To use multiple file buffers, you must be using nano 1.1.0 or newer, and you must have configured nano with <b>--enable-multibuffer</b> (use nano -V to check). Then when you want to enable inserting a file into its own buffer instead of into the current file, just hit <b>Meta-F</b>, then insert the file as normal with <b>^R</b>. If you always want files to be loaded into their own buffers, use the <b>--multibuffer</b> or <b>-F</b> flag when you invoke nano.</p>
+ <p>You can move between the buffers you have open with the <b>Meta-&lt;</b> and <b>Meta-&gt;</b> keys, or more easily with <b>Meta-,</b> and <b>Meta-.</b> (clear as mud, right? =-). When you have more than one file buffer open, the ^X shortcut will say &quot;Close&quot;, instead of the normal &quot;Exit&quot; when only one buffer is open.</p></blockquote>
+<h2><a name="3.8"></a>3.8. Tell me more about this verbatim input stuff!</h2>
+<blockquote><p>To use verbatim input, you must be using nano 1.3.1 or newer. When you want to insert a literal character into the file you're editing, such as a control character that nano usually treats as a command, first press <b>Meta-V</b>. (If you're not at a prompt, you'll get the message &quot;Verbatim Input&quot;.) Then press the key(s) that generate the character you want.</p>
+ <p>Alternatively, if you've enabled Unicode support (see section <a href="#5.3">5.3</a>), you can press <b>Meta-V</b> and then type a six-digit hexadecimal code from 000000 to 10FFFF (case-insensitive), and the character with the corresponding value will be inserted instead. The prompt will change to &quot;Unicode Input&quot; when you do this.</p></blockquote>
+<h2><a name="3.9"></a>3.9. How do I make a .nanorc file that nano will read when I start it?</h2>
+<blockquote><p>It's not hard at all! But, your version of nano must have been compiled with <b>--enable-nanorc</b>, and again must be version 1.1.12 or newer (use nano -V to check your version and compiled features). Then simply copy the <b>nanorc.sample</b> that came with the nano source or your nano package (most likely in /usr/doc/nano) to .nanorc in your home directory. If you didn't get one, the syntax is simple. Flags are turned on and off by using the word <b>set</b> and the getopt_long flag for the feature, for example &quot;set nowrap&quot; or &quot;set suspend&quot;.</p></blockquote>
+<h2><a name="3.9.1"></a>3.9. How about in Win32?</h2>
+<blockquote><p>If you're using the official nano .zip file and have extracted all the files, you should take the file nano.rc and place it somewhere on your Win32 system (for example if you have write permission to do so, at the top of C:\). Then you must create an Environment variable called HOME which points to the directory where you put nano.rc. In Windows XP, you can get to Environment variables by right-clicking "My Computer" either on the desktop or in the Start Menu, and selecting Properties. This should bring up the System Properties panel. Then click the Advanced Tab, and there should be a button called Environment Variables. Click that to bring up the Environment Variables section. Now, under User Variables you should be able to click the New button, and make a new Variables Name called HOME, with the Variable Value of whatever path you copied nano.rc into (just the directory name; don't add nano.rc onto the end).</p>
+<p>We're still working on documentatino for enabling synax highlighting on Win32; please bear with us</p>
+<p>Note that the nano.rc file must remain Unix formated in order for nano to unerstand it. In other words, you should use probably only use nano to edit its config file. Other programs like Wordpad and Notepad will either convert the file to DOS format when saving, and the latter does not even properly read Unix-formatted files to begin with.</p></blockquote>
+<hr width="100%">
+<h1><a name="4"></a>4. Running</h1>
+<h2><a name="4.1"></a>4.1. How do I open a file with a name beginning with '+' from the command line?</h2>
+<blockquote><p>If a command line option that begins with '+' is followed by another option, the former is always treated as a starting line and column number and the latter is always treated as a filename. If a command line option that begins with '+' isn't followed by another option, it's always treated as a filename. Examples:</p>
+ <p>To open '+filename.txt' starting on line 1: <b>nano +filename.txt</b><br>
+ To open '+filename.txt' starting on line 10: <b>nano +10 +filename.txt</b><br>
+ To open '+filename.txt' starting on line 1, column 20: <b>nano +,20 +filename.txt</b><br>
+ To open '+filename.txt' starting on line 10, column 20: <b>nano +10,20 +filename.txt</b><br>
+ To open '+filename.txt' starting on line 1 and 'filename.txt' starting on line 10 (if nano has been compiled with multibuffer support): <b>nano +1 +filename.txt +20 filename.txt</b></p></blockquote>
+<h2><a name="4.2"></a>4.2. Ack! My Backspace/Delete/Enter/Meta/double bucky key doesn't seem to work! What can I do?</h2>
+<blockquote><p>Try setting your $TERM variable to 'vt100'. nano doesn't yet support every term entry under the sun.</p>
+ <p>Bourne shell users (bash and sh): <b>export TERM=vt100</b><br>
+ C Shell users (tcsh and csh): <b>setenv TERM vt100</b></p></blockquote>
+<h2><a name="4.3"></a>4.3. Ack! My numeric keypad's keys don't work properly when NumLock is off! What can I do?</h2>
+<blockquote><p>You can use the <b>-K</b> or <b>--rebindkeypad</b> options on the command line, or add the line <b>set rebindkeypad</b> to your .nanorc. However, nano's mouse support won't work properly if you do any of these things.</p></blockquote>
+<h2><a name="4.4"></a>4.4. Ack! When I hold down a Meta key combination for a while, the character of the held key gets inserted now and then. What gives?</h2>
+<blockquote><p>This is a bug in the terminal, not in nano. When a key is repeating faster than nano can process it, the keyboard buffer becomes full and starts dropping incoming keystrokes. Unfortunately, it doesn't just drop whole keystrokes; it can also drop parts of multibyte key combinations, resulting in nano's receiving a wrong key.</p></blockquote>
+<h2><a name="4.5"></a>4.5. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</h2>
+<blockquote><p>It depends on the terminal type you're using. On some terminals, such as the FreeBSD console, xterm, konsole, and gnome-terminal, Shift-F1 to Shift-F4 will generate F13 to F16. On other terminals, such as the Linux console, rxvt, and Eterm, Shift-F3 to Shift-F6 will generate F13 to F16.</p></blockquote>
+<h2><a name="4.6"></a>4.6. nano crashes when I type &lt;insert keystroke here&gt;!</h2>
+<blockquote><p>If you aren't trying some bizarre keystroke combination with some bizarre $TERM entry, chances are you have found a bug. You are welcome to submit it to the <a href="mailto:nano-devel@gnu.org">nano-devel</a> list or to <a href="mailto:nano@nano-editor.org">nano@nano-editor.org</a>.</p></blockquote>
+<h2><a name="4.7"></a>4.7. nano crashes when I resize my window. How can I fix that?</h2>
+<blockquote><p>Older versions of nano had this problem, please upgrade to a newer version (at least 0.9.9 would be great, 0.9.12 is recommended).</p></blockquote>
+<h2><a name="4.8"></a>4.8. [version 1.3.12 and later] I'm using glibc 2.2.3, and nano crashes when I use color support or do regular expression searches. How can I fix that?</h2>
+<blockquote><p>It's a bug in glibc 2.2.3. You should upgrade to at least glibc 2.2.4.</p></blockquote>
+<h2><a name="4.9"></a>4.9. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</h2>
+<blockquote><p>The help (^G) and justify (^J) function were among the last to be written. To show the improvements that nano had over Pico (go to line # and replace), ^_ and ^\ were put on the shortcut list. Later, ^G came back in place of ^_ as it proved to be very valuable for new Unix users. If you use the <b>-p</b> option to nano (or hit Meta-P) you will get the same shortcuts at the bottom as Pico.</p></blockquote>
+<h2><a name="4.10a"></a>4.10a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</h2>
+<blockquote><p>In nano version 0.9.20, the default is to have a completely consistent user interface across all user input functions. This means that regardless of whether you're being asked for a filename to insert or write, or a string to search for, the previous value is already inserted before the cursor. If you prefer the old behavior, use the Pico emulation mode (-p or --pico) or just hit Meta-P while in nano (see the ^G help text for more details).</p></blockquote>
+<h2><a name="4.10b"></a>4.10b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</h2>
+<blockquote><p>It was decided that consistency was nice, but people are used to Pico's inconsistent behavior. Also, in version 1.1.99pre1, search and replace history was introduced. If you wish to edit your previous search/replace entry (or any previous entry), you can do so by hitting the up arrow to cycle through your history. This method allows the best of both worlds: You don't need to erase the previous string if you want to enter a new one, but you can with one keystroke recall previous entries for editing. Therefore there is now no "Pico mode", nano is and has always been a Pico <b>clone</b>, and clones by default should be compatible.</p></blockquote>
+<h2><a name="4.11"></a>4.11. How do I make nano my default editor (in Pine, mutt, etc.)?</h2>
+<blockquote><p>You need to make nano your $EDITOR. If you want this to be saved, you should put a line like this in your <b>.bashrc</b> if you use bash (or <b>.zshrc</b> if you believe in zsh):</p>
+ <p><b>export EDITOR=/usr/local/bin/nano</b></p>
+ <p>or, if you use tcsh, put this in your <b>.cshrc</b> file:</p>
+ <p><b>setenv EDITOR /usr/local/bin/nano</b></p>
+ <p>Change /usr/local/bin/nano to wherever nano is installed on your system. Type &quot;which nano&quot; to find out. This will not take effect until the next time you login. So log out and back in again.</p>
+ <p>Then, on top of that, if you use Pine, you must go into setup (type <b>S</b> at the main menu), and then configure (type <b>C</b>). Hit Enter on the lines that say:</p>
+ <p><b>[ ] enable-alternate-editor-cmd</b><br>
+ <b>[ ] enable-alternate-editor-implicitly</b></p>
+ <p>Then exit (<b>E</b>) and select Yes (<b>Y</b>).</p>
+ <p>If you're a mutt user, you should see an effect immediately the next time you log in. No further configuration is needed. However, if you want to let people know you use nano to compose your email messages, you can put a line like this in your <b>.muttrc</b>:</p>
+ <p><b>my_hdr X-Composer: nano x.y.z</b></p>
+ <p>Again, replace x.y.z with the version of nano you use.</p></blockquote>
+<h2><a name="4.12"></a>4.12. I've compiled nano with color support, but I don't see any color when I run it!</h2>
+<blockquote><p>If you want nano to actually use color, you have to specify the color configurations you want it to use in your .nanorc. Some example configurations are in the <b>nanorc.sample</b> that comes with the nano source or your nano package. See Section <a href="#3.9">3.9</a>.</p></blockquote>
+<h2><a name="4.13"></a>4.13. How do I select text for or paste text from the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</h2>
+<blockquote><p>Try holding down the Shift key and selecting or pasting the text as you normally would.</p></blockquote>
+<h2><a name="4.14"></a>4.14. When I paste text into a document, each line gets indented further than the last. Why does nano do this, and how can I avoid it?</h2>
+<blockquote><p>You have the autoindent feature turned on. Hit Meta-I to turn it off, paste your text, and then hit Meta-I again to turn it back on.</p></blockquote>
+<hr width="100%">
+<h1><a name="5"></a>5. Internationalization</h1>
+<h2><a name="5.1"></a>5.1. There's no translation for my language!</h2>
+<blockquote><p>On June of 2001, GNU nano entered the <a href="http://translationproject.org/html/welcome.html">Free Translation Project</a> and since then, translations should be managed from there.</p>
+ <p>If there isn't a translation for your language, you could ask <a href="http://translationproject.org/team/">your language team</a> to translate nano, or better still, join your team and do it yourself. Joining a team is easy. You just need to ask the <a href="mailto:coordinator@translationproject.org">TP coordinator</a> to add you to your team, and send a <a href="http://translationproject.org/disclaim.txt">translation disclaimer to the FSF</a> (this is necessary as nano is an official GNU package, but it does <b>not</b> mean that you transfer the rights of your work to the FSF, it's just so the FSF can legally manage them).</p>
+ <p>In any case, translating nano is very easy. Just grab the <b>nano.pot</b> file from the latest and greatest nano distribution (it's in the <b>po/</b> directory) and translate each line into your native language on the <b>msgstr</b> line. When you're done, you should send it to the TP's central po repository.</p></blockquote>
+<h2><a name="5.2"></a>5.2. I don't like the translation for &lt;x&gt; in my language. How can I fix it?</h2>
+<blockquote><p>The best way would probably be to e-mail the person listed in the <code>Last-Translator:</code> field in the <b>&lt;your_language&gt;.po</b> file with your suggested corrections and they can make the changes reach the nano-devel list.</p></blockquote>
+<h2><a name="5.3"></a>5.3. What is the status of Unicode support?</h2>
+<blockquote><p>In version 1.3.12 or later, Unicode should be usable. With your terminal, locale (LC_ALL and similar environment variables), and encoding configured to properly support UTF-8, you should be able to enter and save Unicode text.</p></blockquote>
+<hr width="100%">
+<h1><a name="6"></a>6. Advocacy and Licensing</h1>
+<h2><a name="6.1"></a>6.1. Why should I use nano instead of Pico?</h2>
+<blockquote><p>There are many reasons to use nano instead of Pico. A more complete list can be found at the <a href="http://www.nano-editor.org/">nano homepage</a>.</p></blockquote>
+<h2><a name="6.2"></a>6.2. Why should I use Pico instead of nano?</h2>
+<blockquote><p>Again, check out the <a href="http://www.nano-editor.org/">nano homepage</a> for a good summary of reasons. It really is a matter of personal preference as to which editor you should use. If you're the type of person who likes using the original version of a program, then Pico is the editor for you. If you don't mind sacrificing mailer integration with Pine, and are looking for a few more features, as well as a 'better' license in terms of adding your own changes, nano is the way to go.</p><p>Note that the last of these no longer applies to the new version of Pine, <a href="http://www.washington.edu/alpine/">Alpine</a>, which is under the Apache License, version 2.0.</p></blockquote>
+<h2><a name="6.3"></a>6.3. What is so bad about the older Pine license?</h2>
+<blockquote><p>The U of W license for older versions of Pine and Pico is not considered truly Free Software according to both the Free Software Foundation and the <a href="http://www.debian.org/social_contract#guidelines">Debian Free Software Guidelines</a>. The main problem regards the limitations on distributing derived works: according to UW, you can distribute their software, and you can modify it, but you can not do both, i.e. distribute modified binaries.</p></blockquote>
+<h2><a name="6.4"></a>6.4. Okay, well, what mail program should I use then?</h2>
+<blockquote><p>If you are looking to use a Free Software program similar to Pine, and Emacs is not your thing, you should definitely take a look at <a href="http://www.mutt.org/">mutt</a>. It is a full-screen, console based mail program that actually has a lot more flexibility than Pine, but has a keymap included in the distribution that allows you to use the same keystrokes as Pine would to send and receive mail. It's also under the GNU General Public License, version 2.0.<P>
+Of course, due to the license change you can now use the <A HREF="http://www.washington.edu/alpine/">Alpine distribution</A> of PINE as it is now considered Free Software, but you would be sacrificing many of nano's features to do so.</p></blockquote>
+<hr width="100%">
+<h1><a name="7"></a>7. Miscellaneous</h1>
+<h2><a name="7.1"></a>7.1. nano-related mailing lists.</h2>
+<blockquote><p>There are three mailing lists for nano hosted at <a href="http://savannah.gnu.org/">Savannah</a>, info-nano, help-nano and nano-devel. info-nano is a very low traffic list where new versions of nano are announced (surprise!). help-nano is for getting help with the editor without needing to hear all of the development issues surrounding it. nano-devel is a normally low, sometimes high traffic list for discussing the present and future development of nano. Here are links to where you can sign up for a given list:</p>
+ <p>info-nano - <a href="http://mail.gnu.org/mailman/listinfo/info-nano/">http://mail.gnu.org/mailman/listinfo/info-nano/</a><br>
+ help-nano - <a href="http://mail.gnu.org/mailman/listinfo/help-nano/">http://mail.gnu.org/mailman/listinfo/help-nano/</a><br>
+ nano-devel - <a href="http://mail.gnu.org/mailman/listinfo/nano-devel/">http://mail.gnu.org/mailman/listinfo/nano-devel/</a></p></blockquote>
+<h2><a name="7.2"></a>7.2. I want to send the development team a big load of cash (or just a thank you).</h2>
+<blockquote><p>That's fine. Send it <a href="mailto:nano-devel@gnu.org">our way</a>! Better yet, fix a <a href="http://www.nano-editor.org/dist/v2.2/BUGS">bug</a> in the program or implement a <a href="http://www.nano-editor.org/dist/v2.2/TODO">cool feature</a> and send us that instead (though cash is fine too).</p></blockquote>
+<h2><a name="7.3"></a>7.3. How do I submit a bug report or patch?</h2>
+<blockquote>
+<p>The best place to submit bugs is to the <A HREF="https://savannah.gnu.org/bugs/?group=nano">Savannah bug tracker</A> as you can check whether the bug you are submitting has already been submitted.
+<p>Please submit patches for nano via the <a href="https://savannah.gnu.org/patch/?group=nano">Savannah project's patch manager</a> for the nano project.</p></blockquote>
+<h2><a name="7.4"></a>7.4. How do I join the development team?</h2>
+<blockquote><p>The easiest way is to consistently send in good patches that add some needed functionality, fix a bug or two and/or make the program more optimized/efficient. Then ask nicely and you will probably be added to the Savannah development list and be given SVN write access after awhile. There is a lot of responsibility that goes along with being a team member, so don't think it's just something to add to your resume.</p></blockquote>
+<h2><a name="7.5"></a>7.5. Can I have write access to the subversion tree?</h2>
+<blockquote><p>Re-read Section <a href="#7.4">7.4</a> and you should know the answer.</p></blockquote>
+<h2><a name="8"></a>8. ChangeLog</h2>
+<blockquote><p>2009/11/30 - Update various bits for nano 2.2.x. (DLR)<br>
+2009/11/18 - Typo fix. (j.mader@gmail.com)<br>
+2008/03/16 - Update docs to refer to subversion instead of CVS, add more words about Alpine, and refer to Savannah for bugs and patches. (chrisa)<br>
+2007/12/21 - Update maintainer information. (DLR)<br>
+2007/12/09 - Add minor punctuation and wording fixes, and update various sections to account for Alpine. (DLR)<br>
+2007/08/26 - Update links to the Free Translation Project. (DLR)<br>
+2007/07/29 - Update RPM links for nano 2.0.x. (DLR)<br>
+2007/04/18 - Add a new section 4.14 to explain how autoindent affects pasted text. (John M. Gabriele, minor tweaks by DLR)<br>
+2007/04/04 - Update email address. (DLR)<br>
+2007/01/01 - Update section 4.1 to describe how to open files with names beginning with '+' at specified columns as well as lines. (DLR)<br>
+2006/11/25 - Add miscellaneous wording and capitalization fixes. (DLR)<br>
+2006/10/28 - Update various links for the 2.0 branch of nano. (DLR)<br>
+2006/10/06 - Update the question in section 4.13 to match the version of it in the answer section. (DLR)<br>
+2006/07/25 - Update section 5.3 again to not state &quot;the latest development version&quot; before 1.3.12, as it's no longer accurate. Also add some minor spacing fixes. (DLR)<br>
+2006/06/12 - Update section 5.3, due to the display fix for two-column Unicode characters. (DLR)<br>
+2006/06/05 - Add a new section 4.8, and move all section 4 entries after it down one number, to explain how to deal with glibc 2.2.3's crashes involving extended regular expressions. (DLR)<br>
+2006/06/04 - Add minor punctuation, wording, and typo fixes. (DLR)<br>
+2006/05/27 - Update section 3.8 to mention the new "Unicode Input" prompt, and how Unicode input only works when Unicode support is enabled. (DLR)<br>
+2006/05/12 - Remove section 4.4, and move all section 4 entries after it up one number, since it no longer applies. Meta-] and Meta-[ are no longer used to indent and unindent marked text, since they require that the bracket matching key change to Ctrl-], which is used as the telnet escape key (found by Chris). Also, make the link to the nano CVS page a bit more readable. (DLR)<br>
+2006/05/08 - Add a new section 4.5, and move all section 4 entries after it down one number, to explain a problem that can occur when holding down keys to generate Meta sequences. Also add a few more capitalization and wording fixes. (Benno Schulenberg, minor tweaks by DLR)<br>
+2006/05/01 - Add a new section 4.4, and move all section 4 entries after it down one number, to explain how to deal with problems typing Meta-[. Also add a few capitalization and wording fixes. (DLR)<br>
+2006/04/14 - Clarify section 1.4: help menu -> help text display. (DLR, suggested by Benno Schulenberg)<br>
+2006/03/16 - Update the Free Translation Project's address, change the character set to UTF-8, and remove broken links to contributed RedHat nano packages. (DLR)<br>
+2005/11/21 - Clarify section 5.3 to better explain how to enable Unicode support, and remove the mention of quirks, since they turned out to not be a nano problem. (Mike Frysinger and DLR)<br>
+2005/11/19 - Add a new section 5.3 to explain the status of nano's Unicode support. (Mike Frysinger, minor tweaks by DLR)<br>
+2005/08/27 - Update email address. (DLR)<br>
+2005/08/10 - Add a new section 4.3, and move all section 4 entries after it down one number, to explain how to deal with numeric keypad problems. (DLR)<br>
+2005/08/08 - Update section 3.8 to mention that verbatim input mode now takes a six-digit hexadecimal number. (DLR)<br>
+2005/07/04 - Update section 4.10 to mention that pasting from the X clipboard via the middle mouse button also works when the Shift key is used. (DLR)<br>
+2005/06/15 - Update description of --enable-extra, and add missing line breaks. (DLR)<br>
+2005/06/13 - Minor capitalization and wording fixes. (DLR)<br>
+2005/06/08 - Updated section 1.1 to mention the current maintainer. (DLR)<br>
+2005/03/09 - Added question about opening files with names beginning with '+'s, and added a few more miscellaneous cosmetic fixes. (DLR)<br>
+2005/01/03 - Removed now-inaccurate note about verbatim input's not working at prompts, and update its description to mention that it handles hexadecimal values now. (DLR)<br>
+2004/11/21 - Listed sh as an example of a Bourne shell. (DLR)<br>
+2004/11/05 - Fixed inaccuracy: Pico compatibility mode was made the default in nano 1.1.99pre1, not 1.2.2. Also added question about how to type F13-F16 on terminals lacking keys past F12 (suggested by Chris), question about how to select text for the clipboard in X terminals with nano's mouse support turned on (answer found by Joseph Birthisel), and misc. fixes and link updates. (DLR)<br>
+2004/04/07 - Removed NumLock glitch question, as it's no longer needed. (DLR)<br>
+2004/01/30 - Fixed inaccuracy: multibuffer mode was first in nano 1.1.0, not 1.1.12. (DLR)<br>
+2003/12/31 - Added question about the new verbatim input function, and a few minor fixes. Removed reference to &quot;set pico&quot; (DLR).<br>
+2003/07/02 - Added question about nano's not showing color when it's compiled with color support (DLR; suggested by Jordi).<br>
+2003/02/23 - Updated RPM links for nano 1.2.x (DLR).<br>
+2003/01/16 - Split section 4.5 into 4.5a and 4.5b for search string behavior. Added --enable-all docs.<br>
+2002/12/28 - More misc. fixes (David Benbennick, DLR).<br>
+2002/10/25 - Misc. fixes and link updates (DLR).<br>
+2002/09/10 - Another typo fix (DLR).<br>
+2002/05/15 - Typo fix (DLR).<br>
+2001/12/26 - Misc. fixes (Aaron S. Hawley, DLR).<br>
+2001/10/02 - Update for Free Translation Project.<br>
+2001/10/02 - Assorted fixes, Debian additions.<br>
+2001/06/30 - Silly typo fix.<br>
+2001/05/05 - Spelling fixes by David Lawrence Ramsey.<br>
+2001/05/02 - Misc fixes.<br>
+2001/03/26 - Typo fix in an URL.<br>
+2001/02/17 - Advocacy updates.<br>
+2001/02/15 - Added GNU notes for 0.9.99pre3.<br>
+2001/02/06 - Typo fixes.<br>
+2001/01/14 - Added note about NumLock glitch.<br>
+2001/01/10 - Linux -&gt; GNU/Linux.<br>
+2001/01/09 - Added &quot;making exe smaller&quot; section.<br>
+2000/12/19 - Typo and assorted error fixes.<br>
+2000/11/28 - Added blurb about make install-strip.<br>
+2000/11/19 - Changed Debian frozen to stable.<br>
+2000/11/18 - Previous string display (4.5).<br>
+2000/09/27 - Moved addresses to nano-editor.org.<br>
+2000/06/31 - Initial framework.</p></blockquote>
+<p>$Id: faq.html 4521 2010-11-15 06:58:22Z astyanax $</p>
+</body>
+</html>
diff --git a/doc/man/Makefile.am b/doc/man/Makefile.am
new file mode 100644
index 0000000..fbcdce8
--- /dev/null
+++ b/doc/man/Makefile.am
@@ -0,0 +1,35 @@
+if USE_NLS
+SUBDIRS = fr
+else
+SUBDIRS =
+endif
+
+if USE_NANORC
+man_MANS = nano.1 nanorc.5 rnano.1
+if GROFF_HTML
+BUILT_SOURCES = nano.1.html nanorc.5.html rnano.1.html
+endif
+else
+man_MANS = nano.1 rnano.1
+if GROFF_HTML
+BUILT_SOURCES = nano.1.html rnano.1.html
+endif
+endif
+
+nano_man_mans = nano.1 nanorc.5 rnano.1
+if GROFF_HTML
+htmlman_DATA = nano.1.html nanorc.5.html rnano.1.html
+htmlmandir = $(datadir)/nano/man-html
+nano_built_sources = nano.1.html nanorc.5.html rnano.1.html
+
+nano.1.html: nano.1
+ groff -t -mandoc -Thtml < $? > $@
+nanorc.5.html: nanorc.5
+ groff -t -mandoc -Thtml < $? > $@
+rnano.1.html: rnano.1
+ groff -t -mandoc -Thtml < $? > $@
+
+EXTRA_DIST = $(nano_man_mans) $(nano_built_sources)
+else
+EXTRA_DIST = $(nano_man_mans)
+endif
diff --git a/doc/man/Makefile.in b/doc/man/Makefile.in
new file mode 100644
index 0000000..a48d914
--- /dev/null
+++ b/doc/man/Makefile.in
@@ -0,0 +1,725 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = doc/man
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glib-2.0.m4 \
+ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \
+ "$(DESTDIR)$(htmlmandir)"
+man5dir = $(mandir)/man5
+NROFF = nroff
+MANS = $(man_MANS)
+DATA = $(htmlman_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = fr
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURSES_LIB = @CURSES_LIB@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKGDATADIR = @PKGDATADIR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@USE_NLS_FALSE@SUBDIRS =
+@USE_NLS_TRUE@SUBDIRS = fr
+@USE_NANORC_FALSE@man_MANS = nano.1 rnano.1
+@USE_NANORC_TRUE@man_MANS = nano.1 nanorc.5 rnano.1
+@GROFF_HTML_TRUE@@USE_NANORC_FALSE@BUILT_SOURCES = nano.1.html rnano.1.html
+@GROFF_HTML_TRUE@@USE_NANORC_TRUE@BUILT_SOURCES = nano.1.html nanorc.5.html rnano.1.html
+nano_man_mans = nano.1 nanorc.5 rnano.1
+@GROFF_HTML_TRUE@htmlman_DATA = nano.1.html nanorc.5.html rnano.1.html
+@GROFF_HTML_TRUE@htmlmandir = $(datadir)/nano/man-html
+@GROFF_HTML_TRUE@nano_built_sources = nano.1.html nanorc.5.html rnano.1.html
+@GROFF_HTML_FALSE@EXTRA_DIST = $(nano_man_mans)
+@GROFF_HTML_TRUE@EXTRA_DIST = $(nano_man_mans) $(nano_built_sources)
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/man/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/man/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ { for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ test -z "$$files" || { \
+ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+install-man5: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
+ @list=''; test -n "$(man5dir)" || exit 0; \
+ { for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.5[a-z]*$$/p'; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man5:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man5dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.5[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ test -z "$$files" || { \
+ echo " ( cd '$(DESTDIR)$(man5dir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(man5dir)" && rm -f $$files; }
+install-htmlmanDATA: $(htmlman_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(htmlmandir)" || $(MKDIR_P) "$(DESTDIR)$(htmlmandir)"
+ @list='$(htmlman_DATA)'; test -n "$(htmlmandir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmlmandir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmlmandir)" || exit $$?; \
+ done
+
+uninstall-htmlmanDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(htmlman_DATA)'; test -n "$(htmlmandir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(htmlmandir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(htmlmandir)" && rm -f $$files
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @list='$(MANS)'; if test -n "$$list"; then \
+ list=`for p in $$list; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+ if test -n "$$list" && \
+ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
+ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+ echo " typically \`make maintainer-clean' will remove them" >&2; \
+ exit 1; \
+ else :; fi; \
+ else :; fi
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(MANS) $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(htmlmandir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-htmlmanDATA install-man
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man: install-man1 install-man5
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-htmlmanDATA uninstall-man
+
+uninstall-man: uninstall-man1 uninstall-man5
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
+ ctags-recursive install install-am install-strip \
+ tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic ctags \
+ ctags-recursive distclean distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-htmlmanDATA install-info \
+ install-info-am install-man install-man1 install-man5 \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am uninstall-htmlmanDATA \
+ uninstall-man uninstall-man1 uninstall-man5
+
+
+@GROFF_HTML_TRUE@nano.1.html: nano.1
+@GROFF_HTML_TRUE@ groff -t -mandoc -Thtml < $? > $@
+@GROFF_HTML_TRUE@nanorc.5.html: nanorc.5
+@GROFF_HTML_TRUE@ groff -t -mandoc -Thtml < $? > $@
+@GROFF_HTML_TRUE@rnano.1.html: rnano.1
+@GROFF_HTML_TRUE@ groff -t -mandoc -Thtml < $? > $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/man/fr/Makefile.am b/doc/man/fr/Makefile.am
new file mode 100644
index 0000000..7a43052
--- /dev/null
+++ b/doc/man/fr/Makefile.am
@@ -0,0 +1,33 @@
+mandir = @mandir@/fr
+
+if USE_NANORC
+man_MANS = nano.1 nanorc.5 rnano.1
+if GROFF_HTML
+BUILT_SOURCES = nano.1.html nanorc.5.html rnano.1.html
+endif
+else
+man_MANS = nano.1 rnano.1
+if GROFF_HTML
+BUILT_SOURCES = nano.1.html rnano.1.html
+endif
+endif
+
+nano_man_mans = nano.1 nanorc.5 rnano.1
+if GROFF_HTML
+htmlman_DATA = nano.1.html nanorc.5.html rnano.1.html
+htmlmandir = $(datadir)/nano/man-html/fr
+
+nano_built_sources = nano.1.html nanorc.5.html rnano.1.html
+
+nano.1.html: nano.1
+ groff -t -mandoc -Thtml < $? > $@
+nanorc.5.html: nanorc.5
+ groff -t -mandoc -Thtml < $? > $@
+rnano.1.html: rnano.1
+ groff -t -mandoc -Thtml < $? > $@
+
+EXTRA_DIST = $(nano_man_mans) $(nano_built_sources)
+else
+EXTRA_DIST = $(nano_man_mans)
+endif
+
diff --git a/doc/man/fr/Makefile.in b/doc/man/fr/Makefile.in
new file mode 100644
index 0000000..79d5987
--- /dev/null
+++ b/doc/man/fr/Makefile.in
@@ -0,0 +1,521 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = doc/man/fr
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glib-2.0.m4 \
+ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \
+ "$(DESTDIR)$(htmlmandir)"
+man5dir = $(mandir)/man5
+NROFF = nroff
+MANS = $(man_MANS)
+DATA = $(htmlman_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURSES_LIB = @CURSES_LIB@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKGDATADIR = @PKGDATADIR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@/fr
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@USE_NANORC_FALSE@man_MANS = nano.1 rnano.1
+@USE_NANORC_TRUE@man_MANS = nano.1 nanorc.5 rnano.1
+@GROFF_HTML_TRUE@@USE_NANORC_FALSE@BUILT_SOURCES = nano.1.html rnano.1.html
+@GROFF_HTML_TRUE@@USE_NANORC_TRUE@BUILT_SOURCES = nano.1.html nanorc.5.html rnano.1.html
+nano_man_mans = nano.1 nanorc.5 rnano.1
+@GROFF_HTML_TRUE@htmlman_DATA = nano.1.html nanorc.5.html rnano.1.html
+@GROFF_HTML_TRUE@htmlmandir = $(datadir)/nano/man-html/fr
+@GROFF_HTML_TRUE@nano_built_sources = nano.1.html nanorc.5.html rnano.1.html
+@GROFF_HTML_FALSE@EXTRA_DIST = $(nano_man_mans)
+@GROFF_HTML_TRUE@EXTRA_DIST = $(nano_man_mans) $(nano_built_sources)
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/man/fr/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/man/fr/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ { for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ test -z "$$files" || { \
+ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+install-man5: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
+ @list=''; test -n "$(man5dir)" || exit 0; \
+ { for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.5[a-z]*$$/p'; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man5:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man5dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.5[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ test -z "$$files" || { \
+ echo " ( cd '$(DESTDIR)$(man5dir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(man5dir)" && rm -f $$files; }
+install-htmlmanDATA: $(htmlman_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(htmlmandir)" || $(MKDIR_P) "$(DESTDIR)$(htmlmandir)"
+ @list='$(htmlman_DATA)'; test -n "$(htmlmandir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmlmandir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmlmandir)" || exit $$?; \
+ done
+
+uninstall-htmlmanDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(htmlman_DATA)'; test -n "$(htmlmandir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(htmlmandir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(htmlmandir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @list='$(MANS)'; if test -n "$$list"; then \
+ list=`for p in $$list; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+ if test -n "$$list" && \
+ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
+ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+ echo " typically \`make maintainer-clean' will remove them" >&2; \
+ exit 1; \
+ else :; fi; \
+ else :; fi
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(MANS) $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(htmlmandir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-htmlmanDATA install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1 install-man5
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-htmlmanDATA uninstall-man
+
+uninstall-man: uninstall-man1 uninstall-man5
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-htmlmanDATA install-info \
+ install-info-am install-man install-man1 install-man5 \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-htmlmanDATA uninstall-man uninstall-man1 \
+ uninstall-man5
+
+
+@GROFF_HTML_TRUE@nano.1.html: nano.1
+@GROFF_HTML_TRUE@ groff -t -mandoc -Thtml < $? > $@
+@GROFF_HTML_TRUE@nanorc.5.html: nanorc.5
+@GROFF_HTML_TRUE@ groff -t -mandoc -Thtml < $? > $@
+@GROFF_HTML_TRUE@rnano.1.html: rnano.1
+@GROFF_HTML_TRUE@ groff -t -mandoc -Thtml < $? > $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/man/fr/nano.1 b/doc/man/fr/nano.1
new file mode 100644
index 0000000..f840374
--- /dev/null
+++ b/doc/man/fr/nano.1
@@ -0,0 +1,326 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+.\" Free Software Foundation, Inc.
+.\"
+.\" Le travail d'adaptation française de cette page de manuel a été
+.\" réalisé par Jean-Philippe Guérard, en 2003, 2004, 2005, 2006 et 2007.
+.\" Ce travail d'adaptation est dans le domaine public. Attention, la
+.\" page traduite reste soumise au droit d'auteur de ses auteurs
+.\" originaux.
+.\"
+.\" The French translation of this document is a public domain work of
+.\" Jean-Philippe Guérard. This translation work was made in 2003, 2004,
+.\" 2005, 2006 and 2007. The translated man page in itself is still
+.\" subject to the copyright of its original authors.
+.\"
+.\" This document is dual-licensed. You may distribute and/or modify it
+.\" under the terms of either of the following licenses:
+.\"
+.\" * The GNU General Public License, as published by the Free Software
+.\" Foundation, version 3 or (at your option) any later version. You
+.\" should have received a copy of the GNU General Public License
+.\" along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" * The GNU Free Documentation License, as published by the Free
+.\" Software Foundation, version 1.2 or (at your option) any later
+.\" version, with no Invariant Sections, no Front-Cover Texts, and no
+.\" Back-Cover Texts. You should have received a copy of the GNU Free
+.\" Documentation License along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" Ce document est publié sous une double licence. Vous pouvez
+.\" le distribuer et le modifier selon les termes de l'une des deux
+.\" licences ci-dessous :
+.\"
+.\" * La Licence publique générale GNU (GNU GPL) version 3 ou, à
+.\" votre choix, supérieure, telle que publiée par la Free
+.\" Software Foundation. Vous devriez avoir reçu une copie de la
+.\" Licence publique générale GNU avec ce programme. Si ce n'est pas
+.\" le cas, consultez <http://www.gnu.org/licenses/>.
+.\"
+.\" * La Licence de documentation libre GNU (GNU FDL), version 1.2 ou,
+.\" à votre choix, supérieure, telle que publiée par la Free
+.\" Software Foundation, sans section invariante, ni texte de
+.\" première ou de quatrième de couverture. Vous devriez avoir reçu
+.\" une copie de la Licence de documentation libre GNU avec ce
+.\" programme. Si ce n'est pas le cas, consultez
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" $Id: nano.1 4443 2009-11-27 02:50:12Z astyanax $
+.TH NANO 1 "version 2.0.0" "29\ novembre\ 2007"
+.\" Please adjust this date whenever revising the manpage.
+.\" Merci de modifier ces dates à chaque mise à jour de cette page.
+.\"
+
+.SH NOM
+nano \- NAno un NOuvel éditeur, un clone libre et amélioré de Pico
+
+.SH SYNOPSIS
+.B nano
+.I [OPTIONS]\ [[\+LIGNE,COLONNE]\ FICHIER]...
+.br
+
+.SH DESCRIPTION
+Cette page de manuel décrit brièvement la commande \fBnano\fR.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
+.\" respectively.
+\fBnano\fR est un éditeur petit, sympathique et libre, qui vise à remplacer
+Pico, l'éditeur par défaut du logiciel non libre Pine. \fBnano\fR ne se
+contentant pas de copier l'interface et l'ergonomie de Pico, il offre
+également certaines fonctions manquantes (ou désactivées par défaut)
+dans Pico. Ces fonctionnalités sont, par exemple, les fonctions de
+recherche et de remplacement, et la possibilité de sauter directement à
+une ligne et à une colonne précise.
+
+.SH OPTIONS
+.TP
+.B \+\fILIGNE\fP,\fICOLONNE\fP
+Démarre avec le curseur positionné à la colonne \fICOLONNE\fP de
+la ligne \fILIGNE\fR (l'un des deux, au moins, devant être spécifié) au
+lieu de démarrer à la colonne\ 1, ligne\ 1.
+.TP
+.B \-?
+Identique à \fB-h (\-\-help)\fP.
+.TP
+.B \-A (\-\-smarthome)
+Rend plus malin le fonctionnement de la touche «\ Début\ ». Lorsque l'on
+appuie sur cette touche à n'importe quel endroit excepté au tout début
+du texte d'une ligne (i.\ e. au premier caractère non blanc), le curseur
+se positionnera au début du texte de la ligne (qu'il soit en avant ou en
+arrière). Si le curseur est déjà là, il se placera au vrai début de la
+ligne.
+.TP
+.B \-B (\-\-backup)
+Lors de l'écriture d'un fichier, crée une copie de sécurité de la
+version précédente, en ajoutant un tilde (~) au nom du fichier.
+.TP
+.B \-D (\-\-boldtext)
+Utilise des caractères gras à la place de la vidéo inverse.
+.TP
+.B \-C \fIrépertoire\fP (\-\-backupdir=\fIrépertoire\fP)
+Définit le répertoire utilisé par \fBnano\fP pour enregistrer les copies
+de sécurité uniques si celles-ci sont activées.
+.TP
+.B \-E (\-\-tabstospaces)
+Convertit les tabulations clavier en espaces.
+.TP
+.B \-F (\-\-multibuffer)
+Active le mode multi-espace, autorisant l'édition simultanée de
+plusieurs fichiers, si ce mode est disponible.
+.TP
+.B \-H (\-\-historylog)
+Enregistre les chaînes ayant fait l'objet d'une recherche ou d'un
+remplacement dans le fichier \fI~/.nano_history\fR afin de permettre leur
+réutilisation. Ceci n'est possible que si \fBnano\fR est configuré pour
+utiliser les fichiers nanorc.
+.TP
+.B \-I (\-\-ignorercfiles)
+Ne pas utiliser pas les fichiers \fISYSCONFDIR/nanorc\fR et
+\fI~/.nanorc\fR (si \fBnano\fR est capable de les utiliser).
+.TP
+.B \-K (\-\-rebindkeypad)
+Interprète les touches du pavé numérique afin qu'elles fonctionnent
+toutes correctement. Vous ne devriez utiliser cette option que si ce
+n'est pas le cas, car nano ne sera plus capable d'utiliser la souris
+correctement lorsque cette option sera activée.
+.TP
+.B \-L (\-\-nonewlines)
+Ne pas ajouter de passage à la ligne à la fin des fichiers.
+.TP
+.B \-N (\-\-noconvert)
+Désactive la conversion automatique des fichiers depuis les formats Mac et
+DOS.
+.TP
+.B \-O (\-\-morespace)
+Utiliser la ligne blanche située sous la ligne de titre comme
+espace supplémentaire d'édition.
+.TP
+.B \-Q \fIchaîne\fP (\-\-quotestr=\fIchaîne\fP)
+Définit le préfixe par défaut des citations. Nano utilise ce préfixe
+pour réaliser une justification correcte des citations. Si nano est
+capable d'utiliser des expressions rationnelles, le préfixe par défaut
+sera "\fI^([\ \\t]*[#:>\\|}])+\fP", sinon, ce sera "\fI>\ \fP". Dans
+l'expression rationnelle précédente, «\ \fI\\t\fP\ » représente une
+tabulation.
+.TP
+.B \-R (\-\-restricted)
+Mode restreint\ : aucune lecture ou écriture de fichiers non indiqués
+sur la ligne de commande, pas de lecture des fichiers nanorc,
+interdiction de suspendre, interdiction d'ajouter au début, à la fin,
+de sauvegarder un fichier ayant déjà un nom sous un nom différent,
+d'utiliser une copie de sécurité ou le correcteur orthographique. Cette
+option peut aussi être activée en appelant \fBnano\fP sous un nom
+commençant par «\ r\ » (par exemple «\ rnano\ »).
+.TP
+.B \-S (\-\-smooth)
+Active le défilement progressif. Le texte défilera ligne-par-ligne au lieu
+de défiler morceau-par-morceau.
+.TP
+.B \-T \fInombre\fP (\-\-tabsize=\fInombre\fP)
+Définit la taille (largeur) des tabulations en nombre de colonnes. Le
+nombre indiqué doit être strictement supérieur à 0. La valeur par défaut
+est de 8.
+.TP
+.B \-U (\-\-quickblank)
+Effacement rapide de la ligne d'état. Les messages affichés par la ligne
+d'état disparaîtront après une frappe clavier au lieu de 25. Notez que
+l'option \fB-c\fP prend le pas sur cette option.
+.TP
+.B \-V (\-\-version)
+Affiche la version, puis s'arrête.
+.TP
+.B \-W (\-\-wordbounds)
+Détection plus précise des limites de mots, obtenue en considérant les
+caractères de ponctuation comme faisant partie des mots.
+.TP
+.B \-Y \fIchaîne\fP (\-\-syntax=\fIchaîne\fP)
+Indique quel mode de colorisation syntaxique adopter, parmi les modes
+définis dans le fichier \fI.nanorc\fR, si cette fonctionnalité est
+disponible.
+.TP
+.B \-c (\-\-const)
+Affiche en permanence la position du curseur. Notez que cette option
+prend le pas sur l'option \fB-U\fP.
+.TP
+.B \-d (\-\-rebinddelete)
+Interprète différemment la touche «\ Supprimer\ », afin que les touches
+«\ Effacement arrière\ » et «\ Supprimer\ » fonctionnent correctement.
+Vous ne devriez avoir besoin de cette option que si, sur votre système,
+la touche «\ Effacement arrière\ » produit l'effet de la touche
+«\ Supprimer\ ».
+.TP
+.B \-h (\-\-help)
+Affiche un résumé des options de lancement de nano, puis s'arrête.
+.TP
+.B \-i (\-\-autoindent)
+Indentation automatique. Commence chaque nouvelle ligne au même niveau que
+la ligne précédente. Utile pour l'édition de code source.
+.TP
+.B \-k (\-\-cut)
+Coupe le texte du curseur à la fin de la ligne, au lieu de couper la
+ligne entière.
+.TP
+.B \-l (\-\-nofollow)
+Si le fichier édité est un lien symbolique, au lieu de le suivre,
+remplace le lien par le nouveau fichier. Sans doute utile pour éditer
+les fichiers de \fI/tmp\fR, non\ ?
+.TP
+.B \-m (\-\-mouse)
+Active l'utilisation de la souris, si elle est disponible pour votre
+système. Lorsque celle-ci est activée, il est possible d'utiliser la
+souris pour positionner le curseur, pour marquer le texte (avec un
+double-clic) et pour lancer les fonctions correspondant aux raccourcis.
+Il est possible d'utiliser la souris sous X\ Window ou en mode console
+avec gpm.
+.TP
+.B \-o \fIrépertoire\fP (\-\-operatingdir=\fIrépertoire\fP)
+Définit le répertoire de travail. Demande à \fBnano\fP de mettre en place
+quelque chose de similaire à un environnement d'exécution restreint
+(\fIchroot\fR).
+.TP
+.B \-p (\-\-preserve)
+Préserve les séquences XON et XOFF (^Q et ^S), afin qu'elle soient reçues
+par le terminal.
+.TP
+.B \-r \fIcolonne\fP (\-\-fill=\fIcolonne\fP)
+Passe automatiquement à la ligne une fois arrivé à la colonne
+\fIcolonne\fR. Si la valeur indiquée est de 0 ou moins, le point de
+passage à la ligne aura lieu à la taille de l'écran moins \fIcolonne\fR.
+Cela permet de faire varier le point de passage à la ligne lorsque l'on
+change la taille de l'écran. La valeur par défaut est de \-8.
+.TP
+.B \-s \fIprogramme\fP (\-\-speller=\fIprogramme\fP)
+Choix d'un correcteur orthographique de remplacement.
+.TP
+.B \-t (\-\-tempfile)
+S'il a été modifié, le fichier sera sauvegardé automatiquement sans
+demande de confirmation. Identique à l'option \fB-t\fP de Pico.
+.TP
+.B \-v (\-\-view)
+Mode visualisation (lecture seule).
+.TP
+.B \-w (\-\-nowrap)
+Désactive le passage automatique à la ligne.
+.TP
+.B \-x (\-\-nohelp)
+Désactive la barre d'aide affichée en bas de l'écran.
+.TP
+.B \-z (\-\-suspend)
+Autorise à suspendre l'éditeur.
+.TP
+.B \-a, \-b, \-e, \-f, \-g, \-j
+Ignoré, pour être compatible avec Pico.
+
+.SH "FICHIERS D'INITIALISATION"
+\fBnano\fR lit les fichiers d'initialisation dans l'ordre suivant\ :
+\fISYSCONFDIR/nanorc\fR, puis \fI~/.nanorc\fR. Référez-vous à la page de
+manuel de \fBnanorc(5)\fR et au fichier d'exemple \fInanorc.sample\fR,
+qui devraient tous les deux être livrés avec \fBnano\fR.
+
+.SH NOTES
+Si aucun correcteur orthographique de remplacement n'est indiqué dans la
+ligne de commande ou dans l'un des fichiers nanorc, \fBnano\fR prendra
+la commande indiquée par la variable d'environnement \fBSPELL\fR si
+elle est définie.
+
+Dans certains cas, \fBnano\fR essaiera de sauvegarder le fichier en cours
+d'édition dans un fichier de secours. Cela arrivera principalement si
+\fBnano\fR reçoit un signal SIGHUP ou SIGTERM, ou bien se trouve à court de
+mémoire. Le nom de ce fichier de secours sera \fInano.save\fR si le fichier en
+cours n'avait pas encore de nom, ou sera composé du nom du fichier en cours
+suivi du suffixe «\ .save\ ». Si un fichier de ce nom existe déjà dans
+le répertoire, un «\ .save\ » et un nombre seront ajoutés à la fin du
+nom du fichier en cours afin de le rendre unique (par exemple,
+«\ .save.1\ »). En mode multi-espace, \fBnano\fR réalisera une
+sauvegarde de tous les fichiers en cours dans leurs fichiers de secours
+respectifs.
+
+.SH BOGUES
+Merci de nous faire parvenir vos commentaires et de nous signaler les
+bogues, en écrivant, en anglais, à \fBnano@nano-editor.org\fR.
+
+La liste de discussion anglophone \fBnano\fR est disponible à l'adresse
+\fBnano-devel@gnu.org\fR.
+
+Pour vous abonner, envoyez un courrier électronique à
+\fBnano-devel-request@gnu.org\fR, ayant pour objet «\ subscribe\ ».
+
+N'hésitez pas également à envoyez vos commentaires, suggestions et
+corrections relatives à l'adaptation française de cette page de manuel
+ou du logiciel à \fBjean-philippe.guerard@tigreraye.org\fR.
+
+.SH "SITE INTERNET"
+http://www.nano-editor.org/
+
+.SH "VOIR AUSSI"
+.PD 0
+.TP
+\fBnanorc\fR(5)
+.PP
+\fI/usr/share/doc/nano/\fR (ou son équivalent sur votre système)
+
+.SH AUTEUR
+Chris Allegretta <chrisa@asty.org> et d'autres (voir les fichiers
+\fIAUTHORS\fR et \fITHANKS\fR pour plus d'information). Cette page de
+manuel a été initialement rédigée par Jordi Mallach <jordi@gnu.org> pour
+le système Debian (mais elle peut être utilisée par d'autres).
+
+.SH TRADUCTION
+Cette adaptation française a été réalisée par Jean-Philippe\ Guérard
+<jean-philippe.guerard@tigreraye.org> le 29\ novembre\ 2007 à partir
+de la version 1.54 du 11\ octobre\ 2007 de la page de manuel de nano
+2.0.0. Cette page a été relue par Gérard Delafond.
+
+Un maximum de soin a été apporté lors de l'élaboration de cette
+traduction\ ; néanmoins, quelques imperfections peuvent subsister. Si
+vous en rencontrez, que ce soit dans la version française ou dans la
+version originale, n'hésitez pas à les signaler à l'auteur ou au
+traducteur.
+
+La version originale la plus à jour de ce document est toujours
+consultable via la commande\ :
+
+LANGUAGE=en man nano
diff --git a/doc/man/fr/nano.1.html b/doc/man/fr/nano.1.html
new file mode 100644
index 0000000..e8f9548
--- /dev/null
+++ b/doc/man/fr/nano.1.html
@@ -0,0 +1,560 @@
+<!-- Creator : groff version 1.20.1 -->
+<!-- CreationDate: Tue Aug 10 22:44:00 2010 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+ p { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ table { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ h1 { text-align: center }
+</style>
+<title>NANO</title>
+
+</head>
+<body>
+
+<h1 align="center">NANO</h1>
+
+<a href="#NOM">NOM</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#FICHIERS D&rsquo;INITIALISATION">FICHIERS D&rsquo;INITIALISATION</a><br>
+<a href="#NOTES">NOTES</a><br>
+<a href="#BOGUES">BOGUES</a><br>
+<a href="#SITE INTERNET">SITE INTERNET</a><br>
+<a href="#VOIR AUSSI">VOIR AUSSI</a><br>
+<a href="#AUTEUR">AUTEUR</a><br>
+<a href="#TRADUCTION">TRADUCTION</a><br>
+
+<hr>
+
+
+<h2>NOM
+<a name="NOM"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">nano &minus;
+NAno un NOuvel &eacute;diteur, un clone libre et
+am&eacute;lior&eacute; de Pico</p>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b>
+<i>[OPTIONS]&nbsp;[[+LIGNE,COLONNE]&nbsp;FICHIER]...</i></p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Cette page de
+manuel d&eacute;crit bri&egrave;vement la commande
+<b>nano</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b> est
+un &eacute;diteur petit, sympathique et libre, qui vise
+&agrave; remplacer Pico, l&rsquo;&eacute;diteur par
+d&eacute;faut du logiciel non libre Pine. <b>nano</b> ne se
+contentant pas de copier l&rsquo;interface et
+l&rsquo;ergonomie de Pico, il offre &eacute;galement
+certaines fonctions manquantes (ou d&eacute;sactiv&eacute;es
+par d&eacute;faut) dans Pico. Ces fonctionnalit&eacute;s
+sont, par exemple, les fonctions de recherche et de
+remplacement, et la possibilit&eacute; de sauter directement
+&agrave; une ligne et &agrave; une colonne
+pr&eacute;cise.</p>
+
+<h2>OPTIONS
+<a name="OPTIONS"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>+</b><i>LIGNE</i><b>,</b><i>COLONNE</i></p>
+
+<p style="margin-left:22%;">D&eacute;marre avec le curseur
+positionn&eacute; &agrave; la colonne <i>COLONNE</i> de la
+ligne <i>LIGNE</i> (l&rsquo;un des deux, au moins, devant
+&ecirc;tre sp&eacute;cifi&eacute;) au lieu de
+d&eacute;marrer &agrave; la colonne&nbsp;1,
+ligne&nbsp;1.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>&minus;?</b></p></td>
+<td width="8%"></td>
+<td width="36%">
+
+
+<p>Identique &agrave; <b>-h (&minus;&minus;help)</b>.</p></td>
+<td width="42%">
+</td></tr>
+</table>
+
+<p style="margin-left:11%;"><b>&minus;A
+(&minus;&minus;smarthome)</b></p>
+
+<p style="margin-left:22%;">Rend plus malin le
+fonctionnement de la touche
+&laquo;&nbsp;D&eacute;but&nbsp;&raquo;. Lorsque l&rsquo;on
+appuie sur cette touche &agrave; n&rsquo;importe quel
+endroit except&eacute; au tout d&eacute;but du texte
+d&rsquo;une ligne (i.&nbsp;e. au premier caract&egrave;re
+non blanc), le curseur se positionnera au d&eacute;but du
+texte de la ligne (qu&rsquo;il soit en avant ou en
+arri&egrave;re). Si le curseur est d&eacute;j&agrave;
+l&agrave;, il se placera au vrai d&eacute;but de la
+ligne.</p>
+
+<p style="margin-left:11%;"><b>&minus;B
+(&minus;&minus;backup)</b></p>
+
+<p style="margin-left:22%;">Lors de l&rsquo;&eacute;criture
+d&rsquo;un fichier, cr&eacute;e une copie de
+s&eacute;curit&eacute; de la version
+pr&eacute;c&eacute;dente, en ajoutant un tilde (~) au nom du
+fichier.</p>
+
+<p style="margin-left:11%;"><b>&minus;D
+(&minus;&minus;boldtext)</b></p>
+
+<p style="margin-left:22%;">Utilise des caract&egrave;res
+gras &agrave; la place de la vid&eacute;o inverse.</p>
+
+<p style="margin-left:11%;"><b>&minus;C</b>
+<i>r&eacute;pertoire</i>
+<b>(&minus;&minus;backupdir=</b><i>r&eacute;pertoire</i><b>)</b></p>
+
+<p style="margin-left:22%;">D&eacute;finit le
+r&eacute;pertoire utilis&eacute; par <b>nano</b> pour
+enregistrer les copies de s&eacute;curit&eacute; uniques si
+celles-ci sont activ&eacute;es.</p>
+
+<p style="margin-left:11%;"><b>&minus;E
+(&minus;&minus;tabstospaces)</b></p>
+
+<p style="margin-left:22%;">Convertit les tabulations
+clavier en espaces.</p>
+
+<p style="margin-left:11%;"><b>&minus;F
+(&minus;&minus;multibuffer)</b></p>
+
+<p style="margin-left:22%;">Active le mode multi-espace,
+autorisant l&rsquo;&eacute;dition simultan&eacute;e de
+plusieurs fichiers, si ce mode est disponible.</p>
+
+<p style="margin-left:11%;"><b>&minus;H
+(&minus;&minus;historylog)</b></p>
+
+<p style="margin-left:22%;">Enregistre les cha&icirc;nes
+ayant fait l&rsquo;objet d&rsquo;une recherche ou d&rsquo;un
+remplacement dans le fichier <i>~/.nano_history</i> afin de
+permettre leur r&eacute;utilisation. Ceci n&rsquo;est
+possible que si <b>nano</b> est configur&eacute; pour
+utiliser les fichiers nanorc.</p>
+
+<p style="margin-left:11%;"><b>&minus;I
+(&minus;&minus;ignorercfiles)</b></p>
+
+<p style="margin-left:22%;">Ne pas utiliser pas les
+fichiers <i>SYSCONFDIR/nanorc</i> et <i>~/.nanorc</i> (si
+<b>nano</b> est capable de les utiliser).</p>
+
+<p style="margin-left:11%;"><b>&minus;K
+(&minus;&minus;rebindkeypad)</b></p>
+
+<p style="margin-left:22%;">Interpr&egrave;te les touches
+du pav&eacute; num&eacute;rique afin qu&rsquo;elles
+fonctionnent toutes correctement. Vous ne devriez utiliser
+cette option que si ce n&rsquo;est pas le cas, car nano ne
+sera plus capable d&rsquo;utiliser la souris correctement
+lorsque cette option sera activ&eacute;e.</p>
+
+<p style="margin-left:11%;"><b>&minus;L
+(&minus;&minus;nonewlines)</b></p>
+
+<p style="margin-left:22%;">Ne pas ajouter de passage
+&agrave; la ligne &agrave; la fin des fichiers.</p>
+
+<p style="margin-left:11%;"><b>&minus;N
+(&minus;&minus;noconvert)</b></p>
+
+<p style="margin-left:22%;">D&eacute;sactive la conversion
+automatique des fichiers depuis les formats Mac et DOS.</p>
+
+<p style="margin-left:11%;"><b>&minus;O
+(&minus;&minus;morespace)</b></p>
+
+<p style="margin-left:22%;">Utiliser la ligne blanche
+situ&eacute;e sous la ligne de titre comme espace
+suppl&eacute;mentaire d&rsquo;&eacute;dition.</p>
+
+<p style="margin-left:11%;"><b>&minus;Q</b>
+<i>cha&icirc;ne</i>
+<b>(&minus;&minus;quotestr=</b><i>cha&icirc;ne</i><b>)</b></p>
+
+<p style="margin-left:22%;">D&eacute;finit le
+pr&eacute;fixe par d&eacute;faut des citations. Nano utilise
+ce pr&eacute;fixe pour r&eacute;aliser une justification
+correcte des citations. Si nano est capable d&rsquo;utiliser
+des expressions rationnelles, le pr&eacute;fixe par
+d&eacute;faut sera
+&quot;<i>^([&nbsp;\t]*[#:&gt;\|}])+</i>&quot;, sinon, ce
+sera &quot;<i>&gt;&nbsp;</i>&quot;. Dans l&rsquo;expression
+rationnelle pr&eacute;c&eacute;dente,
+&laquo;&nbsp;<i>\t&nbsp;</i>&raquo; repr&eacute;sente une
+tabulation.</p>
+
+<p style="margin-left:11%;"><b>&minus;R
+(&minus;&minus;restricted)</b></p>
+
+<p style="margin-left:22%;">Mode restreint&nbsp;: aucune
+lecture ou &eacute;criture de fichiers non indiqu&eacute;s
+sur la ligne de commande, pas de lecture des fichiers
+nanorc, interdiction de suspendre, interdiction
+d&rsquo;ajouter au d&eacute;but, &agrave; la fin, de
+sauvegarder un fichier ayant d&eacute;j&agrave; un nom sous
+un nom diff&eacute;rent, d&rsquo;utiliser une copie de
+s&eacute;curit&eacute; ou le correcteur orthographique.
+Cette option peut aussi &ecirc;tre activ&eacute;e en
+appelant <b>nano</b> sous un nom commen&ccedil;ant par
+&laquo;&nbsp;r&nbsp;&raquo; (par exemple
+&laquo;&nbsp;rnano&nbsp;&raquo;).</p>
+
+<p style="margin-left:11%;"><b>&minus;S
+(&minus;&minus;smooth)</b></p>
+
+<p style="margin-left:22%;">Active le d&eacute;filement
+progressif. Le texte d&eacute;filera ligne-par-ligne au lieu
+de d&eacute;filer morceau-par-morceau.</p>
+
+<p style="margin-left:11%;"><b>&minus;T</b> <i>nombre</i>
+<b>(&minus;&minus;tabsize=</b><i>nombre</i><b>)</b></p>
+
+<p style="margin-left:22%;">D&eacute;finit la taille
+(largeur) des tabulations en nombre de colonnes. Le nombre
+indiqu&eacute; doit &ecirc;tre strictement sup&eacute;rieur
+&agrave; 0. La valeur par d&eacute;faut est de 8.</p>
+
+<p style="margin-left:11%;"><b>&minus;U
+(&minus;&minus;quickblank)</b></p>
+
+<p style="margin-left:22%;">Effacement rapide de la ligne
+d&rsquo;&eacute;tat. Les messages affich&eacute;s par la
+ligne d&rsquo;&eacute;tat dispara&icirc;tront apr&egrave;s
+une frappe clavier au lieu de 25. Notez que l&rsquo;option
+<b>-c</b> prend le pas sur cette option.</p>
+
+<p style="margin-left:11%;"><b>&minus;V
+(&minus;&minus;version)</b></p>
+
+<p style="margin-left:22%;">Affiche la version, puis
+s&rsquo;arr&ecirc;te.</p>
+
+<p style="margin-left:11%;"><b>&minus;W
+(&minus;&minus;wordbounds)</b></p>
+
+<p style="margin-left:22%;">D&eacute;tection plus
+pr&eacute;cise des limites de mots, obtenue en
+consid&eacute;rant les caract&egrave;res de ponctuation
+comme faisant partie des mots.</p>
+
+<p style="margin-left:11%;"><b>&minus;Y</b>
+<i>cha&icirc;ne</i>
+<b>(&minus;&minus;syntax=</b><i>cha&icirc;ne</i><b>)</b></p>
+
+<p style="margin-left:22%;">Indique quel mode de
+colorisation syntaxique adopter, parmi les modes
+d&eacute;finis dans le fichier <i>.nanorc</i>, si cette
+fonctionnalit&eacute; est disponible.</p>
+
+<p style="margin-left:11%;"><b>&minus;c
+(&minus;&minus;const)</b></p>
+
+<p style="margin-left:22%;">Affiche en permanence la
+position du curseur. Notez que cette option prend le pas sur
+l&rsquo;option <b>-U</b>.</p>
+
+<p style="margin-left:11%;"><b>&minus;d
+(&minus;&minus;rebinddelete)</b></p>
+
+<p style="margin-left:22%;">Interpr&egrave;te
+diff&eacute;remment la touche
+&laquo;&nbsp;Supprimer&nbsp;&raquo;, afin que les touches
+&laquo;&nbsp;Effacement arri&egrave;re&nbsp;&raquo; et
+&laquo;&nbsp;Supprimer&nbsp;&raquo; fonctionnent
+correctement. Vous ne devriez avoir besoin de cette option
+que si, sur votre syst&egrave;me, la touche
+&laquo;&nbsp;Effacement arri&egrave;re&nbsp;&raquo; produit
+l&rsquo;effet de la touche
+&laquo;&nbsp;Supprimer&nbsp;&raquo;.</p>
+
+<p style="margin-left:11%;"><b>&minus;h
+(&minus;&minus;help)</b></p>
+
+<p style="margin-left:22%;">Affiche un r&eacute;sum&eacute;
+des options de lancement de nano, puis
+s&rsquo;arr&ecirc;te.</p>
+
+<p style="margin-left:11%;"><b>&minus;i
+(&minus;&minus;autoindent)</b></p>
+
+<p style="margin-left:22%;">Indentation automatique.
+Commence chaque nouvelle ligne au m&ecirc;me niveau que la
+ligne pr&eacute;c&eacute;dente. Utile pour
+l&rsquo;&eacute;dition de code source.</p>
+
+<p style="margin-left:11%;"><b>&minus;k
+(&minus;&minus;cut)</b></p>
+
+<p style="margin-left:22%;">Coupe le texte du curseur
+&agrave; la fin de la ligne, au lieu de couper la ligne
+enti&egrave;re.</p>
+
+<p style="margin-left:11%;"><b>&minus;l
+(&minus;&minus;nofollow)</b></p>
+
+<p style="margin-left:22%;">Si le fichier
+&eacute;dit&eacute; est un lien symbolique, au lieu de le
+suivre, remplace le lien par le nouveau fichier. Sans doute
+utile pour &eacute;diter les fichiers de <i>/tmp</i>,
+non&nbsp;?</p>
+
+<p style="margin-left:11%;"><b>&minus;m
+(&minus;&minus;mouse)</b></p>
+
+<p style="margin-left:22%;">Active l&rsquo;utilisation de
+la souris, si elle est disponible pour votre syst&egrave;me.
+Lorsque celle-ci est activ&eacute;e, il est possible
+d&rsquo;utiliser la souris pour positionner le curseur, pour
+marquer le texte (avec un double-clic) et pour lancer les
+fonctions correspondant aux raccourcis. Il est possible
+d&rsquo;utiliser la souris sous X&nbsp;Window ou en mode
+console avec gpm.</p>
+
+<p style="margin-left:11%;"><b>&minus;o</b>
+<i>r&eacute;pertoire</i>
+<b>(&minus;&minus;operatingdir=</b><i>r&eacute;pertoire</i><b>)</b></p>
+
+<p style="margin-left:22%;">D&eacute;finit le
+r&eacute;pertoire de travail. Demande &agrave; <b>nano</b>
+de mettre en place quelque chose de similaire &agrave; un
+environnement d&rsquo;ex&eacute;cution restreint
+(<i>chroot</i>).</p>
+
+<p style="margin-left:11%;"><b>&minus;p
+(&minus;&minus;preserve)</b></p>
+
+<p style="margin-left:22%;">Pr&eacute;serve les
+s&eacute;quences XON et XOFF (^Q et ^S), afin qu&rsquo;elle
+soient re&ccedil;ues par le terminal.</p>
+
+<p style="margin-left:11%;"><b>&minus;r</b> <i>colonne</i>
+<b>(&minus;&minus;fill=</b><i>colonne</i><b>)</b></p>
+
+<p style="margin-left:22%;">Passe automatiquement &agrave;
+la ligne une fois arriv&eacute; &agrave; la colonne
+<i>colonne</i>. Si la valeur indiqu&eacute;e est de 0 ou
+moins, le point de passage &agrave; la ligne aura lieu
+&agrave; la taille de l&rsquo;&eacute;cran moins
+<i>colonne</i>. Cela permet de faire varier le point de
+passage &agrave; la ligne lorsque l&rsquo;on change la
+taille de l&rsquo;&eacute;cran. La valeur par d&eacute;faut
+est de &minus;8.</p>
+
+<p style="margin-left:11%;"><b>&minus;s</b>
+<i>programme</i>
+<b>(&minus;&minus;speller=</b><i>programme</i><b>)</b></p>
+
+<p style="margin-left:22%;">Choix d&rsquo;un correcteur
+orthographique de remplacement.</p>
+
+<p style="margin-left:11%;"><b>&minus;t
+(&minus;&minus;tempfile)</b></p>
+
+<p style="margin-left:22%;">S&rsquo;il a &eacute;t&eacute;
+modifi&eacute;, le fichier sera sauvegard&eacute;
+automatiquement sans demande de confirmation. Identique
+&agrave; l&rsquo;option <b>-t</b> de Pico.</p>
+
+<p style="margin-left:11%;"><b>&minus;v
+(&minus;&minus;view)</b></p>
+
+<p style="margin-left:22%;">Mode visualisation (lecture
+seule).</p>
+
+<p style="margin-left:11%;"><b>&minus;w
+(&minus;&minus;nowrap)</b></p>
+
+<p style="margin-left:22%;">D&eacute;sactive le passage
+automatique &agrave; la ligne.</p>
+
+<p style="margin-left:11%;"><b>&minus;x
+(&minus;&minus;nohelp)</b></p>
+
+<p style="margin-left:22%;">D&eacute;sactive la barre
+d&rsquo;aide affich&eacute;e en bas de
+l&rsquo;&eacute;cran.</p>
+
+<p style="margin-left:11%;"><b>&minus;z
+(&minus;&minus;suspend)</b></p>
+
+<p style="margin-left:22%;">Autorise &agrave; suspendre
+l&rsquo;&eacute;diteur.</p>
+
+<p style="margin-left:11%;"><b>&minus;a, &minus;b,
+&minus;e, &minus;f, &minus;g, &minus;j</b></p>
+
+<p style="margin-left:22%;">Ignor&eacute;, pour &ecirc;tre
+compatible avec Pico.</p>
+
+<h2>FICHIERS D&rsquo;INITIALISATION
+<a name="FICHIERS D&rsquo;INITIALISATION"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b> lit
+les fichiers d&rsquo;initialisation dans l&rsquo;ordre
+suivant&nbsp;: <i>SYSCONFDIR/nanorc</i>, puis
+<i>~/.nanorc</i>. R&eacute;f&eacute;rez-vous &agrave; la
+page de manuel de <b>nanorc(5)</b> et au fichier
+d&rsquo;exemple <i>nanorc.sample</i>, qui devraient tous les
+deux &ecirc;tre livr&eacute;s avec <b>nano</b>.</p>
+
+<h2>NOTES
+<a name="NOTES"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Si aucun
+correcteur orthographique de remplacement n&rsquo;est
+indiqu&eacute; dans la ligne de commande ou dans l&rsquo;un
+des fichiers nanorc, <b>nano</b> prendra la commande
+indiqu&eacute;e par la variable d&rsquo;environnement
+<b>SPELL</b> si elle est d&eacute;finie.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Dans certains
+cas, <b>nano</b> essaiera de sauvegarder le fichier en cours
+d&rsquo;&eacute;dition dans un fichier de secours. Cela
+arrivera principalement si <b>nano</b> re&ccedil;oit un
+signal SIGHUP ou SIGTERM, ou bien se trouve &agrave; court
+de m&eacute;moire. Le nom de ce fichier de secours sera
+<i>nano.save</i> si le fichier en cours n&rsquo;avait pas
+encore de nom, ou sera compos&eacute; du nom du fichier en
+cours suivi du suffixe &laquo;&nbsp;.save&nbsp;&raquo;. Si
+un fichier de ce nom existe d&eacute;j&agrave; dans le
+r&eacute;pertoire, un &laquo;&nbsp;.save&nbsp;&raquo; et un
+nombre seront ajout&eacute;s &agrave; la fin du nom du
+fichier en cours afin de le rendre unique (par exemple,
+&laquo;&nbsp;.save.1&nbsp;&raquo;). En mode multi-espace,
+<b>nano</b> r&eacute;alisera une sauvegarde de tous les
+fichiers en cours dans leurs fichiers de secours
+respectifs.</p>
+
+<h2>BOGUES
+<a name="BOGUES"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Merci de nous
+faire parvenir vos commentaires et de nous signaler les
+bogues, en &eacute;crivant, en anglais, &agrave;
+<b>nano@nano-editor.org</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">La liste de
+discussion anglophone <b>nano</b> est disponible &agrave;
+l&rsquo;adresse <b>nano-devel@gnu.org</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Pour vous
+abonner, envoyez un courrier &eacute;lectronique &agrave;
+<b>nano-devel-request@gnu.org</b>, ayant pour objet
+&laquo;&nbsp;subscribe&nbsp;&raquo;.</p>
+
+
+<p style="margin-left:11%; margin-top: 1em">N&rsquo;h&eacute;sitez
+pas &eacute;galement &agrave; envoyez vos commentaires,
+suggestions et corrections relatives &agrave;
+l&rsquo;adaptation fran&ccedil;aise de cette page de manuel
+ou du logiciel &agrave;
+<b>jean-philippe.guerard@tigreraye.org</b>.</p>
+
+<h2>SITE INTERNET
+<a name="SITE INTERNET"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em">http://www.nano-editor.org/</p>
+
+<h2>VOIR AUSSI
+<a name="VOIR AUSSI"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>nanorc</b>(5)
+<i><br>
+/usr/share/doc/nano/</i> (ou son &eacute;quivalent sur votre
+syst&egrave;me)</p>
+
+<h2>AUTEUR
+<a name="AUTEUR"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Chris
+Allegretta &lt;chrisa@asty.org&gt; et d&rsquo;autres (voir
+les fichiers <i>AUTHORS</i> et <i>THANKS</i> pour plus
+d&rsquo;information). Cette page de manuel a
+&eacute;t&eacute; initialement r&eacute;dig&eacute;e par
+Jordi Mallach &lt;jordi@gnu.org&gt; pour le syst&egrave;me
+Debian (mais elle peut &ecirc;tre utilis&eacute;e par
+d&rsquo;autres).</p>
+
+<h2>TRADUCTION
+<a name="TRADUCTION"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Cette
+adaptation fran&ccedil;aise a &eacute;t&eacute;
+r&eacute;alis&eacute;e par Jean-Philippe&nbsp;Gu&eacute;rard
+&lt;jean-philippe.guerard@tigreraye.org&gt; le
+29&nbsp;novembre&nbsp;2007 &agrave; partir de la version
+1.54 du 11&nbsp;octobre&nbsp;2007 de la page de manuel de
+nano 2.0.0. Cette page a &eacute;t&eacute; relue par
+G&eacute;rard Delafond.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Un maximum de
+soin a &eacute;t&eacute; apport&eacute; lors de
+l&rsquo;&eacute;laboration de cette traduction&nbsp;;
+n&eacute;anmoins, quelques imperfections peuvent subsister.
+Si vous en rencontrez, que ce soit dans la version
+fran&ccedil;aise ou dans la version originale,
+n&rsquo;h&eacute;sitez pas &agrave; les signaler &agrave;
+l&rsquo;auteur ou au traducteur.</p>
+
+<p style="margin-left:11%; margin-top: 1em">La version
+originale la plus &agrave; jour de ce document est toujours
+consultable via la commande&nbsp;:</p>
+
+<p style="margin-left:11%; margin-top: 1em">LANGUAGE=en man
+nano</p>
+<hr>
+</body>
+</html>
diff --git a/doc/man/fr/nanorc.5 b/doc/man/fr/nanorc.5
new file mode 100644
index 0000000..0607045
--- /dev/null
+++ b/doc/man/fr/nanorc.5
@@ -0,0 +1,376 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" Copyright (C) 2003, 2004, 2005, 2006, 2007
+.\" Free Software Foundation, Inc.
+.\"
+.\" Le travail d'adaptation française de cette page de manuel a été
+.\" réalisé par Jean-Philippe Guérard, en 2003, 2004, 2005, 2006 et 2007.
+.\" Ce travail d'adaptation est dans le domaine public. Attention, la
+.\" page traduite reste soumise au droit d'auteur de ses auteurs
+.\" originaux.
+.\"
+.\" The French translation of this document is a public domain work of
+.\" Jean-Philippe Guérard. This translation work was made in 2003, 2004,
+.\" 2005, 2006 and 2007. The translated man page in itself is still
+.\" subject to the copyright of its original authors.
+.\"
+.\" This document is dual-licensed. You may distribute and/or modify it
+.\" under the terms of either of the following licenses:
+.\"
+.\" * The GNU General Public License, as published by the Free Software
+.\" Foundation, version 3 or (at your option) any later version. You
+.\" should have received a copy of the GNU General Public License
+.\" along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" * The GNU Free Documentation License, as published by the Free
+.\" Software Foundation, version 1.2 or (at your option) any later
+.\" version, with no Invariant Sections, no Front-Cover Texts, and no
+.\" Back-Cover Texts. You should have received a copy of the GNU Free
+.\" Documentation License along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" Ce document est publié sous une double licence. Vous pouvez
+.\" le distribuer et le modifier selon les termes de l'une des deux
+.\" licences ci-dessous :
+.\"
+.\" * La Licence publique générale GNU (GNU GPL) version 3 ou, à
+.\" votre choix, supérieure, telle que publiée par la Free
+.\" Software Foundation. Vous devriez avoir reçu une copie de la
+.\" Licence publique générale GNU avec ce programme. Si ce n'est
+.\" pas le cas, consultez <http://www.gnu.org/licenses/>.
+.\"
+.\" * La Licence de documentation libre GNU (GNU FDL), version 1.2
+.\" ou, à votre choix, supérieure, telle que publiée par la Free
+.\" Software Foundation, sans section invariante, ni texte de
+.\" première ou de quatrième de couverture. Vous devriez avoir reçu
+.\" une copie de la Licence de documentation libre GNU avec ce
+.\" programme. Si ce n'est pas le cas, consultez
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" $Id: nanorc.5 4443 2009-11-27 02:50:12Z astyanax $
+.TH NANORC 5 "version 2.0.0" "29\ novembre\ 2007"
+.\" Please adjust this date whenever revising the manpage.
+.\" Merci de modifier ces dates à chaque mise à jour de cette page.
+
+.SH NOM
+nanorc \- fichier de configuration de l'éditeur nano du projet GNU
+
+.SH DESCRIPTION
+Cette page de manuel décrit brièvement le fichier de configuration de
+l'éditeur \fBnano\fP GNU.
+.PP
+\fBnano\fP est un petit éditeur sympathique et libre, qui vise à
+remplacer Pico, l'éditeur par défaut du logiciel non libre Pine.
+\fBnano\fP ne se contentant pas de copier l'interface et l'ergonomie de
+Pico, il offre également certaines fonctionnalités manquantes (ou
+désactivées par défaut) de Pico. Ces fonctionnalités sont, par exemple,
+les fonctions de recherche et de remplacement et la possibilité de
+sauter directement à une ligne et à une colonne précise.
+.PP
+Le fichier \fInanorc\fP contient les paramètres par défaut de
+\fBnano\fP. Il ne doit pas être au format DOS ou Mac. Lors de son
+démarrage, nano commencera par lire le fichier de configuration général
+\fISYSCONFDIR/nanorc\fP, puis lira le fichier de configuration personnel
+de l'utilisateur \fI~/.nanorc\fP.
+
+.SH OPTIONS
+Le fichier de configuration accepte une série de commandes \fBset\fP
+(activer) et \fBunset\fP (désactiver), qui permettent de définir le
+paramétrage de nano au démarrage sans avoir à utiliser d'options de
+ligne de commande. De plus, les mots clefs \fBsyntax\fP (syntaxe),
+\fBcolor\fP (couleur) et \fBicolor\fP (couleur insensible à la casse)
+sont utilisés pour définir les règles de colorisation pour différents
+motifs de texte. \fBnano\fP lit une commande par ligne.
+
+Les options du fichier de configuration ont priorité sur les valeurs par
+défaut utilisées par nano. Les options de la ligne de commande sont
+prioritaires par rapport aux options du fichier de configuration. Les
+options sont désactivées (unset) par défaut, sauf les options prenant un
+argument.
+
+Les apostrophes («\ \fI'\fP\ ») et les guillemets droits («\ \fI"\fP\ »)
+présents dans des chaînes de caractères utilisées comme paramètres n'ont
+pas besoin d'être précédées d'une barre oblique inversée
+(«\ \fI\\\fP\ »). La chaîne sera terminée par le dernier guillemet
+droit. Par exemple, pour l'option \fBbrackets\fP, "\fI"')>]}\fP"
+correspondra à \fI"\fP, \fI'\fP, \fI)\fP, \fI>\fP, \fI]\fP et \fI}\fP.
+
+Les commandes et arguments reconnus sont\ :
+
+.TP 3
+.B set/unset autoindent
+Active l'indentation automatique.
+.TP
+.B set/unset backup
+Crée des copies de sécurité nommées
+.IR nom_du_fichier~ .
+.TP
+.B set backupdir "\fIrépertoire\fP"
+Définit le répertoire utilisé par \fBnano\fP pour enregistrer les copies
+de sécurité uniques, si l'enregistrement de copies de sécurité est
+activé.
+.TP
+.B set/unset backwards
+Par défaut, les recherches se font vers l'arrière.
+.TP
+.B set/unset boldtext
+Utilise des caractères gras à la place de la vidéo inverse.
+.TP
+.B set brackets "\fIchaîne\fP"
+Définit les caractères considérés comme des crochets fermants lors de la
+justification des paragraphes. Ces caractères ne doivent pas contenir
+d'espaces. Seules les ponctuations terminales, éventuellement suivies
+de crochets fermants, peuvent terminer une phrase.
+
+La valeur par défaut de cette option est\ : "\fI"')>]}\fP".
+
+N.D.T.\ : reportez-vous au paragraphe sur l'option \fBpunct\fR pour
+plus d'informations.
+
+.TP
+.B set/unset casesensitive
+Par défaut, les recherches ne tiennent pas compte de la casse.
+.TP
+.B set/unset const
+Affiche en permanence la position du curseur dans la ligne d'état.
+.TP
+.B set/unset cut
+Par défaut, coupe le texte du curseur à la fin de la ligne, au lieu de
+couper la ligne entière.
+.TP
+.B set fill \fIn\fP
+Passe automatiquement à la ligne une fois arrivé à la colonne
+\fIn\fR. Si la valeur indiquée est de 0 ou moins, le point de passage à
+la ligne aura lieu à la taille de l'écran moins \fIn\fR. Cela permet de
+faire varier le point de passage à la ligne lorsque l'on change la
+taille de l'écran. La valeur par défaut est de \-8.
+.TP
+.B set/unset historylog
+Active l'utilisation de
+.I ~/.nano_history
+pour enregistrer et relire les chaînes ayant fait l'objet d'une
+recherche ou d'un remplacement.
+.TP
+.B set matchbrackets "\fIchaîne\fP"
+Définit les crochets ouvrants et fermant pour la recherche de crochets
+correspondants. Cette liste ne doit pas contenir de blancs. L'ensemble
+des crochets ouvrants doit être indiqué en premier, suivi de l'ensemble
+des crochets fermant, qui doit être dans le même ordre. La valeur par
+défaut de cette option est "\fI(<[{)>]}\fP".
+.TP
+.B set/unset morespace
+Utiliser la ligne blanche située sous la ligne de titre comme espace
+supplémentaire d'édition.
+.TP
+.B set/unset mouse
+Active l'utilisation de la souris, si elle est disponible pour votre
+système. Lorsque celle-ci est activée, il est possible d'utiliser la
+souris pour positionner le curseur, pour marquer le texte (avec un
+double-clic) et pour lancer les fonctions correspondant aux raccourcis.
+Il est possible d'utiliser la souris sous X\ Window ou en mode console
+avec gpm.
+.TP
+.B set/unset multibuffer
+Mode multi-espace\ : permet de charger les fichiers dans leur propre
+espace.
+.TP
+.B set/unset noconvert
+Pas de conversion depuis les formats DOS et Mac.
+.TP
+.B set/unset nofollow
+Ne suit pas les liens symboliques lors de l'écriture des fichiers.
+.TP
+.B set/unset nohelp
+Désactive les lignes d'aide affichée en bas de l'écran.
+.TP
+.B set/unset nonewlines
+Ne pas ajouter de passage à la ligne à la fin des fichiers.
+.TP
+.B set/unset nowrap
+Désactive le passage automatique à la ligne.
+.TP
+.B set operatingdir "\fIrépertoire\fP"
+\fBnano\fP ne lira et n'écrira des fichiers qu'à l'intérieur du
+\fIrépertoire\fP et de ses sous-répertoires. De plus, celui-ci devient
+le répertoire courant, afin que les fichiers soient lus depuis ce
+répertoire. Par défaut, cette fonction est désactivée.
+.TP
+.B set/unset preserve
+Préserve les séquences XON et XOFF (^Q et ^S).
+.TP
+.B set punct "\fIchaîne\fP"
+Définit les caractères interprétés comme des ponctuations terminales
+lors de la justification des paragraphes. Ces caractères ne peuvent
+inclure de blancs. Seules les ponctuations terminales, éventuellement
+suivies de crochets fermants, peuvent terminer une phrase. La valeur par
+défaut de cette option est "\fI!.?\fP".
+
+N.D.T.\ : ce réglage permet, lors de la justification, de conserver
+2\ espaces au lieu d'une derrière les ponctuations terminales, ce qui
+correspond aux normes typographiques anglo-saxonnes, mais n'a pas lieu
+d'être en français. Pour le français, le plus simple est d'indiquer,
+dans le fichier nanorc, une chaîne vide pour ce paramètre.
+.TP
+.B set/unset quickblank
+Effacement rapide de la ligne d'état. Les messages affichés par la ligne
+d'état disparaîtront après une frappe clavier au lieu de 25.
+.TP
+.B set quotestr "\fIchaîne\fP"
+Définit le préfixe par défaut utilisé pour les citations dans les
+courriers électroniques. Ce préfixe est utilisé pour réaliser une
+justification correcte de ces citations. Il s'agira, si votre système le
+permet, d'une expression rationnelle étendue. Dans le cas
+contraire, il s'agira d'une chaîne de texte brut. Si vous disposez des
+expressions rationnelles, la valeur par défaut de cette option sera
+"\fI^([\ \\t]*[#:>\\|}])+\fP", sinon, ce sera ">\ ". Notez que le
+«\ \\t\ » ci-dessus correspond à un caractère de tabulation.
+.TP
+.B set/unset rebinddelete
+Interprète différemment la touche «\ Supprimer\ », afin que les touches
+«\ Effacement arrière\ » et «\ Supprimer\ » fonctionnent correctement.
+Vous ne devriez avoir besoin de cette option que si, sur votre système,
+la touche «\ Effacement arrière\ » produit l'effet de la touche «\
+Supprimer\ ».
+.TP
+.B set/unset rebindkeypad
+Interprète les touches du pavé numérique afin qu'elles fonctionnent
+toutes correctement. Vous ne devriez utiliser cette option que si ce
+n'est pas le cas, car nano ne sera plus capable d'utiliser la souris
+correctement lorsque cette option sera activée.
+.TP
+.B set/unset regexp
+Utilise par défaut des expressions rationnelles étendues pour les
+recherches.
+.TP
+.B set/unset smarthome
+Rend plus malin le fonctionnement de la touche «\ Début\ ». Lorsque
+cette touche est pressée à n'importe quel endroit excepté au tout début
+du texte d'une ligne (i.\ e. au premier caractère non blanc), le curseur
+se positionnera au début du texte de la ligne (qu'il soit en avant ou en
+arrière). Si le curseur est déjà là, il se placera au vrai début de la
+ligne.
+.TP
+.B set/unset smooth
+Active le défilement ligne-par-ligne du texte.
+.TP
+.B set speller "\fIprogramme\fP"
+Utilise le correcteur orthographique \fIprogramme\fP au lieu du
+correcteur intégré, qui s'appuie sur \fIspell\fP.
+.TP
+.B set/unset suspend
+Autorise à suspendre \fBnano\fP.
+.TP
+.B set tabsize \fIn\fP
+Utilise une taille de tabulation de \fIn\fP colonnes. Cette valeur doit
+être strictement supérieure à 0. La valeur par défaut est de\ 8.
+.TP
+.B set/unset tabstospaces
+Convertit les tabulations clavier en espaces.
+.TP
+.B set/unset tempfile
+S'il a été modifié, le fichier sera sauvegardé automatiquement en
+quittant, sans demande de confirmation.
+.TP
+.B set/unset view
+Interdit de modifier les fichiers.
+.TP
+.B set whitespace "\fIchaîne\fP"
+Définit les deux caractères utilisés pour afficher les premiers
+caractères des tabulations et des espaces. Ces deux caractères doivent
+être mono-colonne.
+.TP
+.B set/unset wordbounds
+Détection plus précise des limites de mots, obtenue en considérant les
+caractères de ponctuation comme faisant partie des mots.
+.TP
+.B syntax "\fIchaîne\fP" ["\fImotif_de_fichier\fP" ... ]
+Définit une syntaxe nommée \fIchaîne\fP qui pourra être activé via
+l'option \fB-Y\fP (ou \fB--syntax\fP) ou qui sera automatiquement
+activée si le nom du fichier en cours correspond à l'expression
+rationnelle étendue \fImotif_de_fichier\fP. Toutes les instructions
+suivantes de colorisation \fBcolor\fP ou \fBicolor\fP s'appliqueront à
+cette syntaxe, jusqu'à la définition d'une nouvelle syntaxe.
+
+La syntaxe nommée \fInone\fP (aucune) est réservée\ ; si elle est
+indiquée dans la ligne de commande, cela revient à ne définir aucune
+syntaxe. La syntaxe nommée \fIdefault\fP (par défaut) est spéciale, elle
+ne nécessite aucun motif de \fImotif_de_fichier\fP, et s'applique aux
+fichiers ne correspondant à aucun des \fImotif_de_fichier\fP des autres
+syntaxes.
+.TP
+.B color \fIcouleur_texte\fP[,\fIcouleur_fond\fP] "\fImotif\fP" ...
+Pour la syntaxe en cours, affiche toutes les expressions correspondant à
+l'expression rationnelle étendue \fImotif\fP en utilisant la couleur de
+texte \fIcouleur_texte\fP et la couleur de fond \fIcouleur_fond\fP,
+l'une de ces deux couleurs au moins devant être définie. Les couleurs
+acceptées par \fBnano\fP pour le texte et le fond sont\ : \fIwhite\fP
+(blanc), \fIblack\fP (noir), \fIred\fP (rouge), \fIblue\fP (bleu),
+\fIgreen\fP (vert), \fIyellow\fP (jaune), \fImagenta\fP, et \fIcyan\fP.
+Pour la couleur du texte, vous pouvez ajouter à ces couleurs le préfixe
+\fIbright\fP (lumineux) pour obtenir une couleur plus lumineuse. Si
+votre terminal est capable de gérer la transparence, ne pas spécifier de
+\fIcouleur_fond\fP indique à \fBnano\fP d'essayer d'utiliser un fond
+transparent.
+.TP
+.B icolor \fIcouleur_texte\fP[,\fIcouleur_fond\fP] "\fImotif\fP" ...
+Comme ci-dessus, mais la recherche des motifs est effectuée sans tenir
+compte de la casse.
+.TP
+.B color \fIcouleur_texte\fP[,\fIcouleur_fond\fP] start="\fImotif_début\fP" end="\fImotif_fin\fP"
+Affiche les expressions commençant par l'expression rationnelle étendue
+\fImotif_début\fP et se terminant par l'expression rationnelle étendue
+\fImotif_fin\fP en utilisant la couleur de texte \fIcouleur_texte\fP
+et la couleur de fond \fIcouleur_fond\fP, l'une de ces deux couleurs au
+moins devant être définie. Cela permet à la colorisation syntaxique de
+s'étendre sur plusieurs lignes. Notez que toutes les occurrences
+successives de \fImotif_début\fP après le \fImotif_début\fP initial
+seront surlignées jusqu'à la prochaine instance de \fImotif_fin\fP.
+.TP
+.B icolor \fIcouleur_texte\fP[,\fIcouleur_fond\fP] start="\fImotif_début\fP" end="\fImotif_fin\fP"
+Comme ci-dessus, mais la recherche des motifs est effectuée sans tenir
+compte de la casse.
+.TP
+.B include "\fIfichier_de_syntaxes\fP"
+Lit le fichier \fIfichier_de_syntaxes\fP contenant une liste
+autosuffisante de définitions de syntaxes. Ce fichier ne doit contenir
+que des commandes \fBsyntax\fP, \fBcolor\fP et \fBicolor\fP.
+
+.SH FICHIERS
+.TP
+.I $SYSCONFDIR/nanorc
+Fichier de configuration général
+.TP
+.I ~/.nanorc
+Fichier de configuration personnel
+
+.SH VOIR AUSSI
+.PD 0
+.TP
+\fBnano\fP(1)
+.PP
+\fI/usr/share/doc/nano/examples/nanorc.sample\fP (ou son équivalent sur
+votre système)
+
+.SH AUTEUR
+Chris Allegretta <chrisa@asty.org> et d'autres (voir les fichiers
+\fIAUTHORS\fP et \fITHANKS\fP pour plus d'information). Cette page de
+manuel a été initialement rédigée par Jordi Mallach <jordi@gnu.org> pour
+le système Debian (mais elle peut être utilisée par d'autres).
+
+.SH TRADUCTION
+Cette adaptation française a été réalisée par Jean-Philippe\ Guérard
+<jean-philippe.guerard@tigreraye.org> le 29\ novembre\ 2007 à partir de
+la version 1.56 du 11\ octobre\ 2007 de la page de manuel de nanorc
+(pour la version 2.0.0 de nano). Cette page a été relue par Gérard
+Delafond.
+
+Un maximum de soin a été apporté lors de l'élaboration de cette
+traduction\ ; néanmoins, quelques imperfections peuvent subsister. Si
+vous en rencontrez, que ce soit dans la version française ou dans la
+version originale, n'hésitez pas à les signaler à l'auteur ou au
+traducteur.
+
+La version originale la plus à jour de ce document est toujours
+consultable via la commande\ :
+
+LANGUAGE=en man nano
diff --git a/doc/man/fr/nanorc.5.html b/doc/man/fr/nanorc.5.html
new file mode 100644
index 0000000..e438be8
--- /dev/null
+++ b/doc/man/fr/nanorc.5.html
@@ -0,0 +1,590 @@
+<!-- Creator : groff version 1.20.1 -->
+<!-- CreationDate: Tue Aug 10 22:44:00 2010 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+ p { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ table { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ h1 { text-align: center }
+</style>
+<title>NANORC</title>
+
+</head>
+<body>
+
+<h1 align="center">NANORC</h1>
+
+<a href="#NOM">NOM</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#FICHIERS">FICHIERS</a><br>
+<a href="#VOIR AUSSI">VOIR AUSSI</a><br>
+<a href="#AUTEUR">AUTEUR</a><br>
+<a href="#TRADUCTION">TRADUCTION</a><br>
+
+<hr>
+
+
+<h2>NOM
+<a name="NOM"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">nanorc &minus;
+fichier de configuration de l&rsquo;&eacute;diteur nano du
+projet GNU</p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Cette page de
+manuel d&eacute;crit bri&egrave;vement le fichier de
+configuration de l&rsquo;&eacute;diteur <b>nano</b> GNU.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b> est
+un petit &eacute;diteur sympathique et libre, qui vise
+&agrave; remplacer Pico, l&rsquo;&eacute;diteur par
+d&eacute;faut du logiciel non libre Pine. <b>nano</b> ne se
+contentant pas de copier l&rsquo;interface et
+l&rsquo;ergonomie de Pico, il offre &eacute;galement
+certaines fonctionnalit&eacute;s manquantes (ou
+d&eacute;sactiv&eacute;es par d&eacute;faut) de Pico. Ces
+fonctionnalit&eacute;s sont, par exemple, les fonctions de
+recherche et de remplacement et la possibilit&eacute; de
+sauter directement &agrave; une ligne et &agrave; une
+colonne pr&eacute;cise.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Le fichier
+<i>nanorc</i> contient les param&egrave;tres par
+d&eacute;faut de <b>nano</b>. Il ne doit pas &ecirc;tre au
+format DOS ou Mac. Lors de son d&eacute;marrage, nano
+commencera par lire le fichier de configuration
+g&eacute;n&eacute;ral <i>SYSCONFDIR/nanorc</i>, puis lira le
+fichier de configuration personnel de l&rsquo;utilisateur
+<i>~/.nanorc</i>.</p>
+
+<h2>OPTIONS
+<a name="OPTIONS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Le fichier de
+configuration accepte une s&eacute;rie de commandes
+<b>set</b> (activer) et <b>unset</b> (d&eacute;sactiver),
+qui permettent de d&eacute;finir le param&eacute;trage de
+nano au d&eacute;marrage sans avoir &agrave; utiliser
+d&rsquo;options de ligne de commande. De plus, les mots
+clefs <b>syntax</b> (syntaxe), <b>color</b> (couleur) et
+<b>icolor</b> (couleur insensible &agrave; la casse) sont
+utilis&eacute;s pour d&eacute;finir les r&egrave;gles de
+colorisation pour diff&eacute;rents motifs de texte.
+<b>nano</b> lit une commande par ligne.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Les options du
+fichier de configuration ont priorit&eacute; sur les valeurs
+par d&eacute;faut utilis&eacute;es par nano. Les options de
+la ligne de commande sont prioritaires par rapport aux
+options du fichier de configuration. Les options sont
+d&eacute;sactiv&eacute;es (unset) par d&eacute;faut, sauf
+les options prenant un argument.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Les apostrophes
+(&laquo;&nbsp;<i>&rsquo;&nbsp;</i>&raquo;) et les guillemets
+droits (&laquo;&nbsp;<i>&quot;&nbsp;</i>&raquo;)
+pr&eacute;sents dans des cha&icirc;nes de caract&egrave;res
+utilis&eacute;es comme param&egrave;tres n&rsquo;ont pas
+besoin d&rsquo;&ecirc;tre pr&eacute;c&eacute;d&eacute;es
+d&rsquo;une barre oblique invers&eacute;e
+(&laquo;&nbsp;<i>\&nbsp;</i>&raquo;). La cha&icirc;ne sera
+termin&eacute;e par le dernier guillemet droit. Par exemple,
+pour l&rsquo;option <b>brackets</b>,
+&quot;<i>&quot;&rsquo;)&gt;]}</i>&quot; correspondra
+&agrave; <i>&quot;</i>, <i>&rsquo;</i>, <i>)</i>,
+<i>&gt;</i>, <i>]</i> et <i>}</i>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Les commandes
+et arguments reconnus sont&nbsp;: <b><br>
+set/unset autoindent</b></p>
+
+<p style="margin-left:15%;">Active l&rsquo;indentation
+automatique.</p>
+
+<p style="margin-left:11%;"><b>set/unset backup</b></p>
+
+<p style="margin-left:15%;">Cr&eacute;e des copies de
+s&eacute;curit&eacute; nomm&eacute;es
+<i>nom_du_fichier~</i>.</p>
+
+<p style="margin-left:11%;"><b>set backupdir</b>
+<i>r&eacute;pertoire</i></p>
+
+<p style="margin-left:15%;">D&eacute;finit le
+r&eacute;pertoire utilis&eacute; par <b>nano</b> pour
+enregistrer les copies de s&eacute;curit&eacute; uniques, si
+l&rsquo;enregistrement de copies de s&eacute;curit&eacute;
+est activ&eacute;.</p>
+
+<p style="margin-left:11%;"><b>set/unset backwards</b></p>
+
+<p style="margin-left:15%;">Par d&eacute;faut, les
+recherches se font vers l&rsquo;arri&egrave;re.</p>
+
+<p style="margin-left:11%;"><b>set/unset boldtext</b></p>
+
+<p style="margin-left:15%;">Utilise des caract&egrave;res
+gras &agrave; la place de la vid&eacute;o inverse.</p>
+
+<p style="margin-left:11%;"><b>set brackets</b>
+<i>cha&icirc;ne</i></p>
+
+<p style="margin-left:15%;">D&eacute;finit les
+caract&egrave;res consid&eacute;r&eacute;s comme des
+crochets fermants lors de la justification des paragraphes.
+Ces caract&egrave;res ne doivent pas contenir
+d&rsquo;espaces. Seules les ponctuations terminales,
+&eacute;ventuellement suivies de crochets fermants, peuvent
+terminer une phrase.</p>
+
+<p style="margin-left:15%; margin-top: 1em">La valeur par
+d&eacute;faut de cette option est&nbsp;:
+&quot;<i>&quot;&rsquo;)&gt;]}</i>&quot;.</p>
+
+<p style="margin-left:15%; margin-top: 1em">N.D.T.&nbsp;:
+reportez-vous au paragraphe sur l&rsquo;option <b>punct</b>
+pour plus d&rsquo;informations.</p>
+
+<p style="margin-left:11%;"><b>set/unset
+casesensitive</b></p>
+
+<p style="margin-left:15%;">Par d&eacute;faut, les
+recherches ne tiennent pas compte de la casse.</p>
+
+<p style="margin-left:11%;"><b>set/unset const</b></p>
+
+<p style="margin-left:15%;">Affiche en permanence la
+position du curseur dans la ligne d&rsquo;&eacute;tat.</p>
+
+<p style="margin-left:11%;"><b>set/unset cut</b></p>
+
+<p style="margin-left:15%;">Par d&eacute;faut, coupe le
+texte du curseur &agrave; la fin de la ligne, au lieu de
+couper la ligne enti&egrave;re.</p>
+
+<p style="margin-left:11%;"><b>set fill</b> <i>n</i></p>
+
+<p style="margin-left:15%;">Passe automatiquement &agrave;
+la ligne une fois arriv&eacute; &agrave; la colonne
+<i>n</i>. Si la valeur indiqu&eacute;e est de 0 ou moins, le
+point de passage &agrave; la ligne aura lieu &agrave; la
+taille de l&rsquo;&eacute;cran moins <i>n</i>. Cela permet
+de faire varier le point de passage &agrave; la ligne
+lorsque l&rsquo;on change la taille de l&rsquo;&eacute;cran.
+La valeur par d&eacute;faut est de &minus;8.</p>
+
+<p style="margin-left:11%;"><b>set/unset historylog</b></p>
+
+<p style="margin-left:15%;">Active l&rsquo;utilisation de
+<i>~/.nano_history</i> pour enregistrer et relire les
+cha&icirc;nes ayant fait l&rsquo;objet d&rsquo;une recherche
+ou d&rsquo;un remplacement.</p>
+
+<p style="margin-left:11%;"><b>set matchbrackets</b>
+<i>cha&icirc;ne</i></p>
+
+<p style="margin-left:15%;">D&eacute;finit les crochets
+ouvrants et fermant pour la recherche de crochets
+correspondants. Cette liste ne doit pas contenir de blancs.
+L&rsquo;ensemble des crochets ouvrants doit &ecirc;tre
+indiqu&eacute; en premier, suivi de l&rsquo;ensemble des
+crochets fermant, qui doit &ecirc;tre dans le m&ecirc;me
+ordre. La valeur par d&eacute;faut de cette option est
+&quot;<i>(&lt;[{)&gt;]}</i>&quot;.</p>
+
+<p style="margin-left:11%;"><b>set/unset morespace</b></p>
+
+<p style="margin-left:15%;">Utiliser la ligne blanche
+situ&eacute;e sous la ligne de titre comme espace
+suppl&eacute;mentaire d&rsquo;&eacute;dition.</p>
+
+<p style="margin-left:11%;"><b>set/unset mouse</b></p>
+
+<p style="margin-left:15%;">Active l&rsquo;utilisation de
+la souris, si elle est disponible pour votre syst&egrave;me.
+Lorsque celle-ci est activ&eacute;e, il est possible
+d&rsquo;utiliser la souris pour positionner le curseur, pour
+marquer le texte (avec un double-clic) et pour lancer les
+fonctions correspondant aux raccourcis. Il est possible
+d&rsquo;utiliser la souris sous X&nbsp;Window ou en mode
+console avec gpm.</p>
+
+<p style="margin-left:11%;"><b>set/unset
+multibuffer</b></p>
+
+<p style="margin-left:15%;">Mode multi-espace&nbsp;: permet
+de charger les fichiers dans leur propre espace.</p>
+
+<p style="margin-left:11%;"><b>set/unset noconvert</b></p>
+
+<p style="margin-left:15%;">Pas de conversion depuis les
+formats DOS et Mac.</p>
+
+<p style="margin-left:11%;"><b>set/unset nofollow</b></p>
+
+<p style="margin-left:15%;">Ne suit pas les liens
+symboliques lors de l&rsquo;&eacute;criture des
+fichiers.</p>
+
+<p style="margin-left:11%;"><b>set/unset nohelp</b></p>
+
+<p style="margin-left:15%;">D&eacute;sactive les lignes
+d&rsquo;aide affich&eacute;e en bas de
+l&rsquo;&eacute;cran.</p>
+
+<p style="margin-left:11%;"><b>set/unset nonewlines</b></p>
+
+<p style="margin-left:15%;">Ne pas ajouter de passage
+&agrave; la ligne &agrave; la fin des fichiers.</p>
+
+<p style="margin-left:11%;"><b>set/unset nowrap</b></p>
+
+<p style="margin-left:15%;">D&eacute;sactive le passage
+automatique &agrave; la ligne.</p>
+
+<p style="margin-left:11%;"><b>set operatingdir</b>
+<i>r&eacute;pertoire</i></p>
+
+<p style="margin-left:15%;"><b>nano</b> ne lira et
+n&rsquo;&eacute;crira des fichiers qu&rsquo;&agrave;
+l&rsquo;int&eacute;rieur du <i>r&eacute;pertoire</i> et de
+ses sous-r&eacute;pertoires. De plus, celui-ci devient le
+r&eacute;pertoire courant, afin que les fichiers soient lus
+depuis ce r&eacute;pertoire. Par d&eacute;faut, cette
+fonction est d&eacute;sactiv&eacute;e.</p>
+
+<p style="margin-left:11%;"><b>set/unset preserve</b></p>
+
+<p style="margin-left:15%;">Pr&eacute;serve les
+s&eacute;quences XON et XOFF (^Q et ^S).</p>
+
+<p style="margin-left:11%;"><b>set punct</b>
+<i>cha&icirc;ne</i></p>
+
+<p style="margin-left:15%;">D&eacute;finit les
+caract&egrave;res interpr&eacute;t&eacute;s comme des
+ponctuations terminales lors de la justification des
+paragraphes. Ces caract&egrave;res ne peuvent inclure de
+blancs. Seules les ponctuations terminales,
+&eacute;ventuellement suivies de crochets fermants, peuvent
+terminer une phrase. La valeur par d&eacute;faut de cette
+option est &quot;<i>!.?</i>&quot;.</p>
+
+<p style="margin-left:15%; margin-top: 1em">N.D.T.&nbsp;:
+ce r&eacute;glage permet, lors de la justification, de
+conserver 2&nbsp;espaces au lieu d&rsquo;une derri&egrave;re
+les ponctuations terminales, ce qui correspond aux normes
+typographiques anglo-saxonnes, mais n&rsquo;a pas lieu
+d&rsquo;&ecirc;tre en fran&ccedil;ais. Pour le
+fran&ccedil;ais, le plus simple est d&rsquo;indiquer, dans
+le fichier nanorc, une cha&icirc;ne vide pour ce
+param&egrave;tre.</p>
+
+<p style="margin-left:11%;"><b>set/unset quickblank</b></p>
+
+<p style="margin-left:15%;">Effacement rapide de la ligne
+d&rsquo;&eacute;tat. Les messages affich&eacute;s par la
+ligne d&rsquo;&eacute;tat dispara&icirc;tront apr&egrave;s
+une frappe clavier au lieu de 25.</p>
+
+<p style="margin-left:11%;"><b>set quotestr</b>
+<i>cha&icirc;ne</i></p>
+
+<p style="margin-left:15%;">D&eacute;finit le
+pr&eacute;fixe par d&eacute;faut utilis&eacute; pour les
+citations dans les courriers &eacute;lectroniques. Ce
+pr&eacute;fixe est utilis&eacute; pour r&eacute;aliser une
+justification correcte de ces citations. Il s&rsquo;agira,
+si votre syst&egrave;me le permet, d&rsquo;une expression
+rationnelle &eacute;tendue. Dans le cas contraire, il
+s&rsquo;agira d&rsquo;une cha&icirc;ne de texte brut. Si
+vous disposez des expressions rationnelles, la valeur par
+d&eacute;faut de cette option sera
+&quot;<i>^([&nbsp;\t]*[#:&gt;\|}])+</i>&quot;, sinon, ce
+sera &quot;&gt;&nbsp;&quot;. Notez que le
+&laquo;&nbsp;\t&nbsp;&raquo; ci-dessus correspond &agrave;
+un caract&egrave;re de tabulation.</p>
+
+<p style="margin-left:11%;"><b>set/unset
+rebinddelete</b></p>
+
+<p style="margin-left:15%;">Interpr&egrave;te
+diff&eacute;remment la touche
+&laquo;&nbsp;Supprimer&nbsp;&raquo;, afin que les touches
+&laquo;&nbsp;Effacement arri&egrave;re&nbsp;&raquo; et
+&laquo;&nbsp;Supprimer&nbsp;&raquo; fonctionnent
+correctement. Vous ne devriez avoir besoin de cette option
+que si, sur votre syst&egrave;me, la touche
+&laquo;&nbsp;Effacement arri&egrave;re&nbsp;&raquo; produit
+l&rsquo;effet de la touche &laquo;&nbsp;
+Supprimer&nbsp;&raquo;.</p>
+
+<p style="margin-left:11%;"><b>set/unset
+rebindkeypad</b></p>
+
+<p style="margin-left:15%;">Interpr&egrave;te les touches
+du pav&eacute; num&eacute;rique afin qu&rsquo;elles
+fonctionnent toutes correctement. Vous ne devriez utiliser
+cette option que si ce n&rsquo;est pas le cas, car nano ne
+sera plus capable d&rsquo;utiliser la souris correctement
+lorsque cette option sera activ&eacute;e.</p>
+
+<p style="margin-left:11%;"><b>set/unset regexp</b></p>
+
+<p style="margin-left:15%;">Utilise par d&eacute;faut des
+expressions rationnelles &eacute;tendues pour les
+recherches.</p>
+
+<p style="margin-left:11%;"><b>set/unset smarthome</b></p>
+
+<p style="margin-left:15%;">Rend plus malin le
+fonctionnement de la touche
+&laquo;&nbsp;D&eacute;but&nbsp;&raquo;. Lorsque cette touche
+est press&eacute;e &agrave; n&rsquo;importe quel endroit
+except&eacute; au tout d&eacute;but du texte d&rsquo;une
+ligne (i.&nbsp;e. au premier caract&egrave;re non blanc), le
+curseur se positionnera au d&eacute;but du texte de la ligne
+(qu&rsquo;il soit en avant ou en arri&egrave;re). Si le
+curseur est d&eacute;j&agrave; l&agrave;, il se placera au
+vrai d&eacute;but de la ligne.</p>
+
+<p style="margin-left:11%;"><b>set/unset smooth</b></p>
+
+<p style="margin-left:15%;">Active le d&eacute;filement
+ligne-par-ligne du texte.</p>
+
+<p style="margin-left:11%;"><b>set speller</b>
+<i>programme</i></p>
+
+<p style="margin-left:15%;">Utilise le correcteur
+orthographique <i>programme</i> au lieu du correcteur
+int&eacute;gr&eacute;, qui s&rsquo;appuie sur
+<i>spell</i>.</p>
+
+<p style="margin-left:11%;"><b>set/unset suspend</b></p>
+
+<p style="margin-left:15%;">Autorise &agrave; suspendre
+<b>nano</b>.</p>
+
+<p style="margin-left:11%;"><b>set tabsize</b> <i>n</i></p>
+
+<p style="margin-left:15%;">Utilise une taille de
+tabulation de <i>n</i> colonnes. Cette valeur doit
+&ecirc;tre strictement sup&eacute;rieure &agrave; 0. La
+valeur par d&eacute;faut est de&nbsp;8.</p>
+
+<p style="margin-left:11%;"><b>set/unset
+tabstospaces</b></p>
+
+<p style="margin-left:15%;">Convertit les tabulations
+clavier en espaces.</p>
+
+<p style="margin-left:11%;"><b>set/unset tempfile</b></p>
+
+<p style="margin-left:15%;">S&rsquo;il a &eacute;t&eacute;
+modifi&eacute;, le fichier sera sauvegard&eacute;
+automatiquement en quittant, sans demande de
+confirmation.</p>
+
+<p style="margin-left:11%;"><b>set/unset view</b></p>
+
+<p style="margin-left:15%;">Interdit de modifier les
+fichiers.</p>
+
+<p style="margin-left:11%;"><b>set whitespace</b>
+<i>cha&icirc;ne</i></p>
+
+<p style="margin-left:15%;">D&eacute;finit les deux
+caract&egrave;res utilis&eacute;s pour afficher les premiers
+caract&egrave;res des tabulations et des espaces. Ces deux
+caract&egrave;res doivent &ecirc;tre mono-colonne.</p>
+
+<p style="margin-left:11%;"><b>set/unset wordbounds</b></p>
+
+<p style="margin-left:15%;">D&eacute;tection plus
+pr&eacute;cise des limites de mots, obtenue en
+consid&eacute;rant les caract&egrave;res de ponctuation
+comme faisant partie des mots.</p>
+
+<p style="margin-left:11%;"><b>syntax</b>
+<i>cha&icirc;ne</i>
+<b>[&quot;</b><i>motif_de_fichier</i><b>&quot; ... ]</b></p>
+
+<p style="margin-left:15%;">D&eacute;finit une syntaxe
+nomm&eacute;e <i>cha&icirc;ne</i> qui pourra &ecirc;tre
+activ&eacute; via l&rsquo;option <b>-Y</b> (ou
+<b>--syntax</b>) ou qui sera automatiquement activ&eacute;e
+si le nom du fichier en cours correspond &agrave;
+l&rsquo;expression rationnelle &eacute;tendue
+<i>motif_de_fichier</i>. Toutes les instructions suivantes
+de colorisation <b>color</b> ou <b>icolor</b>
+s&rsquo;appliqueront &agrave; cette syntaxe,
+jusqu&rsquo;&agrave; la d&eacute;finition d&rsquo;une
+nouvelle syntaxe.</p>
+
+<p style="margin-left:15%; margin-top: 1em">La syntaxe
+nomm&eacute;e <i>none</i> (aucune) est
+r&eacute;serv&eacute;e&nbsp;; si elle est indiqu&eacute;e
+dans la ligne de commande, cela revient &agrave; ne
+d&eacute;finir aucune syntaxe. La syntaxe nomm&eacute;e
+<i>default</i> (par d&eacute;faut) est sp&eacute;ciale, elle
+ne n&eacute;cessite aucun motif de <i>motif_de_fichier</i>,
+et s&rsquo;applique aux fichiers ne correspondant &agrave;
+aucun des <i>motif_de_fichier</i> des autres syntaxes.</p>
+
+<p style="margin-left:11%;"><b>color</b>
+<i>couleur_texte</i><b>[,</b><i>couleur_fond</i><b>]</b>
+<i>motif</i> <b>...</b></p>
+
+<p style="margin-left:15%;">Pour la syntaxe en cours,
+affiche toutes les expressions correspondant &agrave;
+l&rsquo;expression rationnelle &eacute;tendue <i>motif</i>
+en utilisant la couleur de texte <i>couleur_texte</i> et la
+couleur de fond <i>couleur_fond</i>, l&rsquo;une de ces deux
+couleurs au moins devant &ecirc;tre d&eacute;finie. Les
+couleurs accept&eacute;es par <b>nano</b> pour le texte et
+le fond sont&nbsp;: <i>white</i> (blanc), <i>black</i>
+(noir), <i>red</i> (rouge), <i>blue</i> (bleu), <i>green</i>
+(vert), <i>yellow</i> (jaune), <i>magenta</i>, et
+<i>cyan</i>. Pour la couleur du texte, vous pouvez ajouter
+&agrave; ces couleurs le pr&eacute;fixe <i>bright</i>
+(lumineux) pour obtenir une couleur plus lumineuse. Si votre
+terminal est capable de g&eacute;rer la transparence, ne pas
+sp&eacute;cifier de <i>couleur_fond</i> indique &agrave;
+<b>nano</b> d&rsquo;essayer d&rsquo;utiliser un fond
+transparent.</p>
+
+<p style="margin-left:11%;"><b>icolor</b>
+<i>couleur_texte</i><b>[,</b><i>couleur_fond</i><b>]</b>
+<i>motif</i> <b>...</b></p>
+
+<p style="margin-left:15%;">Comme ci-dessus, mais la
+recherche des motifs est effectu&eacute;e sans tenir compte
+de la casse.</p>
+
+<p style="margin-left:11%;"><b>color</b>
+<i>couleur_texte</i><b>[,</b><i>couleur_fond</i><b>]
+start=&quot;</b><i>motif_d&eacute;but</i><b>&quot;
+end=&quot;</b><i>motif_fin</i><b>&quot;</b></p>
+
+<p style="margin-left:15%;">Affiche les expressions
+commen&ccedil;ant par l&rsquo;expression rationnelle
+&eacute;tendue <i>motif_d&eacute;but</i> et se terminant par
+l&rsquo;expression rationnelle &eacute;tendue
+<i>motif_fin</i> en utilisant la couleur de texte
+<i>couleur_texte</i> et la couleur de fond
+<i>couleur_fond</i>, l&rsquo;une de ces deux couleurs au
+moins devant &ecirc;tre d&eacute;finie. Cela permet &agrave;
+la colorisation syntaxique de s&rsquo;&eacute;tendre sur
+plusieurs lignes. Notez que toutes les occurrences
+successives de <i>motif_d&eacute;but</i> apr&egrave;s le
+<i>motif_d&eacute;but</i> initial seront surlign&eacute;es
+jusqu&rsquo;&agrave; la prochaine instance de
+<i>motif_fin</i>.</p>
+
+<p style="margin-left:11%;"><b>icolor</b>
+<i>couleur_texte</i><b>[,</b><i>couleur_fond</i><b>]
+start=&quot;</b><i>motif_d&eacute;but</i><b>&quot;
+end=&quot;</b><i>motif_fin</i><b>&quot;</b></p>
+
+<p style="margin-left:15%;">Comme ci-dessus, mais la
+recherche des motifs est effectu&eacute;e sans tenir compte
+de la casse.</p>
+
+<p style="margin-left:11%;"><b>include</b>
+<i>fichier_de_syntaxes</i></p>
+
+<p style="margin-left:15%;">Lit le fichier
+<i>fichier_de_syntaxes</i> contenant une liste
+autosuffisante de d&eacute;finitions de syntaxes. Ce fichier
+ne doit contenir que des commandes <b>syntax</b>,
+<b>color</b> et <b>icolor</b>.</p>
+
+<h2>FICHIERS
+<a name="FICHIERS"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><i>$SYSCONFDIR/nanorc</i></p>
+
+<p style="margin-left:22%;">Fichier de configuration
+g&eacute;n&eacute;ral</p>
+
+<p style="margin-left:11%;"><i>~/.nanorc</i></p>
+
+<p style="margin-left:22%;">Fichier de configuration
+personnel</p>
+
+<h2>VOIR AUSSI
+<a name="VOIR AUSSI"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b>(1)
+<i><br>
+/usr/share/doc/nano/examples/nanorc.sample</i> (ou son
+&eacute;quivalent sur votre syst&egrave;me)</p>
+
+<h2>AUTEUR
+<a name="AUTEUR"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Chris
+Allegretta &lt;chrisa@asty.org&gt; et d&rsquo;autres (voir
+les fichiers <i>AUTHORS</i> et <i>THANKS</i> pour plus
+d&rsquo;information). Cette page de manuel a
+&eacute;t&eacute; initialement r&eacute;dig&eacute;e par
+Jordi Mallach &lt;jordi@gnu.org&gt; pour le syst&egrave;me
+Debian (mais elle peut &ecirc;tre utilis&eacute;e par
+d&rsquo;autres).</p>
+
+<h2>TRADUCTION
+<a name="TRADUCTION"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Cette
+adaptation fran&ccedil;aise a &eacute;t&eacute;
+r&eacute;alis&eacute;e par Jean-Philippe&nbsp;Gu&eacute;rard
+&lt;jean-philippe.guerard@tigreraye.org&gt; le
+29&nbsp;novembre&nbsp;2007 &agrave; partir de la version
+1.56 du 11&nbsp;octobre&nbsp;2007 de la page de manuel de
+nanorc (pour la version 2.0.0 de nano). Cette page a
+&eacute;t&eacute; relue par G&eacute;rard Delafond.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Un maximum de
+soin a &eacute;t&eacute; apport&eacute; lors de
+l&rsquo;&eacute;laboration de cette traduction&nbsp;;
+n&eacute;anmoins, quelques imperfections peuvent subsister.
+Si vous en rencontrez, que ce soit dans la version
+fran&ccedil;aise ou dans la version originale,
+n&rsquo;h&eacute;sitez pas &agrave; les signaler &agrave;
+l&rsquo;auteur ou au traducteur.</p>
+
+<p style="margin-left:11%; margin-top: 1em">La version
+originale la plus &agrave; jour de ce document est toujours
+consultable via la commande&nbsp;:</p>
+
+<p style="margin-left:11%; margin-top: 1em">LANGUAGE=en man
+nano</p>
+<hr>
+</body>
+</html>
diff --git a/doc/man/fr/rnano.1 b/doc/man/fr/rnano.1
new file mode 100644
index 0000000..2f64367
--- /dev/null
+++ b/doc/man/fr/rnano.1
@@ -0,0 +1,154 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+.\" Skeleton based on nano-tiny.1:
+.\" Copyright (C) 2002 Free Software Foundation, Inc.
+.\"
+.\" Le travail d'adaptation française de cette page de manuel a été
+.\" réalisé par Jean-Philippe Guérard, en 2006 et 2007. Ce travail
+.\" d'adaptation est dans le domaine public. Attention, la page traduite
+.\" reste soumise au droit d'auteur de ses auteurs originaux.
+.\"
+.\" The French translation of this document is a public domain work of
+.\" Jean-Philippe Guérard. This translation work was made in 2006 and
+.\" 2007. The translated man page in itself is still subject to the
+.\" copyright of its original authors.
+.\"
+.\" This document is dual-licensed. You may distribute and/or modify it
+.\" under the terms of either of the following licenses:
+.\"
+.\" * The GNU General Public License, as published by the Free Software
+.\" Foundation, version 3 or (at your option) any later version. You
+.\" should have received a copy of the GNU General Public License
+.\" along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" * The GNU Free Documentation License, as published by the Free
+.\" Software Foundation, version 1.2 or (at your option) any later
+.\" version, with no Invariant Sections, no Front-Cover Texts, and no
+.\" Back-Cover Texts. You should have received a copy of the GNU Free
+.\" Documentation License along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" Ce document est publié sous une double licence. Vous pouvez
+.\" le distribuer et le modifier selon les termes de l'une des deux
+.\" licences ci-dessous :
+.\"
+.\" * La Licence publique générale GNU (GNU GPL) version 3 ou, à
+.\" votre choix, supérieure, telle que publiée par la Free
+.\" Software Foundation. Vous devriez avoir reçu une copie de la
+.\" Licence publique générale GNU avec ce programme. Si ce n'est pas
+.\" le cas, consultez <http://www.gnu.org/licenses/>.
+.\"
+.\" * La Licence de documentation libre GNU (GNU FDL), version 1.2 ou,
+.\" à votre choix, supérieure, telle que publiée par la Free
+.\" Software Foundation, sans section invariante, ni texte de
+.\" première ou de quatrième de couverture. Vous devriez avoir reçu
+.\" une copie de la Licence de documentation libre GNU avec ce
+.\" programme. Si ce n'est pas le cas, consultez
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" $Id: rnano.1 4188 2007-12-08 04:27:44Z dolorous $
+.TH RNANO 1 "version 2.0.0" "29\ novembre\ 20O7"
+.\" Please adjust this date whenever revising the manpage.
+.\" Merci de modifier ces dates à chaque mise à jour de cette page.
+.\"
+.SH NOM
+rnano \- Le mode restreint de NAno un NOuvel éditeur, un clone libre et
+amélioré de Pico
+
+.SH SYNOPSIS
+.B rnano
+.I [OPTIONS]\ [[\+LIGNE,COLONNE]\ FICHIER]...
+.br
+
+.SH DESCRIPTION
+Cette page de manuel décrit brièvement la commande \fBrnano\fR.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
+.\" respectively.
+\fBnano\fR est un éditeur petit, sympathique et libre, qui vise à
+remplacer Pico, l'éditeur par défaut du logiciel non libre Pine.
+\fBnano\fR ne se contentant pas de copier l'interface et l'ergonomie de
+Pico, il offre également certaines fonctions manquantes (ou désactivées
+par défaut) dans Pico. Ces fonctionnalités sont, par exemple, les
+fonctions de recherche et de remplacement, et la possibilité de sauter
+directement à une ligne et à une colonne précise..
+.PP
+\fBrnano\fP est une version de \fBnano\fP fonctionnant en mode
+restreint, qui ne permet d'éditer que les fichiers indiqués et qui
+n'autorise pas l'utilisateur à accéder au système de fichier ou à un
+interpréteur de commandes.
+.PP
+En mode restreint, \fBnano\fP refusera\ :
+.IP \[bu] 2
+de lire ou d'écrire dans un fichier n'ayant pas été indiqué dans la
+ligne de commande\ ;
+.IP \[bu]
+de lire un fichier nanorc\ ;
+.IP \[bu]
+de permettre de suspendre l'édition\ ;
+.IP \[bu]
+de permettre d'ajouter en début ou en fin d'un fichier, ou de
+l'enregistrer sous un nom différent\ ;
+.IP \[bu]
+l'utilisation de copies de sécurité ou de la correction orthographique.
+
+.SH OPTIONS
+.TP
+.B \+\fILIGNE\fP,\fICOLONNE\fP
+Démarre avec le curseur positionné à la colonne \fICOLONNE\fP de
+la ligne \fILIGNE\fR (l'un des deux, au moins, devant être spécifié) au
+lieu de démarrer à la colonne\ 1, ligne\ 1.
+.TP
+.B \-?
+Identique à \fB-h (\-\-help)\fP.
+.TP
+.B \-h (\-\-help)
+Affiche un résumé des options de lancement de nano, puis s'arrête.
+.TP
+.B \-V (\-\-version)
+Affiche la version, puis s'arrête.
+.PP
+Reportez-vous à la page de manuel \fBnano\fP(1) si vous souhaitez
+consulter la documentation complète de \fBnano\fP.
+
+.SH BOGUES
+Merci de nous faire parvenir vos commentaires et de nous signaler les
+bogues, en écrivant, en anglais, à \fBnano@nano-editor.org\fR.
+
+La liste de discussion anglophone \fBnano\fR est disponible à l'adresse
+\fBnano-devel@gnu.org\fR.
+
+Pour vous abonner, envoyez un courrier électronique à
+\fBnano-devel-request@gnu.org\fR, ayant pour objet «\ subscribe\ ».
+
+N'hésitez pas également à envoyez vos commentaires, suggestions et
+corrections relatives à l'adaptation française de cette page de manuel
+ou du logiciel à \fBjean-philippe.guerard@tigreraye.org\fR.
+
+.SH "SITE INTERNET"
+http://www.nano-editor.org/
+
+.SH AUTEUR
+Chris Allegretta <chrisa@asty.org> et d'autres (voir le fichier
+\fIAUTHORS\fR). Cette page de manuel a été initialement rédigée par
+Thijs Kinkhorst <thijs@kinkhorst.com>, pour le système GNU Debian (mais
+elle peut être utilisée par d'autres).
+
+.SH TRADUCTION
+Cette adaptation française a été réalisée par Jean-Philippe\ Guérard
+<jean-philippe.guerard@tigreraye.org> le 29\ novembre\ 2007 à partir
+de la version 1.19 du 6\ novembre\ 2007 de la page de manuel de rnano
+(pour la version 2.0.0 de nano).
+
+Un maximum de soin a été apporté lors de l'élaboration de cette
+traduction\ ; néanmoins, quelques imperfections peuvent subsister. Si
+vous en rencontrez, que ce soit dans la version française ou dans la
+version originale, n'hésitez pas à les signaler à l'auteur ou au
+traducteur.
+
+La version originale la plus à jour de ce document est toujours
+consultable via la commande\ :
+
+LANGUAGE=en man nano
diff --git a/doc/man/fr/rnano.1.html b/doc/man/fr/rnano.1.html
new file mode 100644
index 0000000..26c2d1b
--- /dev/null
+++ b/doc/man/fr/rnano.1.html
@@ -0,0 +1,278 @@
+<!-- Creator : groff version 1.20.1 -->
+<!-- CreationDate: Tue Aug 10 22:44:00 2010 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+ p { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ table { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ h1 { text-align: center }
+</style>
+<title>RNANO</title>
+
+</head>
+<body>
+
+<h1 align="center">RNANO</h1>
+
+<a href="#NOM">NOM</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#BOGUES">BOGUES</a><br>
+<a href="#SITE INTERNET">SITE INTERNET</a><br>
+<a href="#AUTEUR">AUTEUR</a><br>
+<a href="#TRADUCTION">TRADUCTION</a><br>
+
+<hr>
+
+
+<h2>NOM
+<a name="NOM"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">rnano &minus;
+Le mode restreint de NAno un NOuvel &eacute;diteur, un clone
+libre et am&eacute;lior&eacute; de Pico</p>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>rnano</b>
+<i>[OPTIONS]&nbsp;[[+LIGNE,COLONNE]&nbsp;FICHIER]...</i></p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Cette page de
+manuel d&eacute;crit bri&egrave;vement la commande
+<b>rnano</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b> est
+un &eacute;diteur petit, sympathique et libre, qui vise
+&agrave; remplacer Pico, l&rsquo;&eacute;diteur par
+d&eacute;faut du logiciel non libre Pine. <b>nano</b> ne se
+contentant pas de copier l&rsquo;interface et
+l&rsquo;ergonomie de Pico, il offre &eacute;galement
+certaines fonctions manquantes (ou d&eacute;sactiv&eacute;es
+par d&eacute;faut) dans Pico. Ces fonctionnalit&eacute;s
+sont, par exemple, les fonctions de recherche et de
+remplacement, et la possibilit&eacute; de sauter directement
+&agrave; une ligne et &agrave; une colonne
+pr&eacute;cise..</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>rnano</b>
+est une version de <b>nano</b> fonctionnant en mode
+restreint, qui ne permet d&rsquo;&eacute;diter que les
+fichiers indiqu&eacute;s et qui n&rsquo;autorise pas
+l&rsquo;utilisateur &agrave; acc&eacute;der au
+syst&egrave;me de fichier ou &agrave; un interpr&eacute;teur
+de commandes.</p>
+
+<p style="margin-left:11%; margin-top: 1em">En mode
+restreint, <b>nano</b> refusera&nbsp;:</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="2%"></td>
+<td width="86%">
+
+
+<p>de lire ou d&rsquo;&eacute;crire dans un fichier
+n&rsquo;ayant pas &eacute;t&eacute; indiqu&eacute; dans la
+ligne de commande&nbsp;;</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="2%"></td>
+<td width="86%">
+
+
+<p>de lire un fichier nanorc&nbsp;;</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="2%"></td>
+<td width="86%">
+
+
+<p>de permettre de suspendre
+l&rsquo;&eacute;dition&nbsp;;</p> </td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="2%"></td>
+<td width="86%">
+
+
+<p>de permettre d&rsquo;ajouter en d&eacute;but ou en fin
+d&rsquo;un fichier, ou de l&rsquo;enregistrer sous un nom
+diff&eacute;rent&nbsp;;</p> </td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="2%"></td>
+<td width="86%">
+
+
+<p>l&rsquo;utilisation de copies de s&eacute;curit&eacute;
+ou de la correction orthographique.</p></td></tr>
+</table>
+
+<h2>OPTIONS
+<a name="OPTIONS"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>+</b><i>LIGNE</i><b>,</b><i>COLONNE</i></p>
+
+<p style="margin-left:22%;">D&eacute;marre avec le curseur
+positionn&eacute; &agrave; la colonne <i>COLONNE</i> de la
+ligne <i>LIGNE</i> (l&rsquo;un des deux, au moins, devant
+&ecirc;tre sp&eacute;cifi&eacute;) au lieu de
+d&eacute;marrer &agrave; la colonne&nbsp;1,
+ligne&nbsp;1.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>&minus;?</b></p></td>
+<td width="8%"></td>
+<td width="36%">
+
+
+<p>Identique &agrave; <b>-h (&minus;&minus;help)</b>.</p></td>
+<td width="42%">
+</td></tr>
+</table>
+
+<p style="margin-left:11%;"><b>&minus;h
+(&minus;&minus;help)</b></p>
+
+<p style="margin-left:22%;">Affiche un r&eacute;sum&eacute;
+des options de lancement de nano, puis
+s&rsquo;arr&ecirc;te.</p>
+
+<p style="margin-left:11%;"><b>&minus;V
+(&minus;&minus;version)</b></p>
+
+<p style="margin-left:22%;">Affiche la version, puis
+s&rsquo;arr&ecirc;te.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Reportez-vous
+&agrave; la page de manuel <b>nano</b>(1) si vous souhaitez
+consulter la documentation compl&egrave;te de
+<b>nano</b>.</p>
+
+<h2>BOGUES
+<a name="BOGUES"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Merci de nous
+faire parvenir vos commentaires et de nous signaler les
+bogues, en &eacute;crivant, en anglais, &agrave;
+<b>nano@nano-editor.org</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">La liste de
+discussion anglophone <b>nano</b> est disponible &agrave;
+l&rsquo;adresse <b>nano-devel@gnu.org</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Pour vous
+abonner, envoyez un courrier &eacute;lectronique &agrave;
+<b>nano-devel-request@gnu.org</b>, ayant pour objet
+&laquo;&nbsp;subscribe&nbsp;&raquo;.</p>
+
+
+<p style="margin-left:11%; margin-top: 1em">N&rsquo;h&eacute;sitez
+pas &eacute;galement &agrave; envoyez vos commentaires,
+suggestions et corrections relatives &agrave;
+l&rsquo;adaptation fran&ccedil;aise de cette page de manuel
+ou du logiciel &agrave;
+<b>jean-philippe.guerard@tigreraye.org</b>.</p>
+
+<h2>SITE INTERNET
+<a name="SITE INTERNET"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em">http://www.nano-editor.org/</p>
+
+<h2>AUTEUR
+<a name="AUTEUR"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Chris
+Allegretta &lt;chrisa@asty.org&gt; et d&rsquo;autres (voir
+le fichier <i>AUTHORS</i>). Cette page de manuel a
+&eacute;t&eacute; initialement r&eacute;dig&eacute;e par
+Thijs Kinkhorst &lt;thijs@kinkhorst.com&gt;, pour le
+syst&egrave;me GNU Debian (mais elle peut &ecirc;tre
+utilis&eacute;e par d&rsquo;autres).</p>
+
+<h2>TRADUCTION
+<a name="TRADUCTION"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Cette
+adaptation fran&ccedil;aise a &eacute;t&eacute;
+r&eacute;alis&eacute;e par Jean-Philippe&nbsp;Gu&eacute;rard
+&lt;jean-philippe.guerard@tigreraye.org&gt; le
+29&nbsp;novembre&nbsp;2007 &agrave; partir de la version
+1.19 du 6&nbsp;novembre&nbsp;2007 de la page de manuel de
+rnano (pour la version 2.0.0 de nano).</p>
+
+<p style="margin-left:11%; margin-top: 1em">Un maximum de
+soin a &eacute;t&eacute; apport&eacute; lors de
+l&rsquo;&eacute;laboration de cette traduction&nbsp;;
+n&eacute;anmoins, quelques imperfections peuvent subsister.
+Si vous en rencontrez, que ce soit dans la version
+fran&ccedil;aise ou dans la version originale,
+n&rsquo;h&eacute;sitez pas &agrave; les signaler &agrave;
+l&rsquo;auteur ou au traducteur.</p>
+
+<p style="margin-left:11%; margin-top: 1em">La version
+originale la plus &agrave; jour de ce document est toujours
+consultable via la commande&nbsp;:</p>
+
+<p style="margin-left:11%; margin-top: 1em">LANGUAGE=en man
+nano</p>
+<hr>
+</body>
+</html>
diff --git a/doc/man/nano.1 b/doc/man/nano.1
new file mode 100644
index 0000000..6921431
--- /dev/null
+++ b/doc/man/nano.1
@@ -0,0 +1,262 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+.\" 2008, 2009 Free Software Foundation, Inc.
+.\"
+.\" This document is dual-licensed. You may distribute and/or modify it
+.\" under the terms of either of the following licenses:
+.\"
+.\" * The GNU General Public License, as published by the Free Software
+.\" Foundation, version 3 or (at your option) any later version. You
+.\" should have received a copy of the GNU General Public License
+.\" along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" * The GNU Free Documentation License, as published by the Free
+.\" Software Foundation, version 1.2 or (at your option) any later
+.\" version, with no Invariant Sections, no Front-Cover Texts, and no
+.\" Back-Cover Texts. You should have received a copy of the GNU Free
+.\" Documentation License along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" $Id: nano.1 4502 2010-04-14 21:55:39Z astyanax $
+.TH NANO 1 "version 2.2.0" "November 30, 2009"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+
+.SH NAME
+nano \- Nano's ANOther editor, an enhanced free Pico clone
+
+.SH SYNOPSIS
+.B nano
+.I [OPTIONS]\ [[\+LINE,COLUMN]\ FILE]...
+.br
+
+.SH DESCRIPTION
+This manual page briefly documents the \fBnano\fP command.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
+.\" respectively.
+\fBnano\fP is a small, free and friendly editor which aims to replace
+Pico, the default editor included in the non-free Pine package. Rather
+than just copying Pico's look and feel, \fBnano\fP also implements some
+missing (or disabled by default) features in Pico, such as "search and
+replace" and "go to line and column number".
+
+.SH OPTIONS
+.TP
+.B \+\fILINE\fP,\fICOLUMN\fP
+Places cursor at line number \fILINE\fP and column number \fICOLUMN\fP
+(at least one of which must be specified) on startup, instead of the
+default of line 1, column 1.
+.TP
+.B \-?
+Same as \fB-h (\-\-help)\fP.
+.TP
+.B \-A (\-\-smarthome)
+Make the Home key smarter. When Home is pressed anywhere but at the
+very beginning of non-whitespace characters on a line, the cursor will
+jump to that beginning (either forwards or backwards). If the cursor is
+already at that position, it will jump to the true beginning of the
+line.
+.TP
+.B \-B (\-\-backup)
+When saving a file, back up the previous version of it to the current
+filename suffixed with a ~.
+.TP
+.B \-C \fIdir\fP (\-\-backupdir=\fIdir\fP)
+Set the directory where \fBnano\fP puts unique backup files if file
+backups are enabled.
+.TP
+.B \-D (\-\-boldtext)
+Use bold text instead of reverse video text.
+.TP
+.B \-E (\-\-tabstospaces)
+Convert typed tabs to spaces.
+.TP
+.B \-F (\-\-multibuffer)
+Enable multiple file buffers, if available.
+.TP
+.B \-H (\-\-historylog)
+Log search and replace strings to \fI~/.nano_history\fP, so they can be
+retrieved in later sessions, if \fInanorc\fP support is available.
+.TP
+.B \-I (\-\-ignorercfiles)
+Don't look at \fISYSCONFDIR/nanorc\fP or \fI~/.nanorc\fP, if
+\fInanorc\fP support is available.
+.TP
+.B \-K (\-\-rebindkeypad)
+Interpret the numeric keypad keys so that they all work properly. You
+should only need to use this option if they don't, as mouse support
+won't work properly with this option enabled.
+.TP
+.B \-L (\-\-nonewlines)
+Don't add newlines to the ends of files.
+.TP
+.B \-N (\-\-noconvert)
+Disable automatic conversion of files from DOS/Mac format.
+.TP
+.B \-O (\-\-morespace)
+Use the blank line below the titlebar as extra editing space.
+.TP
+.B \-Q \fIstr\fP (\-\-quotestr=\fIstr\fP)
+Set the quoting string for justifying. The default is
+"\fI^([\ \\t]*[#:>\\|}])+\fP" if extended regular expression support is
+available, or "\fI>\ \fP" otherwise. Note that \fI\\t\fP stands for a
+Tab.
+.TP
+.B \-R (\-\-restricted)
+Restricted mode: don't read or write to any file not specified on the
+command line; read any \fInanorc\fP files; allow suspending; allow a
+file to be appended to, prepended to, or saved under a different name if
+it already has one; or use backup files or spell checking. Also
+accessible by invoking \fBnano\fP with any name beginning with 'r' (e.g.
+"rnano").
+.TP
+.B \-S (\-\-smooth)
+Enable smooth scrolling. Text will scroll line-by-line, instead of the
+usual chunk-by-chunk behavior.
+.TP
+.B \-T \fIcols\fP (\-\-tabsize=\fIcols\fP)
+Set the size (width) of a tab to \fIcols\fP columns. The value of
+\fIcols\fP must be greater than 0. The default value is 8.
+.TP
+.B \-U (\-\-quickblank)
+Do quick statusbar blanking. Statusbar messages will disappear after 1
+keystroke instead of 25. Note that \fB-c\fP overrides this.
+.TP
+.B \-V (\-\-version)
+Show the current version number and exit.
+.TP
+.B \-W (\-\-wordbounds)
+Detect word boundaries more accurately by treating punctuation
+characters as part of a word.
+.TP
+.B \-Y \fIstr\fP (\-\-syntax=\fIstr\fP)
+Specify a specific syntax highlighting from the \fInanorc\fP to use, if
+available.
+.TP
+.B \-c (\-\-const)
+Constantly show the cursor position. Note that this overrides \fB-U\fP.
+.TP
+.B \-d (\-\-rebinddelete)
+Interpret the Delete key differently so that both Backspace and Delete
+work properly. You should only need to use this option if Backspace
+acts like Delete on your system.
+.TP
+.B \-h (\-\-help)
+Show a summary of command line options and exit.
+.TP
+.B \-i (\-\-autoindent)
+Indent new lines to the previous line's indentation. Useful when
+editing source code.
+.TP
+.B \-k (\-\-cut)
+Enable cut from cursor to end of line.
+.TP
+.B \-l (\-\-nofollow)
+If the file being edited is a symbolic link, replace the link with
+a new file instead of following it. Good for editing files in
+\fI/tmp\fP, perhaps?
+.TP
+.B \-m (\-\-mouse)
+Enable mouse support, if available for your system. When enabled, mouse
+clicks can be used to place the cursor, set the mark (with a double
+click), and execute shortcuts. The mouse will work in the X Window
+System, and on the console when gpm is running.
+.TP
+.B \-o \fIdir\fP (\-\-operatingdir=\fIdir\fP)
+Set operating directory. Makes \fBnano\fP set up something similar to a
+chroot.
+.TP
+.B \-p (\-\-preserve)
+Preserve the XON and XOFF sequences (^Q and ^S) so they will be caught
+by the terminal.
+.TP
+.B \-q (\-\-quiet)
+Do not report errors in the \fInanorc\fP file and ask them to be
+acknowledged by pressing Enter at startup.
+.TP
+.B \-r \fIcols\fP (\-\-fill=\fIcols\fP)
+Wrap lines at column \fIcols\fP. If this value is 0 or less, wrapping
+will occur at the width of the screen less \fIcols\fP columns, allowing
+the wrap point to vary along with the width of the screen if the screen
+is resized. The default value is \-8.
+.TP
+.B \-s \fIprog\fP (\-\-speller=\fIprog\fP)
+Enable alternative spell checker command.
+.TP
+.B \-t (\-\-tempfile)
+Always save changed buffer without prompting. Same as Pico's \fB-t\fP
+option.
+.TP
+.B \-u (\-\-undo)
+Enable experimental generic-purpose undo code. By default, the undo and redo
+shortcuts are Meta-U and Meta-E, respectively.
+.TP
+.B \-v (\-\-view)
+View file (read only) mode.
+.TP
+.B \-w (\-\-nowrap)
+Disable wrapping of long lines.
+.TP
+.B \-x (\-\-nohelp)
+Disable help screen at bottom of editor.
+.TP
+.B \-z (\-\-suspend)
+Enable suspend ability.
+.TP
+.B \-$ (\-\-softwrap)
+Enable 'soft wrapping'. \fBnano\fP will attempt to display the entire
+contents of a line, even if it is longer than the screen width. Since
+\&'$' normally refers to a variable in the Unix shell, you should specify
+this option last when using other options (e.g. 'nano \-wS$') or pass it
+separately (e.g. 'nano \-wS \-$').
+.TP
+.B \-a, \-b, \-e, \-f, \-g, \-j
+Ignored, for compatibility with Pico.
+
+.SH INITIALIZATION FILE
+\fBnano\fP will read initialization files in the following order:
+\fISYSCONFDIR/nanorc\fP, then \fI~/.nanorc\fP. Please see
+\fBnanorc(5)\fP and the example file \fBnanorc.sample\fP, both of which
+should be provided with \fBnano\fP.
+
+.SH NOTES
+If no alternative spell checker command is specified on the command
+line or in one of the \fInanorc\fP files, \fBnano\fP will check the
+\fBSPELL\fP environment variable for one.
+
+In some cases \fBnano\fP will try to dump the buffer into an emergency
+file. This will happen mainly if \fBnano\fP receives a SIGHUP or
+SIGTERM or runs out of memory. It will write the buffer into a file
+named \fInano.save\fP if the buffer didn't have a name already, or will
+add a ".save" suffix to the current filename. If an emergency file with
+that name already exists in the current directory, it will add ".save"
+plus a number (e.g. ".save.1") to the current filename in order to make
+it unique. In multibuffer mode, \fBnano\fP will write all the open
+buffers to their respective emergency files.
+
+.SH BUGS
+Please send any comments or bug reports to \fBnano@nano-editor.org\fP.
+
+The \fBnano\fP mailing list is available from \fBnano-devel@gnu.org\fP.
+
+To subscribe, email to \fBnano-devel-request@gnu.org\fP with a subject
+of "subscribe".
+
+.SH HOMEPAGE
+http://www.nano-editor.org/
+
+.SH SEE ALSO
+.PD 0
+.TP
+\fBnanorc\fP(5)
+.PP
+\fI/usr/share/doc/nano/\fP (or equivalent on your system)
+
+.SH AUTHOR
+Chris Allegretta <chrisa@asty.org>, et al (see \fIAUTHORS\fP and
+\fITHANKS\fP for details). This manual page was originally written by
+Jordi Mallach <jordi@gnu.org>, for the Debian system (but may be used by
+others).
diff --git a/doc/man/nano.1.html b/doc/man/nano.1.html
new file mode 100644
index 0000000..cb1101e
--- /dev/null
+++ b/doc/man/nano.1.html
@@ -0,0 +1,468 @@
+<!-- Creator : groff version 1.20.1 -->
+<!-- CreationDate: Tue Aug 10 22:44:00 2010 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+ p { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ table { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ h1 { text-align: center }
+</style>
+<title>NANO</title>
+
+</head>
+<body>
+
+<h1 align="center">NANO</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#INITIALIZATION FILE">INITIALIZATION FILE</a><br>
+<a href="#NOTES">NOTES</a><br>
+<a href="#BUGS">BUGS</a><br>
+<a href="#HOMEPAGE">HOMEPAGE</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+<a href="#AUTHOR">AUTHOR</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">nano &minus;
+Nano&rsquo;s ANOther editor, an enhanced free Pico clone</p>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b>
+<i>[OPTIONS]&nbsp;[[+LINE,COLUMN]&nbsp;FILE]...</i></p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">This manual
+page briefly documents the <b>nano</b> command.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b> is
+a small, free and friendly editor which aims to replace
+Pico, the default editor included in the non-free Pine
+package. Rather than just copying Pico&rsquo;s look and
+feel, <b>nano</b> also implements some missing (or disabled
+by default) features in Pico, such as &quot;search and
+replace&quot; and &quot;go to line and column
+number&quot;.</p>
+
+<h2>OPTIONS
+<a name="OPTIONS"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>+</b><i>LINE</i><b>,</b><i>COLUMN</i></p>
+
+<p style="margin-left:22%;">Places cursor at line number
+<i>LINE</i> and column number <i>COLUMN</i> (at least one of
+which must be specified) on startup, instead of the default
+of line 1, column 1.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>&minus;?</b></p></td>
+<td width="8%"></td>
+<td width="30%">
+
+
+<p>Same as <b>-h (&minus;&minus;help)</b>.</p></td>
+<td width="48%">
+</td></tr>
+</table>
+
+<p style="margin-left:11%;"><b>&minus;A
+(&minus;&minus;smarthome)</b></p>
+
+<p style="margin-left:22%;">Make the Home key smarter. When
+Home is pressed anywhere but at the very beginning of
+non-whitespace characters on a line, the cursor will jump to
+that beginning (either forwards or backwards). If the cursor
+is already at that position, it will jump to the true
+beginning of the line.</p>
+
+<p style="margin-left:11%;"><b>&minus;B
+(&minus;&minus;backup)</b></p>
+
+<p style="margin-left:22%;">When saving a file, back up the
+previous version of it to the current filename suffixed with
+a ~.</p>
+
+<p style="margin-left:11%;"><b>&minus;C</b> <i>dir</i>
+<b>(&minus;&minus;backupdir=</b><i>dir</i><b>)</b></p>
+
+<p style="margin-left:22%;">Set the directory where
+<b>nano</b> puts unique backup files if file backups are
+enabled.</p>
+
+<p style="margin-left:11%;"><b>&minus;D
+(&minus;&minus;boldtext)</b></p>
+
+<p style="margin-left:22%;">Use bold text instead of
+reverse video text.</p>
+
+<p style="margin-left:11%;"><b>&minus;E
+(&minus;&minus;tabstospaces)</b></p>
+
+<p style="margin-left:22%;">Convert typed tabs to
+spaces.</p>
+
+<p style="margin-left:11%;"><b>&minus;F
+(&minus;&minus;multibuffer)</b></p>
+
+<p style="margin-left:22%;">Enable multiple file buffers,
+if available.</p>
+
+<p style="margin-left:11%;"><b>&minus;H
+(&minus;&minus;historylog)</b></p>
+
+<p style="margin-left:22%;">Log search and replace strings
+to <i>~/.nano_history</i>, so they can be retrieved in later
+sessions, if <i>nanorc</i> support is available.</p>
+
+<p style="margin-left:11%;"><b>&minus;I
+(&minus;&minus;ignorercfiles)</b></p>
+
+<p style="margin-left:22%;">Don&rsquo;t look at
+<i>SYSCONFDIR/nanorc</i> or <i>~/.nanorc</i>, if
+<i>nanorc</i> support is available.</p>
+
+<p style="margin-left:11%;"><b>&minus;K
+(&minus;&minus;rebindkeypad)</b></p>
+
+<p style="margin-left:22%;">Interpret the numeric keypad
+keys so that they all work properly. You should only need to
+use this option if they don&rsquo;t, as mouse support
+won&rsquo;t work properly with this option enabled.</p>
+
+<p style="margin-left:11%;"><b>&minus;L
+(&minus;&minus;nonewlines)</b></p>
+
+<p style="margin-left:22%;">Don&rsquo;t add newlines to the
+ends of files.</p>
+
+<p style="margin-left:11%;"><b>&minus;N
+(&minus;&minus;noconvert)</b></p>
+
+<p style="margin-left:22%;">Disable automatic conversion of
+files from DOS/Mac format.</p>
+
+<p style="margin-left:11%;"><b>&minus;O
+(&minus;&minus;morespace)</b></p>
+
+<p style="margin-left:22%;">Use the blank line below the
+titlebar as extra editing space.</p>
+
+<p style="margin-left:11%;"><b>&minus;Q</b> <i>str</i>
+<b>(&minus;&minus;quotestr=</b><i>str</i><b>)</b></p>
+
+<p style="margin-left:22%;">Set the quoting string for
+justifying. The default is
+&quot;<i>^([&nbsp;\t]*[#:&gt;\|}])+</i>&quot; if extended
+regular expression support is available, or
+&quot;<i>&gt;&nbsp;</i>&quot; otherwise. Note that <i>\t</i>
+stands for a Tab.</p>
+
+<p style="margin-left:11%;"><b>&minus;R
+(&minus;&minus;restricted)</b></p>
+
+<p style="margin-left:22%;">Restricted mode: don&rsquo;t
+read or write to any file not specified on the command line;
+read any <i>nanorc</i> files; allow suspending; allow a file
+to be appended to, prepended to, or saved under a different
+name if it already has one; or use backup files or spell
+checking. Also accessible by invoking <b>nano</b> with any
+name beginning with &rsquo;r&rsquo; (e.g.
+&quot;rnano&quot;).</p>
+
+<p style="margin-left:11%;"><b>&minus;S
+(&minus;&minus;smooth)</b></p>
+
+<p style="margin-left:22%;">Enable smooth scrolling. Text
+will scroll line-by-line, instead of the usual
+chunk-by-chunk behavior.</p>
+
+<p style="margin-left:11%;"><b>&minus;T</b> <i>cols</i>
+<b>(&minus;&minus;tabsize=</b><i>cols</i><b>)</b></p>
+
+<p style="margin-left:22%;">Set the size (width) of a tab
+to <i>cols</i> columns. The value of <i>cols</i> must be
+greater than 0. The default value is 8.</p>
+
+<p style="margin-left:11%;"><b>&minus;U
+(&minus;&minus;quickblank)</b></p>
+
+<p style="margin-left:22%;">Do quick statusbar blanking.
+Statusbar messages will disappear after 1 keystroke instead
+of 25. Note that <b>-c</b> overrides this.</p>
+
+<p style="margin-left:11%;"><b>&minus;V
+(&minus;&minus;version)</b></p>
+
+<p style="margin-left:22%;">Show the current version number
+and exit.</p>
+
+<p style="margin-left:11%;"><b>&minus;W
+(&minus;&minus;wordbounds)</b></p>
+
+<p style="margin-left:22%;">Detect word boundaries more
+accurately by treating punctuation characters as part of a
+word.</p>
+
+<p style="margin-left:11%;"><b>&minus;Y</b> <i>str</i>
+<b>(&minus;&minus;syntax=</b><i>str</i><b>)</b></p>
+
+<p style="margin-left:22%;">Specify a specific syntax
+highlighting from the <i>nanorc</i> to use, if
+available.</p>
+
+<p style="margin-left:11%;"><b>&minus;c
+(&minus;&minus;const)</b></p>
+
+<p style="margin-left:22%;">Constantly show the cursor
+position. Note that this overrides <b>-U</b>.</p>
+
+<p style="margin-left:11%;"><b>&minus;d
+(&minus;&minus;rebinddelete)</b></p>
+
+<p style="margin-left:22%;">Interpret the Delete key
+differently so that both Backspace and Delete work properly.
+You should only need to use this option if Backspace acts
+like Delete on your system.</p>
+
+<p style="margin-left:11%;"><b>&minus;h
+(&minus;&minus;help)</b></p>
+
+<p style="margin-left:22%;">Show a summary of command line
+options and exit.</p>
+
+<p style="margin-left:11%;"><b>&minus;i
+(&minus;&minus;autoindent)</b></p>
+
+<p style="margin-left:22%;">Indent new lines to the
+previous line&rsquo;s indentation. Useful when editing
+source code.</p>
+
+<p style="margin-left:11%;"><b>&minus;k
+(&minus;&minus;cut)</b></p>
+
+<p style="margin-left:22%;">Enable cut from cursor to end
+of line.</p>
+
+<p style="margin-left:11%;"><b>&minus;l
+(&minus;&minus;nofollow)</b></p>
+
+<p style="margin-left:22%;">If the file being edited is a
+symbolic link, replace the link with a new file instead of
+following it. Good for editing files in <i>/tmp</i>,
+perhaps?</p>
+
+<p style="margin-left:11%;"><b>&minus;m
+(&minus;&minus;mouse)</b></p>
+
+<p style="margin-left:22%;">Enable mouse support, if
+available for your system. When enabled, mouse clicks can be
+used to place the cursor, set the mark (with a double
+click), and execute shortcuts. The mouse will work in the X
+Window System, and on the console when gpm is running.</p>
+
+<p style="margin-left:11%;"><b>&minus;o</b> <i>dir</i>
+<b>(&minus;&minus;operatingdir=</b><i>dir</i><b>)</b></p>
+
+<p style="margin-left:22%;">Set operating directory. Makes
+<b>nano</b> set up something similar to a chroot.</p>
+
+<p style="margin-left:11%;"><b>&minus;p
+(&minus;&minus;preserve)</b></p>
+
+<p style="margin-left:22%;">Preserve the XON and XOFF
+sequences (^Q and ^S) so they will be caught by the
+terminal.</p>
+
+<p style="margin-left:11%;"><b>&minus;q
+(&minus;&minus;quiet)</b></p>
+
+<p style="margin-left:22%;">Do not report errors in the
+<i>nanorc</i> file and ask them to be acknowledged by
+pressing Enter at startup.</p>
+
+<p style="margin-left:11%;"><b>&minus;r</b> <i>cols</i>
+<b>(&minus;&minus;fill=</b><i>cols</i><b>)</b></p>
+
+<p style="margin-left:22%;">Wrap lines at column
+<i>cols</i>. If this value is 0 or less, wrapping will occur
+at the width of the screen less <i>cols</i> columns,
+allowing the wrap point to vary along with the width of the
+screen if the screen is resized. The default value is
+&minus;8.</p>
+
+<p style="margin-left:11%;"><b>&minus;s</b> <i>prog</i>
+<b>(&minus;&minus;speller=</b><i>prog</i><b>)</b></p>
+
+<p style="margin-left:22%;">Enable alternative spell
+checker command.</p>
+
+<p style="margin-left:11%;"><b>&minus;t
+(&minus;&minus;tempfile)</b></p>
+
+<p style="margin-left:22%;">Always save changed buffer
+without prompting. Same as Pico&rsquo;s <b>-t</b>
+option.</p>
+
+<p style="margin-left:11%;"><b>&minus;u
+(&minus;&minus;undo)</b></p>
+
+<p style="margin-left:22%;">Enable experimental
+generic-purpose undo code. By default, the undo and redo
+shortcuts are Meta-U and Meta-E, respectively.</p>
+
+<p style="margin-left:11%;"><b>&minus;v
+(&minus;&minus;view)</b></p>
+
+<p style="margin-left:22%;">View file (read only) mode.</p>
+
+<p style="margin-left:11%;"><b>&minus;w
+(&minus;&minus;nowrap)</b></p>
+
+<p style="margin-left:22%;">Disable wrapping of long
+lines.</p>
+
+<p style="margin-left:11%;"><b>&minus;x
+(&minus;&minus;nohelp)</b></p>
+
+<p style="margin-left:22%;">Disable help screen at bottom
+of editor.</p>
+
+<p style="margin-left:11%;"><b>&minus;z
+(&minus;&minus;suspend)</b></p>
+
+<p style="margin-left:22%;">Enable suspend ability.</p>
+
+<p style="margin-left:11%;"><b>&minus;$
+(&minus;&minus;softwrap)</b></p>
+
+<p style="margin-left:22%;">Enable &rsquo;soft
+wrapping&rsquo;. <b>nano</b> will attempt to display the
+entire contents of a line, even if it is longer than the
+screen width. Since &rsquo;$&rsquo; normally refers to a
+variable in the Unix shell, you should specify this option
+last when using other options (e.g. &rsquo;nano
+&minus;wS$&rsquo;) or pass it separately (e.g. &rsquo;nano
+&minus;wS &minus;$&rsquo;).</p>
+
+<p style="margin-left:11%;"><b>&minus;a, &minus;b,
+&minus;e, &minus;f, &minus;g, &minus;j</b></p>
+
+<p style="margin-left:22%;">Ignored, for compatibility with
+Pico.</p>
+
+<h2>INITIALIZATION FILE
+<a name="INITIALIZATION FILE"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b>
+will read initialization files in the following order:
+<i>SYSCONFDIR/nanorc</i>, then <i>~/.nanorc</i>. Please see
+<b>nanorc(5)</b> and the example file <b>nanorc.sample</b>,
+both of which should be provided with <b>nano</b>.</p>
+
+<h2>NOTES
+<a name="NOTES"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">If no
+alternative spell checker command is specified on the
+command line or in one of the <i>nanorc</i> files,
+<b>nano</b> will check the <b>SPELL</b> environment variable
+for one.</p>
+
+<p style="margin-left:11%; margin-top: 1em">In some cases
+<b>nano</b> will try to dump the buffer into an emergency
+file. This will happen mainly if <b>nano</b> receives a
+SIGHUP or SIGTERM or runs out of memory. It will write the
+buffer into a file named <i>nano.save</i> if the buffer
+didn&rsquo;t have a name already, or will add a
+&quot;.save&quot; suffix to the current filename. If an
+emergency file with that name already exists in the current
+directory, it will add &quot;.save&quot; plus a number (e.g.
+&quot;.save.1&quot;) to the current filename in order to
+make it unique. In multibuffer mode, <b>nano</b> will write
+all the open buffers to their respective emergency
+files.</p>
+
+<h2>BUGS
+<a name="BUGS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Please send any
+comments or bug reports to <b>nano@nano-editor.org</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">The <b>nano</b>
+mailing list is available from
+<b>nano-devel@gnu.org</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">To subscribe,
+email to <b>nano-devel-request@gnu.org</b> with a subject of
+&quot;subscribe&quot;.</p>
+
+<h2>HOMEPAGE
+<a name="HOMEPAGE"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em">http://www.nano-editor.org/</p>
+
+<h2>SEE ALSO
+<a name="SEE ALSO"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>nanorc</b>(5)
+<i><br>
+/usr/share/doc/nano/</i> (or equivalent on your system)</p>
+
+<h2>AUTHOR
+<a name="AUTHOR"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Chris
+Allegretta &lt;chrisa@asty.org&gt;, et al (see
+<i>AUTHORS</i> and <i>THANKS</i> for details). This manual
+page was originally written by Jordi Mallach
+&lt;jordi@gnu.org&gt;, for the Debian system (but may be
+used by others).</p>
+<hr>
+</body>
+</html>
diff --git a/doc/man/nanorc.5 b/doc/man/nanorc.5
new file mode 100644
index 0000000..3c69209
--- /dev/null
+++ b/doc/man/nanorc.5
@@ -0,0 +1,567 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
+.\" Free Software Foundation, Inc.
+.\"
+.\" This document is dual-licensed. You may distribute and/or modify it
+.\" under the terms of either of the following licenses:
+.\"
+.\" * The GNU General Public License, as published by the Free Software
+.\" Foundation, version 3 or (at your option) any later version. You
+.\" should have received a copy of the GNU General Public License
+.\" along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" * The GNU Free Documentation License, as published by the Free
+.\" Software Foundation, version 1.2 or (at your option) any later
+.\" version, with no Invariant Sections, no Front-Cover Texts, and no
+.\" Back-Cover Texts. You should have received a copy of the GNU Free
+.\" Documentation License along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" $Id: nanorc.5 4508 2010-06-21 03:10:10Z astyanax $
+.TH NANORC 5 "version 2.0.0" "August 23, 2007"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.SH NAME
+nanorc \- GNU nano's rcfile
+.SH DESCRIPTION
+This manual page briefly documents GNU \fBnano\fP's rcfile.
+.PP
+\fBnano\fP is a small, free and friendly editor which aims to replace
+Pico, the default editor included in the non-free Pine package. Rather
+than just copying Pico's look and feel, \fBnano\fP also implements some
+missing (or disabled by default) features in Pico, such as "search and
+replace" and "go to line and column number".
+.PP
+The \fInanorc\fP file contains the default settings for \fBnano\fP. It
+should not be in DOS or Mac format. During startup, \fBnano\fP will
+first read its system-wide settings from \fISYSCONFDIR/nanorc\fP, and
+then user-specific settings from \fI~/.nanorc\fP.
+
+.SH OPTIONS
+The configuration file accepts a series of \fBset\fP and \fBunset\fP
+commands, which can be used to configure nano on startup without using
+the command line options. Additionally, the \fBsyntax\fP, \fBcolor\fP,
+and \fBicolor\fP keywords are used to define syntax highlighting rules
+for different text patterns. \fBnano\fP will read one command per line.
+
+Options in \fInanorc\fP files take precedence over nano's defaults, and
+command line options override \fInanorc\fP settings. Also, options are
+unset by default, except for those that take arguments.
+
+Quotes inside string parameters don't have to be escaped with
+backslashes. The last double quote in the string will be treated as its
+end. For example, for the \fBbrackets\fP option, "\fI"')>]}\fP" will
+match \fI"\fP, \fI'\fP, \fI)\fP, \fI>\fP, \fI]\fP, and \fI}\fP.
+
+The supported commands and arguments are:
+
+.TP 3
+.B set/unset allow_insecure_backup
+When backing up files, allow the backup to succeed even if its permissions
+can't be (re)set due to special OS considerations. You should
+NOT enable this option unless you are sure you need it.
+.TP
+.B set/unset autoindent
+Use auto-indentation.
+.TP
+.B set/unset backup
+Create backup files in \fIfilename~\fP.
+.TP
+.B set backupdir "\fIdirectory\fP"
+Set the directory where \fBnano\fP puts unique backup files if file
+backups are enabled.
+.TP
+.B set/unset backwards
+Do backwards searches by default.
+.TP
+.B set/unset boldtext
+Use bold text instead of reverse video text.
+.TP
+.B set brackets "\fIstring\fP"
+Set the characters treated as closing brackets when justifying
+paragraphs. They cannot contain blank characters. Only closing
+punctuation, optionally followed by closing brackets, can end sentences.
+The default value is "\fI"')>]}\fP".
+.TP
+.B set/unset casesensitive
+Do case sensitive searches by default.
+.TP
+.B set/unset const
+Constantly display the cursor position in the status bar.
+.TP
+.B set/unset cut
+Use cut to end of line by default.
+.TP
+.B set fill \fIn\fP
+Wrap lines at column number \fIn\fP. If \fIn\fP is 0 or less, the
+maximum line length will be the screen width less \fIn\fP columns. The
+default value is \-8.
+.TP
+.B set/unset historylog
+Enable \fI~/.nano_history\fP for saving and reading search/replace
+strings.
+.TP
+.B set matchbrackets "\fIstring\fP"
+Set the opening and closing brackets that can be found by bracket
+searches. They cannot contain blank characters. The former set must
+come before the latter set, and both must be in the same order. The
+default value is "\fI(<[{)>]}\fP".
+.TP
+.B set/unset morespace
+Use the blank line below the titlebar as extra editing space.
+.TP
+.B set/unset mouse
+Enable mouse support, if available for your system. When enabled, mouse
+clicks can be used to place the cursor, set the mark (with a double
+click), and execute shortcuts. The mouse will work in the X Window
+System, and on the console when gpm is running.
+.TP
+.B set/unset multibuffer
+Allow inserting files into their own buffers.
+.TP
+.B set/unset noconvert
+Don't convert files from DOS/Mac format.
+.TP
+.B set/unset nofollow
+Don't follow symlinks when writing files.
+.TP
+.B set/unset nohelp
+Don't display the help lists at the bottom of the screen.
+.TP
+.B set/unset nonewlines
+Don't add newlines to the ends of files.
+.TP
+.B set/unset nowrap
+Don't wrap text at all.
+.TP
+.B set operatingdir "\fIdirectory\fP"
+\fBnano\fP will only read and write files inside \fIdirectory\fP and its
+subdirectories. Also, the current directory is changed to here, so
+files are inserted from this diractory. By default, the operating
+directory feature is turned off.
+.TP
+.B set/unset preserve
+Preserve the XON and XOFF keys (^Q and ^S).
+.TP
+.B set punct "\fIstring\fP"
+Set the characters treated as closing punctuation when justifying
+paragraphs. They cannot contain blank characters. Only closing
+punctuation, optionally followed by closing brackets, can end sentences.
+The default value is "\fI!.?\fP".
+.TP
+.B set/unset quiet
+\fBnano\fP will not report errors in the \fInanorc\fP file and ask them
+to be acknowledged by pressing enter at startup. If this is used it
+should be placed at the top of the file to be fully effective.
+.TP
+.B set/unset quickblank
+Do quick statusbar blanking. Statusbar messages will disappear after 1
+keystroke instead of 25.
+.TP
+.B set quotestr "\fIstring\fP"
+The email-quote string, used to justify email-quoted paragraphs. This
+is an extended regular expression if your system supports them,
+otherwise a literal string. The default value is
+"\fI^([\ \\t]*[#:>\\|}])+\fP" if you have extended regular expression
+support, or "\fI>\ \fP" otherwise. Note that '\\t' stands for a literal
+Tab character.
+.TP
+.B set/unset rebinddelete
+Interpret the Delete key differently so that both Backspace and Delete
+work properly. You should only need to use this option if Backspace
+acts like Delete on your system.
+.TP
+.B set/unset rebindkeypad
+Interpret the numeric keypad keys so that they all work properly. You
+should only need to use this option if they don't, as mouse support
+won't work properly with this option enabled.
+.TP
+.B set/unset regexp
+Do extended regular expression searches by default.
+.TP
+.B set/unset smarthome
+Make the Home key smarter. When Home is pressed anywhere but at the
+very beginning of non-whitespace characters on a line, the cursor will
+jump to that beginning (either forwards or backwards). If the cursor is
+already at that position, it will jump to the true beginning of the
+line.
+.TP
+.B set/unset smooth
+Use smooth scrolling by default.
+.TP
+.B set/unset softwrap
+Enable soft line wrapping for easier viewing of very long lones.
+.TP
+.B set speller "\fIspellprog\fP"
+Use spelling checker \fIspellprog\fP instead of the built-in one, which
+calls \fIspell\fP.
+.TP
+.B set/unset suspend
+Allow \fBnano\fP to be suspended.
+.TP
+.B set tabsize \fIn\fP
+Use a tab size of \fIn\fP columns. The value of \fIn\fP must be greater
+than 0. The default value is 8.
+.TP
+.B set/unset tabstospaces
+Convert typed tabs to spaces.
+.TP
+.B set/unset tempfile
+Save automatically on exit, don't prompt.
+.TP
+.B set/unset undo
+Enable experimental generic-purpose undo code.
+.TP
+.B set/unset view
+Disallow file modification.
+.TP
+.B set/unset softwrap
+Enable soft line wrapping for easier viewing of very long lones.
+.TP
+.B set whitespace "\fIstring\fP"
+Set the two characters used to display the first characters of tabs and
+spaces. They must be single-column characters.
+.TP
+.B set/unset wordbounds
+Detect word boundaries more accurately by treating punctuation
+characters as parts of words.
+.TP
+.B syntax "\fIstr\fP" ["\fIfileregex\fP" ... ]
+Defines a syntax named \fIstr\fP which can be activated via the
+\-Y/\-\-syntax command line option, or will be automatically activated if
+the current filename matches the extended regular expression
+\fIfileregex\fP. All following \fBcolor\fP and \fBicolor\fP statements
+will apply to \fIsyntax\fP until a new syntax is defined.
+
+The \fInone\fP syntax is reserved; specifying it on the command line is
+the same as not having a syntax at all. The \fIdefault\fP syntax is
+special: it takes no \fIfileregex\fP, and applies to files that don't
+match any other syntax's \fIfileregex\fP.
+.TP
+.B color \fIfgcolor\fP,\fIbgcolor\fP "\fIregex\fP" ...
+For the currently defined syntax, display all expressions matching
+the extended regular expression \fIregex\fP with foreground color
+\fIfgcolor\fP and background color \fIbgcolor\fP, at least one of which
+must be specified. Legal colors for foreground and background color
+are: white, black, red, blue, green, yellow, magenta, and cyan. You may
+use the prefix "bright" to force a stronger color highlight for the
+foreground. If your terminal supports transparency, not specifying a
+\fIbgcolor\fP tells \fBnano\fP to attempt to use a transparent
+background.
+.TP
+.B icolor \fIfgcolor\fP,\fIbgcolor\fP "\fIregex\fP" ...
+Same as above, except that the expression matching is case insensitive.
+.TP
+.B color \fIfgcolor\fP,\fIbgcolor\fP start="\fIsr\fP" end="\fIer\fP"
+Display expressions which start with the extended regular expression
+\fIsr\fP and end with the extended regular expression \fIer\fP with
+foreground color \fIfgcolor\fP and background color \fIbgcolor\fP,
+at least one of which must be specified. This allows syntax
+highlighting to span multiple lines. Note that all subsequent instances
+of \fIsr\fP after an initial \fIsr\fP is found will be highlighted until
+the first instance of \fIer\fP.
+.TP
+.B icolor \fIfgcolor\fP,\fIbgcolor\fP start="\fIsr\fP" end="\fIer\fP"
+Same as above, except that the expression matching is case insensitive.
+.TP
+.B include "\fIsyntaxfile\fP"
+Read in self-contained color syntaxes from \fIsyntaxfile\fP. Note that
+\fIsyntaxfile\fP can only contain \fBsyntax\fP, \fBcolor\fP, and
+\fBicolor\fP commands.
+.SH KEY BINDINGS
+Key bindings may be reassigned via the following commands:
+.TP
+.B bind \fIkey\fP \fIfunction\fP \fImenu\fP
+Rebinds the key \fIkey\fP to a new function named \fIfunction\fP in the
+context of menu \fImenu\fP. The format of \fIkey\fP should be one of:
+.TP
+.B ^
+followed by an alpha character or the word "Space".
+Example: ^C
+.TP
+.B M-
+followed by a printable character or the word "Space".
+Example: M-C
+.TP
+.B F
+followed by a numeric value from 1 to 16.
+Example: F10
+.TP
+Valid function names to be bound include:
+.TP 3
+.B help
+Invoke the help menu.
+.TP
+.B cancel
+Cancel the current command.
+.TP
+.B exit
+Exit from the program.
+.TP
+.B writeout
+Write the current buffer to disk.
+.TP
+.B justify
+Justify the current text.
+.TP
+.B insert
+Insert a file into the current buffer (or into a new buffer when multibuffer
+is enabled).
+.TP
+.B whereis
+Search for text in the current buffer.
+.TP
+.B searchagain
+Repeat the last search command.
+.TP
+.B up
+Move up in the editor or browser.
+.TP
+.B down
+Move down in the editor or browser.
+.TP
+.B left
+Move left in the editor or browser.
+.TP
+.B right
+Move right in the editor or browser.
+.TP
+.B cut
+Cut the current line of text and store it.
+.TP
+.B uncut
+Copy the currently stored text into the current buffer position.
+.TP
+.B curpos
+Show the current line, column, word positions in the file.
+.TP
+.B firstline
+Move to the first line of the file.
+.TP
+.B lastline
+Move to the last line of the file.
+.TP
+.B gotoline
+Move to a specific line (and column if specified).
+.TP
+.B replace
+Interactively replace text within the current buffer.
+.TP
+.B mark
+Begin selecting text for cutting or pasting at the current position.
+.TP
+.B copytext
+Copy the currently marked text without deleting it.
+.TP
+.B indent
+Indent the currently marked text (shift to the right).
+.TP
+.B unindent
+Un-indent the currently marked text (shift to the left).
+.TP
+.B nextword
+Move the cursor to the beginning of the next word.
+.TP
+.B prevword
+Move the cursor to the beginning of the previous word.
+.TP
+.B home
+Move the cursor to the beginning of the current line.
+.TP
+.B end
+Move the cursor to the end of the current line.
+.TP
+.B beginpara
+Move the cursor to the beginning of the current paragraph.
+.TP
+.B endpara
+Move the cursor to the end of the current paragraph.
+.TP
+.B findbracket
+Move the cursor to the matching bracket (brace, parenthesis, etc.) of the one
+under the cursor.
+.TP
+.B scrollup
+Scroll up one line of text from the current position.
+.TP
+.B scrolldown
+Scroll down one line of text from the current position.
+.TP
+.B prevbuf
+Switch to editing/viewing the previous buffer when using multibuffer mode.
+.TP
+.B nextbuf
+Switch to editing/viewing the next buffer when using multibuffer mode.
+.TP
+.B verbatim
+Insert the next character verbatim into the file.
+.TP
+.B tab
+Insert a tab at the current cursor location.
+.TP
+.B enter
+Insert a new line below the current one.
+.TP
+.B delete
+Delete the character under the cursor.
+.TP
+.B fulljustify
+Justify the entire current file.
+.TP
+.B wordcount
+Count the number of words in the current buffer.
+.TP
+.B refresh
+Refresh the screen.
+.TP
+.B undo
+Undo the text action peformed (add text, delete text, etc).
+.TP
+.B redo
+Redo the last undone action (i.e., undo an undo).
+.TP
+.B suspend
+Suspend the editor (if the suspend function is enabled, see the
+"suspendenable" entry below).
+.TP
+.B casesens
+Toggle case sensitivity in searching (search/replace menus only).
+.TP
+.B regexp
+Toggle whether searching/replacing is based on literal strings or regular expressions.
+.TP
+.B prevhistory
+Show the previous history entry in the prompt menus (e.g. search).
+.TP
+.B nexthistory
+Show the next history entry in the prompt menus (e.g. search).
+.TP
+.B dontreplace
+Switch back to searching instead of replacing.
+.TP
+.B gototext
+Search for files matching a string in the file browser (reading or writing files).
+.TP
+.B dosformat
+When writing a file, switch to writing a DOS format (CR/LF).
+.TP
+.B macformat
+When writing a file, switch to writing a Mac format.
+.TP
+.B append
+When writing a file, append to the end instead of overwriting.
+.TP
+.B prepend
+When writing a file, 'prepend' (write at the beginning) instead of overwriting.
+.TP
+.B backup
+When writing a file, create a backup of the current file.
+.TP
+.B firstfile
+Move to the first file when using the file browser (reading or writing files).
+.TP
+.B lastfile
+Move to the last file when using the file browser (reading or writing files).
+.TP
+.B nohelp
+Toggle showing/hiding the two-line list of key bindings at the bottom of the screen.
+.TP
+.B constupdate
+Constantly display the current line, column, word positions.
+.TP
+.B morespace
+Toggle showing/hiding the blank line which 'separates' the 'title' from the file text.
+.TP
+.B smoothscroll
+Toggle smooth scrolling when moving via the arrow keys.
+.TP
+.B whitespacedisplay
+Toggle whether whitespace is shown.
+.TP
+.B smarthome
+Toggle whether the smart home key function is enabled.
+.TP
+.B autoindent
+Toggle whether new lines will contain the same amount of whitespace as the line above.
+.TP
+.B cuttoend
+Toggle whether cutting text will cut the whole line or just from the current cursor
+position to the end of the line.
+.TP
+.B nowrap
+Toggle whether long lines will be wrapped to the next line.
+.TP
+.B suspendenable
+Toggle whether the suspend sequence (normally ^Z) will suspend the editor window.
+.TP
+
+Valid menu sections are:
+.TP
+.B main
+The main editor window where text is entered.
+.TP
+.B search
+The search menu (AKA whereis).
+.TP
+.B replace
+The 'search to replace' menu.
+.TP
+.B replacewith
+The 'replace with' menu, which comes up after 'search to replace'.
+.TP
+.B gotoline
+The 'goto line (and column)' menu.
+.TP
+.B writeout
+The 'write file' menu.
+.TP
+.B insert
+The 'insert file' menu.
+.TP
+.B extcmd
+The menu for inserting output from an external comman, reached from the insert menu.
+.TP
+.B help
+The help menu.
+.TP
+.B spell
+The interactive spell checker Yes/no menu.
+.TP
+.B browser
+The file browser for inserting or writing a file.
+.TP
+.B whereisfile
+The 'search for a file' menu in the file browser.
+.TP
+.B gotodir
+The 'go to directory' menu.
+.TP
+.B all
+A special name meaning: apply to all menus where this function exists.
+
+.TP
+.B unbind \fIkey\fP \fImenu\fP
+Unbind the key \fIkey\fP from the menu named \fImenu\fP or from all
+menus by using \fIall\fP. Same key syntax as for binding.
+Rebinds the key \fIkey\fP to a new function named \fIfunction\fP in the
+context of menu \fImenu\fP. The format of \fIkey\fP should be one of:
+.SH FILES
+.TP
+.I SYSCONFDIR/nanorc
+System-wide configuration file
+.TP
+.I ~/.nanorc
+Per-user configuration file
+.SH SEE ALSO
+.PD 0
+.TP
+\fBnano\fP(1)
+.PP
+\fI/usr/share/doc/nano/examples/nanorc.sample\fP (or equivalent on your
+system)
+.SH AUTHOR
+Chris Allegretta <chrisa@asty.org>, et al (see \fIAUTHORS\fP and
+\fITHANKS\fP for details). This manual page was originally written by
+Jordi Mallach <jordi@gnu.org>, for the Debian system (but may be used by
+others).
diff --git a/doc/man/nanorc.5.html b/doc/man/nanorc.5.html
new file mode 100644
index 0000000..94e2b6d
--- /dev/null
+++ b/doc/man/nanorc.5.html
@@ -0,0 +1,959 @@
+<!-- Creator : groff version 1.20.1 -->
+<!-- CreationDate: Tue Aug 10 22:44:00 2010 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+ p { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ table { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ h1 { text-align: center }
+</style>
+<title>NANORC</title>
+
+</head>
+<body>
+
+<h1 align="center">NANORC</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#KEY BINDINGS">KEY BINDINGS</a><br>
+<a href="#FILES">FILES</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+<a href="#AUTHOR">AUTHOR</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">nanorc &minus;
+GNU nano&rsquo;s rcfile</p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">This manual
+page briefly documents GNU <b>nano</b>&rsquo;s rcfile.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b> is
+a small, free and friendly editor which aims to replace
+Pico, the default editor included in the non-free Pine
+package. Rather than just copying Pico&rsquo;s look and
+feel, <b>nano</b> also implements some missing (or disabled
+by default) features in Pico, such as &quot;search and
+replace&quot; and &quot;go to line and column
+number&quot;.</p>
+
+<p style="margin-left:11%; margin-top: 1em">The
+<i>nanorc</i> file contains the default settings for
+<b>nano</b>. It should not be in DOS or Mac format. During
+startup, <b>nano</b> will first read its system-wide
+settings from <i>SYSCONFDIR/nanorc</i>, and then
+user-specific settings from <i>~/.nanorc</i>.</p>
+
+<h2>OPTIONS
+<a name="OPTIONS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">The
+configuration file accepts a series of <b>set</b> and
+<b>unset</b> commands, which can be used to configure nano
+on startup without using the command line options.
+Additionally, the <b>syntax</b>, <b>color</b>, and
+<b>icolor</b> keywords are used to define syntax
+highlighting rules for different text patterns. <b>nano</b>
+will read one command per line.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Options in
+<i>nanorc</i> files take precedence over nano&rsquo;s
+defaults, and command line options override <i>nanorc</i>
+settings. Also, options are unset by default, except for
+those that take arguments.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Quotes inside
+string parameters don&rsquo;t have to be escaped with
+backslashes. The last double quote in the string will be
+treated as its end. For example, for the <b>brackets</b>
+option, &quot;<i>&quot;&rsquo;)&gt;]}</i>&quot; will match
+<i>&quot;</i>, <i>&rsquo;</i>, <i>)</i>, <i>&gt;</i>,
+<i>]</i>, and <i>}</i>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">The supported
+commands and arguments are: <b><br>
+set/unset allow_insecure_backup</b></p>
+
+<p style="margin-left:15%;">When backing up files, allow
+the backup to succeed even if its permissions can&rsquo;t be
+(re)set due to special OS considerations. You should NOT
+enable this option unless you are sure you need it.</p>
+
+<p style="margin-left:11%;"><b>set/unset autoindent</b></p>
+
+<p style="margin-left:15%;">Use auto-indentation.</p>
+
+<p style="margin-left:11%;"><b>set/unset backup</b></p>
+
+<p style="margin-left:15%;">Create backup files in
+<i>filename~</i>.</p>
+
+<p style="margin-left:11%;"><b>set backupdir</b>
+<i>directory</i></p>
+
+<p style="margin-left:15%;">Set the directory where
+<b>nano</b> puts unique backup files if file backups are
+enabled.</p>
+
+<p style="margin-left:11%;"><b>set/unset backwards</b></p>
+
+<p style="margin-left:15%;">Do backwards searches by
+default.</p>
+
+<p style="margin-left:11%;"><b>set/unset boldtext</b></p>
+
+<p style="margin-left:15%;">Use bold text instead of
+reverse video text.</p>
+
+<p style="margin-left:11%;"><b>set brackets</b>
+<i>string</i></p>
+
+<p style="margin-left:15%;">Set the characters treated as
+closing brackets when justifying paragraphs. They cannot
+contain blank characters. Only closing punctuation,
+optionally followed by closing brackets, can end sentences.
+The default value is
+&quot;<i>&quot;&rsquo;)&gt;]}</i>&quot;.</p>
+
+<p style="margin-left:11%;"><b>set/unset
+casesensitive</b></p>
+
+<p style="margin-left:15%;">Do case sensitive searches by
+default.</p>
+
+<p style="margin-left:11%;"><b>set/unset const</b></p>
+
+<p style="margin-left:15%;">Constantly display the cursor
+position in the status bar.</p>
+
+<p style="margin-left:11%;"><b>set/unset cut</b></p>
+
+<p style="margin-left:15%;">Use cut to end of line by
+default.</p>
+
+<p style="margin-left:11%;"><b>set fill</b> <i>n</i></p>
+
+<p style="margin-left:15%;">Wrap lines at column number
+<i>n</i>. If <i>n</i> is 0 or less, the maximum line length
+will be the screen width less <i>n</i> columns. The default
+value is &minus;8.</p>
+
+<p style="margin-left:11%;"><b>set/unset historylog</b></p>
+
+<p style="margin-left:15%;">Enable <i>~/.nano_history</i>
+for saving and reading search/replace strings.</p>
+
+<p style="margin-left:11%;"><b>set matchbrackets</b>
+<i>string</i></p>
+
+<p style="margin-left:15%;">Set the opening and closing
+brackets that can be found by bracket searches. They cannot
+contain blank characters. The former set must come before
+the latter set, and both must be in the same order. The
+default value is &quot;<i>(&lt;[{)&gt;]}</i>&quot;.</p>
+
+<p style="margin-left:11%;"><b>set/unset morespace</b></p>
+
+<p style="margin-left:15%;">Use the blank line below the
+titlebar as extra editing space.</p>
+
+<p style="margin-left:11%;"><b>set/unset mouse</b></p>
+
+<p style="margin-left:15%;">Enable mouse support, if
+available for your system. When enabled, mouse clicks can be
+used to place the cursor, set the mark (with a double
+click), and execute shortcuts. The mouse will work in the X
+Window System, and on the console when gpm is running.</p>
+
+<p style="margin-left:11%;"><b>set/unset
+multibuffer</b></p>
+
+<p style="margin-left:15%;">Allow inserting files into
+their own buffers.</p>
+
+<p style="margin-left:11%;"><b>set/unset noconvert</b></p>
+
+<p style="margin-left:15%;">Don&rsquo;t convert files from
+DOS/Mac format.</p>
+
+<p style="margin-left:11%;"><b>set/unset nofollow</b></p>
+
+<p style="margin-left:15%;">Don&rsquo;t follow symlinks
+when writing files.</p>
+
+<p style="margin-left:11%;"><b>set/unset nohelp</b></p>
+
+<p style="margin-left:15%;">Don&rsquo;t display the help
+lists at the bottom of the screen.</p>
+
+<p style="margin-left:11%;"><b>set/unset nonewlines</b></p>
+
+<p style="margin-left:15%;">Don&rsquo;t add newlines to the
+ends of files.</p>
+
+<p style="margin-left:11%;"><b>set/unset nowrap</b></p>
+
+<p style="margin-left:15%;">Don&rsquo;t wrap text at
+all.</p>
+
+<p style="margin-left:11%;"><b>set operatingdir</b>
+<i>directory</i></p>
+
+<p style="margin-left:15%;"><b>nano</b> will only read and
+write files inside <i>directory</i> and its subdirectories.
+Also, the current directory is changed to here, so files are
+inserted from this diractory. By default, the operating
+directory feature is turned off.</p>
+
+<p style="margin-left:11%;"><b>set/unset preserve</b></p>
+
+<p style="margin-left:15%;">Preserve the XON and XOFF keys
+(^Q and ^S).</p>
+
+<p style="margin-left:11%;"><b>set punct</b>
+<i>string</i></p>
+
+<p style="margin-left:15%;">Set the characters treated as
+closing punctuation when justifying paragraphs. They cannot
+contain blank characters. Only closing punctuation,
+optionally followed by closing brackets, can end sentences.
+The default value is &quot;<i>!.?</i>&quot;.</p>
+
+<p style="margin-left:11%;"><b>set/unset quiet</b></p>
+
+<p style="margin-left:15%;"><b>nano</b> will not report
+errors in the <i>nanorc</i> file and ask them to be
+acknowledged by pressing enter at startup. If this is used
+it should be placed at the top of the file to be fully
+effective.</p>
+
+<p style="margin-left:11%;"><b>set/unset quickblank</b></p>
+
+<p style="margin-left:15%;">Do quick statusbar blanking.
+Statusbar messages will disappear after 1 keystroke instead
+of 25.</p>
+
+<p style="margin-left:11%;"><b>set quotestr</b>
+<i>string</i></p>
+
+<p style="margin-left:15%;">The email-quote string, used to
+justify email-quoted paragraphs. This is an extended regular
+expression if your system supports them, otherwise a literal
+string. The default value is
+&quot;<i>^([&nbsp;\t]*[#:&gt;\|}])+</i>&quot; if you have
+extended regular expression support, or
+&quot;<i>&gt;&nbsp;</i>&quot; otherwise. Note that
+&rsquo;\t&rsquo; stands for a literal Tab character.</p>
+
+<p style="margin-left:11%;"><b>set/unset
+rebinddelete</b></p>
+
+<p style="margin-left:15%;">Interpret the Delete key
+differently so that both Backspace and Delete work properly.
+You should only need to use this option if Backspace acts
+like Delete on your system.</p>
+
+<p style="margin-left:11%;"><b>set/unset
+rebindkeypad</b></p>
+
+<p style="margin-left:15%;">Interpret the numeric keypad
+keys so that they all work properly. You should only need to
+use this option if they don&rsquo;t, as mouse support
+won&rsquo;t work properly with this option enabled.</p>
+
+<p style="margin-left:11%;"><b>set/unset regexp</b></p>
+
+<p style="margin-left:15%;">Do extended regular expression
+searches by default.</p>
+
+<p style="margin-left:11%;"><b>set/unset smarthome</b></p>
+
+<p style="margin-left:15%;">Make the Home key smarter. When
+Home is pressed anywhere but at the very beginning of
+non-whitespace characters on a line, the cursor will jump to
+that beginning (either forwards or backwards). If the cursor
+is already at that position, it will jump to the true
+beginning of the line.</p>
+
+<p style="margin-left:11%;"><b>set/unset smooth</b></p>
+
+<p style="margin-left:15%;">Use smooth scrolling by
+default.</p>
+
+<p style="margin-left:11%;"><b>set/unset softwrap</b></p>
+
+<p style="margin-left:15%;">Enable soft line wrapping for
+easier viewing of very long lones.</p>
+
+<p style="margin-left:11%;"><b>set speller</b>
+<i>spellprog</i></p>
+
+<p style="margin-left:15%;">Use spelling checker
+<i>spellprog</i> instead of the built-in one, which calls
+<i>spell</i>.</p>
+
+<p style="margin-left:11%;"><b>set/unset suspend</b></p>
+
+<p style="margin-left:15%;">Allow <b>nano</b> to be
+suspended.</p>
+
+<p style="margin-left:11%;"><b>set tabsize</b> <i>n</i></p>
+
+<p style="margin-left:15%;">Use a tab size of <i>n</i>
+columns. The value of <i>n</i> must be greater than 0. The
+default value is 8.</p>
+
+<p style="margin-left:11%;"><b>set/unset
+tabstospaces</b></p>
+
+<p style="margin-left:15%;">Convert typed tabs to
+spaces.</p>
+
+<p style="margin-left:11%;"><b>set/unset tempfile</b></p>
+
+<p style="margin-left:15%;">Save automatically on exit,
+don&rsquo;t prompt.</p>
+
+<p style="margin-left:11%;"><b>set/unset undo</b></p>
+
+<p style="margin-left:15%;">Enable experimental
+generic-purpose undo code.</p>
+
+<p style="margin-left:11%;"><b>set/unset view</b></p>
+
+<p style="margin-left:15%;">Disallow file modification.</p>
+
+<p style="margin-left:11%;"><b>set/unset softwrap</b></p>
+
+<p style="margin-left:15%;">Enable soft line wrapping for
+easier viewing of very long lones.</p>
+
+<p style="margin-left:11%;"><b>set whitespace</b>
+<i>string</i></p>
+
+<p style="margin-left:15%;">Set the two characters used to
+display the first characters of tabs and spaces. They must
+be single-column characters.</p>
+
+<p style="margin-left:11%;"><b>set/unset wordbounds</b></p>
+
+<p style="margin-left:15%;">Detect word boundaries more
+accurately by treating punctuation characters as parts of
+words.</p>
+
+<p style="margin-left:11%;"><b>syntax</b> <i>str</i>
+<b>[&quot;</b><i>fileregex</i><b>&quot; ... ]</b></p>
+
+<p style="margin-left:15%;">Defines a syntax named
+<i>str</i> which can be activated via the
+&minus;Y/&minus;&minus;syntax command line option, or will
+be automatically activated if the current filename matches
+the extended regular expression <i>fileregex</i>. All
+following <b>color</b> and <b>icolor</b> statements will
+apply to <i>syntax</i> until a new syntax is defined.</p>
+
+<p style="margin-left:15%; margin-top: 1em">The <i>none</i>
+syntax is reserved; specifying it on the command line is the
+same as not having a syntax at all. The <i>default</i>
+syntax is special: it takes no <i>fileregex</i>, and applies
+to files that don&rsquo;t match any other syntax&rsquo;s
+<i>fileregex</i>.</p>
+
+<p style="margin-left:11%;"><b>color</b>
+<i>fgcolor</i><b>,</b><i>bgcolor regex</i> <b>...</b></p>
+
+<p style="margin-left:15%;">For the currently defined
+syntax, display all expressions matching the extended
+regular expression <i>regex</i> with foreground color
+<i>fgcolor</i> and background color <i>bgcolor</i>, at least
+one of which must be specified. Legal colors for foreground
+and background color are: white, black, red, blue, green,
+yellow, magenta, and cyan. You may use the prefix
+&quot;bright&quot; to force a stronger color highlight for
+the foreground. If your terminal supports transparency, not
+specifying a <i>bgcolor</i> tells <b>nano</b> to attempt to
+use a transparent background.</p>
+
+<p style="margin-left:11%;"><b>icolor</b>
+<i>fgcolor</i><b>,</b><i>bgcolor regex</i> <b>...</b></p>
+
+<p style="margin-left:15%;">Same as above, except that the
+expression matching is case insensitive.</p>
+
+<p style="margin-left:11%;"><b>color</b>
+<i>fgcolor</i><b>,</b><i>bgcolor</i>
+<b>start=&quot;</b><i>sr</i><b>&quot;
+end=&quot;</b><i>er</i><b>&quot;</b></p>
+
+<p style="margin-left:15%;">Display expressions which start
+with the extended regular expression <i>sr</i> and end with
+the extended regular expression <i>er</i> with foreground
+color <i>fgcolor</i> and background color <i>bgcolor</i>, at
+least one of which must be specified. This allows syntax
+highlighting to span multiple lines. Note that all
+subsequent instances of <i>sr</i> after an initial <i>sr</i>
+is found will be highlighted until the first instance of
+<i>er</i>.</p>
+
+<p style="margin-left:11%;"><b>icolor</b>
+<i>fgcolor</i><b>,</b><i>bgcolor</i>
+<b>start=&quot;</b><i>sr</i><b>&quot;
+end=&quot;</b><i>er</i><b>&quot;</b></p>
+
+<p style="margin-left:15%;">Same as above, except that the
+expression matching is case insensitive.</p>
+
+<p style="margin-left:11%;"><b>include</b>
+<i>syntaxfile</i></p>
+
+<p style="margin-left:15%;">Read in self-contained color
+syntaxes from <i>syntaxfile</i>. Note that <i>syntaxfile</i>
+can only contain <b>syntax</b>, <b>color</b>, and
+<b>icolor</b> commands.</p>
+
+<h2>KEY BINDINGS
+<a name="KEY BINDINGS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Key bindings
+may be reassigned via the following commands: <b><br>
+bind</b> <i>key function menu</i></p>
+
+<p style="margin-left:22%;">Rebinds the key <i>key</i> to a
+new function named <i>function</i> in the context of menu
+<i>menu</i>. The format of <i>key</i> should be one of:</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>^</b></p></td>
+<td width="8%"></td>
+<td width="78%">
+
+
+<p>followed by an alpha character or the word
+&quot;Space&quot;. Example: ^C</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>M-</b></p></td>
+<td width="8%"></td>
+<td width="78%">
+
+
+<p>followed by a printable character or the word
+&quot;Space&quot;. Example: M-C</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>F</b></p></td>
+<td width="8%"></td>
+<td width="78%">
+
+
+<p>followed by a numeric value from 1 to 16. Example:
+F10</p> </td></tr>
+</table>
+
+<p style="margin-left:11%;">Valid function names to be
+bound include: <b><br>
+help</b></p>
+
+<p style="margin-left:15%;">Invoke the help menu.</p>
+
+<p style="margin-left:11%;"><b>cancel</b></p>
+
+<p style="margin-left:15%;">Cancel the current command.</p>
+
+<p style="margin-left:11%;"><b>exit</b></p>
+
+<p style="margin-left:15%;">Exit from the program.</p>
+
+<p style="margin-left:11%;"><b>writeout</b></p>
+
+<p style="margin-left:15%;">Write the current buffer to
+disk.</p>
+
+<p style="margin-left:11%;"><b>justify</b></p>
+
+<p style="margin-left:15%;">Justify the current text.</p>
+
+<p style="margin-left:11%;"><b>insert</b></p>
+
+<p style="margin-left:15%;">Insert a file into the current
+buffer (or into a new buffer when multibuffer is
+enabled).</p>
+
+<p style="margin-left:11%;"><b>whereis</b></p>
+
+<p style="margin-left:15%;">Search for text in the current
+buffer.</p>
+
+<p style="margin-left:11%;"><b>searchagain</b></p>
+
+<p style="margin-left:15%;">Repeat the last search
+command.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>up</b></p></td>
+<td width="1%"></td>
+<td width="51%">
+
+
+<p>Move up in the editor or browser.</p></td>
+<td width="34%">
+</td></tr>
+</table>
+
+<p style="margin-left:11%;"><b>down</b></p>
+
+<p style="margin-left:15%;">Move down in the editor or
+browser.</p>
+
+<p style="margin-left:11%;"><b>left</b></p>
+
+<p style="margin-left:15%;">Move left in the editor or
+browser.</p>
+
+<p style="margin-left:11%;"><b>right</b></p>
+
+<p style="margin-left:15%;">Move right in the editor or
+browser.</p>
+
+<p style="margin-left:11%;"><b>cut</b></p>
+
+<p style="margin-left:15%;">Cut the current line of text
+and store it.</p>
+
+<p style="margin-left:11%;"><b>uncut</b></p>
+
+<p style="margin-left:15%;">Copy the currently stored text
+into the current buffer position.</p>
+
+<p style="margin-left:11%;"><b>curpos</b></p>
+
+<p style="margin-left:15%;">Show the current line, column,
+word positions in the file.</p>
+
+<p style="margin-left:11%;"><b>firstline</b></p>
+
+<p style="margin-left:15%;">Move to the first line of the
+file.</p>
+
+<p style="margin-left:11%;"><b>lastline</b></p>
+
+<p style="margin-left:15%;">Move to the last line of the
+file.</p>
+
+<p style="margin-left:11%;"><b>gotoline</b></p>
+
+<p style="margin-left:15%;">Move to a specific line (and
+column if specified).</p>
+
+<p style="margin-left:11%;"><b>replace</b></p>
+
+<p style="margin-left:15%;">Interactively replace text
+within the current buffer.</p>
+
+<p style="margin-left:11%;"><b>mark</b></p>
+
+<p style="margin-left:15%;">Begin selecting text for
+cutting or pasting at the current position.</p>
+
+<p style="margin-left:11%;"><b>copytext</b></p>
+
+<p style="margin-left:15%;">Copy the currently marked text
+without deleting it.</p>
+
+<p style="margin-left:11%;"><b>indent</b></p>
+
+<p style="margin-left:15%;">Indent the currently marked
+text (shift to the right).</p>
+
+<p style="margin-left:11%;"><b>unindent</b></p>
+
+<p style="margin-left:15%;">Un-indent the currently marked
+text (shift to the left).</p>
+
+<p style="margin-left:11%;"><b>nextword</b></p>
+
+<p style="margin-left:15%;">Move the cursor to the
+beginning of the next word.</p>
+
+<p style="margin-left:11%;"><b>prevword</b></p>
+
+<p style="margin-left:15%;">Move the cursor to the
+beginning of the previous word.</p>
+
+<p style="margin-left:11%;"><b>home</b></p>
+
+<p style="margin-left:15%;">Move the cursor to the
+beginning of the current line.</p>
+
+<p style="margin-left:11%;"><b>end</b></p>
+
+<p style="margin-left:15%;">Move the cursor to the end of
+the current line.</p>
+
+<p style="margin-left:11%;"><b>beginpara</b></p>
+
+<p style="margin-left:15%;">Move the cursor to the
+beginning of the current paragraph.</p>
+
+<p style="margin-left:11%;"><b>endpara</b></p>
+
+<p style="margin-left:15%;">Move the cursor to the end of
+the current paragraph.</p>
+
+<p style="margin-left:11%;"><b>findbracket</b></p>
+
+<p style="margin-left:15%;">Move the cursor to the matching
+bracket (brace, parenthesis, etc.) of the one under the
+cursor.</p>
+
+<p style="margin-left:11%;"><b>scrollup</b></p>
+
+<p style="margin-left:15%;">Scroll up one line of text from
+the current position.</p>
+
+<p style="margin-left:11%;"><b>scrolldown</b></p>
+
+<p style="margin-left:15%;">Scroll down one line of text
+from the current position.</p>
+
+<p style="margin-left:11%;"><b>prevbuf</b></p>
+
+<p style="margin-left:15%;">Switch to editing/viewing the
+previous buffer when using multibuffer mode.</p>
+
+<p style="margin-left:11%;"><b>nextbuf</b></p>
+
+<p style="margin-left:15%;">Switch to editing/viewing the
+next buffer when using multibuffer mode.</p>
+
+<p style="margin-left:11%;"><b>verbatim</b></p>
+
+<p style="margin-left:15%;">Insert the next character
+verbatim into the file.</p>
+
+<p style="margin-left:11%;"><b>tab</b></p>
+
+<p style="margin-left:15%;">Insert a tab at the current
+cursor location.</p>
+
+<p style="margin-left:11%;"><b>enter</b></p>
+
+<p style="margin-left:15%;">Insert a new line below the
+current one.</p>
+
+<p style="margin-left:11%;"><b>delete</b></p>
+
+<p style="margin-left:15%;">Delete the character under the
+cursor.</p>
+
+<p style="margin-left:11%;"><b>fulljustify</b></p>
+
+<p style="margin-left:15%;">Justify the entire current
+file.</p>
+
+<p style="margin-left:11%;"><b>wordcount</b></p>
+
+<p style="margin-left:15%;">Count the number of words in
+the current buffer.</p>
+
+<p style="margin-left:11%;"><b>refresh</b></p>
+
+<p style="margin-left:15%;">Refresh the screen.</p>
+
+<p style="margin-left:11%;"><b>undo</b></p>
+
+<p style="margin-left:15%;">Undo the text action peformed
+(add text, delete text, etc).</p>
+
+<p style="margin-left:11%;"><b>redo</b></p>
+
+<p style="margin-left:15%;">Redo the last undone action
+(i.e., undo an undo).</p>
+
+<p style="margin-left:11%;"><b>suspend</b></p>
+
+<p style="margin-left:15%;">Suspend the editor (if the
+suspend function is enabled, see the
+&quot;suspendenable&quot; entry below).</p>
+
+<p style="margin-left:11%;"><b>casesens</b></p>
+
+<p style="margin-left:15%;">Toggle case sensitivity in
+searching (search/replace menus only).</p>
+
+<p style="margin-left:11%;"><b>regexp</b></p>
+
+<p style="margin-left:15%;">Toggle whether
+searching/replacing is based on literal strings or regular
+expressions.</p>
+
+<p style="margin-left:11%;"><b>prevhistory</b></p>
+
+<p style="margin-left:15%;">Show the previous history entry
+in the prompt menus (e.g. search).</p>
+
+<p style="margin-left:11%;"><b>nexthistory</b></p>
+
+<p style="margin-left:15%;">Show the next history entry in
+the prompt menus (e.g. search).</p>
+
+<p style="margin-left:11%;"><b>dontreplace</b></p>
+
+<p style="margin-left:15%;">Switch back to searching
+instead of replacing.</p>
+
+<p style="margin-left:11%;"><b>gototext</b></p>
+
+<p style="margin-left:15%;">Search for files matching a
+string in the file browser (reading or writing files).</p>
+
+<p style="margin-left:11%;"><b>dosformat</b></p>
+
+<p style="margin-left:15%;">When writing a file, switch to
+writing a DOS format (CR/LF).</p>
+
+<p style="margin-left:11%;"><b>macformat</b></p>
+
+<p style="margin-left:15%;">When writing a file, switch to
+writing a Mac format.</p>
+
+<p style="margin-left:11%;"><b>append</b></p>
+
+<p style="margin-left:15%;">When writing a file, append to
+the end instead of overwriting.</p>
+
+<p style="margin-left:11%;"><b>prepend</b></p>
+
+<p style="margin-left:15%;">When writing a file,
+&rsquo;prepend&rsquo; (write at the beginning) instead of
+overwriting.</p>
+
+<p style="margin-left:11%;"><b>backup</b></p>
+
+<p style="margin-left:15%;">When writing a file, create a
+backup of the current file.</p>
+
+<p style="margin-left:11%;"><b>firstfile</b></p>
+
+<p style="margin-left:15%;">Move to the first file when
+using the file browser (reading or writing files).</p>
+
+<p style="margin-left:11%;"><b>lastfile</b></p>
+
+<p style="margin-left:15%;">Move to the last file when
+using the file browser (reading or writing files).</p>
+
+<p style="margin-left:11%;"><b>nohelp</b></p>
+
+<p style="margin-left:15%;">Toggle showing/hiding the
+two-line list of key bindings at the bottom of the
+screen.</p>
+
+<p style="margin-left:11%;"><b>constupdate</b></p>
+
+<p style="margin-left:15%;">Constantly display the current
+line, column, word positions.</p>
+
+<p style="margin-left:11%;"><b>morespace</b></p>
+
+<p style="margin-left:15%;">Toggle showing/hiding the blank
+line which &rsquo;separates&rsquo; the &rsquo;title&rsquo;
+from the file text.</p>
+
+<p style="margin-left:11%;"><b>smoothscroll</b></p>
+
+<p style="margin-left:15%;">Toggle smooth scrolling when
+moving via the arrow keys.</p>
+
+<p style="margin-left:11%;"><b>whitespacedisplay</b></p>
+
+<p style="margin-left:15%;">Toggle whether whitespace is
+shown.</p>
+
+<p style="margin-left:11%;"><b>smarthome</b></p>
+
+<p style="margin-left:15%;">Toggle whether the smart home
+key function is enabled.</p>
+
+<p style="margin-left:11%;"><b>autoindent</b></p>
+
+<p style="margin-left:15%;">Toggle whether new lines will
+contain the same amount of whitespace as the line above.</p>
+
+<p style="margin-left:11%;"><b>cuttoend</b></p>
+
+<p style="margin-left:15%;">Toggle whether cutting text
+will cut the whole line or just from the current cursor
+position to the end of the line.</p>
+
+<p style="margin-left:11%;"><b>nowrap</b></p>
+
+<p style="margin-left:15%;">Toggle whether long lines will
+be wrapped to the next line.</p>
+
+<p style="margin-left:11%;"><b>suspendenable</b></p>
+
+<p style="margin-left:15%;">Toggle whether the suspend
+sequence (normally ^Z) will suspend the editor window.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Valid menu
+sections are: <b><br>
+main</b></p>
+
+<p style="margin-left:15%;">The main editor window where
+text is entered.</p>
+
+<p style="margin-left:11%;"><b>search</b></p>
+
+<p style="margin-left:15%;">The search menu (AKA
+whereis).</p>
+
+<p style="margin-left:11%;"><b>replace</b></p>
+
+<p style="margin-left:15%;">The &rsquo;search to
+replace&rsquo; menu.</p>
+
+<p style="margin-left:11%;"><b>replacewith</b></p>
+
+<p style="margin-left:15%;">The &rsquo;replace with&rsquo;
+menu, which comes up after &rsquo;search to
+replace&rsquo;.</p>
+
+<p style="margin-left:11%;"><b>gotoline</b></p>
+
+<p style="margin-left:15%;">The &rsquo;goto line (and
+column)&rsquo; menu.</p>
+
+<p style="margin-left:11%;"><b>writeout</b></p>
+
+<p style="margin-left:15%;">The &rsquo;write file&rsquo;
+menu.</p>
+
+<p style="margin-left:11%;"><b>insert</b></p>
+
+<p style="margin-left:15%;">The &rsquo;insert file&rsquo;
+menu.</p>
+
+<p style="margin-left:11%;"><b>extcmd</b></p>
+
+<p style="margin-left:15%;">The menu for inserting output
+from an external comman, reached from the insert menu.</p>
+
+<p style="margin-left:11%;"><b>help</b></p>
+
+<p style="margin-left:15%;">The help menu.</p>
+
+<p style="margin-left:11%;"><b>spell</b></p>
+
+<p style="margin-left:15%;">The interactive spell checker
+Yes/no menu.</p>
+
+<p style="margin-left:11%;"><b>browser</b></p>
+
+<p style="margin-left:15%;">The file browser for inserting
+or writing a file.</p>
+
+<p style="margin-left:11%;"><b>whereisfile</b></p>
+
+<p style="margin-left:15%;">The &rsquo;search for a
+file&rsquo; menu in the file browser.</p>
+
+<p style="margin-left:11%;"><b>gotodir</b></p>
+
+<p style="margin-left:15%;">The &rsquo;go to
+directory&rsquo; menu.</p>
+
+<p style="margin-left:11%;"><b>all</b></p>
+
+<p style="margin-left:15%;">A special name meaning: apply
+to all menus where this function exists.</p>
+
+<p style="margin-left:11%;"><b>unbind</b> <i>key
+menu</i></p>
+
+<p style="margin-left:15%;">Unbind the key <i>key</i> from
+the menu named <i>menu</i> or from all menus by using
+<i>all</i>. Same key syntax as for binding. Rebinds the key
+<i>key</i> to a new function named <i>function</i> in the
+context of menu <i>menu</i>. The format of <i>key</i> should
+be one of:</p>
+
+<h2>FILES
+<a name="FILES"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><i>SYSCONFDIR/nanorc</i></p>
+
+<p style="margin-left:22%;">System-wide configuration
+file</p>
+
+<p style="margin-left:11%;"><i>~/.nanorc</i></p>
+
+<p style="margin-left:22%;">Per-user configuration file</p>
+
+<h2>SEE ALSO
+<a name="SEE ALSO"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b>(1)
+<i><br>
+/usr/share/doc/nano/examples/nanorc.sample</i> (or
+equivalent on your system)</p>
+
+<h2>AUTHOR
+<a name="AUTHOR"></a>
+</h2>
+
+
+<p style="margin-left:11%;">Chris Allegretta
+&lt;chrisa@asty.org&gt;, et al (see <i>AUTHORS</i> and
+<i>THANKS</i> for details). This manual page was originally
+written by Jordi Mallach &lt;jordi@gnu.org&gt;, for the
+Debian system (but may be used by others).</p>
+<hr>
+</body>
+</html>
diff --git a/doc/man/rnano.1 b/doc/man/rnano.1
new file mode 100644
index 0000000..6b8a9b8
--- /dev/null
+++ b/doc/man/rnano.1
@@ -0,0 +1,98 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+.\" Skeleton based on nano-tiny.1:
+.\" Copyright (C) 2002 Free Software Foundation, Inc.
+.\"
+.\" This document is dual-licensed. You may distribute and/or modify it
+.\" under the terms of either of the following licenses:
+.\"
+.\" * The GNU General Public License, as published by the Free Software
+.\" Foundation, version 3 or (at your option) any later version. You
+.\" should have received a copy of the GNU General Public License
+.\" along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" * The GNU Free Documentation License, as published by the Free
+.\" Software Foundation, version 1.2 or (at your option) any later
+.\" version, with no Invariant Sections, no Front-Cover Texts, and no
+.\" Back-Cover Texts. You should have received a copy of the GNU Free
+.\" Documentation License along with this program. If not, see
+.\" <http://www.gnu.org/licenses/>.
+.\"
+.\" $Id: rnano.1 4188 2007-12-08 04:27:44Z dolorous $
+.TH RNANO 1 "version 2.0.0" "August 23, 2007"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.SH NAME
+rnano \- Restricted mode for Nano's ANOther editor, an enhanced free
+Pico clone
+
+.SH SYNOPSIS
+.B rnano
+.I [OPTIONS]\ [[\+LINE,COLUMN]\ FILE]...
+.br
+
+.SH DESCRIPTION
+This manual page briefly documents the \fBrnano\fP command.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
+.\" respectively.
+\fBnano\fP is a small, free and friendly editor which aims to replace
+Pico, the default editor included in the non-free Pine package. Rather
+than just copying Pico's look and feel, \fBnano\fP also implements some
+missing (or disabled by default) features in Pico, such as "search and
+replace" and "go to line and column number".
+.PP
+\fBrnano\fP is a restricted version of \fBnano\fP, which only edits
+specific files and doesn't allow the user access to the filesystem or a
+command shell.
+.PP
+In restricted mode, \fBnano\fP will \fInot\fP:
+.IP \[bu] 2
+read or write to any file not specified on the command line;
+.IP \[bu]
+read any nanorc files;
+.IP \[bu]
+allow suspending;
+.IP \[bu]
+allow a file to be appended to, prepended to, or saved under a different
+name;
+.IP \[bu]
+use backup files or spell checking.
+
+.SH OPTIONS
+.TP
+.B \+\fILINE\fP,\fICOLUMN\fP
+Places cursor at line number \fILINE\fP and column number \fICOLUMN\fP
+(at least one of which must be specified) on startup, instead of the
+default of line 1, column 1.
+.TP
+.B \-?
+Same as \fB-h (\-\-help)\fP.
+.TP
+.B \-h (\-\-help)
+Show a summary of command line options and exit.
+.TP
+.B \-V (\-\-version)
+Show the current version number and exit.
+.PP
+See the \fBnano\fP(1) manpage for the complete documentation of
+\fBnano\fP.
+
+.SH BUGS
+Please send any comments or bug reports to \fBnano@nano-editor.org\fP.
+
+The \fBnano\fP mailing list is available from \fBnano-devel@gnu.org\fP.
+
+To subscribe, email to \fBnano-devel-request@gnu.org\fP with a subject
+of "subscribe".
+
+.SH HOMEPAGE
+http://www.nano-editor.org/
+
+.SH AUTHOR
+Chris Allegretta <chrisa@asty.org>, et al (see AUTHORS for details).
+This manual page was originally written by Thijs Kinkhorst
+<thijs@kinkhorst.com>, for the Debian system (but may be used by
+others).
diff --git a/doc/man/rnano.1.html b/doc/man/rnano.1.html
new file mode 100644
index 0000000..5fc5991
--- /dev/null
+++ b/doc/man/rnano.1.html
@@ -0,0 +1,219 @@
+<!-- Creator : groff version 1.20.1 -->
+<!-- CreationDate: Tue Aug 10 22:44:00 2010 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+ p { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ table { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ h1 { text-align: center }
+</style>
+<title>RNANO</title>
+
+</head>
+<body>
+
+<h1 align="center">RNANO</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#BUGS">BUGS</a><br>
+<a href="#HOMEPAGE">HOMEPAGE</a><br>
+<a href="#AUTHOR">AUTHOR</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">rnano &minus;
+Restricted mode for Nano&rsquo;s ANOther editor, an enhanced
+free Pico clone</p>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>rnano</b>
+<i>[OPTIONS]&nbsp;[[+LINE,COLUMN]&nbsp;FILE]...</i></p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">This manual
+page briefly documents the <b>rnano</b> command.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>nano</b> is
+a small, free and friendly editor which aims to replace
+Pico, the default editor included in the non-free Pine
+package. Rather than just copying Pico&rsquo;s look and
+feel, <b>nano</b> also implements some missing (or disabled
+by default) features in Pico, such as &quot;search and
+replace&quot; and &quot;go to line and column
+number&quot;.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>rnano</b> is
+a restricted version of <b>nano</b>, which only edits
+specific files and doesn&rsquo;t allow the user access to
+the filesystem or a command shell.</p>
+
+<p style="margin-left:11%; margin-top: 1em">In restricted
+mode, <b>nano</b> will <i>not</i>:</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="2%"></td>
+<td width="86%">
+
+
+<p>read or write to any file not specified on the command
+line;</p> </td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="2%"></td>
+<td width="86%">
+
+
+<p>read any nanorc files;</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="2%"></td>
+<td width="86%">
+
+
+<p>allow suspending;</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="2%"></td>
+<td width="86%">
+
+
+<p>allow a file to be appended to, prepended to, or saved
+under a different name;</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="2%"></td>
+<td width="86%">
+
+
+<p>use backup files or spell checking.</p></td></tr>
+</table>
+
+<h2>OPTIONS
+<a name="OPTIONS"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>+</b><i>LINE</i><b>,</b><i>COLUMN</i></p>
+
+<p style="margin-left:22%;">Places cursor at line number
+<i>LINE</i> and column number <i>COLUMN</i> (at least one of
+which must be specified) on startup, instead of the default
+of line 1, column 1.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>&minus;?</b></p></td>
+<td width="8%"></td>
+<td width="30%">
+
+
+<p>Same as <b>-h (&minus;&minus;help)</b>.</p></td>
+<td width="48%">
+</td></tr>
+</table>
+
+<p style="margin-left:11%;"><b>&minus;h
+(&minus;&minus;help)</b></p>
+
+<p style="margin-left:22%;">Show a summary of command line
+options and exit.</p>
+
+<p style="margin-left:11%;"><b>&minus;V
+(&minus;&minus;version)</b></p>
+
+<p style="margin-left:22%;">Show the current version number
+and exit.</p>
+
+<p style="margin-left:11%; margin-top: 1em">See the
+<b>nano</b>(1) manpage for the complete documentation of
+<b>nano</b>.</p>
+
+<h2>BUGS
+<a name="BUGS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Please send any
+comments or bug reports to <b>nano@nano-editor.org</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">The <b>nano</b>
+mailing list is available from
+<b>nano-devel@gnu.org</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">To subscribe,
+email to <b>nano-devel-request@gnu.org</b> with a subject of
+&quot;subscribe&quot;.</p>
+
+<h2>HOMEPAGE
+<a name="HOMEPAGE"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em">http://www.nano-editor.org/</p>
+
+<h2>AUTHOR
+<a name="AUTHOR"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Chris
+Allegretta &lt;chrisa@asty.org&gt;, et al (see AUTHORS for
+details). This manual page was originally written by Thijs
+Kinkhorst &lt;thijs@kinkhorst.com&gt;, for the Debian system
+(but may be used by others).</p>
+<hr>
+</body>
+</html>
diff --git a/doc/nanorc.sample.in b/doc/nanorc.sample.in
new file mode 100644
index 0000000..f164c26
--- /dev/null
+++ b/doc/nanorc.sample.in
@@ -0,0 +1,312 @@
+## Sample initialization file for GNU nano.
+##
+## Please note that you must have configured nano with --enable-nanorc
+## for this file to be read! Also note that this file should not be in
+## DOS or Mac format, and that characters specially interpreted by the
+## shell should not be escaped here.
+##
+## To make sure a value is disabled, use "unset <option>".
+##
+## For the options that take parameters, the default value is given.
+## Other options are unset by default.
+##
+## Quotes inside string parameters don't have to be escaped with
+## backslashes. The last double quote in the string will be treated as
+## its end. For example, for the "brackets" option, ""')>]}" will match
+## ", ', ), >, ], and }.
+
+## Use auto-indentation.
+# set autoindent
+
+## Backup files to filename~.
+# set backup
+
+## The directory to put unique backup files in.
+# set backupdir ""
+
+## Do backwards searches by default.
+# set backwards
+
+## Use bold text instead of reverse video text.
+# set boldtext
+
+## The characters treated as closing brackets when justifying
+## paragraphs. They cannot contain blank characters. Only closing
+## punctuation, optionally followed by closing brackets, can end
+## sentences.
+##
+# set brackets ""')>]}"
+
+## Do case sensitive searches by default.
+# set casesensitive
+
+## Constantly display the cursor position in the statusbar. Note that
+## this overrides "quickblank".
+# set const
+
+## Use cut to end of line by default.
+# set cut
+
+## Set the line length for wrapping text and justifying paragraphs.
+## If fill is 0 or less, the line length will be the screen width less
+## this number.
+##
+# set fill -8
+
+## Enable ~/.nano_history for saving and reading search/replace strings.
+# set historylog
+
+## The opening and closing brackets that can be found by bracket
+## searches. They cannot contain blank characters. The former set must
+## come before the latter set, and both must be in the same order.
+##
+# set matchbrackets "(<[{)>]}"
+
+## Use the blank line below the titlebar as extra editing space.
+# set morespace
+
+## Enable mouse support, if available for your system. When enabled,
+## mouse clicks can be used to place the cursor, set the mark (with a
+## double click), and execute shortcuts. The mouse will work in the X
+## Window System, and on the console when gpm is running.
+##
+# set mouse
+
+## Allow multiple file buffers (inserting a file will put it into a
+## separate buffer). You must have configured with --enable-multibuffer
+## for this to work.
+##
+# set multibuffer
+
+## Don't convert files from DOS/Mac format.
+# set noconvert
+
+## Don't follow symlinks when writing files.
+# set nofollow
+
+## Don't display the helpful shortcut lists at the bottom of the screen.
+# set nohelp
+
+## Don't add newlines to the ends of files.
+# set nonewlines
+
+## Don't wrap text at all.
+# set nowrap
+
+## Set operating directory. nano will not read or write files outside
+## this directory and its subdirectories. Also, the current directory
+## is changed to here, so any files are inserted from this dir. A blank
+## string means the operating directory feature is turned off.
+##
+# set operatingdir ""
+
+## Preserve the XON and XOFF keys (^Q and ^S).
+# set preserve
+
+## The characters treated as closing punctuation when justifying
+## paragraphs. They cannot contain blank characters. Only closing
+## punctuation, optionally followed by closing brackets, can end
+## sentences.
+##
+# set punct "!.?"
+
+## Do quick statusbar blanking. Statusbar messages will disappear after
+## 1 keystroke instead of 26. Note that "const" overrides this.
+##
+# set quickblank
+
+## The email-quote string, used to justify email-quoted paragraphs.
+## This is an extended regular expression if your system supports them,
+## otherwise a literal string. Default:
+# set quotestr "^([ ]*[#:>\|}])+"
+## if you have extended regular expression support, otherwise:
+# set quotestr "> "
+
+## Fix Backspace/Delete confusion problem.
+# set rebinddelete
+
+## Fix numeric keypad key confusion problem.
+# set rebindkeypad
+
+## Do extended regular expression searches by default.
+# set regexp
+
+## Make the Home key smarter. When Home is pressed anywhere but at the
+## very beginning of non-whitespace characters on a line, the cursor
+## will jump to that beginning (either forwards or backwards). If the
+## cursor is already at that position, it will jump to the true
+## beginning of the line.
+# set smarthome
+
+## Use smooth scrolling as the default.
+# set smooth
+
+## Enable soft line wrapping (AKA full line display).
+# set softwrap
+
+## Use this spelling checker instead of the internal one. This option
+## does not properly have a default value.
+##
+# set speller "aspell -x -c"
+
+## Allow nano to be suspended.
+# set suspend
+
+## Use this tab size instead of the default; it must be greater than 0.
+# set tabsize 8
+
+## Convert typed tabs to spaces.
+# set tabstospaces
+
+## Save automatically on exit, don't prompt.
+# set tempfile
+
+## Enable the new (EXPERIMENTAL) generic undo code, not just for line
+## cuts.
+# set undo
+
+## Disallow file modification. Why would you want this in an rcfile? ;)
+# set view
+
+## The two single-column characters used to display the first characters
+## of tabs and spaces. 187 in ISO 8859-1 (0000BB in Unicode) and 183 in
+## ISO-8859-1 (0000B7 in Unicode) seem to be good values for these.
+# set whitespace " "
+
+## Detect word boundaries more accurately by treating punctuation
+## characters as parts of words.
+# set wordbounds
+
+
+## Color setup
+##
+## Format:
+##
+## syntax "short description" ["filename regex" ...]
+##
+## The "none" syntax is reserved; specifying it on the command line is
+## the same as not having a syntax at all. The "default" syntax is
+## special: it takes no filename regexes, and applies to files that
+## don't match any other syntax's filename regexes.
+##
+## color foreground,background "regex" ["regex"...]
+## or
+## icolor foreground,background "regex" ["regex"...]
+##
+## "color" will do case sensitive matches, while "icolor" will do case
+## insensitive matches.
+##
+## Valid colors: white, black, red, blue, green, yellow, magenta, cyan.
+## For foreground colors, you may use the prefix "bright" to get a
+## stronger highlight.
+##
+## To use multi-line regexes, use the start="regex" end="regex"
+## [start="regex" end="regex"...] format.
+##
+## If your system supports transparency, not specifying a background
+## color will use a transparent color. If you don't want this, be sure
+## to set the background color to black or white.
+##
+## If you wish, you may put your syntaxes in separate files. You can
+## make use of such files (which can only include "syntax", "color", and
+## "icolor" commands) as follows:
+##
+## include "/path/to/syntax_file.nanorc"
+##
+## Unless otherwise noted, the name of the syntax file (without the
+## ".nanorc" extension) should be the same as the "short description"
+## name inside that file. These names are kept fairly short to make
+## them easier to remember and faster to type using nano's -Y option.
+##
+## All regexes should be extended regular expressions.
+
+## Key bindings
+## Please see nanorc(5) for more details on this
+##
+## Here are some samples to get you going
+##
+# bind M-W nowrap main
+# bind M-A casesens search
+# bind ^S research main
+
+## Set this if your backspace key sends delete most of the time (2.1.3+)
+# bind kdel backspace all
+
+
+## Nanorc files
+# include "@PKGDATADIR@/nanorc.nanorc"
+
+## C/C++
+# include "@PKGDATADIR@/c.nanorc"
+
+## Makefiles
+# include "@PKGDATADIR@/makefile.nanorc"
+
+## Cascading Style Sheets
+# include "@PKGDATADIR@/css.nanorc"
+
+## Debian files
+# include "@PKGDATADIR@/debian.nanorc"
+
+## Gentoo files
+# include "@PKGDATADIR@/gentoo.nanorc"
+
+## HTML
+# include "@PKGDATADIR@/html.nanorc"
+
+## PHP
+# include "@PKGDATADIR@/php.nanorc"
+
+## TCL
+# include "@PKGDATADIR@/tcl.nanorc"
+
+## TeX
+# include "@PKGDATADIR@/tex.nanorc"
+
+## Quoted emails (under e.g. mutt)
+# include "@PKGDATADIR@/mutt.nanorc"
+
+## Patch files
+# include "@PKGDATADIR@/patch.nanorc"
+
+## Manpages
+# include "@PKGDATADIR@/man.nanorc"
+
+## Groff
+# include "@PKGDATADIR@/groff.nanorc"
+
+## Perl
+# include "@PKGDATADIR@/perl.nanorc"
+
+## Python
+# include "@PKGDATADIR@/python.nanorc"
+
+## Ruby
+# include "@PKGDATADIR@/ruby.nanorc"
+
+## Java
+# include "@PKGDATADIR@/java.nanorc"
+
+## Fortran
+# include "@PKGDATADIR@/fortran.nanorc"
+
+## Objective-C
+# include "@PKGDATADIR@/objc.nanorc"
+
+## OCaml
+# include "@PKGDATADIR@/ocaml.nanorc"
+
+## AWK
+# include "@PKGDATADIR@/awk.nanorc"
+
+## Assembler
+# include "@PKGDATADIR@/asm.nanorc"
+
+## Bourne shell scripts
+# include "@PKGDATADIR@/sh.nanorc"
+
+## POV-Ray
+# include "@PKGDATADIR@/pov.nanorc"
+
+## XML-type files
+# include "@PKGDATADIR@/xml.nanorc"
diff --git a/doc/syntax/Makefile.am b/doc/syntax/Makefile.am
new file mode 100644
index 0000000..372ddb2
--- /dev/null
+++ b/doc/syntax/Makefile.am
@@ -0,0 +1,30 @@
+pkgdata_DATA = asm.nanorc \
+ c.nanorc \
+ cmake.nanorc \
+ groff.nanorc \
+ html.nanorc \
+ java.nanorc \
+ man.nanorc \
+ mutt.nanorc \
+ nanorc.nanorc \
+ patch.nanorc \
+ perl.nanorc \
+ pov.nanorc \
+ python.nanorc \
+ ruby.nanorc \
+ sh.nanorc \
+ tex.nanorc \
+ tcl.nanorc \
+ php.nanorc \
+ gentoo.nanorc \
+ debian.nanorc \
+ awk.nanorc \
+ css.nanorc \
+ xml.nanorc \
+ ocaml.nanorc \
+ objc.nanorc \
+ fortran.nanorc \
+ makefile.nanorc \
+ mgp.nanorc
+
+EXTRA_DIST = $(pkgdata_DATA)
diff --git a/doc/syntax/Makefile.in b/doc/syntax/Makefile.in
new file mode 100644
index 0000000..90fe9eb
--- /dev/null
+++ b/doc/syntax/Makefile.in
@@ -0,0 +1,432 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = doc/syntax
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glib-2.0.m4 \
+ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkgdatadir)"
+DATA = $(pkgdata_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURSES_LIB = @CURSES_LIB@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKGDATADIR = @PKGDATADIR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+pkgdata_DATA = asm.nanorc \
+ c.nanorc \
+ cmake.nanorc \
+ groff.nanorc \
+ html.nanorc \
+ java.nanorc \
+ man.nanorc \
+ mutt.nanorc \
+ nanorc.nanorc \
+ patch.nanorc \
+ perl.nanorc \
+ pov.nanorc \
+ python.nanorc \
+ ruby.nanorc \
+ sh.nanorc \
+ tex.nanorc \
+ tcl.nanorc \
+ php.nanorc \
+ gentoo.nanorc \
+ debian.nanorc \
+ awk.nanorc \
+ css.nanorc \
+ xml.nanorc \
+ ocaml.nanorc \
+ objc.nanorc \
+ fortran.nanorc \
+ makefile.nanorc \
+ mgp.nanorc
+
+EXTRA_DIST = $(pkgdata_DATA)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/syntax/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/syntax/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkgdataDATA: $(pkgdata_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)"
+ @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \
+ done
+
+uninstall-pkgdataDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(pkgdatadir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-pkgdataDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkgdataDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-pkgdataDATA install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am uninstall-pkgdataDATA
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/syntax/asm.nanorc b/doc/syntax/asm.nanorc
new file mode 100644
index 0000000..e94ee90
--- /dev/null
+++ b/doc/syntax/asm.nanorc
@@ -0,0 +1,17 @@
+## Here is an example for assembler.
+##
+syntax "asm" "\.(S|s|asm)$"
+color red "\<[A-Z_]{2,}\>"
+color brightgreen "\.(data|subsection|text)"
+color green "\.(align|file|globl|global|hidden|section|size|type|weak)"
+color brightyellow "\.(ascii|asciz|byte|double|float|hword|int|long|short|single|struct|word)"
+icolor brightred "^[[:space:]]*[.0-9A-Z_]*:"
+color brightcyan "^[[:space:]]*#[[:space:]]*(define|undef|include|ifn?def|endif|elif|else|if|warning|error)"
+## Highlight strings (note: VERY resource intensive)
+color brightyellow "<[^= ]*>" ""(\\.|[^"])*""
+color brightyellow start=""(\\.|[^"])*\\[[:space:]]*$" end="^(\\.|[^"])*""
+## Highlight comments
+color brightblue "//.*"
+color brightblue start="/\*" end="\*/"
+## Highlight trailing whitespace
+color ,green "[[:space:]]+$"
diff --git a/doc/syntax/awk.nanorc b/doc/syntax/awk.nanorc
new file mode 100644
index 0000000..696ab6a
--- /dev/null
+++ b/doc/syntax/awk.nanorc
@@ -0,0 +1,38 @@
+## Here is an example for awk.
+##
+syntax "awk" "\.awk$"
+## records
+icolor brightred "\$[0-9A-Z_!@#$*?-]+"
+## awk-set variables
+color red "\<(ARGC|ARGIND|ARGV|BINMODE|CONVFMT|ENVIRON|ERRNO|FIELDWIDTHS)\>"
+color red "\<(FILENAME|FNR|FS|IGNORECASE|LINT|NF|NR|OFMT|OFS|ORS)\>"
+color red "\<(PROCINFO|RS|RT|RSTART|RLENGTH|SUBSEP|TEXTDOMAIN)\>"
+## function declarations and special patterns
+color brightgreen "\<(function|extension|BEGIN|END)\>"
+## operators
+color green "(\{|\}|\(|\)|\;|\]|\[|\\|<|>|!|=|&|\+|-|\*|%|/|\?:|\^|\|)"
+## flow control
+color brightyellow "\<(for|if|while|do|else|in|delete|exit)\>"
+color brightyellow "\<(break|continue|return)\>"
+## I/O statements
+color brightgreen "\<(close|getline|next|nextfile|print|printf)\>"
+color brightgreen "\<(system|fflush)\>"
+## standard functions
+color magenta "\<(atan2|cos|exp|int|log|rand|sin|sqrt|srand)\>"
+color magenta "\<(asort|asorti|gensub|gsub|index|length|match)\>"
+color magenta "\<(split|sprintf|strtonum|sub|substr|tolower|toupper)\>"
+color magenta "\<(mktime|strftime|systime)\>"
+color magenta "\<(and|compl|lshift|or|rshift|xor)\>"
+color magenta "\<(bindtextdomain|dcgettext|dcngettext)\>"
+
+##
+## String highlighting. You will in general want your comments and
+## strings to come last, because syntax highlighting rules will be
+## applied in the order they are read in.
+color brightyellow "<[^= ]*>" ""(\\.|[^"])*""
+
+## Comment highlighting
+color brightblue "(^|[[:space:]])#.*$"
+
+## Trailing whitespace
+color ,green "[[:space:]]+$"
diff --git a/doc/syntax/c.nanorc b/doc/syntax/c.nanorc
new file mode 100644
index 0000000..b89c9d2
--- /dev/null
+++ b/doc/syntax/c.nanorc
@@ -0,0 +1,30 @@
+## Here is an example for C/C++.
+##
+syntax "c" "\.(c(c|pp|xx)?|C)$" "\.(h(h|pp|xx)?|H)$" "\.ii?$"
+color brightred "\<[A-Z_][0-9A-Z_]+\>"
+color green "\<(float|double|bool|char|int|short|long|sizeof|enum|void|static|const|struct|union|typedef|extern|(un)?signed|inline)\>"
+color green "\<((s?size)|((u_?)?int(8|16|32|64|ptr)))_t\>"
+color green "\<(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>"
+color brightyellow "\<(for|if|while|do|else|case|default|switch)\>"
+color brightyellow "\<(try|throw|catch|operator|new|delete)\>"
+color magenta "\<(goto|continue|break|return)\>"
+color brightcyan "^[[:space:]]*#[[:space:]]*(define|include(_next)?|(un|ifn?)def|endif|el(if|se)|if|warning|error|pragma)"
+color brightmagenta "'([^'\]|(\\["'abfnrtv\\]))'" "'\\(([0-3]?[0-7]{1,2}))'" "'\\x[0-9A-Fa-f]{1,2}'"
+##
+## GCC builtins
+color cyan "__attribute__[[:space:]]*\(\([^)]*\)\)" "__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__"
+##
+## String highlighting. You will in general want your comments and
+## strings to come last, because syntax highlighting rules will be
+## applied in the order they are read in.
+color brightyellow "<[^= ]*>" ""(\\.|[^"])*""
+##
+## This string is VERY resource intensive!
+color brightyellow start=""(\\.|[^"])*\\[[:space:]]*$" end="^(\\.|[^"])*""
+
+## Comment highlighting
+color brightblue "//.*"
+color brightblue start="/\*" end="\*/"
+
+## Trailing whitespace
+color ,green "[[:space:]]+$"
diff --git a/doc/syntax/cmake.nanorc b/doc/syntax/cmake.nanorc
new file mode 100644
index 0000000..3c52f7d
--- /dev/null
+++ b/doc/syntax/cmake.nanorc
@@ -0,0 +1,19 @@
+## CMake syntax highlighter for GNU Nano
+##
+syntax "cmake" "(CMakeLists\.txt|\.cmake)$"
+
+icolor green "^[[:space:]]*[A-Z0-9_]+"
+icolor brightyellow "^[[:space:]]*(include|include_directories|include_external_msproject)\>"
+
+icolor brightgreen "^[[:space:]]*\<((else|end)?if|else|(end)?while|(end)?foreach|break)\>"
+color brightgreen "\<(NOT|COMMAND|POLICY|TARGET|EXISTS|IS_(DIRECTORY|ABSOLUTE)|DEFINED)\>[[:space:]]"
+color brightgreen "[[:space:]]\<(OR|AND|IS_NEWER_THAN|MATCHES|(STR|VERSION_)?(LESS|GREATER|EQUAL))\>[[:space:]]"
+
+icolor brightred "^[[:space:]]*\<((end)?(function|macro)|return)"
+
+icolor cyan start="\$(\{|ENV\{)" end="\}"
+color magenta "\<(APPLE|UNIX|WIN32|CYGWIN|BORLAND|MINGW|MSVC(_IDE|60|71|80|90)?)\>"
+
+icolor brightblue "^([[:space:]]*)?#.*"
+icolor brightblue "[[:space:]]#.*"
+color ,green "[[:space:]]+$"
diff --git a/doc/syntax/css.nanorc b/doc/syntax/css.nanorc
new file mode 100644
index 0000000..98eea18
--- /dev/null
+++ b/doc/syntax/css.nanorc
@@ -0,0 +1,9 @@
+## Here is an example for css files.
+##
+syntax "css" "\.css$"
+color brightred "."
+color brightyellow start="\{" end="\}"
+color brightwhite start=":" end="([;^\{]|$)"
+color brightblue ":active|:focus|:hover|:link|:visited|:link|:after|:before|$"
+color brightblue start="\/\*" end="\\*/"
+color green ";|:|\{|\}"
diff --git a/doc/syntax/debian.nanorc b/doc/syntax/debian.nanorc
new file mode 100644
index 0000000..a945dee
--- /dev/null
+++ b/doc/syntax/debian.nanorc
@@ -0,0 +1,20 @@
+## Here is an exmaple for apt's sources.list
+## Adapted from http://milianw.de/blog/Syntax-Highlighting-in-Nano
+## (mail@milianw.de).
+##
+syntax "apt/sources.list" "sources\.list(\.old|~)?$"
+# component
+color brightmagenta "^deb(-src)? ((http|file|ftp):/[^ ]+|cdrom:\[[^\]]+\]/|cdrom:\[[-a-zA-Z0-9\._\(\) ]+\]/) [^ ]+ .+$"
+# distribution
+color brightred "^deb(-src)? ((http|file|ftp):/[^ ]+|cdrom:\[[^\]]+\]/|cdrom:\[[-a-zA-Z0-9\._\(\) ]+\]/) [^ ]+"
+# URI
+color brightgreen "(http|file|ftp):/[^ ]+"
+# cdroms
+# [^\]] does not work...
+color brightgreen "cdrom:\[[-a-zA-Z0-9\._\(\) ]+\]/"
+# deb / deb-src
+color yellow "^deb"
+color yellow "^deb-src"
+# comments
+color brightblue "#.*"
+
diff --git a/doc/syntax/fortran.nanorc b/doc/syntax/fortran.nanorc
new file mode 100644
index 0000000..cc0c726
--- /dev/null
+++ b/doc/syntax/fortran.nanorc
@@ -0,0 +1,41 @@
+## Here is an example for Fortran 90/95
+
+syntax "fortran" "\.(f|f90|f95)$"
+
+#color red "\<[A-Z_]a[0-9A-Z_]+\>"
+color red "\<[0-9]+\>"
+
+icolor green "\<(action|advance|all|allocatable|allocated|any|apostrophe)\>"
+icolor green "\<(append|asis|assign|assignment|associated|character|common)\>"
+icolor green "\<(complex|data|default|delim|dimension|double precision)\>"
+icolor green "\<(elemental|epsilon|external|file|fmt|form|format|huge)\>"
+icolor green "\<(implicit|include|index|inquire|integer|intent|interface)\>"
+icolor green "\<(intrinsic|iostat|kind|logical|module|none|null|only)>"
+icolor green "\<(operator|optional|pack|parameter|pointer|position|private)\>"
+icolor green "\<(program|public|real|recl|recursive|selected_int_kind)\>"
+icolor green "\<(selected_real_kind|subroutine|status)\>"
+
+icolor cyan "\<(abs|achar|adjustl|adjustr|allocate|bit_size|call|char)\>"
+icolor cyan "\<(close|contains|count|cpu_time|cshift|date_and_time)\>"
+icolor cyan "\<(deallocate|digits|dot_product|eor|eoshift|function|iachar)\>"
+icolor cyan "\<(iand|ibclr|ibits|ibset|ichar|ieor|iolength|ior|ishft|ishftc)\>"
+icolor cyan "\<(lbound|len|len_trim|matmul|maxexponent|maxloc|maxval|merge)\>"
+icolor cyan "\<(minexponent|minloc|minval|mvbits|namelist|nearest|nullify)\>"
+icolor cyan "\<(open|pad|present|print|product|pure|quote|radix)\>"
+icolor cyan "\<(random_number|random_seed|range|read|readwrite|replace)\>"
+icolor cyan "\<(reshape|rewind|save|scan|sequence|shape|sign|size|spacing)\>"
+icolor cyan "\<(spread|sum|system_clock|target|transfer|transpose|trim)\>"
+icolor cyan "\<(ubound|unpack|verify|write|tiny|type|use|yes)\>"
+
+icolor yellow "\<(.and.|case|do|else|else?if|else?where|end|end?do|end?if)\>"
+icolor yellow "\<(end?select|.eqv.|forall|if|lge|lgt|lle|llt|.neqv.|.not.)\>"
+icolor yellow "\<(.or.|repeat|select case|then|where|while)\>"
+
+icolor magenta "\<(continue|cycle|exit|go?to|result|return)\>"
+
+## String highlighting.
+icolor yellow "<[^= ]*>" ""(\\.|[^"])*""
+
+## Comment highlighting
+icolor blue "!.*"
+
diff --git a/doc/syntax/gentoo.nanorc b/doc/syntax/gentoo.nanorc
new file mode 100644
index 0000000..2ad1597
--- /dev/null
+++ b/doc/syntax/gentoo.nanorc
@@ -0,0 +1,55 @@
+## Here is an example for Gentoo ebuilds/eclasses
+##
+syntax "ebuild" "\.e(build|class)$"
+## All the standard portage functions
+color brightgreen "^src_(unpack|prepare|configure|compile|install|test)" "^pkg_(config|nofetch|setup|(pre|post)(inst|rm))"
+## Highlight bash related syntax
+color green "\<(case|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|shift|then|time|until|while|continue|break)\>"
+color green "\<(declare|eval|exec|let)\>"
+color green "(\{|\}|\(|\)|\;|\]|\[|`|\\|\$|<|>|!|=|&|\|)"
+color green "-[edfgruwxL]\>"
+color green "-(eq|ne|gt|lt|ge|le|s|n|z)\>"
+## Highlight variables ... official portage ones in red, all others in bright red
+color brightred "\$\{?[a-zA-Z_0-9]+\}?"
+color red "\<(EAPI|ARCH|HOMEPAGE|DESCRIPTION|IUSE|SRC_URI|LICENSE|SLOT|KEYWORDS|(P|R)?DEPEND|PROVIDE|PROPERTIES|RESTRICT|USERLAND)\>"
+color red "\<(S|D|T|PV|PF|P|PN|PR|PVR|A|CATEGORY|DISTDIR|FILESDIR|ROOT|WORKDIR)\>" "\<(AS|C(PP|XX)?|LD)FLAGS\>" "\<C(HOST|TARGET|BUILD)\>"
+color red "\<QA_((TEXTRELS|EXECSTACK|WX_LOAD)(_[a-zA-Z_0-9]+)?|DT_HASH|PRESTRIPPED)\>" "\<WANT_AUTO(CONF|MAKE)\>" "\<AT_M4DIR\>"
+## Highlight portage commands
+color magenta "\<use(_(with|enable))?\> [!a-zA-Z0-9_+ -]*" "inherit.*"
+color brightblue "\<e(begin|end|conf|install|make|qmake[34]|ant|(qa)?warn|infon?|error|log|patch|new(group|user))\>"
+color brightblue "\<e(pause|beep|mktemp|(cvs|svn)_clean|punt_cxx)\>" "\<e(aclocal|auto(reconf|header|conf|make))\>"
+color brightblue "\<built_with_use\>" "\<make_desktop_entry\>" "\<unpack(_(makeself|pdv))?\>"
+color brightblue "\<die\>" "\<use(_(with|enable))?\>" "\<inherit\>" "\<has\>" "\<(has|best)_version\>"
+color brightblue "\<(do|new)(ins|(games)?s?bin|doc|lib(\.so|\.a)?|man|info|exe|initd|confd|envd|pam|menu|icon)\>"
+color brightblue "\<do(python|sed|dir|hard|sym|html|jar|mo)\>" "\<keepdir\>"
+color brightblue "prepall(docs|info|man|strip)?" "prep(info|lib|lib\.(so|a)|man|strip|gamesdirs)"
+color brightblue "\<(doc|ins|exe)?into\>" "\<(f|games)(owners|perms)\>" "\<(exe|ins|dir)opts\>"
+## Highlight common commands used in ebuilds
+color blue "\<make\>" "\<(awk|cat|cd|chmod|chown|cp|echo|env|export|find|e?grep|ln|mkdir|mv|rm|sed|set|tar|touch|unset|xargs)\>"
+## Highlight comments (doesnt work that well)
+color yellow "(^|[[:space:]])#.*$"
+## Highlight strings (doesnt work that well)
+color brightyellow ""(\\.|[^\"])*"" "'(\\.|[^'])*'"
+## Trailing space is bad!
+color ,green "[[:space:]]+$"
+
+## Here is an example for Portage control files
+##
+syntax "/etc/portage" "\.(keywords|mask|unmask|use)(/.+)?$"
+## Base text:
+color green "^.+$"
+## Use flags:
+color brightred "[[:space:]]+\+?[a-zA-Z0-9_-]+"
+color brightblue "[[:space:]]+-[a-zA-Z0-9_-]+"
+## Likely version and slot numbers:
+color magenta "-[[:digit:]].*([[:space:]]|$)"
+color magenta ":[^[:space:]]+([[:space:]]|$)"
+## Accepted arches:
+color white "[~-]?\<(alpha|amd64|arm|hppa|ia64|mips|ppc|ppc64|s390|sh|sparc(-fbsd)?|x86(-fbsd)?)\>"
+color white "[[:space:]][*~-]?\*"
+## Categories:
+color cyan "^[[:space:]]*.*/"
+## Masking regulators:
+color brightmagenta "^[[:space:]]*(=|~|<|<=|=<|>|>=|=>)"
+## Comments:
+color yellow "#.*$"
diff --git a/doc/syntax/groff.nanorc b/doc/syntax/groff.nanorc
new file mode 100644
index 0000000..02b82b8
--- /dev/null
+++ b/doc/syntax/groff.nanorc
@@ -0,0 +1,24 @@
+## Here is an example for groff.
+##
+syntax "groff" "\.m[ems]$" "\.rof" "\.tmac$" "^tmac."
+## The argument of .ds or .nr
+color cyan "^\.(ds|nr) [^[[:space:]]]*"
+## Single character escapes
+color brightmagenta "\\."
+## Highlight the argument of \f or \s in the same color
+color brightmagenta "\\f." "\\f\(.." "\\s(\+|\-)?[0-9]"
+## Newlines
+color cyan "(\\|\\\\)n(.|\(..)"
+color cyan start="(\\|\\\\)n\[" end="]"
+## Requests
+color brightgreen "^\.[[:space:]]*[^[[:space:]]]*"
+## Comments
+color yellow "^\.\\".*$"
+## Strings
+color green "(\\|\\\\)\*(.|\(..)"
+color green start="(\\|\\\\)\*\[" end="]"
+## Characters
+color brightred "\\\(.."
+color brightred start="\\\[" end="]"
+## Macro arguments
+color brightcyan "\\\\\$[1-9]"
diff --git a/doc/syntax/html.nanorc b/doc/syntax/html.nanorc
new file mode 100644
index 0000000..d31467d
--- /dev/null
+++ b/doc/syntax/html.nanorc
@@ -0,0 +1,5 @@
+## Here is a short example for HTML.
+##
+syntax "html" "\.html$"
+color blue start="<" end=">"
+color red "&[^;[[:space:]]]*;"
diff --git a/doc/syntax/java.nanorc b/doc/syntax/java.nanorc
new file mode 100644
index 0000000..a432f81
--- /dev/null
+++ b/doc/syntax/java.nanorc
@@ -0,0 +1,12 @@
+## Here is an example for Java.
+##
+syntax "java" "\.java$"
+color green "\<(boolean|byte|char|double|float|int|long|new|short|this|transient|void)\>"
+color red "\<(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\>"
+color cyan "\<(abstract|class|extends|final|implements|import|instanceof|interface|native|package|private|protected|public|static|strictfp|super|synchronized|throws|volatile)\>"
+color red ""[^"]*""
+color yellow "\<(true|false|null)\>"
+color blue "//.*"
+color blue start="/\*" end="\*/"
+color brightblue start="/\*\*" end="\*/"
+color ,green "[[:space:]]+$"
diff --git a/doc/syntax/makefile.nanorc b/doc/syntax/makefile.nanorc
new file mode 100644
index 0000000..93a1e76
--- /dev/null
+++ b/doc/syntax/makefile.nanorc
@@ -0,0 +1,8 @@
+# unattributed syntax highlighting example from wiki.linuxhelp.net/
+
+syntax "makefile" "Makefile[^/]*$"
+color red "[:=]"
+color magenta "\<(if|ifeq|else|endif)\>"
+color blue "\$+[{(][a-zA-Z0-9_-]+[})]"
+color brightblue "^[^ ]+:"
+color green "#.*$"
diff --git a/doc/syntax/man.nanorc b/doc/syntax/man.nanorc
new file mode 100644
index 0000000..85efd26
--- /dev/null
+++ b/doc/syntax/man.nanorc
@@ -0,0 +1,9 @@
+## Here is an example for manpages.
+##
+syntax "man" "\.[1-9]x?$"
+color green "\.(S|T)H.*$"
+color brightgreen "\.(S|T)H" "\.TP"
+color brightred "\.(BR?|I[PR]?).*$"
+color brightblue "\.(BR?|I[PR]?|PP)"
+color brightwhite "\\f[BIPR]"
+color yellow "\.(br|DS|RS|RE|PD)"
diff --git a/doc/syntax/mgp.nanorc b/doc/syntax/mgp.nanorc
new file mode 100644
index 0000000..daba282
--- /dev/null
+++ b/doc/syntax/mgp.nanorc
@@ -0,0 +1,8 @@
+## Here is an example for Magicpoint presentations
+##
+syntax "mgp" "\.mgp$"
+header "^%include.*"
+icolor green "^%[a-z].*$"
+color cyan "(^|[[:space:]])#.*$"
+color cyan "(^|[[:space:]])%%.*$"
+color ,green "[[:space:]]+$"
diff --git a/doc/syntax/mutt.nanorc b/doc/syntax/mutt.nanorc
new file mode 100644
index 0000000..2e68399
--- /dev/null
+++ b/doc/syntax/mutt.nanorc
@@ -0,0 +1,4 @@
+## Here is an example for quoted emails (under e.g. mutt).
+##
+syntax "mutt"
+color green "^>.*"
diff --git a/doc/syntax/nanorc.nanorc b/doc/syntax/nanorc.nanorc
new file mode 100644
index 0000000..19ab533
--- /dev/null
+++ b/doc/syntax/nanorc.nanorc
@@ -0,0 +1,16 @@
+## Here is an example for nanorc files.
+##
+syntax "nanorc" "\.?nanorc$"
+## Possible errors and parameters
+icolor brightwhite "^[[:space:]]*((un)?set|include|syntax|i?color).*$"
+## Keywords
+icolor brightgreen "^[[:space:]]*(set|unset)[[:space:]]+(allow_insecure_backup|autoindent|backup|backupdir|backwards|boldtext|brackets|casesensitive|const|cut|fill|historylog|matchbrackets|morespace|mouse|multibuffer|noconvert|nofollow|nohelp|nonewlines|nowrap|operatingdir|preserve|punct)\>" "^[[:space:]]*(set|unset)[[:space:]]+(quickblank|quotestr|rebinddelete|rebindkeypad|regexp|smarthome|smooth|softwrap|speller|suspend|suspendenable|tabsize|tabstospaces|tempfile|undo|view|whitespace|wordbounds)\>"
+icolor green "^[[:space:]]*(set|unset|include|syntax|header)\>"
+## Colors
+icolor yellow "^[[:space:]]*i?color[[:space:]]*(bright)?(white|black|red|blue|green|yellow|magenta|cyan)?(,(white|black|red|blue|green|yellow|magenta|cyan))?\>"
+icolor magenta "^[[:space:]]*i?color\>" "\<(start|end)="
+## Strings
+icolor white ""(\\.|[^"])*""
+## Comments
+icolor brightblue "^[[:space:]]*#.*$"
+icolor cyan "^[[:space:]]*##.*$"
diff --git a/doc/syntax/objc.nanorc b/doc/syntax/objc.nanorc
new file mode 100644
index 0000000..cdf6e48
--- /dev/null
+++ b/doc/syntax/objc.nanorc
@@ -0,0 +1,41 @@
+## Here is an example for C/C++/Obj-C.
+##
+syntax "m" "\.m$"
+
+
+## Stuffs
+color brightwhite "\<[A-Z_][0-9A-Z_]+\>"
+color green "\<(float|double|BOOL|bool|char|int|short|long|id|sizeof|enum|void|static|const|struct|union|typedef|extern|(un)?signed|inline)\>"
+color green "\<[[:alpha:]_][[:alnum:]_]*_t\>"
+color green "\<(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>"
+color brightgreen "\<(for|if|while|do|else|case|default|switch)\>"
+color brightgreen "\<(try|throw|catch|operator|new|delete)\>"
+color brightgreen "\<(goto|continue|break|return)\>"
+color brightgreen "@\<(en(code|d)|i(mplementation|nterface)|selector)\>"
+##
+## GCC builtins
+color cyan "__attribute__[[:space:]]*\(\([^)]*\)\)" "__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__"
+
+## Selector/method
+color brightmagenta "(^|[[:space:]])\[.*[[:space:]].*\]"
+color white ":[[:alnum:]]*"
+color magenta "[[:alnum:]]*:"
+color white "\[[^][:space:]]*\]"
+
+##
+## String highlighting. You will in general want your comments and
+## strings to come last, because syntax highlighting rules will be
+## applied in the order they are read in.
+color brightblack "'([^'\]|(\\["'abfnrtv\\]))'" "'\\(([0-3]?[0-7]{1,2}))'" "'\\x[0-9A-Fa-f]{1,2}'"
+color brightblack "<[^= ]*>" ""(\\.|[^"])*""
+color brightblue "@"(\\.|[^"])*""
+##
+## This string is VERY resource intensive!
+## color brightyellow start=""(\\.|[^"])*\\[[:space:]]*$" end="^(\\.|[^"])*""
+
+color brightblue "^[[:space:]]*#[[:space:]]*(define|include|import|(un|ifn?)def|endif|el(if|se)|if|warning|error)"
+
+## Comment highlighting
+color yellow "//.*"
+color yellow start="/\*" end="\*/"
+
diff --git a/doc/syntax/ocaml.nanorc b/doc/syntax/ocaml.nanorc
new file mode 100644
index 0000000..fc71ae2
--- /dev/null
+++ b/doc/syntax/ocaml.nanorc
@@ -0,0 +1,27 @@
+# OCaml sample nanorc
+#
+syntax "ocaml" "\.mli?$"
+#uid
+color red "\<[A-Z][0-9a-z_]{2,}\>"
+#declarations
+color green "\<(let|val|method|in|and|rec|private|virtual|constraint)\>"
+#structure items
+color red "\<(type|open|class|module|exception|external)\>"
+#patterns
+color blue "\<(fun|function|functor|match|try|with)\>"
+#patterns-modifiers
+color yellow "\<(as|when|of)\>"
+#conditions
+color cyan "\<(if|then|else)\>"
+#blocs
+color magenta "\<(begin|end|object|struct|sig|for|while|do|done|to|downto)\>"
+#constantes
+color green "\<(true|false)\>"
+#modules/classes
+color green "\<(include|inherit|initializer)\>"
+#expr modifiers
+color yellow "\<(new|ref|mutable|lazy|assert|raise)\>"
+#comments
+color white start="\(\*" end="\*\)"
+#strings (no multiline handling yet)
+color brightblack ""[^\"]*""
diff --git a/doc/syntax/patch.nanorc b/doc/syntax/patch.nanorc
new file mode 100644
index 0000000..a788b35
--- /dev/null
+++ b/doc/syntax/patch.nanorc
@@ -0,0 +1,10 @@
+## Here is an example for patch files.
+##
+syntax "patch" "\.(patch|diff)$"
+color brightgreen "^\+.*"
+color green "^\+\+\+.*"
+color brightblue "^ .*"
+color brightred "^-.*"
+color red "^---.*"
+color brightyellow "^@@.*"
+color magenta "^diff.*"
diff --git a/doc/syntax/perl.nanorc b/doc/syntax/perl.nanorc
new file mode 100644
index 0000000..b5a5606
--- /dev/null
+++ b/doc/syntax/perl.nanorc
@@ -0,0 +1,12 @@
+## Here is an example for Perl.
+##
+syntax "perl" "\.p[lm]$"
+header "^#!.*/perl[-0-9._]*"
+color red "\<(accept|alarm|atan2|bin(d|mode)|c(aller|h(dir|mod|op|own|root)|lose(dir)?|onnect|os|rypt)|d(bm(close|open)|efined|elete|ie|o|ump)|e(ach|of|val|x(ec|ists|it|p))|f(cntl|ileno|lock|ork))\>" "\<(get(c|login|peername|pgrp|ppid|priority|pwnam|(host|net|proto|serv)byname|pwuid|grgid|(host|net)byaddr|protobynumber|servbyport)|([gs]et|end)(pw|gr|host|net|proto|serv)ent|getsock(name|opt)|gmtime|goto|grep|hex|index|int|ioctl|join)\>" "\<(keys|kill|last|length|link|listen|local(time)?|log|lstat|m|mkdir|msg(ctl|get|snd|rcv)|next|oct|open(dir)?|ord|pack|pipe|pop|printf?|push|q|qq|qx|rand|re(ad(dir|link)?|cv|do|name|quire|set|turn|verse|winddir)|rindex|rmdir|s|scalar|seek(dir)?)\>" "\<(se(lect|mctl|mget|mop|nd|tpgrp|tpriority|tsockopt)|shift|shm(ctl|get|read|write)|shutdown|sin|sleep|socket(pair)?|sort|spli(ce|t)|sprintf|sqrt|srand|stat|study|substr|symlink|sys(call|read|tem|write)|tell(dir)?|time|tr(y)?|truncate|umask)\>" "\<(un(def|link|pack|shift)|utime|values|vec|wait(pid)?|wantarray|warn|write)\>"
+color magenta "\<(continue|else|elsif|do|for|foreach|if|unless|until|while|eq|ne|lt|gt|le|ge|cmp|x|my|sub|use|package|can|isa)\>"
+icolor cyan start="[$@%]" end="( |[^0-9A-Z_]|-)"
+color yellow "".*"|qq\|.*\|"
+color white "[sm]/.*/"
+color white start="(^use| = new)" end=";"
+color green "#.*"
+color yellow start="<< 'STOP'" end="STOP"
diff --git a/doc/syntax/php.nanorc b/doc/syntax/php.nanorc
new file mode 100644
index 0000000..8ef495f
--- /dev/null
+++ b/doc/syntax/php.nanorc
@@ -0,0 +1,30 @@
+## Here is an example for PHP
+##
+syntax "php" "\.php[2345s~]?$"
+
+## php markings
+color brightgreen "(<\?(php)?|\?>)"
+
+## functions
+color white "\<[a-z_]*\("
+
+## types
+color green "\<(var|float|global|double|bool|char|int|enum|const)\>"
+
+## structure
+color brightyellow "\<(class|new|private|public|function|for|foreach|if|while|do|else|elseif|case|default|switch)\>"
+
+## control flow
+color magenta "\<(goto|continue|break|return)\>"
+
+## strings
+color brightyellow "<[^= ]*>" ""(\.|[^"])*""
+
+## comments
+color brightblue "//.*"
+color brightblue start="/\*" end="\*/"
+#color blue start="<" end=">"
+#color red "&[^;[[:space:]]]*;"
+
+## Trailing whitespace
+color ,green "[[:space:]]+$"
diff --git a/doc/syntax/pov.nanorc b/doc/syntax/pov.nanorc
new file mode 100644
index 0000000..298b201
--- /dev/null
+++ b/doc/syntax/pov.nanorc
@@ -0,0 +1,15 @@
+## Here is an example for POV-Ray.
+##
+syntax "pov" "\.(pov|POV|povray|POVRAY)$"
+color brightcyan "^[[:space:]]*#[[:space:]]*(declare)"
+color brightyellow "\<(sphere|cylinder|translate|matrix|rotate|scale)\>"
+color brightyellow "\<(orthographic|location|up|right|direction|clipped_by)\>"
+color brightyellow "\<(fog_type|fog_offset|fog_alt|rgb|distance|transform)\>"
+color brightred "^\<(texture)\>"
+color brightred "\<(light_source|background)\>"
+color brightred "\<(fog|object|camera)\>"
+color green "(\{|\}|\(|\)|\;|\]|\[|`|\\|\$|<|>|!|=|&|\|)"
+color brightmagenta "\<(union|group|subgroup)\>"
+## Comment highlighting
+color brightblue "//.*"
+color brightblue start="/\*" end="\*/"
diff --git a/doc/syntax/python.nanorc b/doc/syntax/python.nanorc
new file mode 100644
index 0000000..4280274
--- /dev/null
+++ b/doc/syntax/python.nanorc
@@ -0,0 +1,10 @@
+## Here is an example for Python.
+##
+syntax "python" "\.py$"
+header "^#!.*/python[-0-9._]*"
+icolor brightblue "def [0-9A-Z_]+"
+color brightcyan "\<(and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield)\>"
+color brightgreen "['][^']*[^\\][']" "[']{3}.*[^\\][']{3}"
+color brightgreen "["][^"]*[^\\]["]" "["]{3}.*[^\\]["]{3}"
+color brightgreen start=""""[^"]" end=""""" start="'''[^']" end="'''"
+color brightred "#.*$"
diff --git a/doc/syntax/ruby.nanorc b/doc/syntax/ruby.nanorc
new file mode 100644
index 0000000..b30b229
--- /dev/null
+++ b/doc/syntax/ruby.nanorc
@@ -0,0 +1,31 @@
+## Here is an example for Ruby.
+##
+syntax "ruby" "\.rb$"
+header "^#!.*/ruby[-0-9._]*"
+## Asciibetical list of reserved words
+color yellow "\<(BEGIN|END|alias|and|begin|break|case|class|def|defined\?|do|else|elsif|end|ensure|false|for|if|in|module|next|nil|not|or|redo|rescue|retry|return|self|super|then|true|undef|unless|until|when|while|yield)\>"
+## Constants
+color brightblue "(\$|@|@@)?\<[A-Z]+[0-9A-Z_a-z]*"
+## Ruby "symbols"
+icolor magenta "([ ]|^):[0-9A-Z_]+\>"
+## Some unique things we want to stand out
+color brightyellow "\<(__FILE__|__LINE__)\>"
+## Regular expressions
+color brightmagenta "/([^/]|(\\/))*/[iomx]*" "%r\{([^}]|(\\}))*\}[iomx]*"
+## Shell command expansion is in `backticks` or like %x{this}. These are
+## "double-quotish" (to use a perlism).
+color brightblue "`[^`]*`" "%x\{[^}]*\}"
+## Strings, double-quoted
+color green ""([^"]|(\\"))*"" "%[QW]?\{[^}]*\}" "%[QW]?\([^)]*\)" "%[QW]?<[^>]*>" "%[QW]?\[[^]]*\]" "%[QW]?\$[^$]*\$" "%[QW]?\^[^^]*\^" "%[QW]?![^!]*!"
+## Expression substitution. These go inside double-quoted strings,
+## "like #{this}".
+color brightgreen "#\{[^}]*\}"
+## Strings, single-quoted
+color green "'([^']|(\\'))*'" "%[qw]\{[^}]*\}" "%[qw]\([^)]*\)" "%[qw]<[^>]*>" "%[qw]\[[^]]*\]" "%[qw]\$[^$]*\$" "%[qw]\^[^^]*\^" "%[qw]![^!]*!"
+## Comments
+color cyan "#[^{].*$" "#$"
+color brightcyan "##[^{].*$" "##$"
+## "Here" docs
+color green start="<<-?'?EOT'?" end="^EOT"
+## Some common markers
+color brightcyan "(XXX|TODO|FIXME|\?\?\?)"
diff --git a/doc/syntax/sh.nanorc b/doc/syntax/sh.nanorc
new file mode 100644
index 0000000..ecce22e
--- /dev/null
+++ b/doc/syntax/sh.nanorc
@@ -0,0 +1,14 @@
+## Here is an example for Bourne shell scripts.
+##
+syntax "sh" "\.sh$"
+header "^#!.*/(ba|k|pdk)?sh[-0-9_]*"
+icolor brightgreen "^[0-9A-Z_]+\(\)"
+color green "\<(case|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|shift|then|time|until|while)\>"
+color green "(\{|\}|\(|\)|\;|\]|\[|`|\\|\$|<|>|!|=|&|\|)"
+color green "-[Ldefgruwx]\>"
+color green "-(eq|ne|gt|lt|ge|le|s|n|z)\>"
+color brightblue "\<(cat|cd|chmod|chown|cp|echo|env|export|grep|install|let|ln|make|mkdir|mv|rm|sed|set|tar|touch|umask|unset)\>"
+icolor brightred "\$\{?[0-9A-Z_!@#$*?-]+\}?"
+color cyan "(^|[[:space:]])#.*$"
+color brightyellow ""(\\.|[^"])*"" "'(\\.|[^'])*'"
+color ,green "[[:space:]]+$"
diff --git a/doc/syntax/tcl.nanorc b/doc/syntax/tcl.nanorc
new file mode 100644
index 0000000..ad3401f
--- /dev/null
+++ b/doc/syntax/tcl.nanorc
@@ -0,0 +1,16 @@
+syntax "tcl" "\.tcl$"
+
+## Standard Tcl [info commands]
+color green "\<(after|append|array|auto_execok|auto_import|auto_load|auto_load_index|auto_qualify|binary|break|case|catch|cd|clock|close|concat|continue|encoding|eof|error|eval|exec|exit|expr|fblocked|fconfigure|fcopy|file|fileevent|flush|for|foreach|format|gets|glob|global|history|if|incr|info|interp|join|lappend|lindex|linsert|list|llength|load|lrange|lreplace|lsearch|lset|lsort|namespace|open|package|pid|puts|pwd|read|regexp|regsub|rename|return|scan|seek|set|socket|source|split|string|subst|switch|tclLog|tell|time|trace|unknown|unset|update|uplevel|upvar|variable|vwait|while)\>"
+## Basic Tcl sub commands.
+color green "\<(array anymore|array donesearch|array exists|array get|array names|array nextelement|array set|array size|array startsearch|array statistics|array unset)\>"
+color green "\<(string bytelength|string compare|string equal|string first|string index|string is|string last|string length|string map|string match|string range|string repeat|string replace|string to|string tolower|string totitle|string toupper|string trim|string trimleft|string trimright|string will|string wordend|string wordstart)\>"
+## Extended TclX [info commands]
+color green "\<(alarm|auto_load_pkg|bsearch|catclose|catgets|catopen|ccollate|cconcat|cequal|chgrp|chmod|chown|chroot|cindex|clength|cmdtrace|commandloop|crange|csubstr|ctoken|ctype|dup|echo|execl|fcntl|flock|fork|fstat|ftruncate|funlock|host_info|id|infox|keyldel|keylget|keylkeys|keylset|kill|lassign|lcontain|lempty|lgets|link|lmatch|loadlibindex|loop|lvarcat|lvarpop|lvarpush|max|min|nice|pipe|profile|random|readdir|replicate|scancontext|scanfile|scanmatch|select|server_accept|server_create|signal|sleep|sync|system|tclx_findinit|tclx_fork|tclx_load_tndxs|tclx_sleep|tclx_system|tclx_wait|times|translit|try_eval|umask|wait)\>"
+## Syntax.
+color brightblue "proc[[:space:]]" "(\{|\})"
+color green "(\(|\)|\;|`|\\|\$|<|>|!|=|&|\|)"
+color brightyellow ""(\\.|[^"])*"" "'(\\.|[^'])*'"
+icolor brightred "\$\{?[0-9A-Z_!@#$*?-]+\}?"
+color ,green "[[:space:]]+$"
+color ,magenta "^[[:space:]]*#.*"
diff --git a/doc/syntax/tex.nanorc b/doc/syntax/tex.nanorc
new file mode 100644
index 0000000..23ca3a4
--- /dev/null
+++ b/doc/syntax/tex.nanorc
@@ -0,0 +1,6 @@
+## Here is a short example for TeX files.
+##
+syntax "tex" "\.tex$"
+icolor green "\\.|\\[A-Z]*"
+color magenta "[{}]"
+color blue "(^|[^\])%.*"
diff --git a/doc/syntax/xml.nanorc b/doc/syntax/xml.nanorc
new file mode 100644
index 0000000..1f68c05
--- /dev/null
+++ b/doc/syntax/xml.nanorc
@@ -0,0 +1,9 @@
+## Here is an example for xml files.
+##
+syntax "xml" "\.([jrs]html?|sgml?|xml|xslt?)$"
+color green start="<" end=">"
+color cyan "<[^> ]+"
+color cyan ">"
+color yellow start="<!DOCTYPE" end="[/]?>"
+color yellow start="<!--" end="-->"
+color red "&[^;]*;"
diff --git a/doc/texinfo/Makefile.am b/doc/texinfo/Makefile.am
new file mode 100644
index 0000000..91f0163
--- /dev/null
+++ b/doc/texinfo/Makefile.am
@@ -0,0 +1,10 @@
+info_TEXINFOS = nano.texi
+
+MAKEINFO = makeinfo --no-split
+
+BUILT_SOURCES = nano.html
+
+nano.html: nano.texi
+ makeinfo --no-split --html < $< > $@
+
+EXTRA_DIST = $(info_TEXINFOS) $(BUILT_SOURCES)
diff --git a/doc/texinfo/Makefile.in b/doc/texinfo/Makefile.in
new file mode 100644
index 0000000..386be23
--- /dev/null
+++ b/doc/texinfo/Makefile.in
@@ -0,0 +1,632 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = doc/texinfo
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in texinfo.tex
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glib-2.0.m4 \
+ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+INFO_DEPS = $(srcdir)/nano.info
+am__TEXINFO_TEX_DIR = $(srcdir)
+DVIS = nano.dvi
+PDFS = nano.pdf
+PSS = nano.ps
+HTMLS = nano.html
+TEXINFOS = nano.texi
+TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+DVIPS = dvips
+am__installdirs = "$(DESTDIR)$(infodir)"
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURSES_LIB = @CURSES_LIB@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = makeinfo --no-split
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKGDATADIR = @PKGDATADIR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+info_TEXINFOS = nano.texi
+BUILT_SOURCES = nano.html
+EXTRA_DIST = $(info_TEXINFOS) $(BUILT_SOURCES)
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .dvi .html .info .pdf .ps .texi
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/texinfo/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/texinfo/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+.texi.info:
+ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+ am__cwd=`pwd` && $(am__cd) $(srcdir) && \
+ rm -rf $$backupdir && mkdir $$backupdir && \
+ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+ done; \
+ else :; fi && \
+ cd "$$am__cwd"; \
+ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $@ $<; \
+ then \
+ rc=0; \
+ $(am__cd) $(srcdir); \
+ else \
+ rc=$$?; \
+ $(am__cd) $(srcdir) && \
+ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+ fi; \
+ rm -rf $$backupdir; exit $$rc
+
+.texi.dvi:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2DVI) $<
+
+.texi.pdf:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2PDF) $<
+
+.texi.html:
+ rm -rf $(@:.html=.htp)
+ if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $(@:.html=.htp) $<; \
+ then \
+ rm -rf $@; \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+ else \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+ exit 1; \
+ fi
+$(srcdir)/nano.info: nano.texi
+nano.dvi: nano.texi
+nano.pdf: nano.texi
+.dvi.ps:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ $(DVIPS) -o $@ $<
+
+uninstall-dvi-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+ rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+ done
+
+uninstall-html-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+ done
+
+uninstall-info-am:
+ @$(PRE_UNINSTALL)
+ @if test -d '$(DESTDIR)$(infodir)' && \
+ (install-info --version && \
+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
+ done; \
+ else :; fi
+ @$(NORMAL_UNINSTALL)
+ @list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+ else :; fi); \
+ done
+
+uninstall-pdf-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+ done
+
+uninstall-ps-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(psdir)/$$f"; \
+ done
+
+dist-info: $(INFO_DEPS)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; \
+ for base in $$list; do \
+ case $$base in \
+ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$base; then d=.; else d=$(srcdir); fi; \
+ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+ if test -f $$file; then \
+ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+ test -f "$(distdir)/$$relfile" || \
+ cp -p $$file "$(distdir)/$$relfile"; \
+ else :; fi; \
+ done; \
+ done
+
+mostlyclean-aminfo:
+ -rm -rf nano.aux nano.cp nano.cps nano.fn nano.fns nano.ky nano.kys \
+ nano.log nano.pg nano.pgs nano.tmp nano.toc nano.tp nano.tps \
+ nano.vr nano.vrs
+
+clean-aminfo:
+ -test -z "nano.dvi nano.pdf nano.ps nano.html" \
+ || rm -rf nano.dvi nano.pdf nano.ps nano.html
+
+maintainer-clean-aminfo:
+ @list='$(INFO_DEPS)'; for i in $$list; do \
+ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+ done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-info
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(INFO_DEPS)
+installdirs:
+ for dir in "$(DESTDIR)$(infodir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-aminfo clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am: $(DVIS)
+
+html: html-am
+
+html-am: $(HTMLS)
+
+info: info-am
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-info-am
+
+install-dvi: install-dvi-am
+
+install-dvi-am: $(DVIS)
+ @$(NORMAL_INSTALL)
+ test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+ done
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am: $(HTMLS)
+ @$(NORMAL_INSTALL)
+ test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+ @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ $(am__strip_dir) \
+ if test -d "$$d$$p"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+ else \
+ list2="$$list2 $$d$$p"; \
+ fi; \
+ done; \
+ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+ done; }
+install-info: install-info-am
+
+install-info-am: $(INFO_DEPS)
+ @$(NORMAL_INSTALL)
+ test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+ for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+ if test -f $$ifile; then \
+ echo "$$ifile"; \
+ else : ; fi; \
+ done; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
+ @$(POST_INSTALL)
+ @if (install-info --version && \
+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+ done; \
+ else : ; fi
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am: $(PDFS)
+ @$(NORMAL_INSTALL)
+ test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
+install-ps: install-ps-am
+
+install-ps-am: $(PSS)
+ @$(NORMAL_INSTALL)
+ test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+ maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am: $(PDFS)
+
+ps: ps-am
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
+ uninstall-pdf-am uninstall-ps-am
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-aminfo clean-generic \
+ dist-info distclean distclean-generic distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
+ mostlyclean-aminfo mostlyclean-generic pdf pdf-am ps ps-am \
+ uninstall uninstall-am uninstall-dvi-am uninstall-html-am \
+ uninstall-info-am uninstall-pdf-am uninstall-ps-am
+
+
+nano.html: nano.texi
+ makeinfo --no-split --html < $< > $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/texinfo/nano.html b/doc/texinfo/nano.html
new file mode 100644
index 0000000..b673557
--- /dev/null
+++ b/doc/texinfo/nano.html
@@ -0,0 +1,867 @@
+<html lang="en">
+<head>
+<title>nano Command Manual</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="nano Command Manual">
+<meta name="generator" content="makeinfo 4.13">
+<link title="Top" rel="top" href="#Top">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+ pre.display { font-family:inherit }
+ pre.format { font-family:inherit }
+ pre.smalldisplay { font-family:inherit; font-size:smaller }
+ pre.smallformat { font-family:inherit; font-size:smaller }
+ pre.smallexample { font-size:smaller }
+ pre.smalllisp { font-size:smaller }
+ span.sc { font-variant:small-caps }
+ span.roman { font-family:serif; font-weight:normal; }
+ span.sansserif { font-family:sans-serif; font-weight:normal; }
+--></style>
+</head>
+<body>
+<h1 class="settitle">nano Command Manual</h1>
+<div class="node">
+<a name="Top"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Introduction">Introduction</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#dir">(dir)</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#dir">(dir)</a>
+
+</div>
+
+ <p>This manual documents GNU <code>nano</code>, a small and friendly text
+editor.
+
+<ul class="menu">
+<li><a accesskey="1" href="#Introduction">Introduction</a>
+<li><a accesskey="2" href="#Editor-Basics">Editor Basics</a>
+<li><a accesskey="3" href="#Online-Help">Online Help</a>
+<li><a accesskey="4" href="#Feature-Toggles">Feature Toggles</a>
+<li><a accesskey="5" href="#Nanorc-Files">Nanorc Files</a>
+<li><a accesskey="6" href="#The-File-Browser">The File Browser</a>
+<li><a accesskey="7" href="#Pico-Compatibility">Pico Compatibility</a>
+<li><a accesskey="8" href="#Building-and-Configure-Options">Building and Configure Options</a>
+</ul>
+
+<div class="node">
+<a name="Introduction"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Editor-Basics">Editor Basics</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Top">Top</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">1 Introduction</h2>
+
+<p>GNU <code>nano</code> is a small and friendly text editor. Besides basic text
+editing, <code>nano</code> offers many extra features like an interactive
+search and replace, go to line and column number, auto-indentation,
+feature toggles, internationalization support, and filename tab
+completion.
+
+<ul class="menu">
+<li><a accesskey="1" href="#Overview">Overview</a>
+<li><a accesskey="2" href="#Command-Line-Options">Command Line Options</a>
+</ul>
+
+<div class="node">
+<a name="Overview"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Command-Line-Options">Command Line Options</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Introduction">Introduction</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Introduction">Introduction</a>
+
+</div>
+
+<h3 class="section">1.1 Overview</h3>
+
+<p>The original goal for <code>nano</code> was a complete bug-for-bug compatible
+emulation of Pico, but <code>nano</code>'s current goal is to be as compatible
+as possible while offering a superset of Pico's functionality. See
+See <a href="#Pico-Compatibility">Pico Compatibility</a>, for more info.
+
+ <p>The usual way to invoke <code>nano</code> is:
+
+ <blockquote>
+<code>nano [OPTION]... [FILE]</code>
+</blockquote>
+
+ <p>But it is also possible to edit several files in a row. Additionally,
+the cursor can be put on a desired line number by adding this number
+with a plus sign before any filename, and even in a desired column by
+adding it with a comma. So the complete synopsis is:
+
+ <blockquote>
+<code>nano [OPTION]... [[+LINE] FILE]...</code>
+
+ <p><code>nano [OPTION]... [[+,COLUMN] FILE]...</code>
+
+ <p><code>nano [OPTION]... [[+LINE,COLUMN] FILE]...</code>
+</blockquote>
+
+ <p>Email bug reports to <a href="mailto:nano@nano-editor.org">nano@nano-editor.org</a>.
+
+<div class="node">
+<a name="Command-Line-Options"></a>
+<p><hr>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Overview">Overview</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Introduction">Introduction</a>
+
+</div>
+
+<h3 class="section">1.2 Command Line Options</h3>
+
+<p><code>nano</code> takes the following options from the command line:
+
+ <dl>
+<dt><code>+LINE,COLUMN</code><dd>Start at line number LINE and column number COLUMN (at least one of
+which must be specified) instead of the default of line 1, column 1.
+
+ <br><dt><code>-?</code><dd>Same as <code>-h, --help</code>.
+
+ <br><dt><code>-A, --smarthome</code><dd>Make the Home key smarter. When Home is pressed anywhere but at the
+very beginning of non-whitespace characters on a line, the cursor will
+jump to that beginning (either forwards or backwards). If the cursor is
+already at that position, it will jump to the true beginning of the
+line.
+
+ <br><dt><code>-B, --backup</code><dd>When saving a file, back up the previous version of it to the current
+filename suffixed with a ~.
+
+ <br><dt><code>-C &lt;dir&gt;, --backupdir=&lt;dir&gt;</code><dd>Set the directory where <code>nano</code> puts unique backup files if file
+backups are enabled.
+
+ <br><dt><code>-D, --boldtext</code><dd>Use bold text instead of reverse video text.
+
+ <br><dt><code>-E, --tabstospaces</code><dd>Convert typed tabs to spaces.
+
+ <br><dt><code>-F, --multibuffer</code><dd>Enable multiple file buffers, if available.
+
+ <br><dt><code>-H, --historylog</code><dd>Log search and replace strings to ~/.nano_history, so they can be
+retrieved in later sessions, if nanorc support is available.
+
+ <br><dt><code>-I, --ignorercfiles</code><dd>Don't look at SYSCONFDIR/nanorc or ~/.nanorc, if nanorc support is
+available.
+
+ <br><dt><code>-K, --rebindkeypad</code><dd>Interpret the numeric keypad keys so that they all work properly. You
+should only need to use this option if they don't, as mouse support
+won't work properly with this option enabled.
+
+ <br><dt><code>-L, --nonewlines</code><dd>Don't add newlines to the ends of files.
+
+ <br><dt><code>-N, --noconvert</code><dd>Don't convert files from DOS/Mac format.
+
+ <br><dt><code>-O, --morespace</code><dd>Use the blank line below the titlebar as extra editing space.
+
+ <br><dt><code>-Q &lt;str&gt;, --quotestr=&lt;str&gt;</code><dd>Set the quoting string for justifying. The default value is
+
+ <blockquote>
+<code>^([ \t]*[|&gt;:}#])+</code>
+</blockquote>
+
+ <p>if extended regular expression support is available, or "&gt; " otherwise.
+Note that <code>\t</code> above stands for a literal Tab character.
+
+ <br><dt><code>-R, --restricted</code><dd>Restricted mode: don't read or write to any file not specified on the
+command line; read any nanorc files; allow suspending; allow a file to
+be appended to, prepended to, or saved under a different name if it
+already has one; or use backup files or spell checking. Also accessible
+by invoking <code>nano</code> with any name beginning with 'r' (e.g. "rnano").
+
+ <br><dt><code>-S, --smooth</code><dd>Enable smooth scrolling. Text will scroll line-by-line, instead of the
+usual chunk-by-chunk behavior.
+
+ <br><dt><code>-T &lt;#cols&gt;, --tabsize=&lt;#cols&gt;</code><dd>Set the displayed tab length to #cols columns. The value of #cols must
+be greater than 0. The default value is 8.
+
+ <br><dt><code>-U, --quickblank</code><dd>Do quick statusbar blanking. Statusbar messages will disappear after 1
+keystroke instead of 25. Note that -c overrides this.
+
+ <br><dt><code>-V, --version</code><dd>Show the current version number and exit.
+
+ <br><dt><code>-W, --wordbounds</code><dd>Detect word boundaries more accurately by treating punctuation
+characters as parts of words.
+
+ <br><dt><code>-Y &lt;str&gt;, --syntax=&lt;str&gt;</code><dd>Specify a specific syntax highlighting from the nanorc to use, if
+available. See See <a href="#Nanorc-Files">Nanorc Files</a>, for more info.
+
+ <br><dt><code>-c, --const</code><dd>Constantly display the cursor position and line number on the statusbar.
+Note that this overrides -U.
+
+ <br><dt><code>-d, --rebinddelete</code><dd>Interpret the Delete key differently so that both Backspace and Delete
+work properly. You should only need to use this option if Backspace
+acts like Delete on your system.
+
+ <br><dt><code>-h, --help</code><dd>Show a summary of command line options and exit.
+
+ <br><dt><code>-i, --autoindent</code><dd>Automatically indent new lines to the same number of spaces and tabs as
+the previous line.
+
+ <br><dt><code>-k, --cut</code><dd>Cut from the current cursor position to the end of the current line.
+
+ <br><dt><code>-l, --nofollow</code><dd>When writing files, if the given file is a symbolic link, it is removed
+and a new file is created.
+
+ <br><dt><code>-m, --mouse</code><dd>Enable mouse support, if available for your system. When enabled, mouse
+clicks can be used to place the cursor, set the mark (with a double
+click), and execute shortcuts. The mouse will work in the X Window
+System, and on the console when gpm is running.
+
+ <br><dt><code>-o &lt;dir&gt;, --operatingdir=&lt;dir&gt;</code><dd>Set operating directory. Makes <code>nano</code> set up something similar to
+a chroot.
+
+ <br><dt><code>-p, --preserve</code><dd>Preserve the ^Q (XON) and ^S (XOFF) sequences so data being sent to the
+editor can be can be stopped and started.
+
+ <br><dt><code>-q, --quiet</code><dd>Do not report errors in the nanorc file and ask them to be acknowledged
+by pressing Enter at startup.
+
+ <br><dt><code>-r &lt;#cols&gt;, --fill=&lt;#cols&gt;</code><dd>Wrap lines at column #cols. If this value is 0 or less, wrapping will
+occur at the width of the screen less #cols, allowing it to vary along
+with the width of the screen if the screen is resized. The default
+value is -8.
+
+ <br><dt><code>-s &lt;prog&gt;, --speller=&lt;prog&gt;</code><dd>Invoke the given program as the spell checker. By default, <code>nano</code>
+uses the command specified in the SPELL environment variable, or, if
+SPELL is not set, its own interactive spell checker that requires the
+<code>spell</code> program to be installed on your system.
+
+ <br><dt><code>-t, --tempfile</code><dd>Don't ask whether or not to save the current contents of the file when
+exiting, assume yes. This is most useful when using <code>nano</code> as the
+composer of a mailer program.
+
+ <br><dt><code>-u, --undo</code><dd>Enable experimental generic-purpose undo code. By default, the undo and
+redo shortcuts are Meta-U and Meta-E, respectively.
+
+ <br><dt><code>-v, --view</code><dd>Don't allow the contents of the file to be altered. Note that this
+option should NOT be used in place of correct file permissions to
+implement a read-only file.
+
+ <br><dt><code>-w, --nowrap</code><dd>Don't wrap long lines at any length. This option overrides any value
+for -r.
+
+ <p><a name="Expert-Mode"></a><br><dt><code>-x, --nohelp</code><dd>Expert Mode: don't show the Shortcut Lists at the bottom of the screen.
+This affects the location of the statusbar as well, as in Expert Mode it
+is located at the very bottom of the editor.
+
+ <p>Note: When accessing the help system, Expert Mode is temporarily
+disabled to display the help system navigation keys.
+
+ <br><dt><code>-z, --suspend</code><dd>Enable <code>nano</code>'s suspend ability using the system's suspend
+keystroke (usually ^Z).
+
+ <br><dt><code>-$, --softwrap</code><dd>Enable 'soft wrapping'. <code>nano</code> will attempt to display the entire
+contents of a line, even if it is longer than the screen width. Since
+'$' normally refers to a variable in the Unix shell, you should specify
+this option last when using other options (e.g. 'nano -wS$') or pass it
+separately (e.g. 'nano -wS -$').
+
+ <br><dt><code>-a, -b, -e, -f, -g, -j</code><dd>Ignored, for compatibility with Pico.
+</dl>
+
+<div class="node">
+<a name="Editor-Basics"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Online-Help">Online Help</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Introduction">Introduction</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">2 Editor Basics</h2>
+
+<ul class="menu">
+<li><a accesskey="1" href="#Entering-Text">Entering Text</a>
+<li><a accesskey="2" href="#Special-Functions">Special Functions</a>
+<li><a accesskey="3" href="#The-Titlebar">The Titlebar</a>
+<li><a accesskey="4" href="#The-Statusbar">The Statusbar</a>
+<li><a accesskey="5" href="#Shortcut-Lists">Shortcut Lists</a>
+<li><a accesskey="6" href="#Using-the-Mouse">Using the Mouse</a>
+</ul>
+
+<div class="node">
+<a name="Entering-Text"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Special-Functions">Special Functions</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Editor-Basics">Editor Basics</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Editor-Basics">Editor Basics</a>
+
+</div>
+
+<h3 class="section">2.1 Entering Text</h3>
+
+<p>All key sequences in <code>nano</code> are entered using the keyboard.
+<code>nano</code> is a "modeless" editor. All keys, with the exception of
+Control and Meta key sequences, will enter text into the file being
+edited.
+
+<div class="node">
+<a name="Special-Functions"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#The-Titlebar">The Titlebar</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Entering-Text">Entering Text</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Editor-Basics">Editor Basics</a>
+
+</div>
+
+<h3 class="section">2.2 Special Functions</h3>
+
+<p>Special functions use the Control (Ctrl) key, displayed in the help and
+shortcut lists as ^; the Meta key, displayed as M; or the Escape (Esc)
+key.
+
+ <ul>
+<li>Control key sequences are entered by holding down the Ctrl key and
+pressing the desired key, or by pressing the Esc key twice and pressing
+the desired key.
+<li>Pressing Esc twice and then typing a three-digit number from 000 to 255
+will enter the character with the corresponding value.
+<li>Meta key sequences are entered by holding down the Meta key (normally
+the Alt key) and pressing the desired key, or by pressing the Esc key
+once and pressing the desired key. Certain operating systems "swallow"
+the Alt key so that it never reaches the application; if your operating
+system does this, you should use the Esc key to generate Meta key
+sequences.
+</ul>
+
+<div class="node">
+<a name="The-Titlebar"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#The-Statusbar">The Statusbar</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Special-Functions">Special Functions</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Editor-Basics">Editor Basics</a>
+
+</div>
+
+<h3 class="section">2.3 The Titlebar</h3>
+
+<p>The titlebar is the line displayed at the top of the editor. There are
+three sections: left, center and right. The section on the left
+displays the version of <code>nano</code> being used. The center section
+displays the current filename, or "New Buffer" if the file has not yet
+been named. The section on the right will display "Modified" if the
+file has been modified since it was last saved or opened.
+
+ <p>Special modes: When <code>nano</code> is in "File browser" mode, the center
+section will display the current directory instead of the filename. See
+See <a href="#The-File-Browser">The File Browser</a>, for more info.
+
+<div class="node">
+<a name="The-Statusbar"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Shortcut-Lists">Shortcut Lists</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#The-Titlebar">The Titlebar</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Editor-Basics">Editor Basics</a>
+
+</div>
+
+<h3 class="section">2.4 The Statusbar</h3>
+
+<p>The statusbar is the third line from the bottom of the screen, or the
+bottom line in Expert Mode. See See <a href="#Expert-Mode">Expert Mode</a>, for more info. It
+shows important and informational messages. Any error messages that
+occur from using the editor will appear on the statusbar. Any questions
+that are asked of the user will be asked on the statusbar, and any user
+input (search strings, filenames, etc.) will be input on the statusbar.
+
+<div class="node">
+<a name="Shortcut-Lists"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Using-the-Mouse">Using the Mouse</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#The-Statusbar">The Statusbar</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Editor-Basics">Editor Basics</a>
+
+</div>
+
+<h3 class="section">2.5 Shortcut Lists</h3>
+
+<p>The Shortcut Lists are the two lines at the bottom of the screen which
+show some of the more commonly used functions in the editor.
+
+<div class="node">
+<a name="Using-the-Mouse"></a>
+<p><hr>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Shortcut-Lists">Shortcut Lists</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Editor-Basics">Editor Basics</a>
+
+</div>
+
+<h3 class="section">2.6 Using the Mouse</h3>
+
+<p>When mouse support has been configured and enabled, a single mouse click
+places the cursor at the indicated position. Clicking a second time in
+the same position toggles the mark. Clicking in the shortcut list
+executes the selected shortcut.
+
+ <p>The mouse will work in the X Window System, and on the console when gpm
+is running.
+
+<div class="node">
+<a name="Online-Help"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Feature-Toggles">Feature Toggles</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Editor-Basics">Editor Basics</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">3 Online Help</h2>
+
+<p>The online help system in <code>nano</code> is available by pressing ^G.
+It is fairly self explanatory, documenting the various parts of the
+editor and available keystrokes. Navigation is via the ^Y (Page Up)
+and ^V (Page Down) keys. ^X exits the help system.
+
+<div class="node">
+<a name="Feature-Toggles"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Nanorc-Files">Nanorc Files</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Online-Help">Online Help</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">4 Feature Toggles</h2>
+
+<p>Toggles allow you to change certain aspects of the editor that would
+normally be done via command line options. They are invoked via Meta
+key sequences. See See <a href="#Special-Functions">Special Functions</a>, for more info. The
+following global toggles are available:
+
+ <dl>
+<dt><code>Backup Files Toggle (Meta-B)</code><dd>toggles the -B (<code>--backup</code>) command line option.
+
+ <br><dt><code>Constant Cursor Position Display Toggle (Meta-C)</code><dd>toggles the -c (<code>--const</code>) command line option.
+
+ <br><dt><code>Multiple File Buffers Toggle (Meta-F)</code><dd>toggles the -F (<code>--multibuffer</code>) command line option.
+
+ <br><dt><code>Smart Home Key Toggle (Meta-H)</code><dd>toggles the -A (<code>--smarthome</code>) command line option.
+
+ <br><dt><code>Auto Indent Toggle (Meta-I)</code><dd>toggles the -i (<code>--autoindent</code>) command line option.
+
+ <br><dt><code>Cut To End Toggle (Meta-K)</code><dd>toggles the -k (<code>--cut</code>) command line option.
+
+ <br><dt><code>Long Line Wrapping Toggle (Meta-L)</code><dd>toggles the -w (<code>--nowrap</code>) command line option.
+
+ <br><dt><code>Mouse Support Toggle (Meta-M)</code><dd>toggles the -m (<code>--mouse</code>) command line option.
+
+ <br><dt><code>No Conversion From DOS/Mac Format Toggle (Meta-N)</code><dd>toggles the -N (<code>--noconvert</code>) command line option.
+
+ <br><dt><code>More Space For Editing Toggle (Meta-O)</code><dd>toggles the -O (<code>--morespace</code>) command line option.
+
+ <br><dt><code>Whitespace Display Toggle (Meta-P)</code><dd>toggles whitespace display mode if you have a "whitespace" option in
+your nanorc. See See <a href="#Nanorc-Files">Nanorc Files</a>, for more info.
+
+ <br><dt><code>Tabs to Spaces Toggle (Meta-Q)</code><dd>toggles the -E (<code>--tabstospaces</code>) command line option.
+
+ <br><dt><code>Smooth Scrolling Toggle (Meta-S)</code><dd>toggles the -S (<code>--smooth</code>) command line option.
+
+ <br><dt><code>Expert/No Help Toggle (Meta-X)</code><dd>toggles the -x (<code>--nohelp</code>) command line option.
+
+ <br><dt><code>Color Syntax Highlighting Toggle (Meta-Y)</code><dd>toggles color syntax highlighting if you have color syntaxes in your
+nanorc. See See <a href="#Nanorc-Files">Nanorc Files</a>, for more info.
+
+ <br><dt><code>Suspend Toggle (Meta-Z)</code><dd>toggles the -z (<code>--suspend</code>) command line option.
+
+ <br><dt><code>Soft Wrapping Toggle (Meta-$)</code><dd>toggles the -$ (<code>--softwrap</code>) command line option.
+
+ </dl>
+
+<div class="node">
+<a name="Nanorc-Files"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#The-File-Browser">The File Browser</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Feature-Toggles">Feature Toggles</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">5 Nanorc Files</h2>
+
+<p>The nanorc files contain the default settings for <code>nano</code>. They
+should not be in DOS or Mac format. During startup, <code>nano</code> will
+first read its system-wide settings from SYSCONFDIR/nanorc, and then
+user-specific settings from ~/.nanorc.
+
+ <p>A nanorc file accepts a series of "set" and "unset" commands, which can
+be used to configure <code>nano</code> on startup without using the command
+line options. Additionally, the "syntax", "color", and "icolor"
+keywords are used to define syntax highlighting rules for different text
+patterns. <code>nano</code> will read one command per line.
+
+ <p>Options in nanorc files take precedence over <code>nano</code>'s defaults, and
+command line options override nanorc settings. Options are also unset
+by default, except for those that take arguments.
+
+ <p>Quotes inside string parameters don't have to be escaped with
+backslashes. The last double quote in the string will be treated as its
+end. For example, for the "brackets" option,
+
+ <blockquote>
+<code>""')&gt;]}"</code>
+</blockquote>
+
+ <p>will match <code>"</code>, <code>'</code>, <code>)</code>, <code>&gt;</code>, <code>]</code>, and
+<code>}</code>.
+
+ <p>The supported commands and arguments are:
+
+ <dl>
+<dt><code>set/unset autoindent</code><dd>Use auto-indentation.
+
+ <br><dt><code>set/unset backup</code><dd>Create backup files in "filename~".
+
+ <br><dt><code>set backupdir "directory"</code><dd>Set the directory where <code>nano</code> puts unique backup files if file
+backups are enabled.
+
+ <br><dt><code>set/unset backwards</code><dd>Do backwards searches by default.
+
+ <br><dt><code>set/unset boldtext</code><dd>Use bold text instead of reverse video text.
+
+ <br><dt><code>set brackets "string"</code><dd>Set the characters treated as closing brackets when justifying
+paragraphs. They cannot contain blank characters. Only closing
+punctuation, optionally followed by closing brackets, can end sentences.
+The default value is
+
+ <blockquote>
+<code>""')&gt;]}"</code>
+</blockquote>
+
+ <br><dt><code>set/unset casesensitive</code><dd>Do case sensitive searches by default.
+
+ <br><dt><code>set/unset const</code><dd>Constantly display the cursor position in the status bar.
+
+ <br><dt><code>set/unset cut</code><dd>Use cut to end of line by default, instead of cutting the whole line.
+
+ <br><dt><code>set fill "n"</code><dd>Wrap lines at column number "n". If "n" is 0 or less, the maximum line
+length will be the screen width less "n" columns. The default value is
+-8.
+
+ <br><dt><code>set/unset historylog</code><dd>Enable ~/.nano_history for saving and reading search/replace strings.
+
+ <br><dt><code>set matchbrackets "string"</code><dd>Set the opening and closing brackets that can be found by bracket
+searches. They cannot contain blank characters. The former set must
+come before the latter set, and both must be in the same order. The
+default value is
+
+ <blockquote>
+<code>"(&lt;[{)&gt;]}"</code>
+</blockquote>
+
+ <br><dt><code>set/unset morespace</code><dd>Use the blank line below the titlebar as extra editing space.
+
+ <br><dt><code>set/unset mouse</code><dd>Enable mouse support, so that mouse clicks can be used to place the
+cursor, set the mark (with a double click), or execute shortcuts.
+
+ <br><dt><code>set/unset multibuffer</code><dd>Allow inserting files into their own buffers.
+
+ <br><dt><code>set/unset noconvert</code><dd>Don't convert files from DOS/Mac format.
+
+ <br><dt><code>set/unset nofollow</code><dd>Don't follow symlinks when writing files.
+
+ <br><dt><code>set/unset nohelp</code><dd>Don't display the help lists at the bottom of the screen.
+
+ <br><dt><code>set/unset nonewlines</code><dd>Don't add newlines to the ends of files.
+
+ <br><dt><code>set/unset nowrap</code><dd>Don't wrap text at all.
+
+ <br><dt><code>set operatingdir "directory"</code><dd><code>nano</code> will only read and write files inside "directory" and its
+subdirectories. Also, the current directory is changed to here, so
+files are inserted from this directory. By default, the operating
+directory feature is turned off.
+
+ <br><dt><code>set/unset preserve</code><dd>Preserve the XON and XOFF keys (^Q and ^S).
+
+ <br><dt><code>set punct "string"</code><dd>Set the characters treated as closing punctuation when justifying
+paragraphs. They cannot contain blank characters. Only closing
+punctuation, optionally followed by closing brackets, can end sentences.
+The default value is <code>"!.?"</code>.
+
+ <br><dt><code>set/unset quickblank</code><dd>Do quick statusbar blanking. Statusbar messages will disappear after 1
+keystroke instead of 25.
+
+ <br><dt><code>set quotestr "string"</code><dd>The email-quote string, used to justify email-quoted paragraphs. This
+is an extended regular expression if your system supports them,
+otherwise a literal string. The default value is
+
+ <blockquote>
+<code>"^([ \\t]*[#:&gt;\\|}])+"</code>
+</blockquote>
+
+ <p>if you have extended regular expression support, or "&gt; " otherwise.
+Note that '\\t' stands for a literal Tab character.
+
+ <br><dt><code>set/unset rebinddelete</code><dd>Interpret the Delete key differently so that both Backspace and Delete
+work properly. You should only need to use this option if Backspace
+acts like Delete on your system.
+
+ <br><dt><code>set/unset rebindkeypad</code><dd>Interpret the numeric keypad keys so that they all work properly. You
+should only need to use this option if they don't, as mouse support
+won't work properly with this option enabled.
+
+ <br><dt><code>set/unset regexp</code><dd>Do extended regular expression searches by default.
+
+ <br><dt><code>set/unset smarthome</code><dd>Make the Home key smarter. When Home is pressed anywhere but at the
+very beginning of non-whitespace characters on a line, the cursor will
+jump to that beginning (either forwards or backwards). If the cursor is
+already at that position, it will jump to the true beginning of the
+line.
+
+ <br><dt><code>set/unset smooth</code><dd>Use smooth scrolling by default.
+
+ <br><dt><code>set/unset softwrap</code><dd>Use soft wrapping by default.
+
+ <br><dt><code>set speller "spellprog"</code><dd>Use spelling checker "spellprog" instead of the built-in one, which
+calls "spell".
+
+ <br><dt><code>set/unset suspend</code><dd>Allow <code>nano</code> to be suspended.
+
+ <br><dt><code>set/unset suspendenable</code><dd>If <code>nano</code> is allowed to be suspended, allow the suspend key
+(usually ^Z) to actually suspend it.
+
+ <br><dt><code>set tabsize "n"</code><dd>Use a tab size of "n" columns. The value of "n" must be greater than 0.
+The default value is 8.
+
+ <br><dt><code>set/unset tabstospaces</code><dd>Convert typed tabs to spaces.
+
+ <br><dt><code>set/unset tempfile</code><dd>Save automatically on exit, don't prompt.
+
+ <br><dt><code>set/unset undo</code><dd>Enable experimental generic-purpose undo code.
+
+ <br><dt><code>set/unset view</code><dd>Disallow file modification.
+
+ <br><dt><code>set whitespace "string"</code><dd>Set the two characters used to display the first characters of tabs and
+spaces. They must be single-column characters.
+
+ <br><dt><code>set/unset wordbounds</code><dd>Detect word boundaries more accurately by treating punctuation
+characters as part of a word.
+
+ <br><dt><code>syntax "str" ["fileregex" ... ]</code><dd>Defines a syntax named "str" which can be activated via the -Y/&ndash;syntax
+command line option, or will be automatically activated if the current
+filename matches the extended regular expression "fileregex". All
+following "color" and "icolor" statements will apply to "syntax" until a
+new syntax is defined.
+
+ <p>The "none" syntax is reserved; specifying it on the command line is the
+same as not having a syntax at all. The "default" syntax is special: it
+takes no "fileregex", and applies to files that don't match any other
+syntax's "fileregex".
+
+ <br><dt><code>color fgcolor,bgcolor "regex" ...</code><dd>For the currently defined syntax, display all expressions matching the
+extended regular expression "regex" with foreground color "fgcolor" and
+background color "bgcolor", at least one of which must be specified.
+Legal colors for foreground and background color are: white, black, red,
+blue, green, yellow, magenta, and cyan. You may use the prefix "bright"
+to force a stronger color highlight for the foreground. If your
+terminal supports transparency, not specifying a "bgcolor" tells "nano"
+to attempt to use a transparent background.
+
+ <br><dt><code>icolor fgcolor,bgcolor "regex" ...</code><dd>Same as above, except that the expression matching is case insensitive.
+
+ <br><dt><code>color fgcolor,bgcolor start="sr" end="er"</code><dd>Display expressions which start with the extended regular expression
+"sr" and end with the extended regular expression "er" with foreground
+color "fgcolor" and background color "bgcolor", at least one of which
+must be specified. This allows syntax highlighting to span multiple
+lines. Note that all subsequent instances of "sr" after an initial "sr"
+is found will be highlighted until the first instance of "er".
+
+ <br><dt><code>icolor fgcolor,bgcolor start="sr" end="er"</code><dd>Same as above, except that the expression matching is case insensitive.
+
+ <br><dt><code>include "syntaxfile"</code><dd>Read in self-contained color syntaxes from "syntaxfile". Note that
+"syntaxfile" can only contain "syntax", "color", and "icolor" commands.
+
+ </dl>
+
+<div class="node">
+<a name="The-File-Browser"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Pico-Compatibility">Pico Compatibility</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Nanorc-Files">Nanorc Files</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">6 The File Browser</h2>
+
+<p>When reading or writing files, pressing ^T will invoke the file browser.
+Here, one can navigate directories in a graphical manner in order to
+find the desired file.
+
+ <p>Basic movement in the file browser is accomplished with the arrow keys,
+page up, and page down. More advanced movement is accomplished by
+searching via ^W (or 'w') and changing directories via ^_ (or 'g'). The
+behavior of the Enter (or 's') key varies by what is currently selected.
+If the currently selected object is a directory, the file browser will
+enter and display the contents of the directory. If the object is a
+file, this filename and path are copied to the statusbar, and the file
+browser exits.
+
+<div class="node">
+<a name="Pico-Compatibility"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Building-and-Configure-Options">Building and Configure Options</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#The-File-Browser">The File Browser</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">7 Pico Compatibility</h2>
+
+<p><code>nano</code> attempts to emulate Pico as closely as possible, but there
+are certain differences between the editors:
+
+ <dl>
+<dt><code>Search and Replace History</code><dd>As of version 1.1.99pre1 of <code>nano</code>, text entered as search or
+replace strings will be stored and can be accessed with the up/down
+arrow keys. Previously, <code>nano</code> offered a more consistent, but
+incompatible with Pico, method for entering search and replace strings.
+In the old method, previous entries would be displayed by default as
+editable text in front of the cursor, as opposed to being bracketed and
+uneditable as it is in Pico. The old behavior could be made compatible
+with Pico via the <code>-p</code> option, but recent versions of Pico use the
+<code>-p</code> option to preserve the XON and XOFF sequences within the
+editor. Since, with the new method, search and replace strings can
+still be edited by simply hitting the up arrow key once, the old method
+was removed completely.
+
+ <br><dt><code>Writing, Appending, or Prepending Selected Text to Files</code><dd>Text selected using the marking key (^^) can be written out, appended,
+or prepended to a new or existing file using the WriteOut key (^O).
+
+ <br><dt><code>Toggles</code><dd>Many options which alter the functionality of the program can be
+"toggled" on or off using Meta key sequences, meaning the program does
+not have to be restarted to turn a particular feature of the editor on
+or off. Please see the internal help function (^G) for a list of what
+functions can be toggled for a particular version of <code>nano</code>. See
+See <a href="#Feature-Toggles">Feature Toggles</a>, for more info.
+
+ <br><dt><code>Cursor Position Display</code><dd>The output of the "Display Cursor Position" in <code>nano</code> displays
+the given column position, as well as the row and total character
+position of the cursor.
+
+ <br><dt><code>Interactive Replace and Spell Checker</code><dd>It is worth noting that <code>nano</code>'s replace function is interactive,
+i.e. it does not stop after one search string is found and automatically
+replace it. The <code>nano</code> implementation will pause at each search
+string found and query whether to replace this instance or not. The
+internal spell checker operates similarly. Note that there is no way to
+force these functions to behave in the Pico fashion. As of version
+1.1.99pre1, misspelled words are sorted and trimmed for uniqueness in
+the internal spell checker such that the words 'apple' and 'Apple' will
+be prompted for correction separately.
+</dl>
+
+<div class="node">
+<a name="Building-and-Configure-Options"></a>
+<p><hr>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Pico-Compatibility">Pico Compatibility</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">8 Building and Configure Options</h2>
+
+<p>Building <code>nano</code> from source is fairly straightforward if you are
+familiar with compiling programs with autoconf support:
+
+ <ul>
+<li>tar xvfz nano-x.y.z.tar.gz (where x.y.z is the version of
+<code>nano</code>)
+<li>cd nano-x.y.z/
+<li>./configure
+<li>make
+<li>make install
+</ul>
+
+ <p>The possible options to <code>./configure</code> are:
+
+ <dl>
+<dt><code>--disable-browser</code><dd>Disable the mini file browser when reading or writing files.
+
+ <br><dt><code>--disable-help</code><dd>Disable the help function. Doing this makes the binary much smaller,
+but makes it difficult for new users to learn more than very basic
+things about using the editor.
+
+ <br><dt><code>--disable-justify</code><dd>Disable the justify and unjustify functions.
+
+ <br><dt><code>--disable-mouse</code><dd>Disable all mouse functionality. This also disables the -m command line
+option, which enables the mouse functionality.
+
+ <br><dt><code>--disable-operatingdir</code><dd>Disable setting the operating directory. This also disables the -o
+command line option, which sets the operating directory.
+
+ <br><dt><code>--disable-speller</code><dd>Disable use of the spell checker. This also disables the -s command
+line option, which allows specifying an alternate spell checker.
+
+ <br><dt><code>--disable-tabcomp</code><dd>Disable the tab completion code when reading or writing files.
+
+ <br><dt><code>--disable-wrapping</code><dd>Disable all long line wrapping. This also eliminates the -w command
+line option, which enables long line wrapping.
+
+ <br><dt><code>--enable-tiny</code><dd>This option disables all the above. It also disables some of the larger
+internals of the editor, like the marking code and the cut to end of
+line code. It also disables the function toggles.
+
+ <br><dt><code>--enable-debug</code><dd>Enable support for runtime debug output. This can get pretty messy, so
+chances are you only want this feature to work on the nano source.
+
+ <br><dt><code>--enable-extra</code><dd>Enable extra features. At the moment, this is just easter egg-type
+stuff.
+
+ <br><dt><code>--enable-color</code><dd>Enable support for syntax coloring of files using the nanorc file. This
+enables nanorc support as well.
+
+ <br><dt><code>--enable-multibuffer</code><dd>Enable support for opening multiple files at a time and switching
+between them on the fly.
+
+ <br><dt><code>--enable-nanorc</code><dd>Enable support for reading the nanorc file at startup. You can store
+custom settings in the nanorc file rather than having to pass command
+line options to get desired behavior. See See <a href="#Nanorc-Files">Nanorc Files</a>, for
+more info.
+
+ <br><dt><code>--enable-all</code><dd>Shortcut for enabling the above four features (extra, color,
+multibuffer, and nanorc).
+
+ <br><dt><code>--disable-nls</code><dd>Disables Native Language support. This will disable use of the
+available GNU <code>nano</code> translations.
+
+ <br><dt><code>--disable-wrapping-as-root</code><dd>Disable long line wrapping by default when nano is run as root.
+
+ <br><dt><code>--enable-utf8</code><dd>Enable support for reading and writing Unicode files. This will require
+either a wide version of curses, or a UTF-8-enabled version of Slang.
+
+ <br><dt><code>--disable-utf8</code><dd>Disable support for reading and writing Unicode files.
+
+ <br><dt><code>--with-slang</code><dd>Compiling <code>nano</code> with Slang is supported, and will make the binary
+notably smaller than if compiled with ncurses or other curses libraries.
+
+ </dl>
+
+ <div class="contents">
+<h2>Table of Contents</h2>
+<ul>
+<li><a name="toc_Introduction" href="#Introduction">1 Introduction</a>
+<ul>
+<li><a href="#Overview">1.1 Overview</a>
+<li><a href="#Command-Line-Options">1.2 Command Line Options</a>
+</li></ul>
+<li><a name="toc_Editor-Basics" href="#Editor-Basics">2 Editor Basics</a>
+<ul>
+<li><a href="#Entering-Text">2.1 Entering Text</a>
+<li><a href="#Special-Functions">2.2 Special Functions</a>
+<li><a href="#The-Titlebar">2.3 The Titlebar</a>
+<li><a href="#The-Statusbar">2.4 The Statusbar</a>
+<li><a href="#Shortcut-Lists">2.5 Shortcut Lists</a>
+<li><a href="#Using-the-Mouse">2.6 Using the Mouse</a>
+</li></ul>
+<li><a name="toc_Online-Help" href="#Online-Help">3 Online Help</a>
+<li><a name="toc_Feature-Toggles" href="#Feature-Toggles">4 Feature Toggles</a>
+<li><a name="toc_Nanorc-Files" href="#Nanorc-Files">5 Nanorc Files</a>
+<li><a name="toc_The-File-Browser" href="#The-File-Browser">6 The File Browser</a>
+<li><a name="toc_Pico-Compatibility" href="#Pico-Compatibility">7 Pico Compatibility</a>
+<li><a name="toc_Building-and-Configure-Options" href="#Building-and-Configure-Options">8 Building and Configure Options</a>
+</li></ul>
+</div>
+
+</body></html>
+
diff --git a/doc/texinfo/nano.info b/doc/texinfo/nano.info
new file mode 100644
index 0000000..f4cd7ed
--- /dev/null
+++ b/doc/texinfo/nano.info
@@ -0,0 +1,884 @@
+This is nano.info, produced by makeinfo version 4.13 from nano.texi.
+
+INFO-DIR-SECTION Editors
+START-INFO-DIR-ENTRY
+* nano: (nano). Small and friendly text editor.
+END-INFO-DIR-ENTRY
+
+
+File: nano.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
+
+ This manual documents GNU `nano', a small and friendly text editor.
+
+* Menu:
+
+* Introduction::
+* Editor Basics::
+* Online Help::
+* Feature Toggles::
+* Nanorc Files::
+* The File Browser::
+* Pico Compatibility::
+* Building and Configure Options::
+
+
+File: nano.info, Node: Introduction, Next: Editor Basics, Prev: Top, Up: Top
+
+1 Introduction
+**************
+
+GNU `nano' is a small and friendly text editor. Besides basic text
+editing, `nano' offers many extra features like an interactive search
+and replace, go to line and column number, auto-indentation, feature
+toggles, internationalization support, and filename tab completion.
+
+* Menu:
+
+* Overview::
+* Command Line Options::
+
+
+File: nano.info, Node: Overview, Next: Command Line Options, Prev: Introduction, Up: Introduction
+
+1.1 Overview
+============
+
+The original goal for `nano' was a complete bug-for-bug compatible
+emulation of Pico, but `nano''s current goal is to be as compatible as
+possible while offering a superset of Pico's functionality. See *Note
+Pico Compatibility::, for more info.
+
+ The usual way to invoke `nano' is:
+
+ `nano [OPTION]... [FILE]'
+
+ But it is also possible to edit several files in a row.
+Additionally, the cursor can be put on a desired line number by adding
+this number with a plus sign before any filename, and even in a desired
+column by adding it with a comma. So the complete synopsis is:
+
+ `nano [OPTION]... [[+LINE] FILE]...'
+
+ `nano [OPTION]... [[+,COLUMN] FILE]...'
+
+ `nano [OPTION]... [[+LINE,COLUMN] FILE]...'
+
+ Email bug reports to <nano@nano-editor.org>.
+
+
+File: nano.info, Node: Command Line Options, Prev: Overview, Up: Introduction
+
+1.2 Command Line Options
+========================
+
+`nano' takes the following options from the command line:
+
+`+LINE,COLUMN'
+ Start at line number LINE and column number COLUMN (at least one of
+ which must be specified) instead of the default of line 1, column
+ 1.
+
+`-?'
+ Same as `-h, --help'.
+
+`-A, --smarthome'
+ Make the Home key smarter. When Home is pressed anywhere but at
+ the very beginning of non-whitespace characters on a line, the
+ cursor will jump to that beginning (either forwards or backwards).
+ If the cursor is already at that position, it will jump to the
+ true beginning of the line.
+
+`-B, --backup'
+ When saving a file, back up the previous version of it to the
+ current filename suffixed with a ~.
+
+`-C <dir>, --backupdir=<dir>'
+ Set the directory where `nano' puts unique backup files if file
+ backups are enabled.
+
+`-D, --boldtext'
+ Use bold text instead of reverse video text.
+
+`-E, --tabstospaces'
+ Convert typed tabs to spaces.
+
+`-F, --multibuffer'
+ Enable multiple file buffers, if available.
+
+`-H, --historylog'
+ Log search and replace strings to ~/.nano_history, so they can be
+ retrieved in later sessions, if nanorc support is available.
+
+`-I, --ignorercfiles'
+ Don't look at SYSCONFDIR/nanorc or ~/.nanorc, if nanorc support is
+ available.
+
+`-K, --rebindkeypad'
+ Interpret the numeric keypad keys so that they all work properly.
+ You should only need to use this option if they don't, as mouse
+ support won't work properly with this option enabled.
+
+`-L, --nonewlines'
+ Don't add newlines to the ends of files.
+
+`-N, --noconvert'
+ Don't convert files from DOS/Mac format.
+
+`-O, --morespace'
+ Use the blank line below the titlebar as extra editing space.
+
+`-Q <str>, --quotestr=<str>'
+ Set the quoting string for justifying. The default value is
+
+ `^([ \t]*[|>:}#])+'
+
+ if extended regular expression support is available, or "> "
+ otherwise. Note that `\t' above stands for a literal Tab
+ character.
+
+`-R, --restricted'
+ Restricted mode: don't read or write to any file not specified on
+ the command line; read any nanorc files; allow suspending; allow a
+ file to be appended to, prepended to, or saved under a different
+ name if it already has one; or use backup files or spell checking.
+ Also accessible by invoking `nano' with any name beginning with
+ 'r' (e.g. "rnano").
+
+`-S, --smooth'
+ Enable smooth scrolling. Text will scroll line-by-line, instead
+ of the usual chunk-by-chunk behavior.
+
+`-T <#cols>, --tabsize=<#cols>'
+ Set the displayed tab length to #cols columns. The value of #cols
+ must be greater than 0. The default value is 8.
+
+`-U, --quickblank'
+ Do quick statusbar blanking. Statusbar messages will disappear
+ after 1 keystroke instead of 25. Note that -c overrides this.
+
+`-V, --version'
+ Show the current version number and exit.
+
+`-W, --wordbounds'
+ Detect word boundaries more accurately by treating punctuation
+ characters as parts of words.
+
+`-Y <str>, --syntax=<str>'
+ Specify a specific syntax highlighting from the nanorc to use, if
+ available. See *Note Nanorc Files::, for more info.
+
+`-c, --const'
+ Constantly display the cursor position and line number on the
+ statusbar. Note that this overrides -U.
+
+`-d, --rebinddelete'
+ Interpret the Delete key differently so that both Backspace and
+ Delete work properly. You should only need to use this option if
+ Backspace acts like Delete on your system.
+
+`-h, --help'
+ Show a summary of command line options and exit.
+
+`-i, --autoindent'
+ Automatically indent new lines to the same number of spaces and
+ tabs as the previous line.
+
+`-k, --cut'
+ Cut from the current cursor position to the end of the current
+ line.
+
+`-l, --nofollow'
+ When writing files, if the given file is a symbolic link, it is
+ removed and a new file is created.
+
+`-m, --mouse'
+ Enable mouse support, if available for your system. When enabled,
+ mouse clicks can be used to place the cursor, set the mark (with a
+ double click), and execute shortcuts. The mouse will work in the
+ X Window System, and on the console when gpm is running.
+
+`-o <dir>, --operatingdir=<dir>'
+ Set operating directory. Makes `nano' set up something similar to
+ a chroot.
+
+`-p, --preserve'
+ Preserve the ^Q (XON) and ^S (XOFF) sequences so data being sent
+ to the editor can be can be stopped and started.
+
+`-q, --quiet'
+ Do not report errors in the nanorc file and ask them to be
+ acknowledged by pressing Enter at startup.
+
+`-r <#cols>, --fill=<#cols>'
+ Wrap lines at column #cols. If this value is 0 or less, wrapping
+ will occur at the width of the screen less #cols, allowing it to
+ vary along with the width of the screen if the screen is resized.
+ The default value is -8.
+
+`-s <prog>, --speller=<prog>'
+ Invoke the given program as the spell checker. By default, `nano'
+ uses the command specified in the SPELL environment variable, or,
+ if SPELL is not set, its own interactive spell checker that
+ requires the `spell' program to be installed on your system.
+
+`-t, --tempfile'
+ Don't ask whether or not to save the current contents of the file
+ when exiting, assume yes. This is most useful when using `nano'
+ as the composer of a mailer program.
+
+`-u, --undo'
+ Enable experimental generic-purpose undo code. By default, the
+ undo and redo shortcuts are Meta-U and Meta-E, respectively.
+
+`-v, --view'
+ Don't allow the contents of the file to be altered. Note that this
+ option should NOT be used in place of correct file permissions to
+ implement a read-only file.
+
+`-w, --nowrap'
+ Don't wrap long lines at any length. This option overrides any
+ value for -r.
+
+`-x, --nohelp'
+ Expert Mode: don't show the Shortcut Lists at the bottom of the
+ screen. This affects the location of the statusbar as well, as in
+ Expert Mode it is located at the very bottom of the editor.
+
+ Note: When accessing the help system, Expert Mode is temporarily
+ disabled to display the help system navigation keys.
+
+`-z, --suspend'
+ Enable `nano''s suspend ability using the system's suspend
+ keystroke (usually ^Z).
+
+`-$, --softwrap'
+ Enable 'soft wrapping'. `nano' will attempt to display the entire
+ contents of a line, even if it is longer than the screen width.
+ Since '$' normally refers to a variable in the Unix shell, you
+ should specify this option last when using other options (e.g.
+ 'nano -wS$') or pass it separately (e.g. 'nano -wS -$').
+
+`-a, -b, -e, -f, -g, -j'
+ Ignored, for compatibility with Pico.
+
+
+File: nano.info, Node: Editor Basics, Next: Online Help, Prev: Introduction, Up: Top
+
+2 Editor Basics
+***************
+
+* Menu:
+
+* Entering Text::
+* Special Functions::
+* The Titlebar::
+* The Statusbar::
+* Shortcut Lists::
+* Using the Mouse::
+
+
+File: nano.info, Node: Entering Text, Next: Special Functions, Prev: Editor Basics, Up: Editor Basics
+
+2.1 Entering Text
+=================
+
+All key sequences in `nano' are entered using the keyboard. `nano' is
+a "modeless" editor. All keys, with the exception of Control and Meta
+key sequences, will enter text into the file being edited.
+
+
+File: nano.info, Node: Special Functions, Next: The Titlebar, Prev: Entering Text, Up: Editor Basics
+
+2.2 Special Functions
+=====================
+
+Special functions use the Control (Ctrl) key, displayed in the help and
+shortcut lists as ^; the Meta key, displayed as M; or the Escape (Esc)
+key.
+
+ * Control key sequences are entered by holding down the Ctrl key and
+ pressing the desired key, or by pressing the Esc key twice and
+ pressing the desired key.
+
+ * Pressing Esc twice and then typing a three-digit number from 000
+ to 255 will enter the character with the corresponding value.
+
+ * Meta key sequences are entered by holding down the Meta key
+ (normally the Alt key) and pressing the desired key, or by
+ pressing the Esc key once and pressing the desired key. Certain
+ operating systems "swallow" the Alt key so that it never reaches
+ the application; if your operating system does this, you should
+ use the Esc key to generate Meta key sequences.
+
+
+File: nano.info, Node: The Titlebar, Next: The Statusbar, Prev: Special Functions, Up: Editor Basics
+
+2.3 The Titlebar
+================
+
+The titlebar is the line displayed at the top of the editor. There are
+three sections: left, center and right. The section on the left
+displays the version of `nano' being used. The center section displays
+the current filename, or "New Buffer" if the file has not yet been
+named. The section on the right will display "Modified" if the file
+has been modified since it was last saved or opened.
+
+ Special modes: When `nano' is in "File browser" mode, the center
+section will display the current directory instead of the filename. See
+*Note The File Browser::, for more info.
+
+
+File: nano.info, Node: The Statusbar, Next: Shortcut Lists, Prev: The Titlebar, Up: Editor Basics
+
+2.4 The Statusbar
+=================
+
+The statusbar is the third line from the bottom of the screen, or the
+bottom line in Expert Mode. See *Note Expert Mode::, for more info. It
+shows important and informational messages. Any error messages that
+occur from using the editor will appear on the statusbar. Any questions
+that are asked of the user will be asked on the statusbar, and any user
+input (search strings, filenames, etc.) will be input on the statusbar.
+
+
+File: nano.info, Node: Shortcut Lists, Next: Using the Mouse, Prev: The Statusbar, Up: Editor Basics
+
+2.5 Shortcut Lists
+==================
+
+The Shortcut Lists are the two lines at the bottom of the screen which
+show some of the more commonly used functions in the editor.
+
+
+File: nano.info, Node: Using the Mouse, Prev: Shortcut Lists, Up: Editor Basics
+
+2.6 Using the Mouse
+===================
+
+When mouse support has been configured and enabled, a single mouse click
+places the cursor at the indicated position. Clicking a second time in
+the same position toggles the mark. Clicking in the shortcut list
+executes the selected shortcut.
+
+ The mouse will work in the X Window System, and on the console when
+gpm is running.
+
+
+File: nano.info, Node: Online Help, Next: Feature Toggles, Prev: Editor Basics, Up: Top
+
+3 Online Help
+*************
+
+The online help system in `nano' is available by pressing ^G. It is
+fairly self explanatory, documenting the various parts of the editor
+and available keystrokes. Navigation is via the ^Y (Page Up) and ^V
+(Page Down) keys. ^X exits the help system.
+
+
+File: nano.info, Node: Feature Toggles, Next: Nanorc Files, Prev: Online Help, Up: Top
+
+4 Feature Toggles
+*****************
+
+Toggles allow you to change certain aspects of the editor that would
+normally be done via command line options. They are invoked via Meta
+key sequences. See *Note Special Functions::, for more info. The
+following global toggles are available:
+
+`Backup Files Toggle (Meta-B)'
+ toggles the -B (`--backup') command line option.
+
+`Constant Cursor Position Display Toggle (Meta-C)'
+ toggles the -c (`--const') command line option.
+
+`Multiple File Buffers Toggle (Meta-F)'
+ toggles the -F (`--multibuffer') command line option.
+
+`Smart Home Key Toggle (Meta-H)'
+ toggles the -A (`--smarthome') command line option.
+
+`Auto Indent Toggle (Meta-I)'
+ toggles the -i (`--autoindent') command line option.
+
+`Cut To End Toggle (Meta-K)'
+ toggles the -k (`--cut') command line option.
+
+`Long Line Wrapping Toggle (Meta-L)'
+ toggles the -w (`--nowrap') command line option.
+
+`Mouse Support Toggle (Meta-M)'
+ toggles the -m (`--mouse') command line option.
+
+`No Conversion From DOS/Mac Format Toggle (Meta-N)'
+ toggles the -N (`--noconvert') command line option.
+
+`More Space For Editing Toggle (Meta-O)'
+ toggles the -O (`--morespace') command line option.
+
+`Whitespace Display Toggle (Meta-P)'
+ toggles whitespace display mode if you have a "whitespace" option
+ in your nanorc. See *Note Nanorc Files::, for more info.
+
+`Tabs to Spaces Toggle (Meta-Q)'
+ toggles the -E (`--tabstospaces') command line option.
+
+`Smooth Scrolling Toggle (Meta-S)'
+ toggles the -S (`--smooth') command line option.
+
+`Expert/No Help Toggle (Meta-X)'
+ toggles the -x (`--nohelp') command line option.
+
+`Color Syntax Highlighting Toggle (Meta-Y)'
+ toggles color syntax highlighting if you have color syntaxes in
+ your nanorc. See *Note Nanorc Files::, for more info.
+
+`Suspend Toggle (Meta-Z)'
+ toggles the -z (`--suspend') command line option.
+
+`Soft Wrapping Toggle (Meta-$)'
+ toggles the -$ (`--softwrap') command line option.
+
+
+
+File: nano.info, Node: Nanorc Files, Next: The File Browser, Prev: Feature Toggles, Up: Top
+
+5 Nanorc Files
+**************
+
+The nanorc files contain the default settings for `nano'. They should
+not be in DOS or Mac format. During startup, `nano' will first read
+its system-wide settings from SYSCONFDIR/nanorc, and then user-specific
+settings from ~/.nanorc.
+
+ A nanorc file accepts a series of "set" and "unset" commands, which
+can be used to configure `nano' on startup without using the command
+line options. Additionally, the "syntax", "color", and "icolor"
+keywords are used to define syntax highlighting rules for different text
+patterns. `nano' will read one command per line.
+
+ Options in nanorc files take precedence over `nano''s defaults, and
+command line options override nanorc settings. Options are also unset
+by default, except for those that take arguments.
+
+ Quotes inside string parameters don't have to be escaped with
+backslashes. The last double quote in the string will be treated as its
+end. For example, for the "brackets" option,
+
+ `""')>]}"'
+
+ will match `"', `'', `)', `>', `]', and `}'.
+
+ The supported commands and arguments are:
+
+`set/unset autoindent'
+ Use auto-indentation.
+
+`set/unset backup'
+ Create backup files in "filename~".
+
+`set backupdir "directory"'
+ Set the directory where `nano' puts unique backup files if file
+ backups are enabled.
+
+`set/unset backwards'
+ Do backwards searches by default.
+
+`set/unset boldtext'
+ Use bold text instead of reverse video text.
+
+`set brackets "string"'
+ Set the characters treated as closing brackets when justifying
+ paragraphs. They cannot contain blank characters. Only closing
+ punctuation, optionally followed by closing brackets, can end
+ sentences. The default value is
+
+ `""')>]}"'
+
+`set/unset casesensitive'
+ Do case sensitive searches by default.
+
+`set/unset const'
+ Constantly display the cursor position in the status bar.
+
+`set/unset cut'
+ Use cut to end of line by default, instead of cutting the whole
+ line.
+
+`set fill "n"'
+ Wrap lines at column number "n". If "n" is 0 or less, the maximum
+ line length will be the screen width less "n" columns. The
+ default value is -8.
+
+`set/unset historylog'
+ Enable ~/.nano_history for saving and reading search/replace
+ strings.
+
+`set matchbrackets "string"'
+ Set the opening and closing brackets that can be found by bracket
+ searches. They cannot contain blank characters. The former set
+ must come before the latter set, and both must be in the same
+ order. The default value is
+
+ `"(<[{)>]}"'
+
+`set/unset morespace'
+ Use the blank line below the titlebar as extra editing space.
+
+`set/unset mouse'
+ Enable mouse support, so that mouse clicks can be used to place the
+ cursor, set the mark (with a double click), or execute shortcuts.
+
+`set/unset multibuffer'
+ Allow inserting files into their own buffers.
+
+`set/unset noconvert'
+ Don't convert files from DOS/Mac format.
+
+`set/unset nofollow'
+ Don't follow symlinks when writing files.
+
+`set/unset nohelp'
+ Don't display the help lists at the bottom of the screen.
+
+`set/unset nonewlines'
+ Don't add newlines to the ends of files.
+
+`set/unset nowrap'
+ Don't wrap text at all.
+
+`set operatingdir "directory"'
+ `nano' will only read and write files inside "directory" and its
+ subdirectories. Also, the current directory is changed to here, so
+ files are inserted from this directory. By default, the operating
+ directory feature is turned off.
+
+`set/unset preserve'
+ Preserve the XON and XOFF keys (^Q and ^S).
+
+`set punct "string"'
+ Set the characters treated as closing punctuation when justifying
+ paragraphs. They cannot contain blank characters. Only closing
+ punctuation, optionally followed by closing brackets, can end
+ sentences. The default value is `"!.?"'.
+
+`set/unset quickblank'
+ Do quick statusbar blanking. Statusbar messages will disappear
+ after 1 keystroke instead of 25.
+
+`set quotestr "string"'
+ The email-quote string, used to justify email-quoted paragraphs.
+ This is an extended regular expression if your system supports
+ them, otherwise a literal string. The default value is
+
+ `"^([ \\t]*[#:>\\|}])+"'
+
+ if you have extended regular expression support, or "> " otherwise.
+ Note that '\\t' stands for a literal Tab character.
+
+`set/unset rebinddelete'
+ Interpret the Delete key differently so that both Backspace and
+ Delete work properly. You should only need to use this option if
+ Backspace acts like Delete on your system.
+
+`set/unset rebindkeypad'
+ Interpret the numeric keypad keys so that they all work properly.
+ You should only need to use this option if they don't, as mouse
+ support won't work properly with this option enabled.
+
+`set/unset regexp'
+ Do extended regular expression searches by default.
+
+`set/unset smarthome'
+ Make the Home key smarter. When Home is pressed anywhere but at
+ the very beginning of non-whitespace characters on a line, the
+ cursor will jump to that beginning (either forwards or backwards).
+ If the cursor is already at that position, it will jump to the
+ true beginning of the line.
+
+`set/unset smooth'
+ Use smooth scrolling by default.
+
+`set/unset softwrap'
+ Use soft wrapping by default.
+
+`set speller "spellprog"'
+ Use spelling checker "spellprog" instead of the built-in one, which
+ calls "spell".
+
+`set/unset suspend'
+ Allow `nano' to be suspended.
+
+`set/unset suspendenable'
+ If `nano' is allowed to be suspended, allow the suspend key
+ (usually ^Z) to actually suspend it.
+
+`set tabsize "n"'
+ Use a tab size of "n" columns. The value of "n" must be greater
+ than 0. The default value is 8.
+
+`set/unset tabstospaces'
+ Convert typed tabs to spaces.
+
+`set/unset tempfile'
+ Save automatically on exit, don't prompt.
+
+`set/unset undo'
+ Enable experimental generic-purpose undo code.
+
+`set/unset view'
+ Disallow file modification.
+
+`set whitespace "string"'
+ Set the two characters used to display the first characters of
+ tabs and spaces. They must be single-column characters.
+
+`set/unset wordbounds'
+ Detect word boundaries more accurately by treating punctuation
+ characters as part of a word.
+
+`syntax "str" ["fileregex" ... ]'
+ Defines a syntax named "str" which can be activated via the
+ -Y/-syntax command line option, or will be automatically activated
+ if the current filename matches the extended regular expression
+ "fileregex". All following "color" and "icolor" statements will
+ apply to "syntax" until a new syntax is defined.
+
+ The "none" syntax is reserved; specifying it on the command line
+ is the same as not having a syntax at all. The "default" syntax
+ is special: it takes no "fileregex", and applies to files that
+ don't match any other syntax's "fileregex".
+
+`color fgcolor,bgcolor "regex" ...'
+ For the currently defined syntax, display all expressions matching
+ the extended regular expression "regex" with foreground color
+ "fgcolor" and background color "bgcolor", at least one of which
+ must be specified. Legal colors for foreground and background
+ color are: white, black, red, blue, green, yellow, magenta, and
+ cyan. You may use the prefix "bright" to force a stronger color
+ highlight for the foreground. If your terminal supports
+ transparency, not specifying a "bgcolor" tells "nano" to attempt
+ to use a transparent background.
+
+`icolor fgcolor,bgcolor "regex" ...'
+ Same as above, except that the expression matching is case
+ insensitive.
+
+`color fgcolor,bgcolor start="sr" end="er"'
+ Display expressions which start with the extended regular
+ expression "sr" and end with the extended regular expression "er"
+ with foreground color "fgcolor" and background color "bgcolor", at
+ least one of which must be specified. This allows syntax
+ highlighting to span multiple lines. Note that all subsequent
+ instances of "sr" after an initial "sr" is found will be
+ highlighted until the first instance of "er".
+
+`icolor fgcolor,bgcolor start="sr" end="er"'
+ Same as above, except that the expression matching is case
+ insensitive.
+
+`include "syntaxfile"'
+ Read in self-contained color syntaxes from "syntaxfile". Note that
+ "syntaxfile" can only contain "syntax", "color", and "icolor"
+ commands.
+
+
+
+File: nano.info, Node: The File Browser, Next: Pico Compatibility, Prev: Nanorc Files, Up: Top
+
+6 The File Browser
+******************
+
+When reading or writing files, pressing ^T will invoke the file browser.
+Here, one can navigate directories in a graphical manner in order to
+find the desired file.
+
+ Basic movement in the file browser is accomplished with the arrow
+keys, page up, and page down. More advanced movement is accomplished by
+searching via ^W (or 'w') and changing directories via ^_ (or 'g'). The
+behavior of the Enter (or 's') key varies by what is currently selected.
+If the currently selected object is a directory, the file browser will
+enter and display the contents of the directory. If the object is a
+file, this filename and path are copied to the statusbar, and the file
+browser exits.
+
+
+File: nano.info, Node: Pico Compatibility, Next: Building and Configure Options, Prev: The File Browser, Up: Top
+
+7 Pico Compatibility
+********************
+
+`nano' attempts to emulate Pico as closely as possible, but there are
+certain differences between the editors:
+
+`Search and Replace History'
+ As of version 1.1.99pre1 of `nano', text entered as search or
+ replace strings will be stored and can be accessed with the up/down
+ arrow keys. Previously, `nano' offered a more consistent, but
+ incompatible with Pico, method for entering search and replace
+ strings. In the old method, previous entries would be displayed
+ by default as editable text in front of the cursor, as opposed to
+ being bracketed and uneditable as it is in Pico. The old behavior
+ could be made compatible with Pico via the `-p' option, but recent
+ versions of Pico use the `-p' option to preserve the XON and XOFF
+ sequences within the editor. Since, with the new method, search
+ and replace strings can still be edited by simply hitting the up
+ arrow key once, the old method was removed completely.
+
+`Writing, Appending, or Prepending Selected Text to Files'
+ Text selected using the marking key (^^) can be written out,
+ appended, or prepended to a new or existing file using the
+ WriteOut key (^O).
+
+`Toggles'
+ Many options which alter the functionality of the program can be
+ "toggled" on or off using Meta key sequences, meaning the program
+ does not have to be restarted to turn a particular feature of the
+ editor on or off. Please see the internal help function (^G) for
+ a list of what functions can be toggled for a particular version
+ of `nano'. See *Note Feature Toggles::, for more info.
+
+`Cursor Position Display'
+ The output of the "Display Cursor Position" in `nano' displays the
+ given column position, as well as the row and total character
+ position of the cursor.
+
+`Interactive Replace and Spell Checker'
+ It is worth noting that `nano''s replace function is interactive,
+ i.e. it does not stop after one search string is found and
+ automatically replace it. The `nano' implementation will pause at
+ each search string found and query whether to replace this
+ instance or not. The internal spell checker operates similarly.
+ Note that there is no way to force these functions to behave in
+ the Pico fashion. As of version 1.1.99pre1, misspelled words are
+ sorted and trimmed for uniqueness in the internal spell checker
+ such that the words 'apple' and 'Apple' will be prompted for
+ correction separately.
+
+
+File: nano.info, Node: Building and Configure Options, Prev: Pico Compatibility, Up: Top
+
+8 Building and Configure Options
+********************************
+
+Building `nano' from source is fairly straightforward if you are
+familiar with compiling programs with autoconf support:
+
+ * tar xvfz nano-x.y.z.tar.gz (where x.y.z is the version of `nano')
+
+ * cd nano-x.y.z/
+
+ * ./configure
+
+ * make
+
+ * make install
+
+ The possible options to `./configure' are:
+
+`--disable-browser'
+ Disable the mini file browser when reading or writing files.
+
+`--disable-help'
+ Disable the help function. Doing this makes the binary much
+ smaller, but makes it difficult for new users to learn more than
+ very basic things about using the editor.
+
+`--disable-justify'
+ Disable the justify and unjustify functions.
+
+`--disable-mouse'
+ Disable all mouse functionality. This also disables the -m
+ command line option, which enables the mouse functionality.
+
+`--disable-operatingdir'
+ Disable setting the operating directory. This also disables the -o
+ command line option, which sets the operating directory.
+
+`--disable-speller'
+ Disable use of the spell checker. This also disables the -s
+ command line option, which allows specifying an alternate spell
+ checker.
+
+`--disable-tabcomp'
+ Disable the tab completion code when reading or writing files.
+
+`--disable-wrapping'
+ Disable all long line wrapping. This also eliminates the -w
+ command line option, which enables long line wrapping.
+
+`--enable-tiny'
+ This option disables all the above. It also disables some of the
+ larger internals of the editor, like the marking code and the cut
+ to end of line code. It also disables the function toggles.
+
+`--enable-debug'
+ Enable support for runtime debug output. This can get pretty
+ messy, so chances are you only want this feature to work on the
+ nano source.
+
+`--enable-extra'
+ Enable extra features. At the moment, this is just easter egg-type
+ stuff.
+
+`--enable-color'
+ Enable support for syntax coloring of files using the nanorc file.
+ This enables nanorc support as well.
+
+`--enable-multibuffer'
+ Enable support for opening multiple files at a time and switching
+ between them on the fly.
+
+`--enable-nanorc'
+ Enable support for reading the nanorc file at startup. You can
+ store custom settings in the nanorc file rather than having to
+ pass command line options to get desired behavior. See *Note
+ Nanorc Files::, for more info.
+
+`--enable-all'
+ Shortcut for enabling the above four features (extra, color,
+ multibuffer, and nanorc).
+
+`--disable-nls'
+ Disables Native Language support. This will disable use of the
+ available GNU `nano' translations.
+
+`--disable-wrapping-as-root'
+ Disable long line wrapping by default when nano is run as root.
+
+`--enable-utf8'
+ Enable support for reading and writing Unicode files. This will
+ require either a wide version of curses, or a UTF-8-enabled
+ version of Slang.
+
+`--disable-utf8'
+ Disable support for reading and writing Unicode files.
+
+`--with-slang'
+ Compiling `nano' with Slang is supported, and will make the binary
+ notably smaller than if compiled with ncurses or other curses
+ libraries.
+
+
+
+
+Tag Table:
+Node: Top200
+Node: Introduction527
+Node: Overview966
+Node: Command Line Options1871
+Ref: Expert Mode7858
+Node: Editor Basics8745
+Node: Entering Text8994
+Node: Special Functions9342
+Node: The Titlebar10346
+Node: The Statusbar11071
+Node: Shortcut Lists11643
+Node: Using the Mouse11923
+Node: Online Help12383
+Node: Feature Toggles12760
+Node: Nanorc Files14867
+Node: The File Browser23472
+Node: Pico Compatibility24294
+Node: Building and Configure Options26950
+
+End Tag Table
diff --git a/doc/texinfo/nano.texi b/doc/texinfo/nano.texi
new file mode 100644
index 0000000..fe12428
--- /dev/null
+++ b/doc/texinfo/nano.texi
@@ -0,0 +1,885 @@
+\input texinfo @c -*-texinfo-*-
+@c %**start of header
+@setfilename nano.info
+@settitle nano Command Manual
+@c %**end of header
+
+@c This file has the new style title page commands.
+@c Run 'makeinfo' rather than 'texinfo-format-buffer'.
+@smallbook
+@set EDITION 0.1
+@set VERSION 2.2.0
+@set UPDATED 30 Nov 2009
+
+@dircategory Editors
+@direntry
+* nano: (nano). Small and friendly text editor.
+@end direntry
+
+@c tex
+@c \overfullrule=0pt
+@c end tex
+
+@titlepage
+@title GNU @code{nano}
+@subtitle a small and friendly text editor.
+@subtitle version 2.2.0
+
+@author Chris Allegretta
+@page
+
+This manual documents GNU @code{nano}, a small and friendly text
+editor.
+
+This manual is part of the GNU @code{nano} distribution.@*
+@sp4
+Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+2008, 2009 Free Software Foundation, Inc.
+
+This document is dual-licensed. You may distribute and/or modify it
+under the terms of either of the following licenses:
+
+* The GNU General Public License, as published by the Free Software
+ Foundation, version 3 or (at your option) any later version. You
+ should have received a copy of the GNU General Public License along
+ with this program. If not, see <http://www.gnu.org/licenses/>.
+
+* The GNU Free Documentation License, as published by the Free Software
+ Foundation, version 1.2 or (at your option) any later version, with no
+ Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ You should have received a copy of the GNU Free Documentation License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+You may contact the author by
+e-mail: @email{chrisa@@asty.org}@*
+@end titlepage
+
+@node Top, Introduction, (dir), (dir)
+
+This manual documents GNU @code{nano}, a small and friendly text
+editor.
+
+@menu
+* Introduction::
+* Editor Basics::
+* Online Help::
+* Feature Toggles::
+* Nanorc Files::
+* The File Browser::
+* Pico Compatibility::
+* Building and Configure Options::
+@end menu
+
+@node Introduction, Editor Basics, Top, Top
+@chapter Introduction
+
+GNU @code{nano} is a small and friendly text editor. Besides basic text
+editing, @code{nano} offers many extra features like an interactive
+search and replace, go to line and column number, auto-indentation,
+feature toggles, internationalization support, and filename tab
+completion.
+
+@menu
+* Overview::
+* Command Line Options::
+@end menu
+
+@node Overview, Command Line Options, Introduction, Introduction
+@section Overview
+
+The original goal for @code{nano} was a complete bug-for-bug compatible
+emulation of Pico, but @code{nano}'s current goal is to be as compatible
+as possible while offering a superset of Pico's functionality. See
+@xref{Pico Compatibility}, for more info.
+
+The usual way to invoke @code{nano} is:
+
+@quotation
+@code{nano [OPTION]@dots{} [FILE]}
+@end quotation
+
+But it is also possible to edit several files in a row. Additionally,
+the cursor can be put on a desired line number by adding this number
+with a plus sign before any filename, and even in a desired column by
+adding it with a comma. So the complete synopsis is:
+
+@quotation
+@code{nano [OPTION]@dots{} [[+LINE] FILE]@dots{}}
+
+@code{nano [OPTION]@dots{} [[+,COLUMN] FILE]@dots{}}
+
+@code{nano [OPTION]@dots{} [[+LINE,COLUMN] FILE]@dots{}}
+@end quotation
+
+Email bug reports to @email{nano@@nano-editor.org}.
+
+@node Command Line Options, , Overview, Introduction
+@section Command Line Options
+
+@code{nano} takes the following options from the command line:
+
+@table @code
+@item +LINE,COLUMN
+Start at line number LINE and column number COLUMN (at least one of
+which must be specified) instead of the default of line 1, column 1.
+
+@item -?
+Same as @code{-h, --help}.
+
+@item -A, --smarthome
+Make the Home key smarter. When Home is pressed anywhere but at the
+very beginning of non-whitespace characters on a line, the cursor will
+jump to that beginning (either forwards or backwards). If the cursor is
+already at that position, it will jump to the true beginning of the
+line.
+
+@item -B, --backup
+When saving a file, back up the previous version of it to the current
+filename suffixed with a ~.
+
+@item -C <dir>, --backupdir=<dir>
+Set the directory where @code{nano} puts unique backup files if file
+backups are enabled.
+
+@item -D, --boldtext
+Use bold text instead of reverse video text.
+
+@item -E, --tabstospaces
+Convert typed tabs to spaces.
+
+@item -F, --multibuffer
+Enable multiple file buffers, if available.
+
+@item -H, --historylog
+Log search and replace strings to ~/.nano_history, so they can be
+retrieved in later sessions, if nanorc support is available.
+
+@item -I, --ignorercfiles
+Don't look at SYSCONFDIR/nanorc or ~/.nanorc, if nanorc support is
+available.
+
+@item -K, --rebindkeypad
+Interpret the numeric keypad keys so that they all work properly. You
+should only need to use this option if they don't, as mouse support
+won't work properly with this option enabled.
+
+@item -L, --nonewlines
+Don't add newlines to the ends of files.
+
+@item -N, --noconvert
+Don't convert files from DOS/Mac format.
+
+@item -O, --morespace
+Use the blank line below the titlebar as extra editing space.
+
+@item -Q <str>, --quotestr=<str>
+Set the quoting string for justifying. The default value is
+
+@quotation
+@code{^([ \t]*[|>:@}#])+}
+@end quotation
+
+if extended regular expression support is available, or "> " otherwise.
+Note that @code{\t} above stands for a literal Tab character.
+
+@item -R, --restricted
+Restricted mode: don't read or write to any file not specified on the
+command line; read any nanorc files; allow suspending; allow a file to
+be appended to, prepended to, or saved under a different name if it
+already has one; or use backup files or spell checking. Also accessible
+by invoking @code{nano} with any name beginning with 'r' (e.g. "rnano").
+
+@item -S, --smooth
+Enable smooth scrolling. Text will scroll line-by-line, instead of the
+usual chunk-by-chunk behavior.
+
+@item -T <#cols>, --tabsize=<#cols>
+Set the displayed tab length to #cols columns. The value of #cols must
+be greater than 0. The default value is 8.
+
+@item -U, --quickblank
+Do quick statusbar blanking. Statusbar messages will disappear after 1
+keystroke instead of 25. Note that -c overrides this.
+
+@item -V, --version
+Show the current version number and exit.
+
+@item -W, --wordbounds
+Detect word boundaries more accurately by treating punctuation
+characters as parts of words.
+
+@item -Y <str>, --syntax=<str>
+Specify a specific syntax highlighting from the nanorc to use, if
+available. See @xref{Nanorc Files}, for more info.
+
+@item -c, --const
+Constantly display the cursor position and line number on the statusbar.
+Note that this overrides -U.
+
+@item -d, --rebinddelete
+Interpret the Delete key differently so that both Backspace and Delete
+work properly. You should only need to use this option if Backspace
+acts like Delete on your system.
+
+@item -h, --help
+Show a summary of command line options and exit.
+
+@item -i, --autoindent
+Automatically indent new lines to the same number of spaces and tabs as
+the previous line.
+
+@item -k, --cut
+Cut from the current cursor position to the end of the current line.
+
+@item -l, --nofollow
+When writing files, if the given file is a symbolic link, it is removed
+and a new file is created.
+
+@item -m, --mouse
+Enable mouse support, if available for your system. When enabled, mouse
+clicks can be used to place the cursor, set the mark (with a double
+click), and execute shortcuts. The mouse will work in the X Window
+System, and on the console when gpm is running.
+
+@item -o <dir>, --operatingdir=<dir>
+Set operating directory. Makes @code{nano} set up something similar to
+a chroot.
+
+@item -p, --preserve
+Preserve the ^Q (XON) and ^S (XOFF) sequences so data being sent to the
+editor can be can be stopped and started.
+
+@item -q, --quiet
+Do not report errors in the nanorc file and ask them to be acknowledged
+by pressing Enter at startup.
+
+@item -r <#cols>, --fill=<#cols>
+Wrap lines at column #cols. If this value is 0 or less, wrapping will
+occur at the width of the screen less #cols, allowing it to vary along
+with the width of the screen if the screen is resized. The default
+value is -8.
+
+@item -s <prog>, --speller=<prog>
+Invoke the given program as the spell checker. By default, @code{nano}
+uses the command specified in the SPELL environment variable, or, if
+SPELL is not set, its own interactive spell checker that requires the
+@code{spell} program to be installed on your system.
+
+@item -t, --tempfile
+Don't ask whether or not to save the current contents of the file when
+exiting, assume yes. This is most useful when using @code{nano} as the
+composer of a mailer program.
+
+@item -u, --undo
+Enable experimental generic-purpose undo code. By default, the undo and
+redo shortcuts are Meta-U and Meta-E, respectively.
+
+@item -v, --view
+Don't allow the contents of the file to be altered. Note that this
+option should NOT be used in place of correct file permissions to
+implement a read-only file.
+
+@item -w, --nowrap
+Don't wrap long lines at any length. This option overrides any value
+for -r.
+
+@anchor{Expert Mode}
+@item -x, --nohelp
+Expert Mode: don't show the Shortcut Lists at the bottom of the screen.
+This affects the location of the statusbar as well, as in Expert Mode it
+is located at the very bottom of the editor.
+
+Note: When accessing the help system, Expert Mode is temporarily
+disabled to display the help system navigation keys.
+
+@item -z, --suspend
+Enable @code{nano}'s suspend ability using the system's suspend
+keystroke (usually ^Z).
+
+@item -$, --softwrap
+Enable 'soft wrapping'. @code{nano} will attempt to display the entire
+contents of a line, even if it is longer than the screen width. Since
+'$' normally refers to a variable in the Unix shell, you should specify
+this option last when using other options (e.g. 'nano -wS$') or pass it
+separately (e.g. 'nano -wS -$').
+
+@item -a, -b, -e, -f, -g, -j
+Ignored, for compatibility with Pico.
+@end table
+
+
+@node Editor Basics, Online Help, Introduction, Top
+@chapter Editor Basics
+@menu
+* Entering Text::
+* Special Functions::
+* The Titlebar::
+* The Statusbar::
+* Shortcut Lists::
+* Using the Mouse::
+@end menu
+
+@node Entering Text, Special Functions, Editor Basics, Editor Basics
+@section Entering Text
+
+All key sequences in @code{nano} are entered using the keyboard.
+@code{nano} is a "modeless" editor. All keys, with the exception of
+Control and Meta key sequences, will enter text into the file being
+edited.
+
+@node Special Functions, The Titlebar, Entering Text, Editor Basics
+@section Special Functions
+
+Special functions use the Control (Ctrl) key, displayed in the help and
+shortcut lists as ^; the Meta key, displayed as M; or the Escape (Esc)
+key.
+
+@itemize @bullet
+@item
+Control key sequences are entered by holding down the Ctrl key and
+pressing the desired key, or by pressing the Esc key twice and pressing
+the desired key.
+@item
+Pressing Esc twice and then typing a three-digit number from 000 to 255
+will enter the character with the corresponding value.
+@item
+Meta key sequences are entered by holding down the Meta key (normally
+the Alt key) and pressing the desired key, or by pressing the Esc key
+once and pressing the desired key. Certain operating systems "swallow"
+the Alt key so that it never reaches the application; if your operating
+system does this, you should use the Esc key to generate Meta key
+sequences.
+@end itemize
+
+@node The Titlebar, The Statusbar, Special Functions, Editor Basics
+@section The Titlebar
+
+The titlebar is the line displayed at the top of the editor. There are
+three sections: left, center and right. The section on the left
+displays the version of @code{nano} being used. The center section
+displays the current filename, or "New Buffer" if the file has not yet
+been named. The section on the right will display "Modified" if the
+file has been modified since it was last saved or opened.
+
+Special modes: When @code{nano} is in "File browser" mode, the center
+section will display the current directory instead of the filename. See
+@xref{The File Browser}, for more info.
+
+@node The Statusbar, Shortcut Lists, The Titlebar, Editor Basics
+@section The Statusbar
+
+The statusbar is the third line from the bottom of the screen, or the
+bottom line in Expert Mode. See @xref{Expert Mode}, for more info. It
+shows important and informational messages. Any error messages that
+occur from using the editor will appear on the statusbar. Any questions
+that are asked of the user will be asked on the statusbar, and any user
+input (search strings, filenames, etc.) will be input on the statusbar.
+
+@node Shortcut Lists, Using the Mouse, The Statusbar, Editor Basics
+@section Shortcut Lists
+
+The Shortcut Lists are the two lines at the bottom of the screen which
+show some of the more commonly used functions in the editor.
+
+@node Using the Mouse, , Shortcut Lists, Editor Basics
+@section Using the Mouse
+
+When mouse support has been configured and enabled, a single mouse click
+places the cursor at the indicated position. Clicking a second time in
+the same position toggles the mark. Clicking in the shortcut list
+executes the selected shortcut.
+
+The mouse will work in the X Window System, and on the console when gpm
+is running.
+
+
+@node Online Help, Feature Toggles, Editor Basics, Top
+@chapter Online Help
+
+The online help system in @code{nano} is available by pressing ^G.
+It is fairly self explanatory, documenting the various parts of the
+editor and available keystrokes. Navigation is via the ^Y (Page Up)
+and ^V (Page Down) keys. ^X exits the help system.
+
+
+@node Feature Toggles, Nanorc Files, Online Help, Top
+@chapter Feature Toggles
+
+Toggles allow you to change certain aspects of the editor that would
+normally be done via command line options. They are invoked via Meta
+key sequences. See @xref{Special Functions}, for more info. The
+following global toggles are available:
+
+@table @code
+
+@item Backup Files Toggle (Meta-B)
+toggles the -B (@code{--backup}) command line option.
+
+@item Constant Cursor Position Display Toggle (Meta-C)
+toggles the -c (@code{--const}) command line option.
+
+@item Multiple File Buffers Toggle (Meta-F)
+toggles the -F (@code{--multibuffer}) command line option.
+
+@item Smart Home Key Toggle (Meta-H)
+toggles the -A (@code{--smarthome}) command line option.
+
+@item Auto Indent Toggle (Meta-I)
+toggles the -i (@code{--autoindent}) command line option.
+
+@item Cut To End Toggle (Meta-K)
+toggles the -k (@code{--cut}) command line option.
+
+@item Long Line Wrapping Toggle (Meta-L)
+toggles the -w (@code{--nowrap}) command line option.
+
+@item Mouse Support Toggle (Meta-M)
+toggles the -m (@code{--mouse}) command line option.
+
+@item No Conversion From DOS/Mac Format Toggle (Meta-N)
+toggles the -N (@code{--noconvert}) command line option.
+
+@item More Space For Editing Toggle (Meta-O)
+toggles the -O (@code{--morespace}) command line option.
+
+@item Whitespace Display Toggle (Meta-P)
+toggles whitespace display mode if you have a "whitespace" option in
+your nanorc. See @xref{Nanorc Files}, for more info.
+
+@item Tabs to Spaces Toggle (Meta-Q)
+toggles the -E (@code{--tabstospaces}) command line option.
+
+@item Smooth Scrolling Toggle (Meta-S)
+toggles the -S (@code{--smooth}) command line option.
+
+@item Expert/No Help Toggle (Meta-X)
+toggles the -x (@code{--nohelp}) command line option.
+
+@item Color Syntax Highlighting Toggle (Meta-Y)
+toggles color syntax highlighting if you have color syntaxes in your
+nanorc. See @xref{Nanorc Files}, for more info.
+
+@item Suspend Toggle (Meta-Z)
+toggles the -z (@code{--suspend}) command line option.
+
+@item Soft Wrapping Toggle (Meta-$)
+toggles the -$ (@code{--softwrap}) command line option.
+
+@end table
+
+
+@node Nanorc Files, The File Browser, Feature Toggles, Top
+@chapter Nanorc Files
+
+The nanorc files contain the default settings for @code{nano}. They
+should not be in DOS or Mac format. During startup, @code{nano} will
+first read its system-wide settings from SYSCONFDIR/nanorc, and then
+user-specific settings from ~/.nanorc.
+
+A nanorc file accepts a series of "set" and "unset" commands, which can
+be used to configure @code{nano} on startup without using the command
+line options. Additionally, the "syntax", "color", and "icolor"
+keywords are used to define syntax highlighting rules for different text
+patterns. @code{nano} will read one command per line.
+
+Options in nanorc files take precedence over @code{nano}'s defaults, and
+command line options override nanorc settings. Options are also unset
+by default, except for those that take arguments.
+
+Quotes inside string parameters don't have to be escaped with
+backslashes. The last double quote in the string will be treated as its
+end. For example, for the "brackets" option,
+
+@quotation
+@code{""')>]@}"}
+@end quotation
+
+will match @code{"}, @code{'}, @code{)}, @code{>}, @code{]}, and
+@code{@}}.
+
+The supported commands and arguments are:
+
+@table @code
+
+@item set/unset autoindent
+Use auto-indentation.
+
+@item set/unset backup
+Create backup files in "filename~".
+
+@item set backupdir "directory"
+Set the directory where @code{nano} puts unique backup files if file
+backups are enabled.
+
+@item set/unset backwards
+Do backwards searches by default.
+
+@item set/unset boldtext
+Use bold text instead of reverse video text.
+
+@item set brackets "string"
+Set the characters treated as closing brackets when justifying
+paragraphs. They cannot contain blank characters. Only closing
+punctuation, optionally followed by closing brackets, can end sentences.
+The default value is
+
+@quotation
+@code{""')>]@}"}
+@end quotation
+
+@item set/unset casesensitive
+Do case sensitive searches by default.
+
+@item set/unset const
+Constantly display the cursor position in the status bar.
+
+@item set/unset cut
+Use cut to end of line by default, instead of cutting the whole line.
+
+@item set fill "n"
+Wrap lines at column number "n". If "n" is 0 or less, the maximum line
+length will be the screen width less "n" columns. The default value is
+-8.
+
+@item set/unset historylog
+Enable ~/.nano_history for saving and reading search/replace strings.
+
+@item set matchbrackets "string"
+Set the opening and closing brackets that can be found by bracket
+searches. They cannot contain blank characters. The former set must
+come before the latter set, and both must be in the same order. The
+default value is
+
+@quotation
+@code{"(<[@{)>]@}"}
+@end quotation
+
+@item set/unset morespace
+Use the blank line below the titlebar as extra editing space.
+
+@item set/unset mouse
+Enable mouse support, so that mouse clicks can be used to place the
+cursor, set the mark (with a double click), or execute shortcuts.
+
+@item set/unset multibuffer
+Allow inserting files into their own buffers.
+
+@item set/unset noconvert
+Don't convert files from DOS/Mac format.
+
+@item set/unset nofollow
+Don't follow symlinks when writing files.
+
+@item set/unset nohelp
+Don't display the help lists at the bottom of the screen.
+
+@item set/unset nonewlines
+Don't add newlines to the ends of files.
+
+@item set/unset nowrap
+Don't wrap text at all.
+
+@item set operatingdir "directory"
+@code{nano} will only read and write files inside "directory" and its
+subdirectories. Also, the current directory is changed to here, so
+files are inserted from this directory. By default, the operating
+directory feature is turned off.
+
+@item set/unset preserve
+Preserve the XON and XOFF keys (^Q and ^S).
+
+@item set punct "string"
+Set the characters treated as closing punctuation when justifying
+paragraphs. They cannot contain blank characters. Only closing
+punctuation, optionally followed by closing brackets, can end sentences.
+The default value is @code{"!.?"}.
+
+@item set/unset quickblank
+Do quick statusbar blanking. Statusbar messages will disappear after 1
+keystroke instead of 25.
+
+@item set quotestr "string"
+The email-quote string, used to justify email-quoted paragraphs. This
+is an extended regular expression if your system supports them,
+otherwise a literal string. The default value is
+
+@quotation
+@code{"^([ \\t]*[#:>\\|@}])+"}
+@end quotation
+
+if you have extended regular expression support, or "> " otherwise.
+Note that '\\t' stands for a literal Tab character.
+
+@item set/unset rebinddelete
+Interpret the Delete key differently so that both Backspace and Delete
+work properly. You should only need to use this option if Backspace
+acts like Delete on your system.
+
+@item set/unset rebindkeypad
+Interpret the numeric keypad keys so that they all work properly. You
+should only need to use this option if they don't, as mouse support
+won't work properly with this option enabled.
+
+@item set/unset regexp
+Do extended regular expression searches by default.
+
+@item set/unset smarthome
+Make the Home key smarter. When Home is pressed anywhere but at the
+very beginning of non-whitespace characters on a line, the cursor will
+jump to that beginning (either forwards or backwards). If the cursor is
+already at that position, it will jump to the true beginning of the
+line.
+
+@item set/unset smooth
+Use smooth scrolling by default.
+
+@item set/unset softwrap
+Use soft wrapping by default.
+
+@item set speller "spellprog"
+Use spelling checker "spellprog" instead of the built-in one, which
+calls "spell".
+
+@item set/unset suspend
+Allow @code{nano} to be suspended.
+
+@item set/unset suspendenable
+If @code{nano} is allowed to be suspended, allow the suspend key
+(usually ^Z) to actually suspend it.
+
+@item set tabsize "n"
+Use a tab size of "n" columns. The value of "n" must be greater than 0.
+The default value is 8.
+
+@item set/unset tabstospaces
+Convert typed tabs to spaces.
+
+@item set/unset tempfile
+Save automatically on exit, don't prompt.
+
+@item set/unset undo
+Enable experimental generic-purpose undo code.
+
+@item set/unset view
+Disallow file modification.
+
+@item set whitespace "string"
+Set the two characters used to display the first characters of tabs and
+spaces. They must be single-column characters.
+
+@item set/unset wordbounds
+Detect word boundaries more accurately by treating punctuation
+characters as part of a word.
+
+@item syntax "str" ["fileregex" @dots{} ]
+Defines a syntax named "str" which can be activated via the -Y/--syntax
+command line option, or will be automatically activated if the current
+filename matches the extended regular expression "fileregex". All
+following "color" and "icolor" statements will apply to "syntax" until a
+new syntax is defined.
+
+The "none" syntax is reserved; specifying it on the command line is the
+same as not having a syntax at all. The "default" syntax is special: it
+takes no "fileregex", and applies to files that don't match any other
+syntax's "fileregex".
+
+@item color fgcolor,bgcolor "regex" @dots{}
+For the currently defined syntax, display all expressions matching the
+extended regular expression "regex" with foreground color "fgcolor" and
+background color "bgcolor", at least one of which must be specified.
+Legal colors for foreground and background color are: white, black, red,
+blue, green, yellow, magenta, and cyan. You may use the prefix "bright"
+to force a stronger color highlight for the foreground. If your
+terminal supports transparency, not specifying a "bgcolor" tells "nano"
+to attempt to use a transparent background.
+
+@item icolor fgcolor,bgcolor "regex" @dots{}
+Same as above, except that the expression matching is case insensitive.
+
+@item color fgcolor,bgcolor start="sr" end="er"
+Display expressions which start with the extended regular expression
+"sr" and end with the extended regular expression "er" with foreground
+color "fgcolor" and background color "bgcolor", at least one of which
+must be specified. This allows syntax highlighting to span multiple
+lines. Note that all subsequent instances of "sr" after an initial "sr"
+is found will be highlighted until the first instance of "er".
+
+@item icolor fgcolor,bgcolor start="sr" end="er"
+Same as above, except that the expression matching is case insensitive.
+
+@item include "syntaxfile"
+Read in self-contained color syntaxes from "syntaxfile". Note that
+"syntaxfile" can only contain "syntax", "color", and "icolor" commands.
+
+@end table
+
+
+@node The File Browser, Pico Compatibility, Nanorc Files, Top
+@chapter The File Browser
+
+When reading or writing files, pressing ^T will invoke the file browser.
+Here, one can navigate directories in a graphical manner in order to
+find the desired file.
+
+Basic movement in the file browser is accomplished with the arrow keys,
+page up, and page down. More advanced movement is accomplished by
+searching via ^W (or 'w') and changing directories via ^_ (or 'g'). The
+behavior of the Enter (or 's') key varies by what is currently selected.
+If the currently selected object is a directory, the file browser will
+enter and display the contents of the directory. If the object is a
+file, this filename and path are copied to the statusbar, and the file
+browser exits.
+
+@node Pico Compatibility, Building and Configure Options, The File Browser, Top
+@chapter Pico Compatibility
+
+@code{nano} attempts to emulate Pico as closely as possible, but there
+are certain differences between the editors:
+
+@table @code
+@item Search and Replace History
+As of version 1.1.99pre1 of @code{nano}, text entered as search or
+replace strings will be stored and can be accessed with the up/down
+arrow keys. Previously, @code{nano} offered a more consistent, but
+incompatible with Pico, method for entering search and replace strings.
+In the old method, previous entries would be displayed by default as
+editable text in front of the cursor, as opposed to being bracketed and
+uneditable as it is in Pico. The old behavior could be made compatible
+with Pico via the @code{-p} option, but recent versions of Pico use the
+@code{-p} option to preserve the XON and XOFF sequences within the
+editor. Since, with the new method, search and replace strings can
+still be edited by simply hitting the up arrow key once, the old method
+was removed completely.
+
+
+@item Writing, Appending, or Prepending Selected Text to Files
+Text selected using the marking key (^^) can be written out, appended,
+or prepended to a new or existing file using the WriteOut key (^O).
+
+@item Toggles
+Many options which alter the functionality of the program can be
+"toggled" on or off using Meta key sequences, meaning the program does
+not have to be restarted to turn a particular feature of the editor on
+or off. Please see the internal help function (^G) for a list of what
+functions can be toggled for a particular version of @code{nano}. See
+@xref{Feature Toggles}, for more info.
+
+@item Cursor Position Display
+The output of the "Display Cursor Position" in @code{nano} displays
+the given column position, as well as the row and total character
+position of the cursor.
+
+@item Interactive Replace and Spell Checker
+It is worth noting that @code{nano}'s replace function is interactive,
+i.e. it does not stop after one search string is found and automatically
+replace it. The @code{nano} implementation will pause at each search
+string found and query whether to replace this instance or not. The
+internal spell checker operates similarly. Note that there is no way to
+force these functions to behave in the Pico fashion. As of version
+1.1.99pre1, misspelled words are sorted and trimmed for uniqueness in
+the internal spell checker such that the words 'apple' and 'Apple' will
+be prompted for correction separately.
+@end table
+
+@node Building and Configure Options, , Pico Compatibility, Top
+@chapter Building and Configure Options
+
+Building @code{nano} from source is fairly straightforward if you are
+familiar with compiling programs with autoconf support:
+
+@itemize @bullet
+@item tar xvfz nano-x.y.z.tar.gz (where x.y.z is the version of
+@code{nano})
+@item cd nano-x.y.z/
+@item ./configure
+@item make
+@item make install
+@end itemize
+
+The possible options to @code{./configure} are:
+
+@table @code
+
+@item --disable-browser
+Disable the mini file browser when reading or writing files.
+
+@item --disable-help
+Disable the help function. Doing this makes the binary much smaller,
+but makes it difficult for new users to learn more than very basic
+things about using the editor.
+
+@item --disable-justify
+Disable the justify and unjustify functions.
+
+@item --disable-mouse
+Disable all mouse functionality. This also disables the -m command line
+option, which enables the mouse functionality.
+
+@item --disable-operatingdir
+Disable setting the operating directory. This also disables the -o
+command line option, which sets the operating directory.
+
+@item --disable-speller
+Disable use of the spell checker. This also disables the -s command
+line option, which allows specifying an alternate spell checker.
+
+@item --disable-tabcomp
+Disable the tab completion code when reading or writing files.
+
+@item --disable-wrapping
+Disable all long line wrapping. This also eliminates the -w command
+line option, which enables long line wrapping.
+
+@item --enable-tiny
+This option disables all the above. It also disables some of the larger
+internals of the editor, like the marking code and the cut to end of
+line code. It also disables the function toggles.
+
+@item --enable-debug
+Enable support for runtime debug output. This can get pretty messy, so
+chances are you only want this feature to work on the nano source.
+
+@item --enable-extra
+Enable extra features. At the moment, this is just easter egg-type
+stuff.
+
+@item --enable-color
+Enable support for syntax coloring of files using the nanorc file. This
+enables nanorc support as well.
+
+@item --enable-multibuffer
+Enable support for opening multiple files at a time and switching
+between them on the fly.
+
+@item --enable-nanorc
+Enable support for reading the nanorc file at startup. You can store
+custom settings in the nanorc file rather than having to pass command
+line options to get desired behavior. See @xref{Nanorc Files}, for
+more info.
+
+@item --enable-all
+Shortcut for enabling the above four features (extra, color,
+multibuffer, and nanorc).
+
+@item --disable-nls
+Disables Native Language support. This will disable use of the
+available GNU @code{nano} translations.
+
+@item --disable-wrapping-as-root
+Disable long line wrapping by default when nano is run as root.
+
+@item --enable-utf8
+Enable support for reading and writing Unicode files. This will require
+either a wide version of curses, or a UTF-8-enabled version of Slang.
+
+@item --disable-utf8
+Disable support for reading and writing Unicode files.
+
+@item --with-slang
+Compiling @code{nano} with Slang is supported, and will make the binary
+notably smaller than if compiled with ncurses or other curses libraries.
+
+@end table
+
+@contents
+@bye
diff --git a/doc/texinfo/texinfo.tex b/doc/texinfo/texinfo.tex
new file mode 100644
index 0000000..9140826
--- /dev/null
+++ b/doc/texinfo/texinfo.tex
@@ -0,0 +1,9291 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+%
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2009-08-14.15}
+%
+% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007, 2008, 2009 Free Software Foundation, Inc.
+%
+% This texinfo.tex file is free software: you can redistribute it and/or
+% modify it under the terms of the GNU General Public License as
+% published by the Free Software Foundation, either version 3 of the
+% License, or (at your option) any later version.
+%
+% This texinfo.tex file 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, see <http://www.gnu.org/licenses/>.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction. (This has been our intent since Texinfo was invented.)
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
+% ftp://tug.org/tex/texinfo.tex
+% (and all CTAN mirrors, see http://www.ctan.org).
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to bug-texinfo@gnu.org. Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem. Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution. For a simple
+% manual foo.texi, however, you can get away with this:
+% tex foo.texi
+% texindex foo.??
+% tex foo.texi
+% tex foo.texi
+% dvips foo.dvi -o # or whatever; this makes foo.ps.
+% The extra TeX runs get the cross-reference information correct.
+% Sometimes one run after texindex suffices, and sometimes you need more
+% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent. You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [version \texinfoversion]:}
+
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}%
+ \catcode`+=\active \catcode`\_=\active}
+
+
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros whose names we will redefine.
+\let\ptexb=\b
+\let\ptexbullet=\bullet
+\let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
+\let\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+\let\ptextop=\top
+{\catcode`\'=\active
+\global\let\ptexquoteright'}% Math-mode def from plain.tex.
+\let\ptexraggedright=\raggedright
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+ \let\linenumber = \empty % Pre-3.0.
+\else
+ \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
+\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
+
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar = `\-
+\chardef\dotChar = `\.
+\chardef\exclamChar= `\!
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar = `\;
+\chardef\underChar = `\_
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+ ap-pen-dix bit-map bit-maps
+ data-base data-bases eshell fall-ing half-way long-est man-u-script
+ man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+ par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+ spell-ing spell-ings
+ stand-alone strong-est time-stamp time-stamps which-ever white-space
+ wide-spread wrap-around
+}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt}
+
+% @| inserts a changebar to the left of the current line. It should
+% surround any changed text. This approach does *not* work if the
+% change spans more than two lines of output. To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).
+%
+\def\|{%
+ % \vadjust can only be used in horizontal mode.
+ \leavevmode
+ %
+ % Append this vertical mode material after the current line in the output.
+ \vadjust{%
+ % We want to insert a rule with the height and depth of the current
+ % leading; that is exactly what \strutbox is supposed to record.
+ \vskip-\baselineskip
+ %
+ % \vadjust-items are inserted at the left edge of the type. So
+ % the \llap here moves out into the left-hand margin.
+ \llap{%
+ %
+ % For a thicker or thinner bar, change the `1pt'.
+ \vrule height\baselineskip width1pt
+ %
+ % This is the space between the bar and the text.
+ \hskip 12pt
+ }%
+ }%
+}
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal. We don't just call \tracingall here,
+% since that produces some useless output on the terminal. We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+ \tracingstats2
+ \tracingpages1
+ \tracinglostchars2 % 2 gives us more in etex
+ \tracingparagraphs1
+ \tracingoutput1
+ \tracingmacros2
+ \tracingrestores1
+ \showboxbreadth\maxdimen \showboxdepth\maxdimen
+ \ifx\eTeXversion\undefined\else % etex gives us more logging
+ \tracingscantokens1
+ \tracingifs1
+ \tracinggroups1
+ \tracingnesting2
+ \tracingassigns1
+ \fi
+ \tracingcommands3 % 3 gives us more in etex
+ \errorcontextlines16
+}%
+
+% add check for \lastpenalty to plain's definitions. If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+ \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+ \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+ \removelastskip\penalty-200\bigskip\fi\fi}
+
+% For @cropmarks command.
+% Do @cropmarks to get crop marks.
+%
+\newif\ifcropmarks
+\let\cropmarks = \cropmarkstrue
+%
+% Dimensions to add cropmarks at corners.
+% Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page. The solution is
+% described on page 260 of The TeXbook. It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after. I won't pretend I can describe this better than DEK...
+\def\domark{%
+ \toks0=\expandafter{\lastchapterdefs}%
+ \toks2=\expandafter{\lastsectiondefs}%
+ \toks4=\expandafter{\prevchapterdefs}%
+ \toks6=\expandafter{\prevsectiondefs}%
+ \toks8=\expandafter{\lastcolordefs}%
+ \mark{%
+ \the\toks0 \the\toks2
+ \noexpand\or \the\toks4 \the\toks6
+ \noexpand\else \the\toks8
+ }%
+}
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+ \ifcase0\topmark\fi
+ \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
+% Main output routine.
+\chardef\PAGE = 255
+\output = {\onepageout{\pagecontents\PAGE}}
+
+\newbox\headlinebox
+\newbox\footlinebox
+
+% \onepageout takes a vbox as an argument. Note that \pagecontents
+% does insertions, but you have to call it yourself.
+\def\onepageout#1{%
+ \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+ %
+ \ifodd\pageno \advance\hoffset by \bindingoffset
+ \else \advance\hoffset by -\bindingoffset\fi
+ %
+ % Do this outside of the \shipout so @code etc. will be expanded in
+ % the headline as they should be, not taken literally (outputting ''code).
+ \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
+ \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+ \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
+ \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+ %
+ {%
+ % Have to do this stuff outside the \shipout because we want it to
+ % take effect in \write's, yet the group defined by the \vbox ends
+ % before the \shipout runs.
+ %
+ \indexdummies % don't expand commands in the output.
+ \normalturnoffactive % \ in index entries must not stay \, e.g., if
+ % the page break happens to be in the middle of an example.
+ % We don't want .vr (or whatever) entries like this:
+ % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+ % "\acronym" won't work when it's read back in;
+ % it needs to be
+ % {\code {{\tt \backslashcurfont }acronym}
+ \shipout\vbox{%
+ % Do this early so pdf references go to the beginning of the page.
+ \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+ %
+ \ifcropmarks \vbox to \outervsize\bgroup
+ \hsize = \outerhsize
+ \vskip-\topandbottommargin
+ \vtop to0pt{%
+ \line{\ewtop\hfil\ewtop}%
+ \nointerlineskip
+ \line{%
+ \vbox{\moveleft\cornerthick\nstop}%
+ \hfill
+ \vbox{\moveright\cornerthick\nstop}%
+ }%
+ \vss}%
+ \vskip\topandbottommargin
+ \line\bgroup
+ \hfil % center the page within the outer (page) hsize.
+ \ifodd\pageno\hskip\bindingoffset\fi
+ \vbox\bgroup
+ \fi
+ %
+ \unvbox\headlinebox
+ \pagebody{#1}%
+ \ifdim\ht\footlinebox > 0pt
+ % Only leave this space if the footline is nonempty.
+ % (We lessened \vsize for it in \oddfootingyyy.)
+ % The \baselineskip=24pt in plain's \makefootline has no effect.
+ \vskip 24pt
+ \unvbox\footlinebox
+ \fi
+ %
+ \ifcropmarks
+ \egroup % end of \vbox\bgroup
+ \hfil\egroup % end of (centering) \line\bgroup
+ \vskip\topandbottommargin plus1fill minus1fill
+ \boxmaxdepth = \cornerthick
+ \vbox to0pt{\vss
+ \line{%
+ \vbox{\moveleft\cornerthick\nsbot}%
+ \hfill
+ \vbox{\moveright\cornerthick\nsbot}%
+ }%
+ \nointerlineskip
+ \line{\ewbot\hfil\ewbot}%
+ }%
+ \egroup % \vbox from first cropmarks clause
+ \fi
+ }% end of \shipout\vbox
+ }% end of group with \indexdummies
+ \advancepageno
+ \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
+
+\newinsert\margin \dimen\margin=\maxdimen
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, juha@viisa.uucp (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+ \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
+\dimen@=\dp#1\relax \unvbox#1\relax
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
+}
+
+% Here are the rules for the cropmarks. Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+ {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+ {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1. The argument is the rest of
+% the input line (except we remove a trailing comment). #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+ \def\argtorun{#2}%
+ \begingroup
+ \obeylines
+ \spaceisspace
+ #1%
+ \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+ \gdef\parseargline#1^^M{%
+ \endgroup % End of the group started in \parsearg.
+ \argremovecomment #1\comment\ArgTerm%
+ }%
+}
+
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+% @end itemize @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+ \def\temp{#3}%
+ \ifx\temp\empty
+ % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+ \let\temp\finishparsearg
+ \else
+ \let\temp\argcheckspaces
+ \fi
+ % Put the space token in:
+ \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \argtorun.
+% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+
+% \parseargdef\foo{...}
+% is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick. --kasal, 16nov03
+
+\def\parseargdef#1{%
+ \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+ \def#2{\parsearg#1}%
+ \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+ \obeyspaces
+ \gdef\obeyedspace{ }
+
+ % Make each space character in the input produce a normal interword
+ % space in the output. Don't allow a line break at this space, as this
+ % is used only in environments like @example, where each line of input
+ % should produce a line of output anyway.
+ %
+ \gdef\sepspaces{\obeyspaces\let =\tie}
+
+ % If an index command is used in an @example environment, any spaces
+ % therein should become regular spaces in the raw index file, not the
+ % expansion of \tie (\leavevmode \penalty \@M \ ).
+ \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex. It's used like this:
+%
+% \envdef\foo{...}
+% \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo. \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches. The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as environments; they don't open a group. (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At run-time, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+ \def\temp{#1}%
+ \ifx\thisenv\temp
+ \else
+ \badenverr
+ \fi
+}
+
+% Environment mismatch, #1 expected:
+\def\badenverr{%
+ \errhelp = \EMsimple
+ \errmessage{This command can appear only \inenvironment\temp,
+ not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+ \ifx#1\empty
+ out of any environment%
+ \else
+ in environment \expandafter\string#1%
+ \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+ \if 1\csname iscond.#1\endcsname
+ \else
+ % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+ \expandafter\checkenv\csname#1\endcsname
+ \csname E#1\endcsname
+ \endgroup
+ \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+%% Simple single-character @ commands
+
+% @@ prints an @
+% Kludge this until the fonts are right (grr).
+\def\@{{\tt\char64}}
+
+% This is turned off because it was never documented
+% and you can use @w{...} around a quote to suppress ligatures.
+%% Define @` and @' to be the same as ` and '
+%% but suppressing ligatures.
+%\def\`{{`}}
+%\def\'{{'}}
+
+% Used to generate quoted braces.
+\def\mylbrace {{\tt\char123}}
+\def\myrbrace {{\tt\char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+ % Definitions to produce \{ and \} commands for indices,
+ % and @{ and @} for the aux/toc files.
+ \catcode`\{ = \other \catcode`\} = \other
+ \catcode`\[ = 1 \catcode`\] = 2
+ \catcode`\! = 0 \catcode`\\ = \other
+ !gdef!lbracecmd[\{]%
+ !gdef!rbracecmd[\}]%
+ !gdef!lbraceatcmd[@{]%
+ !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \c
+\let\dotaccent = \.
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \t
+\let\ubaraccent = \b
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+ \def\temp{#1}%
+ \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+ \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+ \else \errmessage{@dotless can be used only with i or j}%
+ \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence. (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo. Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+ L\kern-.36em
+ {\setbox0=\hbox{T}%
+ \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
+ \kern-.15em
+ \TeX
+}
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ % Avoid using \@M directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = \@M
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
+}
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off says whether to put extra space after punctuation.
+%
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+ \def\temp{#1}%
+ \ifx\temp\onword \plainfrenchspacing
+ \else\ifx\temp\offword \plainnonfrenchspacing
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+ \fi\fi
+}
+
+% @w prevents a word break. Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line. According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0). If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+% Another complication is that the group might be very large. This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material. In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom. The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+ \ifnum\catcode`\^^M=\active \else
+ \errhelp = \groupinvalidhelp
+ \errmessage{@group invalid in context where filling is enabled}%
+ \fi
+ \startsavinginserts
+ %
+ \setbox\groupbox = \vtop\bgroup
+ % Do @comment since we are called inside an environment such as
+ % @example, where each end-of-line in the input causes an
+ % end-of-line in the output. We don't want the end-of-line after
+ % the `@group' to put extra space in the output. Since @group
+ % should appear on a line by itself (according to the Texinfo
+ % manual), we don't worry about eating any user text.
+ \comment
+}
+%
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it. Thus, space below is not quite equal to space
+% above. But it's pretty close.
+\def\Egroup{%
+ % To get correct interline space between the last line of the group
+ % and the first line afterwards, we have to propagate \prevdepth.
+ \endgraf % Not \par, as it may have been set to \lisppar.
+ \global\dimen1 = \prevdepth
+ \egroup % End the \vtop.
+ % \dimen0 is the vertical size of the group's box.
+ \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox
+ % \dimen2 is how much space is left on the page (more or less).
+ \dimen2 = \pageheight \advance\dimen2 by -\pagetotal
+ % if the group doesn't fit on the current page, and it's a big big
+ % group, force a page break.
+ \ifdim \dimen0 > \dimen2
+ \ifdim \pagetotal < \vfilllimit\pageheight
+ \page
+ \fi
+ \fi
+ \box\groupbox
+ \prevdepth = \dimen1
+ \checkinserts
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing `@group can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil \mil=0.001in
+
+% Old definition--didn't work.
+%\parseargdef\need{\par %
+%% This method tries to make TeX break the page naturally
+%% if the depth of the box does not fit.
+%{\baselineskip=0pt%
+%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
+%\prevdepth=-1000pt
+%}}
+
+\parseargdef\need{%
+ % Ensure vertical mode, so we don't make a big box in the middle of a
+ % paragraph.
+ \par
+ %
+ % If the @need value is less than one line space, it's useless.
+ \dimen0 = #1\mil
+ \dimen2 = \ht\strutbox
+ \advance\dimen2 by \dp\strutbox
+ \ifdim\dimen0 > \dimen2
+ %
+ % Do a \strut just to make the height of this box be normal, so the
+ % normal leading is inserted relative to the preceding line.
+ % And a page break here is fine.
+ \vtop to #1\mil{\strut\vfil}%
+ %
+ % TeX does not even consider page breaks if a penalty added to the
+ % main vertical list is 10000 or more. But in order to see if the
+ % empty box we just added fits on the page, we must make it consider
+ % page breaks. On the other hand, we don't want to actually break the
+ % page after the empty box. So we use a penalty of 9999.
+ %
+ % There is an extremely small chance that TeX will actually break the
+ % page at this \penalty, if there are no other feasible breakpoints in
+ % sight. (If the user is using lots of big @group commands, which
+ % almost-but-not-quite fill up a page, TeX will have a hard time doing
+ % good page breaking, for example.) However, I could not construct an
+ % example where a page broke at this \penalty; if it happens in a real
+ % document, then we can reconsider our strategy.
+ \penalty9999
+ %
+ % Back up by the size of the box, whether we did a page break or not.
+ \kern -#1\mil
+ %
+ % Do not allow a page break right after this kern.
+ \nobreak
+ \fi
+}
+
+% @br forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @page forces the start of a new page.
+%
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+ \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph. For more general purposes, use the \margin insertion
+% class. WHICH is `l' or `r'.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+ \nobreak
+ \kern-\strutdepth
+ \vtop to \strutdepth{%
+ \baselineskip=\strutdepth
+ \vss
+ % if you have multiple lines of stuff to put here, you'll need to
+ % make the vbox yourself of the appropriate size.
+ \ifx#1l%
+ \llap{\ignorespaces #2\hskip\inmarginspacing}%
+ \else
+ \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+ \fi
+ \null
+ }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \def\lefttext{#1}% have both texts
+ \def\righttext{#2}%
+ \else
+ \def\lefttext{#1}% have only one text
+ \def\righttext{#1}%
+ \fi
+ %
+ \ifodd\pageno
+ \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+ \else
+ \def\temp{\inleftmargin\lefttext}%
+ \fi
+ \temp
+}
+
+% @include FILE -- \input text of FILE.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+ \pushthisfilestack
+ \def\thisfile{#1}%
+ {%
+ \makevalueexpandable % we want to expand any @value in FILE.
+ \turnoffactive % and allow special characters in the expansion
+ \indexnofonts % Allow `@@' and other weird things in file names.
+ \edef\temp{\noexpand\input #1 }%
+ %
+ % This trickery is to read FILE outside of a group, in case it makes
+ % definitions, etc.
+ \expandafter
+ }\temp
+ \popthisfilestack
+}
+\def\filenamecatcodes{%
+ \catcode`\\=\other
+ \catcode`~=\other
+ \catcode`^=\other
+ \catcode`_=\other
+ \catcode`|=\other
+ \catcode`<=\other
+ \catcode`>=\other
+ \catcode`+=\other
+ \catcode`-=\other
+ \catcode`\`=\other
+ \catcode`\'=\other
+}
+
+\def\pushthisfilestack{%
+ \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+ \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+ \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+ the stack of filenames is empty.}}
+
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+ \ifhmode
+ \let\next\centerH
+ \else
+ \let\next\centerV
+ \fi
+ \next{\hfil \ignorespaces#1\unskip \hfil}%
+}
+\def\centerH#1{%
+ {%
+ \hfil\break
+ \advance\hsize by -\leftskip
+ \advance\hsize by -\rightskip
+ \line{#1}%
+ \break
+ }%
+}
+\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
+
+% @sp n outputs n lines of vertical space
+
+\parseargdef\sp{\vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore is another way to write a comment
+
+\def\comment{\begingroup \catcode`\^^M=\other%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
+\commentxxx}
+{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
+
+\let\c=\comment
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
+ \else
+ \ifx\temp\noneword
+ \defaultparindent = 0pt
+ \else
+ \defaultparindent = #1em
+ \fi
+ \fi
+ \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
+ \else
+ \ifx\temp\noneword
+ \lispnarrowing = 0pt
+ \else
+ \lispnarrowing = #1em
+ \fi
+ \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading. If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+ \def\temp{#1}%
+ \ifx\temp\noneword
+ \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+ \else\ifx\temp\insertword
+ \let\suppressfirstparagraphindent = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @firstparagraphindent option `\temp'}%
+ \fi\fi
+}
+
+% Here is how we actually suppress indentation. Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+ \gdef\indent{%
+ \restorefirstparagraphindent
+ \indent
+ }%
+ \gdef\noindent{%
+ \restorefirstparagraphindent
+ \noindent
+ }%
+ \global\everypar = {%
+ \kern -\parindent
+ \restorefirstparagraphindent
+ }%
+}
+
+\gdef\restorefirstparagraphindent{%
+ \global \let \indent = \ptexindent
+ \global \let \noindent = \ptexnoindent
+ \global \everypar = {}%
+}
+
+
+% @asis just yields its argument. Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}. So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+ \catcode`\_ = \active
+ \gdef\mathunderscore{%
+ \catcode`\_=\active
+ \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+ }
+}
+% Another complication: we want \\ (and @\) to output a \ character.
+% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
+% this is not advertised and we don't care. Texinfo does not
+% otherwise define @\.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+ \tex
+ \mathunderscore
+ \let\\ = \mathbackslash
+ \mathactive
+ % make the texinfo accent commands work in math mode
+ \let\"=\ddot
+ \let\'=\acute
+ \let\==\bar
+ \let\^=\hat
+ \let\`=\grave
+ \let\u=\breve
+ \let\v=\check
+ \let\~=\tilde
+ \let\dotaccent=\dot
+ $\finishmath
+}
+\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+ \catcode`^ = \active
+ \catcode`< = \active
+ \catcode`> = \active
+ \catcode`+ = \active
+ \catcode`' = \active
+ \gdef\mathactive{%
+ \let^ = \ptexhat
+ \let< = \ptexless
+ \let> = \ptexgtr
+ \let+ = \ptexplus
+ \let' = \ptexquoteright
+ }
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em. So do
+% whichever is larger.
+%
+\def\dots{%
+ \leavevmode
+ \setbox0=\hbox{...}% get width of three periods
+ \ifdim\wd0 > 1.5em
+ \dimen0 = \wd0
+ \else
+ \dimen0 = 1.5em
+ \fi
+ \hbox to \dimen0{%
+ \hskip 0pt plus.25fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus.5fil
+ }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+ \dots
+ \spacefactor=\endofsentencespacefactor
+}
+
+% @comma{} is so commas can be inserted into text without messing up
+% Texinfo's parsing.
+%
+\let\comma = ,
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+ \fixbackslash % Turn off hack to swallow `\input texinfo'.
+ \iflinks
+ \tryauxfile
+ % Open the new aux file. TeX will close it automatically at exit.
+ \immediate\openout\auxfile=\jobname.aux
+ \fi % \openindices needs to do some work in any case.
+ \openindices
+ \let\setfilename=\comment % Ignore extra @setfilename cmds.
+ %
+ % If texinfo.cnf is present on the system, read it.
+ % Useful for site-wide @afourpaper, etc.
+ \openin 1 texinfo.cnf
+ \ifeof 1 \else \input texinfo.cnf \fi
+ \closein 1
+ %
+ \comment % Ignore the actual filename.
+}
+
+% Called from \setfilename.
+%
+\def\openindices{%
+ \newindex{cp}%
+ \newcodeindex{fn}%
+ \newcodeindex{vr}%
+ \newcodeindex{tp}%
+ \newcodeindex{ky}%
+ \newcodeindex{pg}%
+}
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set). So we test for \relax and 0 as well as \undefined,
+% borrowed from ifpdf.sty.
+\ifx\pdfoutput\undefined
+\else
+ \ifx\pdfoutput\relax
+ \else
+ \ifcase\pdfoutput
+ \else
+ \pdftrue
+ \fi
+ \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places. Thus, we have to
+% double any backslashes. Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e. Not good.
+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
+% (and related messages, the final outcome is that it is up to the TeX
+% user to double the backslashes and otherwise make the string valid, so
+% that's what we do).
+
+% double active backslashes.
+%
+{\catcode`\@=0 \catcode`\\=\active
+ @gdef@activebackslashdouble{%
+ @catcode`@\=@active
+ @let\=@doublebackslash}
+}
+
+% To handle parens, we must adopt a different approach, since parens are
+% not active characters. hyperref.dtx (which has the same problem as
+% us) handles it with this amazing macro to replace tokens, with minor
+% changes for Texinfo. It is included here under the GPL by permission
+% from the author, Heiko Oberdiek.
+%
+% #1 is the tokens to replace.
+% #2 is the replacement.
+% #3 is the control sequence with the string.
+%
+\def\HyPsdSubst#1#2#3{%
+ \def\HyPsdReplace##1#1##2\END{%
+ ##1%
+ \ifx\\##2\\%
+ \else
+ #2%
+ \HyReturnAfterFi{%
+ \HyPsdReplace##2\END
+ }%
+ \fi
+ }%
+ \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
+}
+\long\def\HyReturnAfterFi#1\fi{\fi#1}
+
+% #1 is a control sequence in which to do the replacements.
+\def\backslashparens#1{%
+ \xdef#1{#1}% redefine it as its expansion; the definition is simply
+ % \lastnode when called from \setref -> \pdfmkdest.
+ \HyPsdSubst{(}{\realbackslash(}{#1}%
+ \HyPsdSubst{)}{\realbackslash)}{#1}%
+}
+
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found. (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
+\ifpdf
+ %
+ % Color manipulation macros based on pdfcolor.tex,
+ % except using rgb instead of cmyk; the latter is said to render as a
+ % very dark gray on-screen and a very dark halftone in print, instead
+ % of actual black.
+ \def\rgbDarkRed{0.50 0.09 0.12}
+ \def\rgbBlack{0 0 0}
+ %
+ % k sets the color for filling (usual text, etc.);
+ % K sets the color for stroking (thin rules, e.g., normal _'s).
+ \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}}
+ %
+ % Set color, and create a mark which defines \thiscolor accordingly,
+ % so that \makeheadline knows which color to restore.
+ \def\setcolor#1{%
+ \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \domark
+ \pdfsetcolor{#1}%
+ }
+ %
+ \def\maincolor{\rgbBlack}
+ \pdfsetcolor{\maincolor}
+ \edef\thiscolor{\maincolor}
+ \def\lastcolordefs{}
+ %
+ \def\makefootline{%
+ \baselineskip24pt
+ \line{\pdfsetcolor{\maincolor}\the\footline}%
+ }
+ %
+ \def\makeheadline{%
+ \vbox to 0pt{%
+ \vskip-22.5pt
+ \line{%
+ \vbox to8.5pt{}%
+ % Extract \thiscolor definition from the marks.
+ \getcolormarks
+ % Typeset the headline with \maincolor, then restore the color.
+ \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+ }%
+ \vss
+ }%
+ \nointerlineskip
+ }
+ %
+ %
+ \pdfcatalog{/PageMode /UseOutlines}
+ %
+ % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+ \def\dopdfimage#1#2#3{%
+ \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+ \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+ %
+ % pdftex (and the PDF format) support .png, .jpg, .pdf (among
+ % others). Let's try in that order.
+ \let\pdfimgext=\empty
+ \begingroup
+ \openin 1 #1.png \ifeof 1
+ \openin 1 #1.jpg \ifeof 1
+ \openin 1 #1.jpeg \ifeof 1
+ \openin 1 #1.JPG \ifeof 1
+ \openin 1 #1.pdf \ifeof 1
+ \openin 1 #1.PDF \ifeof 1
+ \errhelp = \nopdfimagehelp
+ \errmessage{Could not find image file #1 for pdf}%
+ \else \gdef\pdfimgext{PDF}%
+ \fi
+ \else \gdef\pdfimgext{pdf}%
+ \fi
+ \else \gdef\pdfimgext{JPG}%
+ \fi
+ \else \gdef\pdfimgext{jpeg}%
+ \fi
+ \else \gdef\pdfimgext{jpg}%
+ \fi
+ \else \gdef\pdfimgext{png}%
+ \fi
+ \closein 1
+ \endgroup
+ %
+ % without \immediate, ancient pdftex seg faults when the same image is
+ % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
+ \ifnum\pdftexversion < 14
+ \immediate\pdfimage
+ \else
+ \immediate\pdfximage
+ \fi
+ \ifdim \wd0 >0pt width \imagewidth \fi
+ \ifdim \wd2 >0pt height \imageheight \fi
+ \ifnum\pdftexversion<13
+ #1.\pdfimgext
+ \else
+ {#1.\pdfimgext}%
+ \fi
+ \ifnum\pdftexversion < 14 \else
+ \pdfrefximage \pdflastximage
+ \fi}
+ %
+ \def\pdfmkdest#1{{%
+ % We have to set dummies so commands such as @code, and characters
+ % such as \, aren't expanded when present in a section title.
+ \indexnofonts
+ \turnoffactive
+ \activebackslashdouble
+ \makevalueexpandable
+ \def\pdfdestname{#1}%
+ \backslashparens\pdfdestname
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+ }}
+ %
+ % used to mark target names; must be expandable.
+ \def\pdfmkpgn#1{#1}
+ %
+ % by default, use a color that is dark enough to print on paper as
+ % nearly black, but still distinguishable for online viewing.
+ \def\urlcolor{\rgbDarkRed}
+ \def\linkcolor{\rgbDarkRed}
+ \def\endlink{\setcolor{\maincolor}\pdfendlink}
+ %
+ % Adding outlines to PDF; macros for calculating structure of outlines
+ % come from Petr Olsak
+ \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+ \else \csname#1\endcsname \fi}
+ \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+ \advance\tempnum by 1
+ \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+ %
+ % #1 is the section text, which is what will be displayed in the
+ % outline by the pdf viewer. #2 is the pdf expression for the number
+ % of subentries (or empty, for subsubsections). #3 is the node text,
+ % which might be empty if this toc entry had no corresponding node.
+ % #4 is the page number
+ %
+ \def\dopdfoutline#1#2#3#4{%
+ % Generate a link to the node text if that exists; else, use the
+ % page number. We could generate a destination for the section
+ % text in the case where a section has no node, but it doesn't
+ % seem worth the trouble, since most documents are normally structured.
+ \def\pdfoutlinedest{#3}%
+ \ifx\pdfoutlinedest\empty
+ \def\pdfoutlinedest{#4}%
+ \else
+ % Doubled backslashes in the name.
+ {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
+ \backslashparens\pdfoutlinedest}%
+ \fi
+ %
+ % Also double the backslashes in the display string.
+ {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
+ \backslashparens\pdfoutlinetext}%
+ %
+ \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+ }
+ %
+ \def\pdfmakeoutlines{%
+ \begingroup
+ % Thanh's hack / proper braces in bookmarks
+ \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+ \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+ %
+ % Read toc silently, to get counts of subentries for \pdfoutline.
+ \def\numchapentry##1##2##3##4{%
+ \def\thischapnum{##2}%
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
+ }%
+ \def\numsecentry##1##2##3##4{%
+ \advancenumber{chap\thischapnum}%
+ \def\thissecnum{##2}%
+ \def\thissubsecnum{0}%
+ }%
+ \def\numsubsecentry##1##2##3##4{%
+ \advancenumber{sec\thissecnum}%
+ \def\thissubsecnum{##2}%
+ }%
+ \def\numsubsubsecentry##1##2##3##4{%
+ \advancenumber{subsec\thissubsecnum}%
+ }%
+ \def\thischapnum{0}%
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
+ %
+ % use \def rather than \let here because we redefine \chapentry et
+ % al. a second time, below.
+ \def\appentry{\numchapentry}%
+ \def\appsecentry{\numsecentry}%
+ \def\appsubsecentry{\numsubsecentry}%
+ \def\appsubsubsecentry{\numsubsubsecentry}%
+ \def\unnchapentry{\numchapentry}%
+ \def\unnsecentry{\numsecentry}%
+ \def\unnsubsecentry{\numsubsecentry}%
+ \def\unnsubsubsecentry{\numsubsubsecentry}%
+ \readdatafile{toc}%
+ %
+ % Read toc second time, this time actually producing the outlines.
+ % The `-' means take the \expnumber as the absolute number of
+ % subentries, which we calculated on our first read of the .toc above.
+ %
+ % We use the node names as the destinations.
+ \def\numchapentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+ \def\numsecentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+ \def\numsubsecentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+ \def\numsubsubsecentry##1##2##3##4{% count is always zero
+ \dopdfoutline{##1}{}{##3}{##4}}%
+ %
+ % PDF outlines are displayed using system fonts, instead of
+ % document fonts. Therefore we cannot use special characters,
+ % since the encoding is unknown. For example, the eogonek from
+ % Latin 2 (0xea) gets translated to a | character. Info from
+ % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+ %
+ % xx to do this right, we have to translate 8-bit characters to
+ % their "best" equivalent, based on the @documentencoding. Right
+ % now, I guess we'll just let the pdf reader have its way.
+ \indexnofonts
+ \setupdatafile
+ \catcode`\\=\active \otherbackslash
+ \input \tocreadfilename
+ \endgroup
+ }
+ %
+ \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+ \ifx\PP\D\let\nextsp\relax
+ \else\let\nextsp\skipspaces
+ \ifx\p\space\else\addtokens{\filename}{\PP}%
+ \advance\filenamelength by 1
+ \fi
+ \fi
+ \nextsp}
+ \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+ \ifnum\pdftexversion < 14
+ \let \startlink \pdfannotlink
+ \else
+ \let \startlink \pdfstartlink
+ \fi
+ % make a live url in pdf output.
+ \def\pdfurl#1{%
+ \begingroup
+ % it seems we really need yet another set of dummies; have not
+ % tried to figure out what each command should do in the context
+ % of @url. for now, just make @/ a no-op, that's the only one
+ % people have actually reported a problem with.
+ %
+ \normalturnoffactive
+ \def\@{@}%
+ \let\/=\empty
+ \makevalueexpandable
+ % do we want to go so far as to use \indexnofonts instead of just
+ % special-casing \var here?
+ \def\var##1{##1}%
+ %
+ \leavevmode\setcolor{\urlcolor}%
+ \startlink attr{/Border [0 0 0]}%
+ user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+ \endgroup}
+ \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+ \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+ \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+ \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+ \def\maketoks{%
+ \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+ \ifx\first0\adn0
+ \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+ \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+ \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+ \else
+ \ifnum0=\countA\else\makelink\fi
+ \ifx\first.\let\next=\done\else
+ \let\next=\maketoks
+ \addtokens{\toksB}{\the\toksD}
+ \ifx\first,\addtokens{\toksB}{\space}\fi
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \next}
+ \def\makelink{\addtokens{\toksB}%
+ {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+ \def\pdflink#1{%
+ \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+ \setcolor{\linkcolor}#1\endlink}
+ \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+ % non-pdf mode
+ \let\pdfmkdest = \gobble
+ \let\pdfurl = \gobble
+ \let\endlink = \relax
+ \let\setcolor = \gobble
+ \let\pdfsetcolor = \gobble
+ \let\pdfmakeoutlines = \relax
+\fi % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+ \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+ \csname ten#1\endcsname % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Unfortunately, we have to override this for titles and the like, since
+% in those cases "rm" is bold. Sigh.
+\def\rmisbold{\rm\def\curfontstyle{bf}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
+% Default leading.
+\newdimen\textleading \textleading = 13.2pt
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly. There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
+\def\setleading#1{%
+ \dimen0 = #1\relax
+ \normalbaselineskip = \baselinefactor\dimen0
+ \normallineskip = \lineskipfactor\normalbaselineskip
+ \normalbaselines
+ \setbox\strutbox =\hbox{%
+ \vrule width0pt height\strutheightpercent\baselineskip
+ depth \strutdepthpercent \baselineskip
+ }%
+}
+
+% PDF CMaps. See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\undefined \else
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+%
+% \cmapOT1IT
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+%
+% \cmapOT1TT
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+\fi\fi
+
+
+% Set the font macro #1 to the font named #2, adding on the
+% specified font prefix (normally `cm').
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
+% empty to omit).
+\def\setfont#1#2#3#4#5{%
+ \font#1=\fontprefix#2#3 scaled #4
+ \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+% emacs-page end of cmaps
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\undefined
+\def\fontprefix{cm}
+\fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx} %where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
+
+% Definitions for a main text size of 11pt. This is the default in
+% Texinfo.
+%
+\def\definetextfontsizexi{%
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
+\let\chapbf=\chaprm
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
+
+% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 11pt text font size definitions
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit. This is for the GNU
+% Press printing of the Emacs 22 manual. Maybe other manuals in the
+% future. Used with @smallbook, which sets the leading to 12pt.
+%
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+% reduce space between paragraphs
+\divide\parskip by 2
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 10pt text font size definitions
+
+
+% We provide the user-level command
+% @fonttextsize 10
+% (or 11) to redefine the text font size. pt is assumed.
+%
+\def\xword{10}
+\def\xiword{11}
+%
+\parseargdef\fonttextsize{%
+ \def\textsizearg{#1}%
+ \wlog{doing @fonttextsize \textsizearg}%
+ %
+ % Set \globaldefs so that documents can use this inside @tex, since
+ % makeinfo 4.8 does not support it, but we need it nonetheless.
+ %
+ \begingroup \globaldefs=1
+ \ifx\textsizearg\xword \definetextfontsizex
+ \else \ifx\textsizearg\xiword \definetextfontsizexi
+ \else
+ \errhelp=\EMsimple
+ \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+ \fi\fi
+ \endgroup
+}
+
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families. Since
+% texinfo doesn't allow for producing subscripts and superscripts except
+% in the main text, we don't bother to reset \scriptfont and
+% \scriptscriptfont (which would also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+ \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
+ \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
+ \textfont\ttfam=\tentt \textfont\sffam=\tensf
+}
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE. We do this because \STYLE needs to also set the
+% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower). These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\def\textfonts{%
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+ \let\tenttsl=\textttsl
+ \def\curfontsize{text}%
+ \def\lsize{reduced}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{\textleading}}
+\def\titlefonts{%
+ \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
+ \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
+ \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
+ \let\tenttsl=\titlettsl
+ \def\curfontsize{title}%
+ \def\lsize{chap}\def\lllsize{subsec}%
+ \resetmathfonts \setleading{25pt}}
+\def\titlefont#1{{\titlefonts\rmisbold #1}}
+\def\chapfonts{%
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+ \let\tenttsl=\chapttsl
+ \def\curfontsize{chap}%
+ \def\lsize{sec}\def\lllsize{text}%
+ \resetmathfonts \setleading{19pt}}
+\def\secfonts{%
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+ \let\tenttsl=\secttsl
+ \def\curfontsize{sec}%
+ \def\lsize{subsec}\def\lllsize{reduced}%
+ \resetmathfonts \setleading{16pt}}
+\def\subsecfonts{%
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+ \let\tenttsl=\ssecttsl
+ \def\curfontsize{ssec}%
+ \def\lsize{text}\def\lllsize{small}%
+ \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+ \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+ \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+ \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+ \let\tenttsl=\reducedttsl
+ \def\curfontsize{reduced}%
+ \def\lsize{small}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+ \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+ \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+ \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+ \let\tenttsl=\smallttsl
+ \def\curfontsize{small}%
+ \def\lsize{smaller}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+ \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+ \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+ \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+ \let\tenttsl=\smallerttsl
+ \def\curfontsize{smaller}%
+ \def\lsize{smaller}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{9.5pt}}
+
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+% Define these just so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+% 8.5x11=86 smallbook=72 a4=90 a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+% 8.5x11=90+ smallbook=80 a4=90+ a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt. So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+% 8.5x11=71 smallbook=60 a4=75 a5=58
+% --karl, 24jan03.
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+
+\message{markup,}
+
+% Check if we are currently using a typewriter font. Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will
+% define and register \INITMACRO to be called on markup style changes.
+% \INITMACRO can check \currentmarkupstyle for the innermost
+% style and the set of \ifmarkupSTYLE switches for all styles
+% currently in effect.
+\newif\ifmarkupvar
+\newif\ifmarkupsamp
+\newif\ifmarkupkey
+%\newif\ifmarkupfile % @file == @samp.
+%\newif\ifmarkupoption % @option == @samp.
+\newif\ifmarkupcode
+\newif\ifmarkupkbd
+%\newif\ifmarkupenv % @env == @code.
+%\newif\ifmarkupcommand % @command == @code.
+\newif\ifmarkuptex % @tex (and part of @math, for now).
+\newif\ifmarkupexample
+\newif\ifmarkupverb
+\newif\ifmarkupverbatim
+
+\let\currentmarkupstyle\empty
+
+\def\setupmarkupstyle#1{%
+ \csname markup#1true\endcsname
+ \def\currentmarkupstyle{#1}%
+ \markupstylesetup
+}
+
+\let\markupstylesetup\empty
+
+\def\defmarkupstylesetup#1{%
+ \expandafter\def\expandafter\markupstylesetup
+ \expandafter{\markupstylesetup #1}%
+ \def#1%
+}
+
+% Markup style setup for left and right quotes.
+\defmarkupstylesetup\markupsetuplq{%
+ \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname
+ \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
+}
+
+\defmarkupstylesetup\markupsetuprq{%
+ \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname
+ \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
+}
+
+{
+\catcode`\'=\active
+\catcode`\`=\active
+
+\gdef\markupsetuplqdefault{\let`\lq}
+\gdef\markupsetuprqdefault{\let'\rq}
+
+\gdef\markupsetcodequoteleft{\let`\codequoteleft}
+\gdef\markupsetcodequoteright{\let'\codequoteright}
+
+\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
+}
+
+\let\markupsetuplqcode \markupsetcodequoteleft
+\let\markupsetuprqcode \markupsetcodequoteright
+\let\markupsetuplqexample \markupsetcodequoteleft
+\let\markupsetuprqexample \markupsetcodequoteright
+\let\markupsetuplqverb \markupsetcodequoteleft
+\let\markupsetuprqverb \markupsetcodequoteright
+\let\markupsetuplqverbatim \markupsetcodequoteleft
+\let\markupsetuprqverbatim \markupsetcodequoteright
+
+\let\markupsetuplqsamp \markupsetnoligaturesquoteleft
+\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
+
+% Allow an option to not replace quotes with a regular directed right
+% quote/apostrophe (char 0x27), but instead use the undirected quote
+% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
+% the default, but it works for pasting with more pdf viewers (at least
+% evince), the lilypond developers report. xpdf does work with the
+% regular 0x27.
+%
+\def\codequoteright{%
+ \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+ \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+ '%
+ \else \char'15 \fi
+ \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+ \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+ \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+ % [Knuth] pp. 380,381,391
+ % \relax disables Spanish ligatures ?` and !` of \tt font.
+ \relax`%
+ \else \char'22 \fi
+ \else \char'22 \fi
+}
+
+% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
+\def\noligaturesquoteleft{\relax\lq}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+%% Add scribe-like font environments, plus @l for inline lisp (usually sans
+%% serif) and @ii for TeX italic
+
+% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+% unless the following character is such as not to need one.
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
+ \ptexslash\fi\fi\fi}
+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally uses \ttsl.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+
+% @cite is like \smartslanted except unconditionally use \sl. We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}}
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}} % roman font
+\def\sc#1{{\smallcaps#1}} % smallcaps font
+\def\ii#1{{\it #1}} % italic font
+
+% @b, explicit bold. Also @strong.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph. Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
+\catcode`@=11
+ \def\plainfrenchspacing{%
+ \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+ \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+ \def\endofsentencespacefactor{1000}% for @. and friends
+ }
+ \def\plainnonfrenchspacing{%
+ \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+ \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+ \def\endofsentencespacefactor{3000}% for @. and friends
+ }
+\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+
+% @t, explicit typewriter.
+\def\t#1{%
+ {\tt \rawbackslash \plainfrenchspacing #1}%
+ \null
+}
+
+% @samp.
+\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
+
+% definition of @key that produces a lozenge. Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+% \vbox{\hrule\kern-0.4pt
+% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+% \kern-0.4pt\hrule}%
+% \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge. If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle. But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+ \nohyphenation
+ \ifmonospace\else\tt\fi
+ #1}\null}
+
+% ctrl is no longer a Texinfo command.
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @file, @option are the same as @samp.
+\let\file=\samp
+\let\option=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\def\tclose#1{%
+ {%
+ % Change normal interword space to be same as for the current font.
+ \spaceskip = \fontdimen2\font
+ %
+ % Switch to typewriter.
+ \tt
+ %
+ % But `\ ' produces the large typewriter interword space.
+ \def\ {{\spaceskip = 0pt{} }}%
+ %
+ % Turn off hyphenation.
+ \nohyphenation
+ %
+ \rawbackslash
+ \plainfrenchspacing
+ #1%
+ }%
+ \null
+}
+
+% We *must* turn on hyphenation at `-' and `_' in @code.
+% Otherwise, it is too hard to avoid overfull hboxes
+% in the Emacs manual, the Library manual, etc.
+
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate at a dash.
+% -- rms.
+{
+ \catcode`\-=\active \catcode`\_=\active
+ \catcode`\'=\active \catcode`\`=\active
+ \global\let'=\rq \global\let`=\lq % default definitions
+ %
+ \global\def\code{\begingroup
+ \setupmarkupstyle{code}%
+ % The following should really be moved into \setupmarkupstyle handlers.
+ \catcode\dashChar=\active \catcode\underChar=\active
+ \ifallowcodebreaks
+ \let-\codedash
+ \let_\codeunder
+ \else
+ \let-\realdash
+ \let_\realunder
+ \fi
+ \codex
+ }
+}
+
+\def\realdash{-}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{%
+ % this is all so @math{@code{var_name}+1} can work. In math mode, _
+ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+ % will therefore expand the active definition of _, which is us
+ % (inside @code that is), therefore an endless loop.
+ \ifusingtt{\ifmmode
+ \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+ \else\normalunderscore \fi
+ \discretionary{}{}{}}%
+ {\_}%
+}
+\def\codex #1{\tclose{#1}\endgroup}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__. This is undesirable in
+% some manuals, especially if they don't have long identifiers in
+% general. @allowcodebreaks provides a way to control this.
+%
+\newif\ifallowcodebreaks \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\keywordtrue
+ \allowcodebreakstrue
+ \else\ifx\txiarg\keywordfalse
+ \allowcodebreaksfalse
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+ \fi\fi
+}
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+% `example' (@kbd uses ttsl only inside of @example and friends),
+% or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\worddistinct
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+ \else\ifx\txiarg\wordexample
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+ \else\ifx\txiarg\wordcode
+ \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
+ \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself. First (mandatory) arg is the url. Perhaps eventually put in
+% a hypertex \special here.
+%
+\def\uref#1{\douref #1,,,\finish}
+\def\douref#1,#2,#3,#4\finish{\begingroup
+ \unsepspaces
+ \pdfurl{#1}%
+ \setbox0 = \hbox{\ignorespaces #3}%
+ \ifdim\wd0 > 0pt
+ \unhbox0 % third arg given, show only that
+ \else
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \ifpdf
+ \unhbox0 % PDF: 2nd arg given, show only it
+ \else
+ \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+ \fi
+ \else
+ \code{#1}% only url given, so show it
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+ \def\email#1{\doemail#1,,\finish}
+ \def\doemail#1,#2,#3\finish{\begingroup
+ \unsepspaces
+ \pdfurl{mailto:#1}%
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+ \endlink
+ \endgroup}
+\else
+ \let\email=\uref
+\fi
+
+% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+% @l was never documented to mean ``switch to the Lisp font'',
+% and it is not used as such in any manual I can find. We need it for
+% Polish suppressed-l. --karl, 22sep96.
+%\def\l#1{{\li #1}\null}
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+%
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+ {\selectfonts\lsize #1}%
+ \def\temp{#2}%
+ \ifx\temp\empty \else
+ \space ({\unsepspaces \ignorespaces \temp \unskip})%
+ \fi
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+%
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+ {\plainfrenchspacing #1}%
+ \def\temp{#2}%
+ \ifx\temp\empty \else
+ \space ({\unsepspaces \ignorespaces \temp \unskip})%
+ \fi
+}
+
+
+\message{glyphs,}
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, they should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+ \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+ \advance\hsize by -2\dimen2 % Rules.
+ \vbox{%
+ \hrule height\dimen2
+ \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
+ \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+ \kern3pt\vrule width\dimen2}% Space to right.
+ \hrule height\dimen2}
+ \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+%
+% Although only regular is the truly official Euro symbol, we ignore
+% that. The Euro is designed to be slightly taller than the regular
+% font height.
+%
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+%
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+%
+% Also doesn't work in math. Do we need to do math with euro symbols?
+% Hope not.
+%
+%
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+ % We set the font at each command, rather than predefining it in
+ % \textfonts and the other font-switching commands, so that
+ % installations which never need the symbol don't have to have the
+ % font installed.
+ %
+ % There is only one designed size (nominal 10pt), so we always scale
+ % that to the current nominal size.
+ %
+ % By the way, simply using "at 1em" works for cmr10 and the like, but
+ % does not work for cmbx10 and other extended/shrunken fonts.
+ %
+ \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+ %
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+ \else
+ % regular:
+ \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+ \fi
+ \thiseurofont
+}
+
+% Glyphs from the EC fonts. We don't use \let for the aliases, because
+% sometimes we redefine the original macro, and the alias should reflect
+% the redefinition.
+%
+% Use LaTeX names for the Icelandic letters.
+\def\DH{{\ecfont \char"D0}} % Eth
+\def\dh{{\ecfont \char"F0}} % eth
+\def\TH{{\ecfont \char"DE}} % Thorn
+\def\th{{\ecfont \char"FE}} % thorn
+%
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+% This positioning is not perfect (see the ogonek LaTeX package), but
+% we have the precomposed glyphs for the most common cases. We put the
+% tests to use those glyphs in the single \ogonek macro so we have fewer
+% dummy definitions to worry about for index entries, etc.
+%
+% ogonek is also used with other letters in Lithuanian (IOU), but using
+% the precomposed glyphs for those is not so easy since they aren't in
+% the same EC font.
+\def\ogonek#1{{%
+ \def\temp{#1}%
+ \ifx\temp\macrocharA\Aogonek
+ \else\ifx\temp\macrochara\aogonek
+ \else\ifx\temp\macrocharE\Eogonek
+ \else\ifx\temp\macrochare\eogonek
+ \else
+ \ecfont \setbox0=\hbox{#1}%
+ \ifdim\ht0=1ex\accent"0C #1%
+ \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
+ \fi
+ \fi\fi\fi\fi
+ }%
+}
+\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
+\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
+\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
+\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
+%
+% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
+\def\ecfont{%
+ % We can't distinguish serif/sans and italic/slanted, but this
+ % is used for crude hacks anyway (like adding French and German
+ % quotes to documents typeset with CM, where we lose kerning), so
+ % hopefully nobody will notice/care.
+ \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+ \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+ \else
+ % regular:
+ \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+ \fi
+ \thisecfont
+}
+
+% @registeredsymbol - R in a circle. The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+ $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+ \hfil\crcr\Orb}}%
+ }$%
+}
+
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
+% Laurent Siebenmann reports \Orb undefined with:
+% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
+% so we'll define it if necessary.
+%
+\ifx\Orb\undefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page. Must do @settitle before @titlepage.
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+ % Open one extra group, as we want to close it in the middle of \Etitlepage.
+ \begingroup
+ \parindent=0pt \textfonts
+ % Leave some space at the very top of the page.
+ \vglue\titlepagetopglue
+ % No rule at page bottom unless we print one at the top with @title.
+ \finishedtitlepagetrue
+ %
+ % Most title ``pages'' are actually two pages long, with space
+ % at the top of the second. We don't want the ragged left on the second.
+ \let\oldpage = \page
+ \def\page{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ \let\page = \oldpage
+ \page
+ \null
+ }%
+}
+
+\def\Etitlepage{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ % It is important to do the page break before ending the group,
+ % because the headline and footline are only empty inside the group.
+ % If we use the new definition of \page, we always get a blank page
+ % after the title page, which we certainly don't want.
+ \oldpage
+ \endgroup
+ %
+ % Need this before the \...aftertitlepage checks so that if they are
+ % in effect the toc pages will come out with page numbers.
+ \HEADINGSon
+ %
+ % If they want short, they certainly want long too.
+ \ifsetshortcontentsaftertitlepage
+ \shortcontents
+ \contents
+ \global\let\shortcontents = \relax
+ \global\let\contents = \relax
+ \fi
+ %
+ \ifsetcontentsaftertitlepage
+ \contents
+ \global\let\contents = \relax
+ \global\let\shortcontents = \relax
+ \fi
+}
+
+\def\finishtitlepage{%
+ \vskip4pt \hrule height 2pt width \hsize
+ \vskip\titlepagebottomglue
+ \finishedtitlepagetrue
+}
+
+%%% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\parseargdef\title{%
+ \checkenv\titlepage
+ \leftline{\titlefonts\rmisbold #1}
+ % print a rule at the page bottom also.
+ \finishedtitlepagefalse
+ \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+ \checkenv\titlepage
+ {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+ \def\temp{\quotation}%
+ \ifx\thisenv\temp
+ \def\quotationauthor{#1}% printed in \Equotation.
+ \else
+ \checkenv\titlepage
+ \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+ {\secfonts\rmisbold \leftline{#1}}%
+ \fi
+}
+
+
+%%% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline % headline on even pages
+\newtoks\oddheadline % headline on odd pages
+\newtoks\evenfootline % footline on even pages
+\newtoks\oddfootline % footline on odd pages
+
+% Now make TeX use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+ \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+ \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what @headings on does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
+ \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
+ %
+ % Leave some space for the footline. Hopefully ok to assume
+ % @evenfooting will not be used by itself.
+ \global\advance\pageheight by -12pt
+ \global\advance\vsize by -12pt
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+% @evenheadingmarks top \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+ \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+ \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+ \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+ \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
+
+% @headings double turns headings on for double-sided printing.
+% @headings single turns headings on for single-sided printing.
+% @headings off turns them off.
+% @headings on same as @headings double, retained for compatibility.
+% @headings after turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\HEADINGSoff{%
+\global\evenheadline={\hfil} \global\evenfootline={\hfil}
+\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+\HEADINGSoff
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+\let\contentsalignmacro = \chappager
+
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+
+% Subroutines used in generating headings
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\undefined
+\def\today{%
+ \number\day\space
+ \ifcase\month
+ \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+ \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+ \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+ \fi
+ \space\number\year}
+\fi
+
+% @settitle line... specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\itemzzz #1{\begingroup %
+ \advance\hsize by -\rightskip
+ \advance\hsize by -\tableindent
+ \setbox0=\hbox{\itemindicate{#1}}%
+ \itemindex{#1}%
+ \nobreak % This prevents a break before @itemx.
+ %
+ % If the item text does not fit in the space we have, put it on a line
+ % by itself, and do not allow a page break either before or after that
+ % line. We do not start a paragraph here because then if the next
+ % command is, e.g., @kindex, the whatsit would get put into the
+ % horizontal list on a line by itself, resulting in extra blank space.
+ \ifdim \wd0>\itemmax
+ %
+ % Make this a paragraph so we get the \parskip glue and wrapping,
+ % but leave it ragged-right.
+ \begingroup
+ \advance\leftskip by-\tableindent
+ \advance\hsize by\tableindent
+ \advance\rightskip by0pt plus1fil
+ \leavevmode\unhbox0\par
+ \endgroup
+ %
+ % We're going to be starting a paragraph, but we don't want the
+ % \parskip glue -- logically it's part of the @item we just started.
+ \nobreak \vskip-\parskip
+ %
+ % Stop a page break at the \parskip glue coming up. However, if
+ % what follows is an environment such as @example, there will be no
+ % \parskip glue; then the negative vskip we just inserted would
+ % cause the example and the item to crash together. So we use this
+ % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+ % \parskip glue after all. Section titles are handled this way also.
+ %
+ \penalty 10001
+ \endgroup
+ \itemxneedsnegativevskipfalse
+ \else
+ % The item text fits into the space. Start a paragraph, so that the
+ % following text (if any) will end up on the same line.
+ \noindent
+ % Do this with kerns and \unhbox so that if there is a footnote in
+ % the item text, it can migrate to the main vertical list and
+ % eventually be printed.
+ \nobreak\kern-\tableindent
+ \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+ \unhbox0
+ \nobreak\kern\dimen0
+ \endgroup
+ \itemxneedsnegativevskiptrue
+ \fi
+}
+
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+ \let\itemindex\gobble
+ \tablecheck{table}%
+}
+\envdef\ftable{%
+ \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+ \tablecheck{ftable}%
+}
+\envdef\vtable{%
+ \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+ \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+ \ifnum \the\catcode`\^^M=\active
+ \endgroup
+ \errmessage{This command won't work in this context; perhaps the problem is
+ that we are \inenvironment\thisenv}%
+ \def\next{\doignore{#1}}%
+ \else
+ \let\next\tablex
+ \fi
+ \next
+}
+\def\tablex#1{%
+ \def\itemindicate{#1}%
+ \parsearg\tabley
+}
+\def\tabley#1{%
+ {%
+ \makevalueexpandable
+ \edef\temp{\noexpand\tablez #1\space\space\space}%
+ \expandafter
+ }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+ \aboveenvbreak
+ \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+ \ifnum 0#2>0 \tableindent=#2\mil \fi
+ \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+ \itemmax=\tableindent
+ \advance \itemmax by -\itemmargin
+ \advance \leftskip by \tableindent
+ \exdentamount=\tableindent
+ \parindent = 0pt
+ \parskip = \smallskipamount
+ \ifdim \parskip=0pt \parskip=2pt \fi
+ \let\item = \internalBitem
+ \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+ \aboveenvbreak
+ \itemmax=\itemindent
+ \advance\itemmax by -\itemmargin
+ \advance\leftskip by \itemindent
+ \exdentamount=\itemindent
+ \parindent=0pt
+ \parskip=\smallskipamount
+ \ifdim\parskip=0pt \parskip=2pt \fi
+ %
+ % Try typesetting the item mark that if the document erroneously says
+ % something like @itemize @samp (intending @table), there's an error
+ % right away at the @itemize. It's not the best error message in the
+ % world, but it's better than leaving it to the @item. This means if
+ % the user wants an empty mark, they have to say @w{} not just @w.
+ \def\itemcontents{#1}%
+ \setbox0 = \hbox{\itemcontents}%
+ %
+ % @itemize with no arg is equivalent to @itemize @bullet.
+ \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+ %
+ \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+ \advance\itemno by 1 % for enumerations
+ {\let\par=\endgraf \smallbreak}% reasonable place to break
+ {%
+ % If the document has an @itemize directly after a section title, a
+ % \nobreak will be last on the list, and \sectionheading will have
+ % done a \vskip-\parskip. In that case, we don't want to zero
+ % parskip, or the item text will crash with the heading. On the
+ % other hand, when there is normal text preceding the item (as there
+ % usually is), we do want to zero parskip, or there would be too much
+ % space. In that case, we won't have a \nobreak before. At least
+ % that's the theory.
+ \ifnum\lastpenalty<10000 \parskip=0in \fi
+ \noindent
+ \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+ %
+ \vadjust{\penalty 1200}}% not good to break after first line of item.
+ \flushcr
+}
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list. No
+% argument is the same as `1'.
+%
+\envparseargdef\enumerate{\enumeratey #1 \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+ % If we were given no argument, pretend we were given `1'.
+ \def\thearg{#1}%
+ \ifx\thearg\empty \def\thearg{1}\fi
+ %
+ % Detect if the argument is a single token. If so, it might be a
+ % letter. Otherwise, the only valid thing it can be is a number.
+ % (We will always have one token, because of the test we just made.
+ % This is a good thing, since \splitoff doesn't work given nothing at
+ % all -- the first parameter is undelimited.)
+ \expandafter\splitoff\thearg\endmark
+ \ifx\rest\empty
+ % Only one token in the argument. It could still be anything.
+ % A ``lowercase letter'' is one whose \lccode is nonzero.
+ % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+ % not equal to itself.
+ % Otherwise, we assume it's a number.
+ %
+ % We need the \relax at the end of the \ifnum lines to stop TeX from
+ % continuing to look for a <number>.
+ %
+ \ifnum\lccode\expandafter`\thearg=0\relax
+ \numericenumerate % a number (we hope)
+ \else
+ % It's a letter.
+ \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+ \lowercaseenumerate % lowercase letter
+ \else
+ \uppercaseenumerate % uppercase letter
+ \fi
+ \fi
+ \else
+ % Multiple tokens in the argument. We hope it's a number.
+ \numericenumerate
+ \fi
+}
+
+% An @enumerate whose labels are integers. The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+ \itemno = \thearg
+ \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more lowercase letters in @enumerate; get a bigger
+ alphabet}%
+ \fi
+ \char\lccode\itemno
+ }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more uppercase letters in @enumerate; get a bigger
+ alphabet}
+ \fi
+ \char\uccode\itemno
+ }%
+}
+
+% Call \doitemize, adding a period to the first argument and supplying the
+% common last two arguments. Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+ \advance\itemno by -1
+ \doitemize{#1.}\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94, 3/6/96
+%
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble. Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+% @multitable @columnfractions .25 .3 .45
+% @item ...
+%
+% Numbers following @columnfractions are the percent of the total
+% current hsize to be used for each column. You may use as many
+% columns as desired.
+
+
+% Or use a template:
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item ...
+% using the widest term desired in each column.
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab@tab@tab will produce two empty columns.
+
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
+
+% Sample multitable:
+
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item first col stuff @tab second col stuff @tab third col
+% @item
+% first col stuff
+% @tab
+% second col stuff
+% @tab
+% third col
+% @item first col stuff @tab second col stuff
+% @tab Many paragraphs of text may be used in any column.
+%
+% They will wrap at the width determined by the template.
+% @item@tab@tab This will be in third column.
+% @end multitable
+
+% Default dimensions may be reset by user.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+% to baseline.
+% 0pt means it depends on current normal line spacing.
+%
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
+
+% Macros used to set up halign preamble:
+%
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
+\newif\ifsetpercent
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1. We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+ \global\advance\colcount by 1
+ \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+ \setuptable
+}
+
+\newcount\colcount
+\def\setuptable#1{%
+ \def\firstarg{#1}%
+ \ifx\firstarg\xendsetuptable
+ \let\go = \relax
+ \else
+ \ifx\firstarg\xcolumnfractions
+ \global\setpercenttrue
+ \else
+ \ifsetpercent
+ \let\go\pickupwholefraction
+ \else
+ \global\advance\colcount by 1
+ \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
+ % separator; typically that is always in the input, anyway.
+ \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+ \fi
+ \fi
+ \ifx\go\pickupwholefraction
+ % Put the argument back for the \pickupwholefraction call, so
+ % we'll always have a period there to be parsed.
+ \def\go{\pickupwholefraction#1}%
+ \else
+ \let\go = \setuptable
+ \fi%
+ \fi
+ \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry. \everycr resets \everytab so we don't have to
+% undo it ourselves.
+\def\headitemfont{\b}% for people to use in the template row; not changeable
+\def\headitem{%
+ \checkenv\multitable
+ \crcr
+ \global\everytab={\bf}% can't use \headitemfont since the parsing differs
+ \the\everytab % for the first item
+}%
+%
+% A \tab used to include \hskip1sp. But then the space in a template
+% line is not enough. That is bad. So let's go back to just `&' until
+% we again encounter the problem the 1sp was intended to solve.
+% --karl, nathan@acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab % insert after every tab.
+%
+\envdef\multitable{%
+ \vskip\parskip
+ \startsavinginserts
+ %
+ % @item within a multitable starts a normal row.
+ % We use \def instead of \let so that if one of the multitable entries
+ % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+ % \endtemplate) expanding \doitemize.
+ \def\item{\crcr}%
+ %
+ \tolerance=9500
+ \hbadness=9500
+ \setmultitablespacing
+ \parskip=\multitableparskip
+ \parindent=\multitableparindent
+ \overfullrule=0pt
+ \global\colcount=0
+ %
+ \everycr = {%
+ \noalign{%
+ \global\everytab={}%
+ \global\colcount=0 % Reset the column counter.
+ % Check for saved footnotes, etc.
+ \checkinserts
+ % Keeps underfull box messages off when table breaks over pages.
+ %\filbreak
+ % Maybe so, but it also creates really weird page breaks when the
+ % table breaks over pages. Wouldn't \vfil be better? Wait until the
+ % problem manifests itself, so it can be fixed for real --karl.
+ }%
+ }%
+ %
+ \parsearg\domultitable
+}
+\def\domultitable#1{%
+ % To parse everything between @multitable and @item:
+ \setuptable#1 \endsetuptable
+ %
+ % This preamble sets up a generic column definition, which will
+ % be used as many times as user calls for columns.
+ % \vtop will set a single line and will also let text wrap and
+ % continue for many paragraphs if desired.
+ \halign\bgroup &%
+ \global\advance\colcount by 1
+ \multistrut
+ \vtop{%
+ % Use the current \colcount to find the correct column width:
+ \hsize=\expandafter\csname col\the\colcount\endcsname
+ %
+ % In order to keep entries from bumping into each other
+ % we will add a \leftskip of \multitablecolspace to all columns after
+ % the first one.
+ %
+ % If a template has been used, we will add \multitablecolspace
+ % to the width of each template entry.
+ %
+ % If the user has set preamble in terms of percent of \hsize we will
+ % use that dimension as the width of the column, and the \leftskip
+ % will keep entries from bumping into each other. Table will start at
+ % left margin and final column will justify at right margin.
+ %
+ % Make sure we don't inherit \rightskip from the outer environment.
+ \rightskip=0pt
+ \ifnum\colcount=1
+ % The first column will be indented with the surrounding text.
+ \advance\hsize by\leftskip
+ \else
+ \ifsetpercent \else
+ % If user has not set preamble in terms of percent of \hsize
+ % we will advance \hsize by \multitablecolspace.
+ \advance\hsize by \multitablecolspace
+ \fi
+ % In either case we will make \leftskip=\multitablecolspace:
+ \leftskip=\multitablecolspace
+ \fi
+ % Ignoring space at the beginning and end avoids an occasional spurious
+ % blank line, when TeX decides to break the line at the space before the
+ % box from the multistrut, so the strut ends up on a line by itself.
+ % For example:
+ % @multitable @columnfractions .11 .89
+ % @item @code{#}
+ % @tab Legal holiday which is valid in major parts of the whole country.
+ % Is automatically provided with highlighting sequences respectively
+ % marking characters.
+ \noindent\ignorespaces##\unskip\multistrut
+ }\cr
+}
+\def\Emultitable{%
+ \crcr
+ \egroup % end the \halign
+ \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+ \def\multistrut{\strut}% just use the standard line spacing
+ %
+ % Compute \multitablelinespace (if not defined by user) for use in
+ % \multitableparskip calculation. We used define \multistrut based on
+ % this, but (ironically) that caused the spacing to be off.
+ % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+%% Test to see if parskip is larger than space between lines of
+%% table. If not, do nothing.
+%% If so, set to same dimension as multitablelinespace.
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+ %% than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+ %% than skip between lines in the table.
+\fi}
+
+
+\message{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed. They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested. But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+ \expandafter\let\csname #1\endcsname = \relax
+ \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+ % Scan in ``verbatim'' mode:
+ \obeylines
+ \catcode`\@ = \other
+ \catcode`\{ = \other
+ \catcode`\} = \other
+ %
+ % Make sure that spaces turn into tokens that match what \doignoretext wants.
+ \spaceisspace
+ %
+ % Count number of #1's that we've seen.
+ \doignorecount = 0
+ %
+ % Swallow text until we reach the matching `@end #1'.
+ \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+ \obeylines %
+ %
+ \gdef\dodoignore#1{%
+ % #1 contains the command name as a string, e.g., `ifinfo'.
+ %
+ % Define a command to find the next `@end #1'.
+ \long\def\doignoretext##1^^M@end #1{%
+ \doignoretextyyy##1^^M@#1\_STOP_}%
+ %
+ % And this command to find another #1 command, at the beginning of a
+ % line. (Otherwise, we would consider a line `@c @ifset', for
+ % example, to count as an @ifset for nesting.)
+ \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+ %
+ % And now expand that command.
+ \doignoretext ^^M%
+ }%
+}
+
+\def\doignoreyyy#1{%
+ \def\temp{#1}%
+ \ifx\temp\empty % Nothing found.
+ \let\next\doignoretextzzz
+ \else % Found a nested condition, ...
+ \advance\doignorecount by 1
+ \let\next\doignoretextyyy % ..., look for another.
+ % If we're here, #1 ends with ^^M\ifinfo (for example).
+ \fi
+ \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+ \ifnum\doignorecount = 0 % We have just found the outermost @end.
+ \let\next\enddoignore
+ \else % Still inside a nested condition.
+ \advance\doignorecount by -1
+ \let\next\doignoretext % Look for the next @end.
+ \fi
+ \next
+}
+
+% Finish off ignored text.
+{ \obeylines%
+ % Ignore anything after the last `@end #1'; this matters in verbatim
+ % environments, where otherwise the newline after an ignored conditional
+ % would result in a blank line in the output.
+ \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
+
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+ {%
+ \makevalueexpandable
+ \def\temp{#2}%
+ \edef\next{\gdef\makecsname{SET#1}}%
+ \ifx\temp\empty
+ \next{}%
+ \else
+ \setzzz#2\endsetzzz
+ \fi
+ }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+ {%
+ \makevalueexpandable
+ \global\expandafter\let\csname SET#1\endcsname=\relax
+ }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+ \catcode`\- = \active \catcode`\_ = \active
+ %
+ \gdef\makevalueexpandable{%
+ \let\value = \expandablevalue
+ % We don't want these characters active, ...
+ \catcode`\-=\other \catcode`\_=\other
+ % ..., but we might end up with active ones in the argument if
+ % we're called from @code, as @code{@value{foo-bar_}}, though.
+ % So \let them to their normal equivalents.
+ \let-\realdash \let_\normalunderscore
+ }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file. This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ {[No value for ``#1'']}%
+ \message{Variable `#1', used in @value, is not set.}%
+ \else
+ \csname SET#1\endcsname
+ \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+ {%
+ \makevalueexpandable
+ \let\next=\empty
+ \expandafter\ifx\csname SET#2\endcsname\relax
+ #1% If not set, redefine \next.
+ \fi
+ \expandafter
+ }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @dircategory CATEGORY -- specify a category of the dir file
+% which this file should belong to. Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index. The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+%
+\def\newindex#1{%
+ \iflinks
+ \expandafter\newwrite \csname#1indfile\endcsname
+ \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+ \fi
+ \expandafter\xdef\csname#1index\endcsname{% % Define @#1index
+ \noexpand\doindex{#1}}
+}
+
+% @defindex foo == \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+ \iflinks
+ \expandafter\newwrite \csname#1indfile\endcsname
+ \openout \csname#1indfile\endcsname \jobname.#1
+ \fi
+ \expandafter\xdef\csname#1index\endcsname{%
+ \noexpand\docodeindex{#1}}%
+}
+
+
+% @synindex foo bar makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+%
+% @syncodeindex foo bar similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+ % Only do \closeout if we haven't already done it, else we'll end up
+ % closing the target index.
+ \expandafter \ifx\csname donesynindex#2\endcsname \relax
+ % The \closeout helps reduce unnecessary open files; the limit on the
+ % Acorn RISC OS is a mere 16 files.
+ \expandafter\closeout\csname#2indfile\endcsname
+ \expandafter\let\csname donesynindex#2\endcsname = 1
+ \fi
+ % redefine \fooindfile:
+ \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+ \expandafter\let\csname#2indfile\endcsname=\temp
+ % redefine \fooindex:
+ \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+% and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+% Take care of Texinfo commands that can appear in an index entry.
+% Since there are some commands we want to expand, and others we don't,
+% we have to laboriously prevent expansion for those that we don't.
+%
+\def\indexdummies{%
+ \escapechar = `\\ % use backslash in output files.
+ \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+ \def\ {\realbackslash\space }%
+ %
+ % Need these in case \tex is in effect and \{ is a \delimiter again.
+ % But can't use \lbracecmd and \rbracecmd because texindex assumes
+ % braces and backslashes are used only as delimiters.
+ \let\{ = \mylbrace
+ \let\} = \myrbrace
+ %
+ % I don't entirely understand this, but when an index entry is
+ % generated from a macro call, the \endinput which \scanmacro inserts
+ % causes processing to be prematurely terminated. This is,
+ % apparently, because \indexsorttmp is fully expanded, and \endinput
+ % is an expandable command. The redefinition below makes \endinput
+ % disappear altogether for that purpose -- although logging shows that
+ % processing continues to some further point. On the other hand, it
+ % seems \endinput does not hurt in the printed index arg, since that
+ % is still getting written without apparent harm.
+ %
+ % Sample source (mac-idx3.tex, reported by Graham Percival to
+ % help-texinfo, 22may06):
+ % @macro funindex {WORD}
+ % @findex xyz
+ % @end macro
+ % ...
+ % @funindex commtest
+ %
+ % The above is not enough to reproduce the bug, but it gives the flavor.
+ %
+ % Sample whatsit resulting:
+ % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
+ %
+ % So:
+ \let\endinput = \empty
+ %
+ % Do the redefinitions.
+ \commondummies
+}
+
+% For the aux and toc files, @ is the escape character. So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files). When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+ \def\@{@@}%
+ \def\ {@ }%
+ \let\{ = \lbraceatcmd
+ \let\} = \rbraceatcmd
+ %
+ % Do the redefinitions.
+ \commondummies
+ \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+ %
+ % \definedummyword defines \#1 as \string\#1\space, thus effectively
+ % preventing its expansion. This is used only for control% words,
+ % not control letters, because the \space would be incorrect for
+ % control characters, but is needed to separate the control word
+ % from whatever follows.
+ %
+ % For control letters, we have \definedummyletter, which omits the
+ % space.
+ %
+ % These can be used both for control words that take an argument and
+ % those that do not. If it is followed by {arg} in the input, then
+ % that will dutifully get written to the index (or wherever).
+ %
+ \def\definedummyword ##1{\def##1{\string##1\space}}%
+ \def\definedummyletter##1{\def##1{\string##1}}%
+ \let\definedummyaccent\definedummyletter
+ %
+ \commondummiesnofonts
+ %
+ \definedummyletter\_%
+ %
+ % Non-English letters.
+ \definedummyword\AA
+ \definedummyword\AE
+ \definedummyword\DH
+ \definedummyword\L
+ \definedummyword\O
+ \definedummyword\OE
+ \definedummyword\TH
+ \definedummyword\aa
+ \definedummyword\ae
+ \definedummyword\dh
+ \definedummyword\exclamdown
+ \definedummyword\l
+ \definedummyword\o
+ \definedummyword\oe
+ \definedummyword\ordf
+ \definedummyword\ordm
+ \definedummyword\questiondown
+ \definedummyword\ss
+ \definedummyword\th
+ %
+ % Although these internal commands shouldn't show up, sometimes they do.
+ \definedummyword\bf
+ \definedummyword\gtr
+ \definedummyword\hat
+ \definedummyword\less
+ \definedummyword\sf
+ \definedummyword\sl
+ \definedummyword\tclose
+ \definedummyword\tt
+ %
+ \definedummyword\LaTeX
+ \definedummyword\TeX
+ %
+ % Assorted special characters.
+ \definedummyword\bullet
+ \definedummyword\comma
+ \definedummyword\copyright
+ \definedummyword\registeredsymbol
+ \definedummyword\dots
+ \definedummyword\enddots
+ \definedummyword\equiv
+ \definedummyword\error
+ \definedummyword\euro
+ \definedummyword\guillemetleft
+ \definedummyword\guillemetright
+ \definedummyword\guilsinglleft
+ \definedummyword\guilsinglright
+ \definedummyword\expansion
+ \definedummyword\minus
+ \definedummyword\ogonek
+ \definedummyword\pounds
+ \definedummyword\point
+ \definedummyword\print
+ \definedummyword\quotedblbase
+ \definedummyword\quotedblleft
+ \definedummyword\quotedblright
+ \definedummyword\quoteleft
+ \definedummyword\quoteright
+ \definedummyword\quotesinglbase
+ \definedummyword\result
+ \definedummyword\textdegree
+ %
+ % We want to disable all macros so that they are not expanded by \write.
+ \macrolist
+ %
+ \normalturnoffactive
+ %
+ % Handle some cases of @value -- where it does not contain any
+ % (non-fully-expandable) commands.
+ \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+\def\commondummiesnofonts{%
+ % Control letters and accents.
+ \definedummyletter\!%
+ \definedummyaccent\"%
+ \definedummyaccent\'%
+ \definedummyletter\*%
+ \definedummyaccent\,%
+ \definedummyletter\.%
+ \definedummyletter\/%
+ \definedummyletter\:%
+ \definedummyaccent\=%
+ \definedummyletter\?%
+ \definedummyaccent\^%
+ \definedummyaccent\`%
+ \definedummyaccent\~%
+ \definedummyword\u
+ \definedummyword\v
+ \definedummyword\H
+ \definedummyword\dotaccent
+ \definedummyword\ogonek
+ \definedummyword\ringaccent
+ \definedummyword\tieaccent
+ \definedummyword\ubaraccent
+ \definedummyword\udotaccent
+ \definedummyword\dotless
+ %
+ % Texinfo font commands.
+ \definedummyword\b
+ \definedummyword\i
+ \definedummyword\r
+ \definedummyword\sc
+ \definedummyword\t
+ %
+ % Commands that take arguments.
+ \definedummyword\acronym
+ \definedummyword\cite
+ \definedummyword\code
+ \definedummyword\command
+ \definedummyword\dfn
+ \definedummyword\email
+ \definedummyword\emph
+ \definedummyword\env
+ \definedummyword\file
+ \definedummyword\kbd
+ \definedummyword\key
+ \definedummyword\math
+ \definedummyword\option
+ \definedummyword\pxref
+ \definedummyword\ref
+ \definedummyword\samp
+ \definedummyword\strong
+ \definedummyword\tie
+ \definedummyword\uref
+ \definedummyword\url
+ \definedummyword\var
+ \definedummyword\verb
+ \definedummyword\w
+ \definedummyword\xref
+}
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names. It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+ % Accent commands should become @asis.
+ \def\definedummyaccent##1{\let##1\asis}%
+ % We can just ignore other control letters.
+ \def\definedummyletter##1{\let##1\empty}%
+ % Hopefully, all control words can become @asis.
+ \let\definedummyword\definedummyaccent
+ %
+ \commondummiesnofonts
+ %
+ % Don't no-op \tt, since it isn't a user-level command
+ % and is used in the definitions of the active chars like <, >, |, etc.
+ % Likewise with the other plain tex font commands.
+ %\let\tt=\asis
+ %
+ \def\ { }%
+ \def\@{@}%
+ % how to handle braces?
+ \def\_{\normalunderscore}%
+ %
+ % Non-English letters.
+ \def\AA{AA}%
+ \def\AE{AE}%
+ \def\DH{DZZ}%
+ \def\L{L}%
+ \def\OE{OE}%
+ \def\O{O}%
+ \def\TH{ZZZ}%
+ \def\aa{aa}%
+ \def\ae{ae}%
+ \def\dh{dzz}%
+ \def\exclamdown{!}%
+ \def\l{l}%
+ \def\oe{oe}%
+ \def\ordf{a}%
+ \def\ordm{o}%
+ \def\o{o}%
+ \def\questiondown{?}%
+ \def\ss{ss}%
+ \def\th{zzz}%
+ %
+ \def\LaTeX{LaTeX}%
+ \def\TeX{TeX}%
+ %
+ % Assorted special characters.
+ % (The following {} will end up in the sort string, but that's ok.)
+ \def\bullet{bullet}%
+ \def\comma{,}%
+ \def\copyright{copyright}%
+ \def\dots{...}%
+ \def\enddots{...}%
+ \def\equiv{==}%
+ \def\error{error}%
+ \def\euro{euro}%
+ \def\expansion{==>}%
+ \def\guillemetleft{<<}%
+ \def\guillemetright{>>}%
+ \def\guilsinglleft{<}%
+ \def\guilsinglright{>}%
+ \def\minus{-}%
+ \def\point{.}%
+ \def\pounds{pounds}%
+ \def\print{-|}%
+ \def\quotedblbase{"}%
+ \def\quotedblleft{"}%
+ \def\quotedblright{"}%
+ \def\quoteleft{`}%
+ \def\quoteright{'}%
+ \def\quotesinglbase{,}%
+ \def\registeredsymbol{R}%
+ \def\result{=>}%
+ \def\textdegree{o}%
+ %
+ % We need to get rid of all macros, leaving only the arguments (if present).
+ % Of course this is not nearly correct, but it is the best we can do for now.
+ % makeinfo does not expand macros in the argument to @deffn, which ends up
+ % writing an index entry, and texindex isn't prepared for an index sort entry
+ % that starts with \.
+ %
+ % Since macro invocations are followed by braces, we can just redefine them
+ % to take a single TeX argument. The case of a macro invocation that
+ % goes to end-of-line is not handled.
+ %
+ \macrolist
+}
+
+\let\indexbackslash=0 %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+ \iflinks
+ {%
+ % Store the main index entry text (including the third arg).
+ \toks0 = {#2}%
+ % If third arg is present, precede it with a space.
+ \def\thirdarg{#3}%
+ \ifx\thirdarg\empty \else
+ \toks0 = \expandafter{\the\toks0 \space #3}%
+ \fi
+ %
+ \edef\writeto{\csname#1indfile\endcsname}%
+ %
+ \safewhatsit\dosubindwrite
+ }%
+ \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
+ % Put the index entry in the margin if desired.
+ \ifx\SETmarginindex\relax\else
+ \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+ \fi
+ %
+ % Remember, we are within a group.
+ \indexdummies % Must do this here, since \bf, etc expand at this stage
+ \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+ % so it will be output as is; and it will print as backslash.
+ %
+ % Process the index entry with all font commands turned off, to
+ % get the string to sort by.
+ {\indexnofonts
+ \edef\temp{\the\toks0}% need full expansion
+ \xdef\indexsorttmp{\temp}%
+ }%
+ %
+ % Set up the complete index entry, with both the sort key and
+ % the original text, including any font commands. We write
+ % three arguments to \entry to the .?? file (four in the
+ % subentry case), texindex reduces to two when writing the .??s
+ % sorted result.
+ \edef\temp{%
+ \write\writeto{%
+ \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+ }%
+ \temp
+}
+
+% Take care of unwanted page breaks/skips around a whatsit:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again. Otherwise, the whatsit generated by the
+% \write or \pdfdest will make \lastskip zero. The result is that
+% sequences like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode. We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip. \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip. The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
+%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
+% ..., ready, GO:
+%
+\def\safewhatsit#1{%
+\ifhmode
+ #1%
+\else
+ % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+ \whatsitskip = \lastskip
+ \edef\lastskipmacro{\the\lastskip}%
+ \whatsitpenalty = \lastpenalty
+ %
+ % If \lastskip is nonzero, that means the last item was a
+ % skip. And since a skip is discardable, that means this
+ % -\whatsitskip glue we're inserting is preceded by a
+ % non-discardable item, therefore it is not a potential
+ % breakpoint, therefore no \nobreak needed.
+ \ifx\lastskipmacro\zeroskipmacro
+ \else
+ \vskip-\whatsitskip
+ \fi
+ %
+ #1%
+ %
+ \ifx\lastskipmacro\zeroskipmacro
+ % If \lastskip was zero, perhaps the last item was a penalty, and
+ % perhaps it was >=10000, e.g., a \nobreak. In that case, we want
+ % to re-insert the same penalty (values >10000 are used for various
+ % signals); since we just inserted a non-discardable item, any
+ % following glue (such as a \parskip) would be a breakpoint. For example:
+ %
+ % @deffn deffn-whatever
+ % @vindex index-whatever
+ % Description.
+ % would allow a break between the index-whatever whatsit
+ % and the "Description." paragraph.
+ \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
+ \else
+ % On the other hand, if we had a nonzero \lastskip,
+ % this make-up glue would be preceded by a non-discardable item
+ % (the whatsit from the \write), so we must insert a \nobreak.
+ \nobreak\vskip\whatsitskip
+ \fi
+\fi
+}
+
+% The index entry written in the file actually looks like
+% \entry {sortstring}{page}{topic}
+% or
+% \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+% \initial {c}
+% before the first topic whose initial is c
+% \entry {topic}{pagelist}
+% for a topic that is used without subtopics
+% \primary {topic}
+% for the beginning of a topic that is used with subtopics
+% \secondary {subtopic}{pagelist}
+% for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% @printindex causes a particular index (the ??s file) to get printed.
+% It does not print any chapter heading (usually an @unnumbered).
+%
+\parseargdef\printindex{\begingroup
+ \dobreak \chapheadingskip{10000}%
+ %
+ \smallfonts \rm
+ \tolerance = 9500
+ \plainfrenchspacing
+ \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+ %
+ % See if the index file exists and is nonempty.
+ % Change catcode of @ here so that if the index file contains
+ % \initial {@}
+ % as its first line, TeX doesn't complain about mismatched braces
+ % (because it thinks @} is a control sequence).
+ \catcode`\@ = 11
+ \openin 1 \jobname.#1s
+ \ifeof 1
+ % \enddoublecolumns gets confused if there is no text in the index,
+ % and it loses the chapter title and the aux file entries for the
+ % index. The easiest way to prevent this problem is to make sure
+ % there is some text.
+ \putwordIndexNonexistent
+ \else
+ %
+ % If the index file exists but is empty, then \openin leaves \ifeof
+ % false. We have to make TeX try to read something from the file, so
+ % it can discover if there is anything in it.
+ \read 1 to \temp
+ \ifeof 1
+ \putwordIndexIsEmpty
+ \else
+ % Index files are almost Texinfo source, but we use \ as the escape
+ % character. It would be better to use @, but that's too big a change
+ % to make right now.
+ \def\indexbackslash{\backslashcurfont}%
+ \catcode`\\ = 0
+ \escapechar = `\\
+ \begindoublecolumns
+ \input \jobname.#1s
+ \enddoublecolumns
+ \fi
+ \fi
+ \closein 1
+\endgroup}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+\def\initial#1{{%
+ % Some minor font changes for the special characters.
+ \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+ %
+ % Remove any glue we may have, we'll be inserting our own.
+ \removelastskip
+ %
+ % We like breaks before the index initials, so insert a bonus.
+ \nobreak
+ \vskip 0pt plus 3\baselineskip
+ \penalty 0
+ \vskip 0pt plus -3\baselineskip
+ %
+ % Typeset the initial. Making this add up to a whole number of
+ % baselineskips increases the chance of the dots lining up from column
+ % to column. It still won't often be perfect, because of the stretch
+ % we need before each entry, but it's better.
+ %
+ % No shrink because it confuses \balancecolumns.
+ \vskip 1.67\baselineskip plus .5\baselineskip
+ \leftline{\secbf #1}%
+ % Do our best not to break after the initial.
+ \nobreak
+ \vskip .33\baselineskip plus .1\baselineskip
+}}
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin. It is used for index
+% and table of contents entries. The paragraph is indented by \leftskip.
+%
+% A straightforward implementation would start like this:
+% \def\entry#1#2{...
+% But this freezes the catcodes in the argument, and can cause problems to
+% @code, which sets - active. This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+%
+% The right solution is to prevent \entry from swallowing the whole text.
+% --kasal, 21nov03
+\def\entry{%
+ \begingroup
+ %
+ % Start a new paragraph if necessary, so our assignments below can't
+ % affect previous text.
+ \par
+ %
+ % Do not fill out the last line with white space.
+ \parfillskip = 0in
+ %
+ % No extra space above this paragraph.
+ \parskip = 0in
+ %
+ % Do not prefer a separate line ending with a hyphen to fewer lines.
+ \finalhyphendemerits = 0
+ %
+ % \hangindent is only relevant when the entry text and page number
+ % don't both fit on one line. In that case, bob suggests starting the
+ % dots pretty far over on the line. Unfortunately, a large
+ % indentation looks wrong when the entry text itself is broken across
+ % lines. So we use a small indentation and put up with long leaders.
+ %
+ % \hangafter is reset to 1 (which is the value we want) at the start
+ % of each paragraph, so we need not do anything with that.
+ \hangindent = 2em
+ %
+ % When the entry text needs to be broken, just fill out the first line
+ % with blank space.
+ \rightskip = 0pt plus1fil
+ %
+ % A bit of stretch before each entry for the benefit of balancing
+ % columns.
+ \vskip 0pt plus1pt
+ %
+ % Swallow the left brace of the text (first parameter):
+ \afterassignment\doentry
+ \let\temp =
+}
+\def\doentry{%
+ \bgroup % Instead of the swallowed brace.
+ \noindent
+ \aftergroup\finishentry
+ % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+ % #1 is the page number.
+ %
+ % The following is kludged to not output a line of dots in the index if
+ % there are no page numbers. The next person who breaks this will be
+ % cursed by a Unix daemon.
+ \setbox\boxA = \hbox{#1}%
+ \ifdim\wd\boxA = 0pt
+ \ %
+ \else
+ %
+ % If we must, put the page number on a line of its own, and fill out
+ % this line with blank space. (The \hfil is overwhelmed with the
+ % fill leaders glue in \indexdotfill if the page number does fit.)
+ \hfil\penalty50
+ \null\nobreak\indexdotfill % Have leaders before the page number.
+ %
+ % The `\ ' here is removed by the implicit \unskip that TeX does as
+ % part of (the primitive) \par. Without it, a spurious underfull
+ % \hbox ensues.
+ \ifpdf
+ \pdfgettoks#1.%
+ \ \the\toksA
+ \else
+ \ #1%
+ \fi
+ \fi
+ \par
+ \endgroup
+}
+
+% Like plain.tex's \dotfill, except uses up at least 1 em.
+\def\indexdotfill{\cleaders
+ \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+\def\secondary#1#2{{%
+ \parfillskip=0in
+ \parskip=0in
+ \hangindent=1in
+ \hangafter=1
+ \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
+ \ifpdf
+ \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+ \else
+ #2
+ \fi
+ \par
+}}
+
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
+\catcode`\@=11
+
+\newbox\partialpage
+\newdimen\doublecolumnhsize
+
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+ % Grab any single-column material above us.
+ \output = {%
+ %
+ % Here is a possibility not foreseen in manmac: if we accumulate a
+ % whole lot of material, we might end up calling this \output
+ % routine twice in a row (see the doublecol-lose test, which is
+ % essentially a couple of indexes with @setchapternewpage off). In
+ % that case we just ship out what is in \partialpage with the normal
+ % output routine. Generally, \partialpage will be empty when this
+ % runs and this will be a no-op. See the indexspread.tex test case.
+ \ifvoid\partialpage \else
+ \onepageout{\pagecontents\partialpage}%
+ \fi
+ %
+ \global\setbox\partialpage = \vbox{%
+ % Unvbox the main output page.
+ \unvbox\PAGE
+ \kern-\topskip \kern\baselineskip
+ }%
+ }%
+ \eject % run that output routine to set \partialpage
+ %
+ % Use the double-column output routine for subsequent pages.
+ \output = {\doublecolumnout}%
+ %
+ % Change the page size parameters. We could do this once outside this
+ % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+ % format, but then we repeat the same computation. Repeating a couple
+ % of assignments once per index is clearly meaningless for the
+ % execution time, so we may as well do it in one place.
+ %
+ % First we halve the line length, less a little for the gutter between
+ % the columns. We compute the gutter based on the line length, so it
+ % changes automatically with the paper format. The magic constant
+ % below is chosen so that the gutter has the same value (well, +-<1pt)
+ % as it did when we hard-coded it.
+ %
+ % We put the result in a separate register, \doublecolumhsize, so we
+ % can restore it in \pagesofar, after \hsize itself has (potentially)
+ % been clobbered.
+ %
+ \doublecolumnhsize = \hsize
+ \advance\doublecolumnhsize by -.04154\hsize
+ \divide\doublecolumnhsize by 2
+ \hsize = \doublecolumnhsize
+ %
+ % Double the \vsize as well. (We don't need a separate register here,
+ % since nobody clobbers \vsize.)
+ \vsize = 2\vsize
+}
+
+% The double-column output routine for all double-column pages except
+% the last.
+%
+\def\doublecolumnout{%
+ \splittopskip=\topskip \splitmaxdepth=\maxdepth
+ % Get the available space for the double columns -- the normal
+ % (undoubled) page height minus any material left over from the
+ % previous page.
+ \dimen@ = \vsize
+ \divide\dimen@ by 2
+ \advance\dimen@ by -\ht\partialpage
+ %
+ % box0 will be the left-hand column, box2 the right.
+ \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+ \onepageout\pagesofar
+ \unvbox255
+ \penalty\outputpenalty
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+ \unvbox\partialpage
+ %
+ \hsize = \doublecolumnhsize
+ \wd0=\hsize \wd2=\hsize
+ \hbox to\pagewidth{\box0\hfil\box2}%
+}
+%
+% All done with double columns.
+\def\enddoublecolumns{%
+ % The following penalty ensures that the page builder is exercised
+ % _before_ we change the output routine. This is necessary in the
+ % following situation:
+ %
+ % The last section of the index consists only of a single entry.
+ % Before this section, \pagetotal is less than \pagegoal, so no
+ % break occurs before the last section starts. However, the last
+ % section, consisting of \initial and the single \entry, does not
+ % fit on the page and has to be broken off. Without the following
+ % penalty the page builder will not be exercised until \eject
+ % below, and by that time we'll already have changed the output
+ % routine to the \balancecolumns version, so the next-to-last
+ % double-column page will be processed with \balancecolumns, which
+ % is wrong: The two columns will go to the main vertical list, with
+ % the broken-off section in the recent contributions. As soon as
+ % the output routine finishes, TeX starts reconsidering the page
+ % break. The two columns and the broken-off section both fit on the
+ % page, because the two columns now take up only half of the page
+ % goal. When TeX sees \eject from below which follows the final
+ % section, it invokes the new output routine that we've set after
+ % \balancecolumns below; \onepageout will try to fit the two columns
+ % and the final section into the vbox of \pageheight (see
+ % \pagebody), causing an overfull box.
+ %
+ % Note that glue won't work here, because glue does not exercise the
+ % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+ \penalty0
+ %
+ \output = {%
+ % Split the last of the double-column material. Leave it on the
+ % current page, no automatic page break.
+ \balancecolumns
+ %
+ % If we end up splitting too much material for the current page,
+ % though, there will be another page break right after this \output
+ % invocation ends. Having called \balancecolumns once, we do not
+ % want to call it again. Therefore, reset \output to its normal
+ % definition right away. (We hope \balancecolumns will never be
+ % called on to balance too much material, but if it is, this makes
+ % the output somewhat more palatable.)
+ \global\output = {\onepageout{\pagecontents\PAGE}}%
+ }%
+ \eject
+ \endgroup % started in \begindoublecolumns
+ %
+ % \pagegoal was set to the doubled \vsize above, since we restarted
+ % the current page. We're now back to normal single-column
+ % typesetting, so reset \pagegoal to the normal \vsize (after the
+ % \endgroup where \vsize got restored).
+ \pagegoal = \vsize
+}
+%
+% Called at the end of the double column material.
+\def\balancecolumns{%
+ \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+ \dimen@ = \ht0
+ \advance\dimen@ by \topskip
+ \advance\dimen@ by-\baselineskip
+ \divide\dimen@ by 2 % target to split to
+ %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
+ \splittopskip = \topskip
+ % Loop until we get a decent breakpoint.
+ {%
+ \vbadness = 10000
+ \loop
+ \global\setbox3 = \copy0
+ \global\setbox1 = \vsplit3 to \dimen@
+ \ifdim\ht3>\dimen@
+ \global\advance\dimen@ by 1pt
+ \repeat
+ }%
+ %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
+ \setbox0=\vbox to\dimen@{\unvbox1}%
+ \setbox2=\vbox to\dimen@{\unvbox3}%
+ %
+ \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% \unnumberedno is an oxymoron, of course. But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number". We avoid collisions with chapter
+% numbers by starting them at 10000. (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\newcount\chapno
+\newcount\secno \secno=0
+\newcount\subsecno \subsecno=0
+\newcount\subsubsecno \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount\appendixno \appendixno = `\@
+%
+% \def\appendixletter{\char\the\appendixno}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+ \ifnum\appendixno=`A A%
+ \else\ifnum\appendixno=`B B%
+ \else\ifnum\appendixno=`C C%
+ \else\ifnum\appendixno=`D D%
+ \else\ifnum\appendixno=`E E%
+ \else\ifnum\appendixno=`F F%
+ \else\ifnum\appendixno=`G G%
+ \else\ifnum\appendixno=`H H%
+ \else\ifnum\appendixno=`I I%
+ \else\ifnum\appendixno=`J J%
+ \else\ifnum\appendixno=`K K%
+ \else\ifnum\appendixno=`L L%
+ \else\ifnum\appendixno=`M M%
+ \else\ifnum\appendixno=`N N%
+ \else\ifnum\appendixno=`O O%
+ \else\ifnum\appendixno=`P P%
+ \else\ifnum\appendixno=`Q Q%
+ \else\ifnum\appendixno=`R R%
+ \else\ifnum\appendixno=`S S%
+ \else\ifnum\appendixno=`T T%
+ \else\ifnum\appendixno=`U U%
+ \else\ifnum\appendixno=`V V%
+ \else\ifnum\appendixno=`W W%
+ \else\ifnum\appendixno=`X X%
+ \else\ifnum\appendixno=`Y Y%
+ \else\ifnum\appendixno=`Z Z%
+ % The \the is necessary, despite appearances, because \appendixletter is
+ % expanded while writing the .toc file. \char\appendixno is not
+ % expandable, thus it is written literally, thus all appendixes come out
+ % with the same letter (or @) in the toc without it.
+ \else\char\the\appendixno
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter. Page headings and footings can use
+% these. @section does likewise.
+\def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
+\def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achive this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unmlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+ % Compute the abs. sec. level:
+ \absseclevel=#2
+ \advance\absseclevel by \secbase
+ % Make sure \absseclevel doesn't fall outside the range:
+ \ifnum \absseclevel < 0
+ \absseclevel = 0
+ \else
+ \ifnum \absseclevel > 3
+ \absseclevel = 3
+ \fi
+ \fi
+ % The heading type:
+ \def\headtype{#1}%
+ \if \headtype U%
+ \ifnum \absseclevel < \unmlevel
+ \chardef\unmlevel = \absseclevel
+ \fi
+ \else
+ % Check for appendix sections:
+ \ifnum \absseclevel = 0
+ \edef\chapheadtype{\headtype}%
+ \else
+ \if \headtype A\if \chapheadtype N%
+ \errmessage{@appendix... within a non-appendix chapter}%
+ \fi\fi
+ \fi
+ % Check for numbered within unnumbered:
+ \ifnum \absseclevel > \unmlevel
+ \def\headtype{U}%
+ \else
+ \chardef\unmlevel = 3
+ \fi
+ \fi
+ % Now print the heading:
+ \if \headtype U%
+ \ifcase\absseclevel
+ \unnumberedzzz{#3}%
+ \or \unnumberedseczzz{#3}%
+ \or \unnumberedsubseczzz{#3}%
+ \or \unnumberedsubsubseczzz{#3}%
+ \fi
+ \else
+ \if \headtype A%
+ \ifcase\absseclevel
+ \appendixzzz{#3}%
+ \or \appendixsectionzzz{#3}%
+ \or \appendixsubseczzz{#3}%
+ \or \appendixsubsubseczzz{#3}%
+ \fi
+ \else
+ \ifcase\absseclevel
+ \chapterzzz{#3}%
+ \or \seczzz{#3}%
+ \or \numberedsubseczzz{#3}%
+ \or \numberedsubsubseczzz{#3}%
+ \fi
+ \fi
+ \fi
+ \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered. Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v. By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+ % section resetting is \global in case the chapter is in a group, such
+ % as an @include file.
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\chapno by 1
+ %
+ % Used for \float.
+ \gdef\chaplevelprefix{\the\chapno.}%
+ \resetallfloatnos
+ %
+ % \putwordChapter can contain complex things in translations.
+ \toks0=\expandafter{\putwordChapter}%
+ \message{\the\toks0 \space \the\chapno}%
+ %
+ % Write the actual heading.
+ \chapmacro{#1}{Ynumbered}{\the\chapno}%
+ %
+ % So @section and the like are numbered underneath this chapter.
+ \global\let\section = \numberedsec
+ \global\let\subsection = \numberedsubsec
+ \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
+%
+\def\appendixzzz#1{%
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\appendixno by 1
+ \gdef\chaplevelprefix{\appendixletter.}%
+ \resetallfloatnos
+ %
+ % \putwordAppendix can contain complex things in translations.
+ \toks0=\expandafter{\putwordAppendix}%
+ \message{\the\toks0 \space \appendixletter}%
+ %
+ \chapmacro{#1}{Yappendix}{\appendixletter}%
+ %
+ \global\let\section = \appendixsec
+ \global\let\subsection = \appendixsubsec
+ \global\let\subsubsection = \appendixsubsubsec
+}
+
+\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+\def\unnumberedzzz#1{%
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\unnumberedno by 1
+ %
+ % Since an unnumbered has no number, no prefix for figures.
+ \global\let\chaplevelprefix = \empty
+ \resetallfloatnos
+ %
+ % This used to be simply \message{#1}, but TeX fully expands the
+ % argument to \message. Therefore, if #1 contained @-commands, TeX
+ % expanded them. For example, in `@unnumbered The @cite{Book}', TeX
+ % expanded @cite (which turns out to cause errors because \cite is meant
+ % to be executed, not expanded).
+ %
+ % Anyway, we don't want the fully-expanded definition of @cite to appear
+ % as a result of the \message, we just want `@cite' itself. We use
+ % \the<toks register> to achieve this: TeX expands \the<toks> only once,
+ % simply yielding the contents of <toks register>. (We also do this for
+ % the toc entries.)
+ \toks0 = {#1}%
+ \message{(\the\toks0)}%
+ %
+ \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+ %
+ \global\let\section = \unnumberedsec
+ \global\let\subsection = \unnumberedsubsec
+ \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+ % Well, we could do the following in a group, but that would break
+ % an assumption that \chapmacro is called at the outermost level.
+ % Thus we are safer this way: --kasal, 24feb04
+ \let\centerparametersmaybe = \centerparameters
+ \unnmhead0{#1}%
+ \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+\def\appendixsectionzzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+\def\unnumberedseczzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+\def\numberedsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+\def\appendixsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Yappendix}%
+ {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+\def\unnumberedsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Ynothing}%
+ {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+\def\numberedsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Ynumbered}%
+ {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+\def\appendixsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Yappendix}%
+ {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+\def\unnumberedsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Ynothing}%
+ {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and such:
+% 1) We use \vbox rather than the earlier \line to permit
+% overlong headings to fold.
+% 2) \hyphenpenalty is set to 10000 because hyphenation in a
+% heading is obnoxious; this forbids it.
+% 3) Likewise, headings look best if no \parindent is used, and
+% if justification is not attempted. Hence \raggedright.
+
+\def\majorheading{%
+ {\advance\chapheadingskip by 10pt \chapbreak }%
+ \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+ {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\ptexraggedright
+ \rmisbold #1\hfill}}%
+ \bigskip \par\penalty 200\relax
+ \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+%%% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+%%% Define plain chapter starts, and page on/off switching for it
+% Parameter controlling skip before chapter headings (if needed)
+
+\newskip\chapheadingskip
+
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong. But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+ \chappager
+ \ifodd\pageno \else
+ \begingroup
+ \evenheadline={\hfil}\evenfootline={\hfil}%
+ \oddheadline={\hfil}\oddfootline={\hfil}%
+ \hbox to 0pt{}%
+ \chappager
+ \endgroup
+ \fi
+}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{%
+\global\let\contentsalignmacro = \chapoddpage
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
+ % Insert the first mark before the heading break (see notes for \domark).
+ \let\prevchapterdefs=\lastchapterdefs
+ \let\prevsectiondefs=\lastsectiondefs
+ \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+ \gdef\thissection{}}%
+ %
+ \def\temptype{#2}%
+ \ifx\temptype\Ynothingkeyword
+ \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\thischapter{\thischaptername}}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\thischapter{}}%
+ \else\ifx\temptype\Yappendixkeyword
+ \toks0={#1}%
+ \xdef\lastchapterdefs{%
+ \gdef\noexpand\thischaptername{\the\toks0}%
+ \gdef\noexpand\thischapternum{\appendixletter}%
+ % \noexpand\putwordAppendix avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
+ \noexpand\thischapternum:
+ \noexpand\thischaptername}%
+ }%
+ \else
+ \toks0={#1}%
+ \xdef\lastchapterdefs{%
+ \gdef\noexpand\thischaptername{\the\toks0}%
+ \gdef\noexpand\thischapternum{\the\chapno}%
+ % \noexpand\putwordChapter avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
+ \noexpand\thischapternum:
+ \noexpand\thischaptername}%
+ }%
+ \fi\fi\fi
+ %
+ % Output the mark. Pass it through \safewhatsit, to take care of
+ % the preceding space.
+ \safewhatsit\domark
+ %
+ % Insert the chapter heading break.
+ \pchapsepmacro
+ %
+ % Now the second mark, after the heading break. No break points
+ % between here and the heading.
+ \let\prevchapterdefs=\lastchapterdefs
+ \let\prevsectiondefs=\lastsectiondefs
+ \domark
+ %
+ {%
+ \chapfonts \rmisbold
+ %
+ % Have to define \lastsection before calling \donoderef, because the
+ % xref code eventually uses it. On the other hand, it has to be called
+ % after \pchapsepmacro, or the headline will change too soon.
+ \gdef\lastsection{#1}%
+ %
+ % Only insert the separating space if we have a chapter/appendix
+ % number, and don't print the unnumbered ``number''.
+ \ifx\temptype\Ynothingkeyword
+ \setbox0 = \hbox{}%
+ \def\toctype{unnchap}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+ \def\toctype{omit}%
+ \else\ifx\temptype\Yappendixkeyword
+ \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+ \def\toctype{app}%
+ \else
+ \setbox0 = \hbox{#3\enspace}%
+ \def\toctype{numchap}%
+ \fi\fi\fi
+ %
+ % Write the toc entry for this chapter. Must come before the
+ % \donoderef, because we include the current node name in the toc
+ % entry, and \donoderef resets it to empty.
+ \writetocentry{\toctype}{#1}{#3}%
+ %
+ % For pdftex, we have to write out the node definition (aka, make
+ % the pdfdest) after any page break, but before the actual text has
+ % been typeset. If the destination for the pdf outline is after the
+ % text, then jumping from the outline may wind up with the text not
+ % being visible, for instance under high magnification.
+ \donoderef{#2}%
+ %
+ % Typeset the actual heading.
+ \nobreak % Avoid page breaks at the interline glue.
+ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
+ \hangindent=\wd0 \centerparametersmaybe
+ \unhbox0 #1\par}%
+ }%
+ \nobreak\bigskip % no page break after a chapter title
+ \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+ \advance\rightskip by 3\rightskip
+ \leftskip = \rightskip
+ \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff. We'll see. --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\ptexraggedright
+ \rmisbold #1\hfill}}\bigskip \par\nobreak
+}
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+\def\centerchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt
+ \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
+}
+\def\CHAPFopen{%
+ \global\let\chapmacro=\chfopen
+ \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles. These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\seckeyword{sec}
+%
+\def\sectionheading#1#2#3#4{%
+ {%
+ % Switch to the right set of fonts.
+ \csname #2fonts\endcsname \rmisbold
+ %
+ \def\sectionlevel{#2}%
+ \def\temptype{#3}%
+ %
+ % Insert first mark before the heading break (see notes for \domark).
+ \let\prevsectiondefs=\lastsectiondefs
+ \ifx\temptype\Ynothingkeyword
+ \ifx\sectionlevel\seckeyword
+ \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+ \gdef\thissection{\thissectionname}}%
+ \fi
+ \else\ifx\temptype\Yomitfromtockeyword
+ % Don't redefine \thissection.
+ \else\ifx\temptype\Yappendixkeyword
+ \ifx\sectionlevel\seckeyword
+ \toks0={#1}%
+ \xdef\lastsectiondefs{%
+ \gdef\noexpand\thissectionname{\the\toks0}%
+ \gdef\noexpand\thissectionnum{#4}%
+ % \noexpand\putwordSection avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thissection{\noexpand\putwordSection{}
+ \noexpand\thissectionnum:
+ \noexpand\thissectionname}%
+ }%
+ \fi
+ \else
+ \ifx\sectionlevel\seckeyword
+ \toks0={#1}%
+ \xdef\lastsectiondefs{%
+ \gdef\noexpand\thissectionname{\the\toks0}%
+ \gdef\noexpand\thissectionnum{#4}%
+ % \noexpand\putwordSection avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thissection{\noexpand\putwordSection{}
+ \noexpand\thissectionnum:
+ \noexpand\thissectionname}%
+ }%
+ \fi
+ \fi\fi\fi
+ %
+ % Go into vertical mode. Usually we'll already be there, but we
+ % don't want the following whatsit to end up in a preceding paragraph
+ % if the document didn't happen to have a blank line.
+ \par
+ %
+ % Output the mark. Pass it through \safewhatsit, to take care of
+ % the preceding space.
+ \safewhatsit\domark
+ %
+ % Insert space above the heading.
+ \csname #2headingbreak\endcsname
+ %
+ % Now the second mark, after the heading break. No break points
+ % between here and the heading.
+ \let\prevsectiondefs=\lastsectiondefs
+ \domark
+ %
+ % Only insert the space after the number if we have a section number.
+ \ifx\temptype\Ynothingkeyword
+ \setbox0 = \hbox{}%
+ \def\toctype{unn}%
+ \gdef\lastsection{#1}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ % for @headings -- no section number, don't include in toc,
+ % and don't redefine \lastsection.
+ \setbox0 = \hbox{}%
+ \def\toctype{omit}%
+ \let\sectionlevel=\empty
+ \else\ifx\temptype\Yappendixkeyword
+ \setbox0 = \hbox{#4\enspace}%
+ \def\toctype{app}%
+ \gdef\lastsection{#1}%
+ \else
+ \setbox0 = \hbox{#4\enspace}%
+ \def\toctype{num}%
+ \gdef\lastsection{#1}%
+ \fi\fi\fi
+ %
+ % Write the toc entry (before \donoderef). See comments in \chapmacro.
+ \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+ %
+ % Write the node reference (= pdf destination for pdftex).
+ % Again, see comments in \chapmacro.
+ \donoderef{#3}%
+ %
+ % Interline glue will be inserted when the vbox is completed.
+ % That glue will be a valid breakpoint for the page, since it'll be
+ % preceded by a whatsit (usually from the \donoderef, or from the
+ % \writetocentry if there was no node). We don't want to allow that
+ % break, since then the whatsits could end up on page n while the
+ % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000.
+ \nobreak
+ %
+ % Output the actual section heading.
+ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
+ \hangindent=\wd0 % zero if no section number
+ \unhbox0 #1}%
+ }%
+ % Add extra space after the heading -- half of whatever came above it.
+ % Don't allow stretch, though.
+ \kern .5 \csname #2headingskip\endcsname
+ %
+ % Do not let the kern be a potential breakpoint, as it would be if it
+ % was followed by glue.
+ \nobreak
+ %
+ % We'll almost certainly start a paragraph next, so don't let that
+ % glue accumulate. (Not a breakpoint because it's preceded by a
+ % discardable item.)
+ \vskip-\parskip
+ %
+ % This is purely so the last item on the list is a known \penalty >
+ % 10000. This is so \startdefun can avoid allowing breakpoints after
+ % section headings. Otherwise, it would insert a valid breakpoint between:
+ %
+ % @section sec-whatever
+ % @deffn def-whatever
+ \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this. The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything. This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+ \edef\writetoctype{#1}%
+ \ifx\writetoctype\omitkeyword \else
+ \iftocfileopened\else
+ \immediate\openout\tocfile = \jobname.toc
+ \global\tocfileopenedtrue
+ \fi
+ %
+ \iflinks
+ {\atdummies
+ \edef\temp{%
+ \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+ \temp
+ }%
+ \fi
+ \fi
+ %
+ % Tell \shipout to create a pdf destination on each page, if we're
+ % writing pdf. These are used in the table of contents. We can't
+ % just write one on every page because the title pages are numbered
+ % 1 and 2 (the page numbers aren't printed), and so are the first
+ % two pages of the document. Thus, we'd have two destinations named
+ % `1', and two named `2'.
+ \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care. This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+%
+\def\activecatcodes{%
+ \catcode`\"=\active
+ \catcode`\$=\active
+ \catcode`\<=\active
+ \catcode`\>=\active
+ \catcode`\\=\active
+ \catcode`\^=\active
+ \catcode`\_=\active
+ \catcode`\|=\active
+ \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+ \setupdatafile
+ \activecatcodes
+ \input \tocreadfilename
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\def\startcontents#1{%
+ % If @setchapternewpage on, and @headings double, the contents should
+ % start on an odd page, unlike chapters. Thus, we maintain
+ % \contentsalignmacro in parallel with \pagealignmacro.
+ % From: Torbjorn Granlund <tege@matematik.su.se>
+ \contentsalignmacro
+ \immediate\closeout\tocfile
+ %
+ % Don't need to put `Contents' or `Short Contents' in the headline.
+ % It is abundantly clear what they are.
+ \chapmacro{#1}{Yomitfromtoc}{}%
+ %
+ \savepageno = \pageno
+ \begingroup % Set up to handle contents files properly.
+ \raggedbottom % Worry more about breakpoints than the bottom.
+ \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+ %
+ % Roman numerals for page numbers.
+ \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+% redefined for the two-volume lispref. We always output on
+% \jobname.toc even if this is redefined.
+%
+\def\tocreadfilename{\jobname.toc}
+
+% Normal (long) toc.
+%
+\def\contents{%
+ \startcontents{\putwordTOC}%
+ \openin 1 \tocreadfilename\space
+ \ifeof 1 \else
+ \readtocfile
+ \fi
+ \vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
+ \ifeof 1 \else
+ \pdfmakeoutlines
+ \fi
+ \closein 1
+ \endgroup
+ \lastnegativepageno = \pageno
+ \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+ \startcontents{\putwordShortTOC}%
+ %
+ \let\numchapentry = \shortchapentry
+ \let\appentry = \shortchapentry
+ \let\unnchapentry = \shortunnchapentry
+ % We want a true roman here for the page numbers.
+ \secfonts
+ \let\rm=\shortcontrm \let\bf=\shortcontbf
+ \let\sl=\shortcontsl \let\tt=\shortconttt
+ \rm
+ \hyphenpenalty = 10000
+ \advance\baselineskip by 1pt % Open it up a little.
+ \def\numsecentry##1##2##3##4{}
+ \let\appsecentry = \numsecentry
+ \let\unnsecentry = \numsecentry
+ \let\numsubsecentry = \numsecentry
+ \let\appsubsecentry = \numsecentry
+ \let\unnsubsecentry = \numsecentry
+ \let\numsubsubsecentry = \numsecentry
+ \let\appsubsubsecentry = \numsecentry
+ \let\unnsubsubsecentry = \numsecentry
+ \openin 1 \tocreadfilename\space
+ \ifeof 1 \else
+ \readtocfile
+ \fi
+ \closein 1
+ \vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
+ \endgroup
+ \lastnegativepageno = \pageno
+ \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+ % This space should be enough, since a single number is .5em, and the
+ % widest letter (M) is 1em, at least in the Computer Modern fonts.
+ % But use \hss just in case.
+ % (This space doesn't include the extra space that gets added after
+ % the label; that gets put in by \shortchapentry above.)
+ %
+ % We'd like to right-justify chapter numbers, but that looks strange
+ % with appendix letters. And right-justifying numbers and
+ % left-justifying letters looks strange when there is less than 10
+ % chapters. Have to read the whole toc once to know how many chapters
+ % there are before deciding ...
+ \hbox to 1em{#1\hss}%
+}
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+%
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+ \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+ % We use M since it's probably the widest letter.
+ \setbox0 = \hbox{\putwordAppendix{} M}%
+ \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we want it to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+ \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
+ \begingroup
+ \chapentryfonts
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+ \endgroup
+ \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+ \secentryfonts \leftskip=\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+ \subsecentryfonts \leftskip=2\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+ \subsubsecentryfonts \leftskip=3\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% @tex ... @end tex escapes into raw Tex temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain tex @ character.
+
+\envdef\tex{%
+ \setupmarkupstyle{tex}%
+ \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+ \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+ \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+ \catcode `\%=14
+ \catcode `\+=\other
+ \catcode `\"=\other
+ \catcode `\|=\other
+ \catcode `\<=\other
+ \catcode `\>=\other
+ \catcode`\`=\other
+ \catcode`\'=\other
+ \escapechar=`\\
+ %
+ \let\b=\ptexb
+ \let\bullet=\ptexbullet
+ \let\c=\ptexc
+ \let\,=\ptexcomma
+ \let\.=\ptexdot
+ \let\dots=\ptexdots
+ \let\equiv=\ptexequiv
+ \let\!=\ptexexclam
+ \let\i=\ptexi
+ \let\indent=\ptexindent
+ \let\noindent=\ptexnoindent
+ \let\{=\ptexlbrace
+ \let\+=\tabalign
+ \let\}=\ptexrbrace
+ \let\/=\ptexslash
+ \let\*=\ptexstar
+ \let\t=\ptext
+ \expandafter \let\csname top\endcsname=\ptextop % outer
+ \let\frenchspacing=\plainfrenchspacing
+ %
+ \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+ \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+ \def\@{@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments. \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical. We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip.
+%
+\def\aboveenvbreak{{%
+ % =10000 instead of <10000 because of a special case in \itemzzz and
+ % \sectionheading, q.v.
+ \ifnum \lastpenalty=10000 \else
+ \advance\envskipamount by \parskip
+ \endgraf
+ \ifdim\lastskip<\envskipamount
+ \removelastskip
+ % it's not a good place to break if the last penalty was \nobreak
+ % or better ...
+ \ifnum\lastpenalty<10000 \penalty-50 \fi
+ \vskip\envskipamount
+ \fi
+ \fi
+}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\let\nonarrowing=\relax
+
+% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+% environment contents.
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+ \ctl\leaders\hrule height\circthick\hfil\ctr
+ \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+ \cbl\leaders\hrule height\circthick\hfil\cbr
+ \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\envdef\cartouche{%
+ \ifhmode\par\fi % can't be in the midst of a paragraph.
+ \startsavinginserts
+ \lskip=\leftskip \rskip=\rightskip
+ \leftskip=0pt\rightskip=0pt % we want these *outside*.
+ \cartinner=\hsize \advance\cartinner by-\lskip
+ \advance\cartinner by-\rskip
+ \cartouter=\hsize
+ \advance\cartouter by 18.4pt % allow for 3pt kerns on either
+ % side, and for 6pt waste from
+ % each corner char, and rule thickness
+ \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+ % Flag to tell @lisp, etc., not to narrow margin.
+ \let\nonarrowing = t%
+ \vbox\bgroup
+ \baselineskip=0pt\parskip=0pt\lineskip=0pt
+ \carttop
+ \hbox\bgroup
+ \hskip\lskip
+ \vrule\kern3pt
+ \vbox\bgroup
+ \kern3pt
+ \hsize=\cartinner
+ \baselineskip=\normbskip
+ \lineskip=\normlskip
+ \parskip=\normpskip
+ \vskip -\parskip
+ \comment % For explanation, see the end of \def\group.
+}
+\def\Ecartouche{%
+ \ifhmode\par\fi
+ \kern3pt
+ \egroup
+ \kern3pt\vrule
+ \hskip\rskip
+ \egroup
+ \cartbot
+ \egroup
+ \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\newdimen\nonfillparindent
+\def\nonfillstart{%
+ \aboveenvbreak
+ \hfuzz = 12pt % Don't be fussy
+ \sepspaces % Make spaces be word-separators rather than space tokens.
+ \let\par = \lisppar % don't ignore blank lines
+ \obeylines % each line of input is a line of output
+ \parskip = 0pt
+ % Turn off paragraph indentation but redefine \indent to emulate
+ % the normal \indent.
+ \nonfillparindent=\parindent
+ \parindent = 0pt
+ \let\indent\nonfillindent
+ %
+ \emergencystretch = 0pt % don't try to avoid overfull boxes
+ \ifx\nonarrowing\relax
+ \advance \leftskip by \lispnarrowing
+ \exdentamount=\lispnarrowing
+ \else
+ \let\nonarrowing = \relax
+ \fi
+ \let\exdent=\nofillexdent
+}
+
+\begingroup
+\obeyspaces
+% We want to swallow spaces (but not other tokens) after the fake
+% @indent in our nonfill-environments, where spaces are normally
+% active and set to @tie, resulting in them not being ignored after
+% @indent.
+\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
+\gdef\nonfillindentcheck{%
+\ifx\temp %
+\expandafter\nonfillindentgobble%
+\else%
+\leavevmode\nonfillindentbox%
+\fi%
+}%
+\endgroup
+\def\nonfillindentgobble#1{\nonfillindent}
+\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+% @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+ \ifx\SETdispenvsize\smallword
+ % end paragraph for sake of leading, in case document has no blank
+ % line. This is redundant with what happens in \aboveenvbreak, but
+ % we need to do it before changing the fonts, and it's inconvenient
+ % to change the fonts afterward.
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
+ \smallexamplefonts \rm
+ \fi
+}
+\def\setsmalldispenv{%
+ \ifx\SETdispenvsize\nosmallword
+ \else
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
+ \smallexamplefonts \rm
+ \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it by one command:
+\def\makedispenv #1#2{
+ \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
+ \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+ \expandafter\let\csname E#1\endcsname \afterenvbreak
+ \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two synonyms:
+\def\maketwodispenvs #1#2#3{
+ \makedispenv{#1}{#3}
+ \makedispenv{#2}{#3}
+}
+
+% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel@xerox.
+%
+\maketwodispenvs {lisp}{example}{%
+ \nonfillstart
+ \tt\setupmarkupstyle{example}%
+ \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+ \gobble % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenv {display}{%
+ \nonfillstart
+ \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenv{format}{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \advance\leftskip by 0pt plus 1fill
+ \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @raggedright does more-or-less normal line breaking but no right
+% justification. From plain.tex.
+\envdef\raggedright{%
+ \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
+}
+\let\Eraggedright\par
+
+\envdef\raggedleft{%
+ \parindent=0pt \leftskip0pt plus2em
+ \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+ \hbadness=10000 % Last line will usually be underfull, so turn off
+ % badness reporting.
+}
+\let\Eraggedleft\par
+
+\envdef\raggedcenter{%
+ \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
+ \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+ \hbadness=10000 % Last line will usually be underfull, so turn off
+ % badness reporting.
+}
+\let\Eraggedcenter\par
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins. We keep \parskip nonzero in general, since
+% we're doing normal filling. So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\def\quotationstart{%
+ {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+ \parindent=0pt
+ %
+ % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+ \ifx\nonarrowing\relax
+ \advance\leftskip by \lispnarrowing
+ \advance\rightskip by \lispnarrowing
+ \exdentamount = \lispnarrowing
+ \else
+ \let\nonarrowing = \relax
+ \fi
+ \parsearg\quotationlabel
+}
+
+\envdef\quotation{%
+ \setnormaldispenv
+ \quotationstart
+}
+
+\envdef\smallquotation{%
+ \setsmalldispenv
+ \quotationstart
+}
+\let\Esmallquotation = \Equotation
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+ \par
+ \ifx\quotationauthor\undefined\else
+ % indent a bit.
+ \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+ \fi
+ {\parskip=0pt \afterenvbreak}%
+}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+ \def\temp{#1}%
+ \ifx\temp\empty \else
+ {\bf #1: }%
+ \fi
+}
+
+
+% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org
+%
+% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too. Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+ \do\ \do\\\do\{\do\}\do\$\do\&%
+ \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+ \do\<\do\>\do\|\do\@\do+\do\"%
+ % Don't do the quotes -- if we do, @set txicodequoteundirected and
+ % @set txicodequotebacktick will not have effect on @verb and
+ % @verbatim, and ?` and !` ligatures won't get disabled.
+ %\do\`\do\'%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+ \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+ \catcode`\^^I=\active
+ \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+ \tt % easiest (and conventionally used) font for verbatim
+ \def\par{\leavevmode\endgraf}%
+ \setupmarkupstyle{verb}%
+ \tabeightspaces
+ % Respect line breaks,
+ % print special symbols as themselves, and
+ % make each space count
+ % must do in this order:
+ \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+\def\starttabbox{\setbox0=\hbox\bgroup}
+%
+\begingroup
+ \catcode`\^^I=\active
+ \gdef\tabexpand{%
+ \catcode`\^^I=\active
+ \def^^I{\leavevmode\egroup
+ \dimen0=\wd0 % the width so far, or since the previous tab
+ \divide\dimen0 by\tabw
+ \multiply\dimen0 by\tabw % compute previous multiple of \tabw
+ \advance\dimen0 by\tabw % advance to next multiple of \tabw
+ \wd0=\dimen0 \box0 \starttabbox
+ }%
+ }
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ % Easiest (and conventionally used) font for verbatim
+ \tt
+ \def\par{\leavevmode\egroup\box0\endgraf}%
+ \tabexpand
+ \setupmarkupstyle{verbatim}%
+ % Respect line breaks,
+ % print special symbols as themselves, and
+ % make each space count
+ % must do in this order:
+ \obeylines \uncatcodespecials \sepspaces
+ \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters. Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+% \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+ \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+ \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+% \def\doverbatim#1@end verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+ \catcode`\ =\active
+ \obeylines %
+ % ignore everything up to the first ^^M, that's the newline at the end
+ % of the @verbatim input line itself. Otherwise we get an extra blank
+ % line in the output.
+ \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
+ % We really want {...\end verbatim} in the body of the macro, but
+ % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+ \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+ {%
+ \makevalueexpandable
+ \setupverbatim
+ \indexnofonts % Allow `@@' and other weird things in file names.
+ \input #1
+ \afterenvbreak
+ }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+ \begingroup
+ \parindent = 0pt % paragraph indentation looks wrong on title page
+ \scanexp\copyingtext
+ \endgroup
+}
+
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
+
+% Start the processing of @deffn:
+\def\startdefun{%
+ \ifnum\lastpenalty<10000
+ \medbreak
+ \defunpenalty=10003 % Will keep this @deffn together with the
+ % following @def command, see below.
+ \else
+ % If there are two @def commands in a row, we'll have a \nobreak,
+ % which is there to keep the function description together with its
+ % header. But if there's nothing but headers, we need to allow a
+ % break somewhere. Check specifically for penalty 10002, inserted
+ % by \printdefunline, instead of 10000, since the sectioning
+ % commands also insert a nobreak penalty, and we don't want to allow
+ % a break between a section heading and a defun.
+ %
+ % As a minor refinement, we avoid "club" headers by signalling
+ % with penalty of 10003 after the very first @deffn in the
+ % sequence (see above), and penalty of 10002 after any following
+ % @def command.
+ \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
+ %
+ % Similarly, after a section heading, do not allow a break.
+ % But do insert the glue.
+ \medskip % preceded by discardable penalty, so not a breakpoint
+ \fi
+ %
+ \parindent=0in
+ \advance\leftskip by \defbodyindent
+ \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+ % First, check whether we are in the right environment:
+ \checkenv#1%
+ %
+ % As above, allow line break if we have multiple x headers in a row.
+ % It's not a great place, though.
+ \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
+ %
+ % And now, it's time to reuse the body of the original defun:
+ \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+ \begingroup
+ % call \deffnheader:
+ #1#2 \endheader
+ % common ending:
+ \interlinepenalty = 10000
+ \advance\rightskip by 0pt plus 1fil
+ \endgraf
+ \nobreak\vskip -\parskip
+ \penalty\defunpenalty % signal to \startdefun and \dodefunx
+ % Some of the @defun-type tags do not enable magic parentheses,
+ % rendering the following check redundant. But we don't optimize.
+ \checkparencounts
+ \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remaining is to define \deffnheader.
+%
+\def\makedefun#1{%
+ \expandafter\let\csname E#1\endcsname = \Edefun
+ \edef\temp{\noexpand\domakedefun
+ \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+ \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+ \envdef#1{%
+ \startdefun
+ \parseargusing\activeparens{\printdefunline#3}%
+ }%
+ \def#2{\dodefunx#1}%
+ \def#3%
+}
+
+%%% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+ % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+ \dosubind{fn}{\code{#3}}{#1}%
+ \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+%%% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+ \dosubind{fn}{\code{#4}}{#1}%
+ \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+ \dosubind{vr}{\code{#4}}{#1}%
+ \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+%%% Type:
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+ \doind{tp}{\code{#2}}%
+ \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+ % Get the values of \leftskip and \rightskip as they were outside the @def...
+ \advance\leftskip by -\defbodyindent
+ %
+ % How we'll format the type name. Putting it in brackets helps
+ % distinguish it from the body text that may end up on the next line
+ % just below it.
+ \def\temp{#1}%
+ \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+ %
+ % Figure out line sizes for the paragraph shape.
+ % The first line needs space for \box0; but if \rightskip is nonzero,
+ % we need only space for the part of \box0 which exceeds it:
+ \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip
+ % The continuations:
+ \dimen2=\hsize \advance\dimen2 by -\defargsindent
+ % (plain.tex says that \dimen1 should be used only as global.)
+ \parshape 2 0in \dimen0 \defargsindent \dimen2
+ %
+ % Put the type name to the right margin.
+ \noindent
+ \hbox to 0pt{%
+ \hfil\box0 \kern-\hsize
+ % \hsize has to be shortened this way:
+ \kern\leftskip
+ % Intentionally do not respect \rightskip, since we need the space.
+ }%
+ %
+ % Allow all lines to be underfull without complaint:
+ \tolerance=10000 \hbadness=10000
+ \exdentamount=\defbodyindent
+ {%
+ % defun fonts. We use typewriter by default (used to be bold) because:
+ % . we're printing identifiers, they should be in tt in principle.
+ % . in languages with many accents, such as Czech or French, it's
+ % common to leave accents off identifiers. The result looks ok in
+ % tt, but exceedingly strange in rm.
+ % . we don't want -- and --- to be treated as ligatures.
+ % . this still does not fix the ?` and !` ligatures, but so far no
+ % one has made identifiers using them :).
+ \df \tt
+ \def\temp{#2}% return value type
+ \ifx\temp\empty\else \tclose{\temp} \fi
+ #3% output function name
+ }%
+ {\rm\enskip}% hskip 0.5 em of \tenrm
+ %
+ \boldbrax
+ % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name. This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable. Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+ % use sl by default (not ttsl),
+ % tt for the names.
+ \df \sl \hyphenchar\font=0
+ %
+ % On the other hand, if an argument has two dashes (for instance), we
+ % want a way to get ttsl. Let's try @var for that.
+ \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
+ #1%
+ \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\def\activeparens{%
+ \catcode`\(=\active \catcode`\)=\active
+ \catcode`\[=\active \catcode`\]=\active
+ \catcode`\&=\active
+}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+% Be sure that we always have a definition for `(', etc. For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+ \activeparens
+ \global\let(=\lparen \global\let)=\rparen
+ \global\let[=\lbrack \global\let]=\rbrack
+ \global\let& = \&
+
+ \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+ \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+ \ifampseen
+ % At the first level, print parens in roman,
+ % otherwise use the default font.
+ \ifnum \parencount=1 \rm \fi
+ \else
+ % The \sf parens (in \boldbrax) actually are a little bolder than
+ % the contained text. This is especially needed for [ and ] .
+ \sf
+ \fi
+}
+\def\infirstlevel#1{%
+ \ifampseen
+ \ifnum\parencount=1
+ #1%
+ \fi
+ \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+ \global\advance\parencount by 1
+ {\parenfont(}%
+ \infirstlevel \bfafterword
+}
+\def\clnr{%
+ {\parenfont)}%
+ \infirstlevel \sl
+ \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+ \global\advance\brackcount by 1
+ {\bf[}%
+}
+\def\rbrb{%
+ {\bf]}%
+ \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+ \ifnum\parencount=0 \else \badparencount \fi
+ \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
+\def\badparencount{%
+ \message{Warning: unbalanced parentheses in @def...}%
+ \global\parencount=0
+}
+\def\badbrackcount{%
+ \message{Warning: unbalanced square brackets in @def...}%
+ \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\undefined
+ \newwrite\macscribble
+ \def\scantokens#1{%
+ \toks0={#1}%
+ \immediate\openout\macscribble=\jobname.tmp
+ \immediate\write\macscribble{\the\toks0}%
+ \immediate\closeout\macscribble
+ \input \jobname.tmp
+ }
+\fi
+
+\def\scanmacro#1{%
+ \begingroup
+ \newlinechar`\^^M
+ \let\xeatspaces\eatspaces
+ % Undo catcode changes of \startcontents and \doprintindex
+ % When called from @insertcopying or (short)caption, we need active
+ % backslash to get it printed correctly. Previously, we had
+ % \catcode`\\=\other instead. We'll see whether a problem appears
+ % with macro expansion. --kasal, 19aug04
+ \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+ % ... and \example
+ \spaceisspace
+ %
+ % Append \endinput to make sure that TeX does not see the ending newline.
+ % I've verified that it is necessary both for e-TeX and for ordinary TeX
+ % --kasal, 29nov03
+ \scantokens{#1\endinput}%
+ \endgroup
+}
+
+\def\scanexp#1{%
+ \edef\temp{\noexpand\scanmacro{#1}}%
+ \temp
+}
+
+\newcount\paramno % Count of parameters
+\newtoks\macname % Macro name
+\newif\ifrecursive % Is it recursive?
+
+% List of all defined macros in the form
+% \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+ \toks0 = \expandafter{\macrolist\definedummyword#1}%
+ \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+% \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+%
+\def\cslet#1#2{%
+ \expandafter\let
+ \csname#1\expandafter\endcsname
+ \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
+{\catcode`\@=11
+\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } #2@{#1}
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \.
+
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion. Must do this non-globally, to
+% confine the change to the current group.
+
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+
+\def\scanctxt{%
+ \catcode`\"=\other
+ \catcode`\+=\other
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\@=\other
+ \catcode`\^=\other
+ \catcode`\_=\other
+ \catcode`\|=\other
+ \catcode`\~=\other
+ \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
+}
+
+\def\scanargctxt{%
+ \scanctxt
+ \catcode`\\=\other
+ \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+ \scanctxt
+ \catcode`\{=\other
+ \catcode`\}=\other
+ \catcode`\^^M=\other
+ \usembodybackslash
+}
+
+\def\macroargctxt{%
+ \scanctxt
+ \catcode`\\=\other
+}
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+
+{\catcode`@=0 @catcode`@\=@active
+ @gdef@usembodybackslash{@let\=@mbodybackslash}
+ @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+ \getargs{#1}% now \macname is the macname and \argl the arglist
+ \ifx\argl\empty % no arguments
+ \paramno=0%
+ \else
+ \expandafter\parsemargdef \argl;%
+ \fi
+ \if1\csname ismacro.\the\macname\endcsname
+ \message{Warning: redefining \the\macname}%
+ \else
+ \expandafter\ifx\csname \the\macname\endcsname \relax
+ \else \errmessage{Macro name \the\macname\space already defined}\fi
+ \global\cslet{macsave.\the\macname}{\the\macname}%
+ \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+ \addtomacrolist{\the\macname}%
+ \fi
+ \begingroup \macrobodyctxt
+ \ifrecursive \expandafter\parsermacbody
+ \else \expandafter\parsemacbody
+ \fi}
+
+\parseargdef\unmacro{%
+ \if1\csname ismacro.#1\endcsname
+ \global\cslet{#1}{macsave.#1}%
+ \global\expandafter\let \csname ismacro.#1\endcsname=0%
+ % Remove the macro name from \macrolist:
+ \begingroup
+ \expandafter\let\csname#1\endcsname \relax
+ \let\definedummyword\unmacrodo
+ \xdef\macrolist{\macrolist}%
+ \endgroup
+ \else
+ \errmessage{Macro #1 not defined}%
+ \fi
+}
+
+% Called by \do from \dounmacro on each macro. The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+ \ifx #1\relax
+ % remove this
+ \else
+ \noexpand\definedummyword \noexpand#1%
+ \fi
+}
+
+% This makes use of the obscure feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+
+% Parse the optional {params} list. Set up \paramno and \paramlist
+% so \defmacro knows what to do. Define \macarg.blah for each blah
+% in the params list, to be ##N where N is the position in that list.
+% That gets used by \mbodybackslash (above).
+
+% We need to get `macro parameter char #' into several definitions.
+% The technique used is stolen from LaTeX: let \hash be something
+% unexpandable, insert that wherever you need a #, and then redefine
+% it to # just before using the token list produced.
+%
+% The same technique is used to protect \eatspaces till just before
+% the macro is used.
+
+\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
+ \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdefxxx#1,{%
+ \if#1;\let\next=\relax
+ \else \let\next=\parsemargdefxxx
+ \advance\paramno by 1%
+ \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+ {\xeatspaces{\hash\the\paramno}}%
+ \edef\paramlist{\paramlist\hash\the\paramno,}%
+ \fi\next}
+
+% These two commands read recursive and nonrecursive macro bodies.
+% (They're different since rec and nonrec macros end differently.)
+
+\long\def\parsemacbody#1@end macro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\long\def\parsermacbody#1@end rmacro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+
+% This defines the macro itself. There are six cases: recursive and
+% nonrecursive macros of zero, one, and many arguments.
+% Much magic with \expandafter here.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in; @include reads the file inside a group.
+\def\defmacro{%
+ \let\hash=##% convert placeholders to macro parameter chars
+ \ifrecursive
+ \ifcase\paramno
+ % 0
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\scanmacro{\temp}}%
+ \or % 1
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+ \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+ \egroup\noexpand\scanmacro{\temp}}%
+ \else % many
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \fi
+ \else
+ \ifcase\paramno
+ % 0
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \or % 1
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+ \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+ \egroup
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \else % many
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \expandafter\noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{%
+ \egroup
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \fi
+ \fi}
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {. If so it reads up to the closing }, if not, it reads the whole
+% line. Whatever was read is then fed to the next control sequence
+% as an argument (by \parsebrace or \parsearg)
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+ \ifx\nchar\bgroup\else
+ \expandafter\parsearg
+ \fi \macnamexxx}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign. Just make them active and then expand them all to nothing.
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+ {%
+ \expandafter\let\obeyedspace=\empty
+ \addtomacrolist{#1}%
+ \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+ }%
+ \next
+}
+
+
+\message{cross references,}
+
+\newwrite\auxfile
+\newif\ifhavexrefs % True if xref values are known.
+\newif\ifwarnedxrefs % True if we warned once that they aren't known.
+
+% @inforef is relatively simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+ node \samp{\ignorespaces#1{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references. The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross, , , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node. #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+ \ifx\lastnode\empty\else
+ \setref{\lastnode}{#1}%
+ \global\let\lastnode=\empty
+ \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \lastsection,
+% or the anchor name.
+% 2) NAME-snt - section number and type, passed as the SNT arg, or
+% empty for anchors.
+% 3) NAME-pg - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat. In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+ \pdfmkdest{#1}%
+ \iflinks
+ {%
+ \atdummies % preserve commands, but don't expand them
+ \edef\writexrdef##1##2{%
+ \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+ ##1}{##2}}% these are parameters of \writexrdef
+ }%
+ \toks0 = \expandafter{\lastsection}%
+ \immediate \writexrdef{title}{\the\toks0 }%
+ \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+ \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+ }%
+ \fi
+}
+
+% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
+% the node name, #2 the name of the Info cross-reference, #3 the printed
+% node name, #4 the name of the Info file, #5 the name of the printed
+% manual. All but the node name can be omitted.
+%
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+ \unsepspaces
+ \def\printedmanual{\ignorespaces #5}%
+ \def\printedrefname{\ignorespaces #3}%
+ \setbox1=\hbox{\printedmanual\unskip}%
+ \setbox0=\hbox{\printedrefname\unskip}%
+ \ifdim \wd0 = 0pt
+ % No printed node name was explicitly given.
+ \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
+ % Use the node name inside the square brackets.
+ \def\printedrefname{\ignorespaces #1}%
+ \else
+ % Use the actual chapter/section title appear inside
+ % the square brackets. Use the real section title if we have it.
+ \ifdim \wd1 > 0pt
+ % It is in another manual, so we don't have it.
+ \def\printedrefname{\ignorespaces #1}%
+ \else
+ \ifhavexrefs
+ % We know the real title if we have the xref values.
+ \def\printedrefname{\refx{#1-title}{}}%
+ \else
+ % Otherwise just copy the Info node name.
+ \def\printedrefname{\ignorespaces #1}%
+ \fi%
+ \fi
+ \fi
+ \fi
+ %
+ % Make link in pdf output.
+ \ifpdf
+ {\indexnofonts
+ \turnoffactive
+ % This expands tokens, so do it after making catcode changes, so _
+ % etc. don't get their TeX definitions.
+ \getfilename{#4}%
+ %
+ % See comments at \activebackslashdouble.
+ {\activebackslashdouble \xdef\pdfxrefdest{#1}%
+ \backslashparens\pdfxrefdest}%
+ %
+ \leavevmode
+ \startlink attr{/Border [0 0 0]}%
+ \ifnum\filenamelength>0
+ goto file{\the\filename.pdf} name{\pdfxrefdest}%
+ \else
+ goto name{\pdfmkpgn{\pdfxrefdest}}%
+ \fi
+ }%
+ \setcolor{\linkcolor}%
+ \fi
+ %
+ % Float references are printed completely differently: "Figure 1.2"
+ % instead of "[somenode], p.3". We distinguish them by the
+ % LABEL-title being set to a magic string.
+ {%
+ % Have to otherify everything special to allow the \csname to
+ % include an _ in the xref name, etc.
+ \indexnofonts
+ \turnoffactive
+ \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+ \csname XR#1-title\endcsname
+ }%
+ \iffloat\Xthisreftitle
+ % If the user specified the print name (third arg) to the ref,
+ % print it instead of our usual "Figure 1.2".
+ \ifdim\wd0 = 0pt
+ \refx{#1-snt}{}%
+ \else
+ \printedrefname
+ \fi
+ %
+ % if the user also gave the printed manual name (fifth arg), append
+ % "in MANUALNAME".
+ \ifdim \wd1 > 0pt
+ \space \putwordin{} \cite{\printedmanual}%
+ \fi
+ \else
+ % node/anchor (non-float) references.
+ %
+ % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+ % insert empty discretionaries after hyphens, which means that it will
+ % not find a line break at a hyphen in a node names. Since some manuals
+ % are best written with fairly long node names, containing hyphens, this
+ % is a loss. Therefore, we give the text of the node name again, so it
+ % is as if TeX is seeing it for the first time.
+ \ifdim \wd1 > 0pt
+ \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
+ \else
+ % _ (for example) has to be the character _ for the purposes of the
+ % control sequence corresponding to the node, but it has to expand
+ % into the usual \leavevmode...\vrule stuff for purposes of
+ % printing. So we \turnoffactive for the \refx-snt, back on for the
+ % printing, back off for the \refx-pg.
+ {\turnoffactive
+ % Only output a following space if the -snt ref is nonempty; for
+ % @unnumbered and @anchor, it won't be.
+ \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+ \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+ }%
+ % output the `[mynode]' via a macro so it can be overridden.
+ \xrefprintnodename\printedrefname
+ %
+ % But we always want a comma and a space:
+ ,\space
+ %
+ % output the `page 3'.
+ \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output. It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents. Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+ \ifnum\secno=0
+ \putwordChapter@tie \the\chapno
+ \else \ifnum\subsecno=0
+ \putwordSection@tie \the\chapno.\the\secno
+ \else \ifnum\subsubsecno=0
+ \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
+ \else
+ \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+ \fi\fi\fi
+}
+\def\Yappendix{%
+ \ifnum\secno=0
+ \putwordAppendix@tie @char\the\appendixno{}%
+ \else \ifnum\subsecno=0
+ \putwordSection@tie @char\the\appendixno.\the\secno
+ \else \ifnum\subsubsecno=0
+ \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
+ \else
+ \putwordSection@tie
+ @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+ \fi\fi\fi
+}
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+%
+\def\refx#1#2{%
+ {%
+ \indexnofonts
+ \otherbackslash
+ \expandafter\global\expandafter\let\expandafter\thisrefX
+ \csname XR#1\endcsname
+ }%
+ \ifx\thisrefX\relax
+ % If not defined, say something at least.
+ \angleleft un\-de\-fined\angleright
+ \iflinks
+ \ifhavexrefs
+ \message{\linenumber Undefined cross reference `#1'.}%
+ \else
+ \ifwarnedxrefs\else
+ \global\warnedxrefstrue
+ \message{Cross reference values unknown; you must run TeX again.}%
+ \fi
+ \fi
+ \fi
+ \else
+ % It's defined, so just use it.
+ \thisrefX
+ \fi
+ #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file. Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions). But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+ {% The node name might contain 8-bit characters, which in our current
+ % implementation are changed to commands like @'e. Don't let these
+ % mess up the control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safexrefname{#1}%
+ }%
+ %
+ \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+ %
+ % Was that xref control sequence that we just defined for a float?
+ \expandafter\iffloat\csname XR\safexrefname\endcsname
+ % it was a float, and we have the (safe) float type in \iffloattype.
+ \expandafter\let\expandafter\floatlist
+ \csname floatlist\iffloattype\endcsname
+ %
+ % Is this the first time we've seen this float type?
+ \expandafter\ifx\floatlist\relax
+ \toks0 = {\do}% yes, so just \do
+ \else
+ % had it before, so preserve previous elements in list.
+ \toks0 = \expandafter{\floatlist\do}%
+ \fi
+ %
+ % Remember this xref in the control sequence \floatlistFLOATTYPE,
+ % for later use in \listoffloats.
+ \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+ {\safexrefname}}%
+ \fi
+}
+
+% Read the last existing aux file, if any. No error if none exists.
+%
+\def\tryauxfile{%
+ \openin 1 \jobname.aux
+ \ifeof 1 \else
+ \readdatafile{aux}%
+ \global\havexrefstrue
+ \fi
+ \closein 1
+}
+
+\def\setupdatafile{%
+ \catcode`\^^@=\other
+ \catcode`\^^A=\other
+ \catcode`\^^B=\other
+ \catcode`\^^C=\other
+ \catcode`\^^D=\other
+ \catcode`\^^E=\other
+ \catcode`\^^F=\other
+ \catcode`\^^G=\other
+ \catcode`\^^H=\other
+ \catcode`\^^K=\other
+ \catcode`\^^L=\other
+ \catcode`\^^N=\other
+ \catcode`\^^P=\other
+ \catcode`\^^Q=\other
+ \catcode`\^^R=\other
+ \catcode`\^^S=\other
+ \catcode`\^^T=\other
+ \catcode`\^^U=\other
+ \catcode`\^^V=\other
+ \catcode`\^^W=\other
+ \catcode`\^^X=\other
+ \catcode`\^^Z=\other
+ \catcode`\^^[=\other
+ \catcode`\^^\=\other
+ \catcode`\^^]=\other
+ \catcode`\^^^=\other
+ \catcode`\^^_=\other
+ % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
+ % in xref tags, i.e., node names. But since ^^e4 notation isn't
+ % supported in the main text, it doesn't seem desirable. Furthermore,
+ % that is not enough: for node names that actually contain a ^
+ % character, we would end up writing a line like this: 'xrdef {'hat
+ % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
+ % argument, and \hat is not an expandable control sequence. It could
+ % all be worked out, but why? Either we support ^^ or we don't.
+ %
+ % The other change necessary for this was to define \auxhat:
+ % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+ % and then to call \auxhat in \setq.
+ %
+ \catcode`\^=\other
+ %
+ % Special characters. Should be turned off anyway, but...
+ \catcode`\~=\other
+ \catcode`\[=\other
+ \catcode`\]=\other
+ \catcode`\"=\other
+ \catcode`\_=\other
+ \catcode`\|=\other
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\$=\other
+ \catcode`\#=\other
+ \catcode`\&=\other
+ \catcode`\%=\other
+ \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+ %
+ % This is to support \ in node names and titles, since the \
+ % characters end up in a \csname. It's easier than
+ % leaving it active and making its active definition an actual \
+ % character. What I don't understand is why it works in the *value*
+ % of the xrdef. Seems like it should be a catcode12 \, and that
+ % should not typeset properly. But it works, so I'm moving on for
+ % now. --karl, 15jan04.
+ \catcode`\\=\other
+ %
+ % Make the characters 128-255 be printing characters.
+ {%
+ \count1=128
+ \def\loop{%
+ \catcode\count1=\other
+ \advance\count1 by 1
+ \ifnum \count1<256 \loop \fi
+ }%
+ }%
+ %
+ % @ is our escape character in .aux files, and we need braces.
+ \catcode`\{=1
+ \catcode`\}=2
+ \catcode`\@=0
+}
+
+\def\readdatafile#1{%
+\begingroup
+ \setupdatafile
+ \input\jobname.#1
+\endgroup}
+
+
+\message{insertions,}
+% including footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for info output only.
+\let\footnotestyle=\comment
+
+{\catcode `\@=11
+%
+% Auto-number footnotes. Otherwise like plain.
+\gdef\footnote{%
+ \let\indent=\ptexindent
+ \let\noindent=\ptexnoindent
+ \global\advance\footnoteno by \@ne
+ \edef\thisfootno{$^{\the\footnoteno}$}%
+ %
+ % In case the footnote comes at the end of a sentence, preserve the
+ % extra spacing after we do the footnote number.
+ \let\@sf\empty
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
+ %
+ % Remove inadvertent blank space before typesetting the footnote number.
+ \unskip
+ \thisfootno\@sf
+ \dofootnote
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter. Our footnotes don't need to be so general.
+%
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
+% the footnote is read. --karl, 16nov96.
+%
+\gdef\dofootnote{%
+ \insert\footins\bgroup
+ % We want to typeset this text as a normal paragraph, even if the
+ % footnote reference occurs in (for example) a display environment.
+ % So reset some parameters.
+ \hsize=\pagewidth
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\ht\strutbox % top baseline for broken footnotes
+ \splitmaxdepth\dp\strutbox
+ \floatingpenalty\@MM
+ \leftskip\z@skip
+ \rightskip\z@skip
+ \spaceskip\z@skip
+ \xspaceskip\z@skip
+ \parindent\defaultparindent
+ %
+ \smallfonts \rm
+ %
+ % Because we use hanging indentation in footnotes, a @noindent appears
+ % to exdent this text, so make it be a no-op. makeinfo does not use
+ % hanging indentation so @noindent can still be needed within footnote
+ % text after an @example or the like (not that this is good style).
+ \let\noindent = \relax
+ %
+ % Hang the footnote text off the number. Use \everypar in case the
+ % footnote extends for more than one paragraph.
+ \everypar = {\hang}%
+ \textindent{\thisfootno}%
+ %
+ % Don't crash into the line above the footnote text. Since this
+ % expands into a box, it must come within the paragraph, lest it
+ % provide a place where TeX can split the footnote.
+ \footstrut
+ \futurelet\next\fo@t
+}
+}%end \catcode `\@=11
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished. Otherwise, the insertion
+% would be lost.
+% Similarly, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes. --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+ \ifx \insert\ptexinsert
+ \let\insert\saveinsert
+ \else
+ \let\checkinserts\relax
+ \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+ \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+ \afterassignment\next
+ % swallow the left brace
+ \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+ \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+ {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+ \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-)
+ \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+ \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+ \next
+}
+\def\newsaveinsX #1{%
+ \csname newbox\endcsname #1%
+ \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+ \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @image. We use the macros from epsf.tex to support this.
+% If epsf.tex is not installed and @image is used, we complain.
+%
+% Check for and read epsf.tex up front. If we read it only at @image
+% time, we might be inside a group, and then its definitions would get
+% undone and the next image would fail.
+\openin 1 = epsf.tex
+\ifeof 1 \else
+ % Do not bother showing banner with epsf.tex v2.7k (available in
+ % doc/epsf.tex and on ctan).
+ \def\epsfannounce{\toks0 = }%
+ \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\newif\ifwarnednoepsf
+\newhelp\noepsfhelp{epsf.tex must be installed for images to
+ work. It is also included in the Texinfo distribution, or you can get
+ it from ftp://tug.org/tex/epsf.tex.}
+%
+\def\image#1{%
+ \ifx\epsfbox\undefined
+ \ifwarnednoepsf \else
+ \errhelp = \noepsfhelp
+ \errmessage{epsf.tex not found, images will be ignored}%
+ \global\warnednoepsftrue
+ \fi
+ \else
+ \imagexxx #1,,,,,\finish
+ \fi
+}
+%
+% Arguments to @image:
+% #1 is (mandatory) image filename; we tack on .eps extension.
+% #2 is (optional) width, #3 is (optional) height.
+% #4 is (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing this stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+ \catcode`\^^M = 5 % in case we're inside an example
+ \normalturnoffactive % allow _ et al. in names
+ % If the image is by itself, center it.
+ \ifvmode
+ \imagevmodetrue
+ \nobreak\medskip
+ % Usually we'll have text after the image which will insert
+ % \parskip glue, so insert it here too to equalize the space
+ % above and below.
+ \nobreak\vskip\parskip
+ \nobreak
+ \fi
+ %
+ % Leave vertical mode so that indentation from an enclosing
+ % environment such as @quotation is respected. On the other hand, if
+ % it's at the top level, we don't want the normal paragraph indentation.
+ \noindent
+ %
+ % Output the image.
+ \ifpdf
+ \dopdfimage{#1}{#2}{#3}%
+ \else
+ % \epsfbox itself resets \epsf?size at each figure.
+ \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+ \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+ \epsfbox{#1.eps}%
+ \fi
+ %
+ \ifimagevmode \medskip \fi % space after the standalone image
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc. We don't actually implement floating yet, we always include the
+% float "here". But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc. Can't contain commas. If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label. Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored. It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+ \let\thiscaption=\empty
+ \let\thisshortcaption=\empty
+ %
+ % don't lose footnotes inside @float.
+ %
+ % BEWARE: when the floats start float, we have to issue warning whenever an
+ % insert appears inside a float which could possibly float. --kasal, 26may04
+ %
+ \startsavinginserts
+ %
+ % We can't be used inside a paragraph.
+ \par
+ %
+ \vtop\bgroup
+ \def\floattype{#1}%
+ \def\floatlabel{#2}%
+ \def\floatloc{#3}% we do nothing with this yet.
+ %
+ \ifx\floattype\empty
+ \let\safefloattype=\empty
+ \else
+ {%
+ % the floattype might have accents or other special characters,
+ % but we need to use it in a control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safefloattype{\floattype}%
+ }%
+ \fi
+ %
+ % If label is given but no type, we handle that as the empty type.
+ \ifx\floatlabel\empty \else
+ % We want each FLOATTYPE to be numbered separately (Figure 1,
+ % Table 1, Figure 2, ...). (And if no label, no number.)
+ %
+ \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+ \global\advance\floatno by 1
+ %
+ {%
+ % This magic value for \lastsection is output by \setref as the
+ % XREFLABEL-title value. \xrefX uses it to distinguish float
+ % labels (which have a completely different output format) from
+ % node and anchor labels. And \xrdef uses it to construct the
+ % lists of floats.
+ %
+ \edef\lastsection{\floatmagic=\safefloattype}%
+ \setref{\floatlabel}{Yfloat}%
+ }%
+ \fi
+ %
+ % start with \parskip glue, I guess.
+ \vskip\parskip
+ %
+ % Don't suppress indentation if a float happens to start a section.
+ \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption: Foo 1.1
+% @float Foo & @caption{Cap}: Foo: Cap
+% @float Foo & no caption: Foo
+% @float ,lbl & Caption{Cap}: 1.1: Cap
+% @float ,lbl & no caption: 1.1
+% @float & @caption{Cap}: Cap
+% @float & no caption:
+%
+\def\Efloat{%
+ \let\floatident = \empty
+ %
+ % In all cases, if we have a float type, it comes first.
+ \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+ %
+ % If we have an xref label, the number comes next.
+ \ifx\floatlabel\empty \else
+ \ifx\floattype\empty \else % if also had float type, need tie first.
+ \appendtomacro\floatident{\tie}%
+ \fi
+ % the number.
+ \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+ \fi
+ %
+ % Start the printed caption with what we've constructed in
+ % \floatident, but keep it separate; we need \floatident again.
+ \let\captionline = \floatident
+ %
+ \ifx\thiscaption\empty \else
+ \ifx\floatident\empty \else
+ \appendtomacro\captionline{: }% had ident, so need a colon between
+ \fi
+ %
+ % caption text.
+ \appendtomacro\captionline{\scanexp\thiscaption}%
+ \fi
+ %
+ % If we have anything to print, print it, with space before.
+ % Eventually this needs to become an \insert.
+ \ifx\captionline\empty \else
+ \vskip.5\parskip
+ \captionline
+ %
+ % Space below caption.
+ \vskip\parskip
+ \fi
+ %
+ % If have an xref label, write the list of floats info. Do this
+ % after the caption, to avoid chance of it being a breakpoint.
+ \ifx\floatlabel\empty \else
+ % Write the text that goes in the lof to the aux file as
+ % \floatlabel-lof. Besides \floatident, we include the short
+ % caption if specified, else the full caption if specified, else nothing.
+ {%
+ \atdummies
+ %
+ % since we read the caption text in the macro world, where ^^M
+ % is turned into a normal character, we have to scan it back, so
+ % we don't write the literal three characters "^^M" into the aux file.
+ \scanexp{%
+ \xdef\noexpand\gtemp{%
+ \ifx\thisshortcaption\empty
+ \thiscaption
+ \else
+ \thisshortcaption
+ \fi
+ }%
+ }%
+ \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+ \ifx\gtemp\empty \else : \gtemp \fi}}%
+ }%
+ \fi
+ \egroup % end of \vtop
+ %
+ % place the captured inserts
+ %
+ % BEWARE: when the floats start floating, we have to issue warning
+ % whenever an insert appears inside a float which could possibly
+ % float. --kasal, 26may04
+ %
+ \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+ \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use. Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+ \ifx#1\relax
+ % Haven't seen this figure type before.
+ \csname newcount\endcsname #1%
+ %
+ % Remember to reset this floatno at the next chap.
+ \expandafter\gdef\expandafter\resetallfloatnos
+ \expandafter{\resetallfloatnos #1=0 }%
+ \fi
+ \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value. We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref. That is, the magic
+% \lastsection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string. If so, #2 will be the
+% (safe) float type for this float. We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+ \def\temp{#1}%
+ \def\iffloattype{#2}%
+ \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+ \def\floattype{#1}% floattype
+ {%
+ % the floattype might have accents or other special characters,
+ % but we need to use it in a control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safefloattype{\floattype}%
+ }%
+ %
+ % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+ \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+ \ifhavexrefs
+ % if the user said @listoffloats foo but never @float foo.
+ \message{\linenumber No `\safefloattype' floats to list.}%
+ \fi
+ \else
+ \begingroup
+ \leftskip=\tocindent % indent these entries like a toc
+ \let\do=\listoffloatsdo
+ \csname floatlist\safefloattype\endcsname
+ \endgroup
+ \fi
+}
+
+% This is called on each entry in a list of floats. We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file. We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+ % Can't fully expand XR#1-lof because it can contain anything. Just
+ % pass the control sequence. On the other hand, XR#1-pg is just the
+ % page number, and we want to fully expand that so we can get a link
+ % in pdf output.
+ \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+ %
+ % use the same \entry macro we use to generate the TOC and index.
+ \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+ \writeentry
+}}
+
+
+\message{localization,}
+
+% For single-language documents, @documentlanguage is usually given very
+% early, just after @documentencoding. Single argument is the language
+% (de) or locale (de_DE) abbreviation.
+%
+{
+ \catcode`\_ = \active
+ \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+ \let_=\normalunderscore % normal _ character for filenames
+ \tex % read txi-??.tex file in plain TeX.
+ % Read the file by the name they passed if it exists.
+ \openin 1 txi-#1.tex
+ \ifeof 1
+ \documentlanguagetrywithoutunderscore{#1_\finish}%
+ \else
+ \globaldefs = 1 % everything in the txi-LL files needs to persist
+ \input txi-#1.tex
+ \fi
+ \closein 1
+ \endgroup % end raw TeX
+\endgroup}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+%
+\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
+ \openin 1 txi-#1.tex
+ \ifeof 1
+ \errhelp = \nolanghelp
+ \errmessage{Cannot read language file txi-#1.tex}%
+ \else
+ \globaldefs = 1 % everything in the txi-LL files needs to persist
+ \input txi-#1.tex
+ \fi
+ \closein 1
+}
+}% end of special _ catcode
+%
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty. Maybe you need to install it? Putting it in the current
+directory should work if nowhere else does.}
+
+% This macro is called from txi-??.tex files; the first argument is the
+% \language name to set (without the "\lang@" prefix), the second and
+% third args are \{left,right}hyphenmin.
+%
+% The language names to pass are determined when the format is built.
+% See the etex.log file created at that time, e.g.,
+% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
+%
+% With TeX Live 2008, etex now includes hyphenation patterns for all
+% available languages. This means we can support hyphenation in
+% Texinfo, at least to some extent. (This still doesn't solve the
+% accented characters problem.)
+%
+\catcode`@=11
+\def\txisetlanguage#1#2#3{%
+ % do not set the language if the name is undefined in the current TeX.
+ \expandafter\ifx\csname lang@#1\endcsname \relax
+ \message{no patterns for #1}%
+ \else
+ \global\language = \csname lang@#1\endcsname
+ \fi
+ % but there is no harm in adjusting the hyphenmin values regardless.
+ \global\lefthyphenmin = #2\relax
+ \global\righthyphenmin = #3\relax
+}
+
+% Helpers for encodings.
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \global\catcode\count255=#1\relax
+ \advance\count255 by 1
+ \repeat
+}
+
+\def\setnonasciicharscatcodenonglobal#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \catcode\count255=#1\relax
+ \advance\count255 by 1
+ \repeat
+}
+
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+ % Encoding being declared for the document.
+ \def\declaredencoding{\csname #1.enc\endcsname}%
+ %
+ % Supported encodings: names converted to tokens in order to be able
+ % to compare them with \ifx.
+ \def\ascii{\csname US-ASCII.enc\endcsname}%
+ \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+ \def\latone{\csname ISO-8859-1.enc\endcsname}%
+ \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+ \def\utfeight{\csname UTF-8.enc\endcsname}%
+ %
+ \ifx \declaredencoding \ascii
+ \asciichardefs
+ %
+ \else \ifx \declaredencoding \lattwo
+ \setnonasciicharscatcode\active
+ \lattwochardefs
+ %
+ \else \ifx \declaredencoding \latone
+ \setnonasciicharscatcode\active
+ \latonechardefs
+ %
+ \else \ifx \declaredencoding \latnine
+ \setnonasciicharscatcode\active
+ \latninechardefs
+ %
+ \else \ifx \declaredencoding \utfeight
+ \setnonasciicharscatcode\active
+ \utfeightchardefs
+ %
+ \else
+ \message{Unknown document encoding #1, ignoring.}%
+ %
+ \fi % utfeight
+ \fi % latnine
+ \fi % latone
+ \fi % lattwo
+ \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+ \gdef^^a0{~}
+ \gdef^^a1{\exclamdown}
+ \gdef^^a2{\missingcharmsg{CENT SIGN}}
+ \gdef^^a3{{\pounds}}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\missingcharmsg{YEN SIGN}}
+ \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\copyright}
+ \gdef^^aa{\ordf}
+ \gdef^^ab{\guillemetleft}
+ \gdef^^ac{$\lnot$}
+ \gdef^^ad{\-}
+ \gdef^^ae{\registeredsymbol}
+ \gdef^^af{\={}}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{$\pm$}
+ \gdef^^b2{$^2$}
+ \gdef^^b3{$^3$}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{$\mu$}
+ \gdef^^b6{\P}
+ %
+ \gdef^^b7{$^.$}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{$^1$}
+ \gdef^^ba{\ordm}
+ %
+ \gdef^^bb{\guilletright}
+ \gdef^^bc{$1\over4$}
+ \gdef^^bd{$1\over2$}
+ \gdef^^be{$3\over4$}
+ \gdef^^bf{\questiondown}
+ %
+ \gdef^^c0{\`A}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\~A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\ringaccent A}
+ \gdef^^c6{\AE}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\`E}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\^E}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\`I}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\"I}
+ %
+ \gdef^^d0{\DH}
+ \gdef^^d1{\~N}
+ \gdef^^d2{\`O}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\~O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\O}
+ \gdef^^d9{\`U}
+ \gdef^^da{\'U}
+ \gdef^^db{\^U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\TH}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\`a}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\~a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\ringaccent a}
+ \gdef^^e6{\ae}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\`e}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\^e}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\`{\dotless i}}
+ \gdef^^ed{\'{\dotless i}}
+ \gdef^^ee{\^{\dotless i}}
+ \gdef^^ef{\"{\dotless i}}
+ %
+ \gdef^^f0{\dh}
+ \gdef^^f1{\~n}
+ \gdef^^f2{\`o}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\~o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\o}
+ \gdef^^f9{\`u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\^u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\th}
+ \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+ % Encoding is almost identical to Latin1.
+ \latonechardefs
+ %
+ \gdef^^a4{\euro}
+ \gdef^^a6{\v S}
+ \gdef^^a8{\v s}
+ \gdef^^b4{\v Z}
+ \gdef^^b8{\v z}
+ \gdef^^bc{\OE}
+ \gdef^^bd{\oe}
+ \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+ \gdef^^a0{~}
+ \gdef^^a1{\ogonek{A}}
+ \gdef^^a2{\u{}}
+ \gdef^^a3{\L}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\v L}
+ \gdef^^a6{\'S}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\v S}
+ \gdef^^aa{\cedilla S}
+ \gdef^^ab{\v T}
+ \gdef^^ac{\'Z}
+ \gdef^^ad{\-}
+ \gdef^^ae{\v Z}
+ \gdef^^af{\dotaccent Z}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{\ogonek{a}}
+ \gdef^^b2{\ogonek{ }}
+ \gdef^^b3{\l}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{\v l}
+ \gdef^^b6{\'s}
+ \gdef^^b7{\v{}}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{\v s}
+ \gdef^^ba{\cedilla s}
+ \gdef^^bb{\v t}
+ \gdef^^bc{\'z}
+ \gdef^^bd{\H{}}
+ \gdef^^be{\v z}
+ \gdef^^bf{\dotaccent z}
+ %
+ \gdef^^c0{\'R}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\u A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\'L}
+ \gdef^^c6{\'C}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\v C}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\ogonek{E}}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\v E}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\v D}
+ %
+ \gdef^^d0{\DH}
+ \gdef^^d1{\'N}
+ \gdef^^d2{\v N}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\H O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\v R}
+ \gdef^^d9{\ringaccent U}
+ \gdef^^da{\'U}
+ \gdef^^db{\H U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\cedilla T}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\'r}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\u a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\'l}
+ \gdef^^e6{\'c}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\v c}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\ogonek{e}}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\v e}
+ \gdef^^ed{\'\i}
+ \gdef^^ee{\^\i}
+ \gdef^^ef{\v d}
+ %
+ \gdef^^f0{\dh}
+ \gdef^^f1{\'n}
+ \gdef^^f2{\v n}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\H o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\v r}
+ \gdef^^f9{\ringaccent u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\H u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\cedilla t}
+ \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions. It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+ \ifx #1\relax
+ \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+ \else
+ \expandafter #1%
+ \fi
+}
+
+\begingroup
+ \catcode`\~13
+ \catcode`\"12
+
+ \def\UTFviiiLoop{%
+ \global\catcode\countUTFx\active
+ \uccode`\~\countUTFx
+ \uppercase\expandafter{\UTFviiiTmp}%
+ \advance\countUTFx by 1
+ \ifnum\countUTFx < \countUTFy
+ \expandafter\UTFviiiLoop
+ \fi}
+
+ \countUTFx = "C2
+ \countUTFy = "E0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "E0
+ \countUTFy = "F0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "F0
+ \countUTFy = "F4
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+ \UTFviiiLoop
+\endgroup
+
+\begingroup
+ \catcode`\"=12
+ \catcode`\<=12
+ \catcode`\.=12
+ \catcode`\,=12
+ \catcode`\;=12
+ \catcode`\!=12
+ \catcode`\~=13
+
+ \gdef\DeclareUnicodeCharacter#1#2{%
+ \countUTFz = "#1\relax
+ \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ \begingroup
+ \parseXMLCharref
+ \def\UTFviiiTwoOctets##1##2{%
+ \csname u8:##1\string ##2\endcsname}%
+ \def\UTFviiiThreeOctets##1##2##3{%
+ \csname u8:##1\string ##2\string ##3\endcsname}%
+ \def\UTFviiiFourOctets##1##2##3##4{%
+ \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \gdef\UTFviiiTmp{#2}%
+ \endgroup}
+
+ \gdef\parseXMLCharref{%
+ \ifnum\countUTFz < "A0\relax
+ \errhelp = \EMsimple
+ \errmessage{Cannot define Unicode char value < 00A0}%
+ \else\ifnum\countUTFz < "800\relax
+ \parseUTFviiiA,%
+ \parseUTFviiiB C\UTFviiiTwoOctets.,%
+ \else\ifnum\countUTFz < "10000\relax
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+ \else
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiA!%
+ \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+ \fi\fi\fi
+ }
+
+ \gdef\parseUTFviiiA#1{%
+ \countUTFx = \countUTFz
+ \divide\countUTFz by 64
+ \countUTFy = \countUTFz
+ \multiply\countUTFz by 64
+ \advance\countUTFx by -\countUTFz
+ \advance\countUTFx by 128
+ \uccode `#1\countUTFx
+ \countUTFz = \countUTFy}
+
+ \gdef\parseUTFviiiB#1#2#3#4{%
+ \advance\countUTFz by "#10\relax
+ \uccode `#3\countUTFz
+ \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+ \DeclareUnicodeCharacter{00A0}{\tie}
+ \DeclareUnicodeCharacter{00A1}{\exclamdown}
+ \DeclareUnicodeCharacter{00A3}{\pounds}
+ \DeclareUnicodeCharacter{00A8}{\"{ }}
+ \DeclareUnicodeCharacter{00A9}{\copyright}
+ \DeclareUnicodeCharacter{00AA}{\ordf}
+ \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+ \DeclareUnicodeCharacter{00AD}{\-}
+ \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+ \DeclareUnicodeCharacter{00AF}{\={ }}
+
+ \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+ \DeclareUnicodeCharacter{00B4}{\'{ }}
+ \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+ \DeclareUnicodeCharacter{00BA}{\ordm}
+ \DeclareUnicodeCharacter{00BB}{\guillemetright}
+ \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+ \DeclareUnicodeCharacter{00C0}{\`A}
+ \DeclareUnicodeCharacter{00C1}{\'A}
+ \DeclareUnicodeCharacter{00C2}{\^A}
+ \DeclareUnicodeCharacter{00C3}{\~A}
+ \DeclareUnicodeCharacter{00C4}{\"A}
+ \DeclareUnicodeCharacter{00C5}{\AA}
+ \DeclareUnicodeCharacter{00C6}{\AE}
+ \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+ \DeclareUnicodeCharacter{00C8}{\`E}
+ \DeclareUnicodeCharacter{00C9}{\'E}
+ \DeclareUnicodeCharacter{00CA}{\^E}
+ \DeclareUnicodeCharacter{00CB}{\"E}
+ \DeclareUnicodeCharacter{00CC}{\`I}
+ \DeclareUnicodeCharacter{00CD}{\'I}
+ \DeclareUnicodeCharacter{00CE}{\^I}
+ \DeclareUnicodeCharacter{00CF}{\"I}
+
+ \DeclareUnicodeCharacter{00D0}{\DH}
+ \DeclareUnicodeCharacter{00D1}{\~N}
+ \DeclareUnicodeCharacter{00D2}{\`O}
+ \DeclareUnicodeCharacter{00D3}{\'O}
+ \DeclareUnicodeCharacter{00D4}{\^O}
+ \DeclareUnicodeCharacter{00D5}{\~O}
+ \DeclareUnicodeCharacter{00D6}{\"O}
+ \DeclareUnicodeCharacter{00D8}{\O}
+ \DeclareUnicodeCharacter{00D9}{\`U}
+ \DeclareUnicodeCharacter{00DA}{\'U}
+ \DeclareUnicodeCharacter{00DB}{\^U}
+ \DeclareUnicodeCharacter{00DC}{\"U}
+ \DeclareUnicodeCharacter{00DD}{\'Y}
+ \DeclareUnicodeCharacter{00DE}{\TH}
+ \DeclareUnicodeCharacter{00DF}{\ss}
+
+ \DeclareUnicodeCharacter{00E0}{\`a}
+ \DeclareUnicodeCharacter{00E1}{\'a}
+ \DeclareUnicodeCharacter{00E2}{\^a}
+ \DeclareUnicodeCharacter{00E3}{\~a}
+ \DeclareUnicodeCharacter{00E4}{\"a}
+ \DeclareUnicodeCharacter{00E5}{\aa}
+ \DeclareUnicodeCharacter{00E6}{\ae}
+ \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+ \DeclareUnicodeCharacter{00E8}{\`e}
+ \DeclareUnicodeCharacter{00E9}{\'e}
+ \DeclareUnicodeCharacter{00EA}{\^e}
+ \DeclareUnicodeCharacter{00EB}{\"e}
+ \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+ \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{00F0}{\dh}
+ \DeclareUnicodeCharacter{00F1}{\~n}
+ \DeclareUnicodeCharacter{00F2}{\`o}
+ \DeclareUnicodeCharacter{00F3}{\'o}
+ \DeclareUnicodeCharacter{00F4}{\^o}
+ \DeclareUnicodeCharacter{00F5}{\~o}
+ \DeclareUnicodeCharacter{00F6}{\"o}
+ \DeclareUnicodeCharacter{00F8}{\o}
+ \DeclareUnicodeCharacter{00F9}{\`u}
+ \DeclareUnicodeCharacter{00FA}{\'u}
+ \DeclareUnicodeCharacter{00FB}{\^u}
+ \DeclareUnicodeCharacter{00FC}{\"u}
+ \DeclareUnicodeCharacter{00FD}{\'y}
+ \DeclareUnicodeCharacter{00FE}{\th}
+ \DeclareUnicodeCharacter{00FF}{\"y}
+
+ \DeclareUnicodeCharacter{0100}{\=A}
+ \DeclareUnicodeCharacter{0101}{\=a}
+ \DeclareUnicodeCharacter{0102}{\u{A}}
+ \DeclareUnicodeCharacter{0103}{\u{a}}
+ \DeclareUnicodeCharacter{0104}{\ogonek{A}}
+ \DeclareUnicodeCharacter{0105}{\ogonek{a}}
+ \DeclareUnicodeCharacter{0106}{\'C}
+ \DeclareUnicodeCharacter{0107}{\'c}
+ \DeclareUnicodeCharacter{0108}{\^C}
+ \DeclareUnicodeCharacter{0109}{\^c}
+ \DeclareUnicodeCharacter{0118}{\ogonek{E}}
+ \DeclareUnicodeCharacter{0119}{\ogonek{e}}
+ \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+ \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+ \DeclareUnicodeCharacter{010C}{\v{C}}
+ \DeclareUnicodeCharacter{010D}{\v{c}}
+ \DeclareUnicodeCharacter{010E}{\v{D}}
+
+ \DeclareUnicodeCharacter{0112}{\=E}
+ \DeclareUnicodeCharacter{0113}{\=e}
+ \DeclareUnicodeCharacter{0114}{\u{E}}
+ \DeclareUnicodeCharacter{0115}{\u{e}}
+ \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+ \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+ \DeclareUnicodeCharacter{011A}{\v{E}}
+ \DeclareUnicodeCharacter{011B}{\v{e}}
+ \DeclareUnicodeCharacter{011C}{\^G}
+ \DeclareUnicodeCharacter{011D}{\^g}
+ \DeclareUnicodeCharacter{011E}{\u{G}}
+ \DeclareUnicodeCharacter{011F}{\u{g}}
+
+ \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+ \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+ \DeclareUnicodeCharacter{0124}{\^H}
+ \DeclareUnicodeCharacter{0125}{\^h}
+ \DeclareUnicodeCharacter{0128}{\~I}
+ \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+ \DeclareUnicodeCharacter{012A}{\=I}
+ \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+ \DeclareUnicodeCharacter{012C}{\u{I}}
+ \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+ \DeclareUnicodeCharacter{0131}{\dotless{i}}
+ \DeclareUnicodeCharacter{0132}{IJ}
+ \DeclareUnicodeCharacter{0133}{ij}
+ \DeclareUnicodeCharacter{0134}{\^J}
+ \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+ \DeclareUnicodeCharacter{0139}{\'L}
+ \DeclareUnicodeCharacter{013A}{\'l}
+
+ \DeclareUnicodeCharacter{0141}{\L}
+ \DeclareUnicodeCharacter{0142}{\l}
+ \DeclareUnicodeCharacter{0143}{\'N}
+ \DeclareUnicodeCharacter{0144}{\'n}
+ \DeclareUnicodeCharacter{0147}{\v{N}}
+ \DeclareUnicodeCharacter{0148}{\v{n}}
+ \DeclareUnicodeCharacter{014C}{\=O}
+ \DeclareUnicodeCharacter{014D}{\=o}
+ \DeclareUnicodeCharacter{014E}{\u{O}}
+ \DeclareUnicodeCharacter{014F}{\u{o}}
+
+ \DeclareUnicodeCharacter{0150}{\H{O}}
+ \DeclareUnicodeCharacter{0151}{\H{o}}
+ \DeclareUnicodeCharacter{0152}{\OE}
+ \DeclareUnicodeCharacter{0153}{\oe}
+ \DeclareUnicodeCharacter{0154}{\'R}
+ \DeclareUnicodeCharacter{0155}{\'r}
+ \DeclareUnicodeCharacter{0158}{\v{R}}
+ \DeclareUnicodeCharacter{0159}{\v{r}}
+ \DeclareUnicodeCharacter{015A}{\'S}
+ \DeclareUnicodeCharacter{015B}{\'s}
+ \DeclareUnicodeCharacter{015C}{\^S}
+ \DeclareUnicodeCharacter{015D}{\^s}
+ \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+ \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+ \DeclareUnicodeCharacter{0160}{\v{S}}
+ \DeclareUnicodeCharacter{0161}{\v{s}}
+ \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+ \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+ \DeclareUnicodeCharacter{0164}{\v{T}}
+
+ \DeclareUnicodeCharacter{0168}{\~U}
+ \DeclareUnicodeCharacter{0169}{\~u}
+ \DeclareUnicodeCharacter{016A}{\=U}
+ \DeclareUnicodeCharacter{016B}{\=u}
+ \DeclareUnicodeCharacter{016C}{\u{U}}
+ \DeclareUnicodeCharacter{016D}{\u{u}}
+ \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+ \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+ \DeclareUnicodeCharacter{0170}{\H{U}}
+ \DeclareUnicodeCharacter{0171}{\H{u}}
+ \DeclareUnicodeCharacter{0174}{\^W}
+ \DeclareUnicodeCharacter{0175}{\^w}
+ \DeclareUnicodeCharacter{0176}{\^Y}
+ \DeclareUnicodeCharacter{0177}{\^y}
+ \DeclareUnicodeCharacter{0178}{\"Y}
+ \DeclareUnicodeCharacter{0179}{\'Z}
+ \DeclareUnicodeCharacter{017A}{\'z}
+ \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+ \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+ \DeclareUnicodeCharacter{017D}{\v{Z}}
+ \DeclareUnicodeCharacter{017E}{\v{z}}
+
+ \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+ \DeclareUnicodeCharacter{01C5}{D\v{z}}
+ \DeclareUnicodeCharacter{01C6}{d\v{z}}
+ \DeclareUnicodeCharacter{01C7}{LJ}
+ \DeclareUnicodeCharacter{01C8}{Lj}
+ \DeclareUnicodeCharacter{01C9}{lj}
+ \DeclareUnicodeCharacter{01CA}{NJ}
+ \DeclareUnicodeCharacter{01CB}{Nj}
+ \DeclareUnicodeCharacter{01CC}{nj}
+ \DeclareUnicodeCharacter{01CD}{\v{A}}
+ \DeclareUnicodeCharacter{01CE}{\v{a}}
+ \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+ \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+ \DeclareUnicodeCharacter{01D1}{\v{O}}
+ \DeclareUnicodeCharacter{01D2}{\v{o}}
+ \DeclareUnicodeCharacter{01D3}{\v{U}}
+ \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+ \DeclareUnicodeCharacter{01E2}{\={\AE}}
+ \DeclareUnicodeCharacter{01E3}{\={\ae}}
+ \DeclareUnicodeCharacter{01E6}{\v{G}}
+ \DeclareUnicodeCharacter{01E7}{\v{g}}
+ \DeclareUnicodeCharacter{01E8}{\v{K}}
+ \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+ \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+ \DeclareUnicodeCharacter{01F1}{DZ}
+ \DeclareUnicodeCharacter{01F2}{Dz}
+ \DeclareUnicodeCharacter{01F3}{dz}
+ \DeclareUnicodeCharacter{01F4}{\'G}
+ \DeclareUnicodeCharacter{01F5}{\'g}
+ \DeclareUnicodeCharacter{01F8}{\`N}
+ \DeclareUnicodeCharacter{01F9}{\`n}
+ \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+ \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+ \DeclareUnicodeCharacter{01FE}{\'{\O}}
+ \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+ \DeclareUnicodeCharacter{021E}{\v{H}}
+ \DeclareUnicodeCharacter{021F}{\v{h}}
+
+ \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+ \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+ \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+ \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+ \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+ \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+ \DeclareUnicodeCharacter{0232}{\=Y}
+ \DeclareUnicodeCharacter{0233}{\=y}
+ \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+ \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
+
+ \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+ \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+ \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+ \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+ \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+ \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+ \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+ \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+ \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+ \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+ \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+ \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+ \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+ \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+ \DeclareUnicodeCharacter{1E20}{\=G}
+ \DeclareUnicodeCharacter{1E21}{\=g}
+ \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+ \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+ \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+ \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+ \DeclareUnicodeCharacter{1E26}{\"H}
+ \DeclareUnicodeCharacter{1E27}{\"h}
+
+ \DeclareUnicodeCharacter{1E30}{\'K}
+ \DeclareUnicodeCharacter{1E31}{\'k}
+ \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+ \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+ \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+ \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+ \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+ \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+ \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+ \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+ \DeclareUnicodeCharacter{1E3E}{\'M}
+ \DeclareUnicodeCharacter{1E3F}{\'m}
+
+ \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+ \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+ \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+ \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+ \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+ \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+ \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+ \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+ \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+ \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+ \DeclareUnicodeCharacter{1E54}{\'P}
+ \DeclareUnicodeCharacter{1E55}{\'p}
+ \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+ \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+ \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+ \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+ \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+ \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+ \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+ \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+ \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+ \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+ \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+ \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+ \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+ \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+ \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+ \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+ \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+ \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+ \DeclareUnicodeCharacter{1E7C}{\~V}
+ \DeclareUnicodeCharacter{1E7D}{\~v}
+ \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+ \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+ \DeclareUnicodeCharacter{1E80}{\`W}
+ \DeclareUnicodeCharacter{1E81}{\`w}
+ \DeclareUnicodeCharacter{1E82}{\'W}
+ \DeclareUnicodeCharacter{1E83}{\'w}
+ \DeclareUnicodeCharacter{1E84}{\"W}
+ \DeclareUnicodeCharacter{1E85}{\"w}
+ \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+ \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+ \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+ \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+ \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+ \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+ \DeclareUnicodeCharacter{1E8C}{\"X}
+ \DeclareUnicodeCharacter{1E8D}{\"x}
+ \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+ \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+ \DeclareUnicodeCharacter{1E90}{\^Z}
+ \DeclareUnicodeCharacter{1E91}{\^z}
+ \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+ \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+ \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+ \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+ \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+ \DeclareUnicodeCharacter{1E97}{\"t}
+ \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+ \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+ \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+ \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+ \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+ \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+ \DeclareUnicodeCharacter{1EBC}{\~E}
+ \DeclareUnicodeCharacter{1EBD}{\~e}
+
+ \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+ \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+ \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+ \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+ \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+ \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+ \DeclareUnicodeCharacter{1EF2}{\`Y}
+ \DeclareUnicodeCharacter{1EF3}{\`y}
+ \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+ \DeclareUnicodeCharacter{1EF8}{\~Y}
+ \DeclareUnicodeCharacter{1EF9}{\~y}
+
+ \DeclareUnicodeCharacter{2013}{--}
+ \DeclareUnicodeCharacter{2014}{---}
+ \DeclareUnicodeCharacter{2018}{\quoteleft}
+ \DeclareUnicodeCharacter{2019}{\quoteright}
+ \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+ \DeclareUnicodeCharacter{201C}{\quotedblleft}
+ \DeclareUnicodeCharacter{201D}{\quotedblright}
+ \DeclareUnicodeCharacter{201E}{\quotedblbase}
+ \DeclareUnicodeCharacter{2022}{\bullet}
+ \DeclareUnicodeCharacter{2026}{\dots}
+ \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+ \DeclareUnicodeCharacter{203A}{\guilsinglright}
+ \DeclareUnicodeCharacter{20AC}{\euro}
+
+ \DeclareUnicodeCharacter{2192}{\expansion}
+ \DeclareUnicodeCharacter{21D2}{\result}
+
+ \DeclareUnicodeCharacter{2212}{\minus}
+ \DeclareUnicodeCharacter{2217}{\point}
+ \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+ \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
+% Prevent underfull vbox error messages.
+\vbadness = 10000
+
+% Don't be so finicky about underfull hboxes, either.
+\hbadness = 2000
+
+% Following George Bush, get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything. We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize. We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+ \ifx\emergencystretch\thisisundefined
+ % Allow us to assign to \emergencystretch anyway.
+ \def\emergencystretch{\dimen0}%
+ \else
+ \emergencystretch = .15\hsize
+ \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading. The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+ \voffset = #3\relax
+ \topskip = #6\relax
+ \splittopskip = \topskip
+ %
+ \vsize = #1\relax
+ \advance\vsize by \topskip
+ \outervsize = \vsize
+ \advance\outervsize by 2\topandbottommargin
+ \pageheight = \vsize
+ %
+ \hsize = #2\relax
+ \outerhsize = \hsize
+ \advance\outerhsize by 0.5in
+ \pagewidth = \hsize
+ %
+ \normaloffset = #4\relax
+ \bindingoffset = #5\relax
+ %
+ \ifpdf
+ \pdfpageheight #7\relax
+ \pdfpagewidth #8\relax
+ % if we don't reset these, they will remain at "1 true in" of
+ % whatever layout pdftex was dumped with.
+ \pdfhorigin = 1 true in
+ \pdfvorigin = 1 true in
+ \fi
+ %
+ \setleading{\textleading}
+ %
+ \parindent = \defaultparindent
+ \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+ \parskip = 3pt plus 2pt minus 1pt
+ \textleading = 13.2pt
+ %
+ % If page is nothing but text, make it come out even.
+ \internalpagesizes{607.2pt}{6in}% that's 46 lines
+ {\voffset}{.25in}%
+ {\bindingoffset}{36pt}%
+ {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+ \parskip = 2pt plus 1pt
+ \textleading = 12pt
+ %
+ \internalpagesizes{7.5in}{5in}%
+ {-.2in}{0in}%
+ {\bindingoffset}{16pt}%
+ {9.25in}{7in}%
+ %
+ \lispnarrowing = 0.3in
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+ \parskip = 1.5pt plus 1pt
+ \textleading = 12pt
+ %
+ \internalpagesizes{7.4in}{4.8in}%
+ {-.2in}{-.4in}%
+ {0pt}{14pt}%
+ {9in}{6in}%
+ %
+ \lispnarrowing = 0.25in
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+ \parskip = 3pt plus 2pt minus 1pt
+ \textleading = 13.2pt
+ %
+ % Double-side printing via postscript on Laserjet 4050
+ % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+ % To change the settings for a different printer or situation, adjust
+ % \normaloffset until the front-side and back-side texts align. Then
+ % do the same for \bindingoffset. You can set these for testing in
+ % your texinfo source file like this:
+ % @tex
+ % \global\normaloffset = -6mm
+ % \global\bindingoffset = 10mm
+ % @end tex
+ \internalpagesizes{673.2pt}{160mm}% that's 51 lines
+ {\voffset}{\hoffset}%
+ {\bindingoffset}{44pt}%
+ {297mm}{210mm}%
+ %
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From romildo@urano.iceb.ufop.br, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+ \parskip = 2pt plus 1pt minus 0.1pt
+ \textleading = 12.5pt
+ %
+ \internalpagesizes{160mm}{120mm}%
+ {\voffset}{\hoffset}%
+ {\bindingoffset}{8pt}%
+ {210mm}{148mm}%
+ %
+ \lispnarrowing = 0.2in
+ \tolerance = 800
+ \hfuzz = 1.2pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = 2mm
+ \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+ \afourpaper
+ \internalpagesizes{237mm}{150mm}%
+ {\voffset}{4.6mm}%
+ {\bindingoffset}{7mm}%
+ {297mm}{210mm}%
+ %
+ % Must explicitly reset to 0 because we call \afourpaper.
+ \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+ \afourpaper
+ \internalpagesizes{241mm}{165mm}%
+ {\voffset}{-2.95mm}%
+ {\bindingoffset}{7mm}%
+ {297mm}{210mm}%
+ \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+ \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+ \globaldefs = 1
+ %
+ \parskip = 3pt plus 2pt minus 1pt
+ \setleading{\textleading}%
+ %
+ \dimen0 = #1\relax
+ \advance\dimen0 by \voffset
+ %
+ \dimen2 = \hsize
+ \advance\dimen2 by \normaloffset
+ %
+ \internalpagesizes{#1}{\hsize}%
+ {\voffset}{\normaloffset}%
+ {\bindingoffset}{44pt}%
+ {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+% DEL is a comment character, in case @c does not suffice.
+\catcode`\^^? = 14
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other
+\catcode`\~=\other
+\catcode`\^=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode`\+=\other
+\catcode`\$=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+\def\normaldollar{$}%$ font-lock fix
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise. Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font. Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts. But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt\char34}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt\char126}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\catcode`\|=\active
+\def|{{\tt\char124}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \everyjob (or @setfilename) turn them on.
+% \otherifyactive is called near the end of this file.
+\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+ \normalturnoffactive
+ \otherbackslash
+}
+
+\catcode`\@=0
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active
+@def@normalbackslash{{@tt@backslashcurfont}}
+% On startup, @fixbackslash assigns:
+% @let \ = @normalbackslash
+
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+%
+@def@normalturnoffactive{%
+ @let\=@normalbackslash
+ @let"=@normaldoublequote
+ @let~=@normaltilde
+ @let^=@normalcaret
+ @let_=@normalunderscore
+ @let|=@normalverticalbar
+ @let<=@normalless
+ @let>=@normalgreater
+ @let+=@normalplus
+ @let$=@normaldollar %$ font-lock fix
+ @markupsetuplqdefault
+ @markupsetuprqdefault
+ @unsepspaces
+}
+
+% Make _ and + \other characters, temporarily.
+% This is canceled by @fixbackslash.
+@otherifyactive
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
+@gdef@eatinput input texinfo{@fixbackslash}
+@global@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\' in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+% Also turn back on active characters that might appear in the input
+% file name, in case not using a pre-dumped format.
+%
+@gdef@fixbackslash{%
+ @ifx\@eatinput @let\ = @normalbackslash @fi
+ @catcode`+=@active
+ @catcode`@_=@active
+}
+
+% Say @foo, not \foo, in error messages.
+@escapechar = `@@
+
+% These look ok in all fonts, so just make them not special.
+@catcode`@& = @other
+@catcode`@# = @other
+@catcode`@% = @other
+
+@c Finally, make ` and ' active, so that txicodequoteundirected and
+@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we
+@c don't make ` and ' active, @code will not get them as active chars.
+@c Do this last of all since we use ` in the previous @catcode assignments.
+@catcode`@'=@active
+@catcode`@`=@active
+@markupsetuplqdefault
+@markupsetuprqdefault
+
+@c Local variables:
+@c eval: (add-hook 'write-file-hooks 'time-stamp)
+@c page-delimiter: "^\\\\message"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
+@c End:
+
+@c vim:sw=2:
+
+@ignore
+ arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+@end ignore
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..6781b98
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,520 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2009-04-28.21; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dst_arg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/m4/ChangeLog b/m4/ChangeLog
new file mode 100644
index 0000000..edeacee
--- /dev/null
+++ b/m4/ChangeLog
@@ -0,0 +1,29 @@
+2002-08-21 gettextize <bug-gnu-gettext@gnu.org>
+
+ * gettext.m4: Upgrade to gettext-0.11.5.
+ * ulonglong.m4: New file, from gettext-0.11.5.
+ * iconv.m4: Upgrade to gettext-0.11.5.
+ * intdiv0.m4: New file, from gettext-0.11.5.
+ * inttypes.m4: New file, from gettext-0.11.5.
+ * inttypes_h.m4: New file, from gettext-0.11.5.
+ * inttypes-pri.m4: New file, from gettext-0.11.5.
+ * lcmessage.m4: Upgrade to gettext-0.11.5.
+ * lib-link.m4: Upgrade to gettext-0.11.5.
+ * stdint_h.m4: New file, from gettext-0.11.5.
+ * uintmax_t.m4: New file, from gettext-0.11.5.
+ * Makefile.am (EXTRA_DIST): Add the new files.
+
+2002-06-03 gettextize <bug-gnu-gettext@gnu.org>
+
+ * codeset.m4: Upgrade to gettext-0.11.2.
+ * gettext.m4: Upgrade to gettext-0.11.2.
+ * glibc21.m4: Upgrade to gettext-0.11.2.
+ * iconv.m4: Upgrade to gettext-0.11.2.
+ * isc-posix.m4: New file, from gettext-0.11.2.
+ * lcmessage.m4: Upgrade to gettext-0.11.2.
+ * lib-ld.m4: New file, from gettext-0.11.2.
+ * lib-link.m4: New file, from gettext-0.11.2.
+ * lib-prefix.m4: New file, from gettext-0.11.2.
+ * progtest.m4: Upgrade to gettext-0.11.2.
+ * Makefile.am (EXTRA_DIST): Add the new files.
+
diff --git a/m4/Makefile.am b/m4/Makefile.am
new file mode 100644
index 0000000..ab8542c
--- /dev/null
+++ b/m4/Makefile.am
@@ -0,0 +1,5 @@
+EXTRA_DIST = ac_define_dir.m4 codeset.m4 gettext.m4 glib-2.0.m4 \
+ glibc21.m4 iconv.m4 intdiv0.m4 inttypes_h.m4 \
+ inttypes.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 \
+ lib-ld.m4 lib-link.m4 lib-prefix.m4 progtest.m4 \
+ stdint_h.m4 uintmax_t.m4 ulonglong.m4
diff --git a/m4/Makefile.in b/m4/Makefile.in
new file mode 100644
index 0000000..8e2827b
--- /dev/null
+++ b/m4/Makefile.in
@@ -0,0 +1,360 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = m4
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glib-2.0.m4 \
+ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURSES_LIB = @CURSES_LIB@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKGDATADIR = @PKGDATADIR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = ac_define_dir.m4 codeset.m4 gettext.m4 glib-2.0.m4 \
+ glibc21.m4 iconv.m4 intdiv0.m4 inttypes_h.m4 \
+ inttypes.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 \
+ lib-ld.m4 lib-link.m4 lib-prefix.m4 progtest.m4 \
+ stdint_h.m4 uintmax_t.m4 ulonglong.m4
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu m4/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/m4/ac_define_dir.m4 b/m4/ac_define_dir.m4
new file mode 100644
index 0000000..e15cea2
--- /dev/null
+++ b/m4/ac_define_dir.m4
@@ -0,0 +1,34 @@
+dnl @synopsis AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
+dnl
+dnl This macro sets VARNAME to the expansion of the DIR variable,
+dnl taking care of fixing up ${prefix} and such.
+dnl
+dnl VARNAME is then offered as both an output variable and a C
+dnl preprocessor symbol.
+dnl
+dnl Example:
+dnl
+dnl AC_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.])
+dnl
+dnl @category Misc
+dnl @author Stepan Kasal <kasal@ucw.cz>
+dnl @author Andreas Schwab <schwab@suse.de>
+dnl @author Guido U. Draheim <guidod@gmx.de>
+dnl @author Alexandre Oliva
+dnl @version 2006-10-13
+dnl @license AllPermissive
+
+AC_DEFUN([AC_DEFINE_DIR], [
+ prefix_NONE=
+ exec_prefix_NONE=
+ test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
+ test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
+dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
+dnl refers to ${prefix}. Thus we have to use `eval' twice.
+ eval ac_define_dir="\"[$]$2\""
+ eval ac_define_dir="\"$ac_define_dir\""
+ AC_SUBST($1, "$ac_define_dir")
+ AC_DEFINE_UNQUOTED($1, "$ac_define_dir", [$3])
+ test "$prefix_NONE" && prefix=NONE
+ test "$exec_prefix_NONE" && exec_prefix=NONE
+])
diff --git a/m4/codeset.m4 b/m4/codeset.m4
new file mode 100644
index 0000000..59535eb
--- /dev/null
+++ b/m4/codeset.m4
@@ -0,0 +1,23 @@
+# codeset.m4 serial AM1 (gettext-0.10.40)
+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_LANGINFO_CODESET],
+[
+ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
+ [AC_TRY_LINK([#include <langinfo.h>],
+ [char* cs = nl_langinfo(CODESET);],
+ am_cv_langinfo_codeset=yes,
+ am_cv_langinfo_codeset=no)
+ ])
+ if test $am_cv_langinfo_codeset = yes; then
+ AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
+ [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
+ fi
+])
diff --git a/m4/gettext.m4 b/m4/gettext.m4
new file mode 100644
index 0000000..45cad85
--- /dev/null
+++ b/m4/gettext.m4
@@ -0,0 +1,587 @@
+# gettext.m4 serial 17 (gettext-0.11.5)
+dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2002.
+
+dnl Macro to add for using GNU gettext.
+
+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
+dnl default (if it is not specified or empty) is 'no-libtool'.
+dnl INTLSYMBOL should be 'external' for packages with no intl directory,
+dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
+dnl If INTLSYMBOL is 'use-libtool', then a libtool library
+dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
+dnl depending on --{enable,disable}-{shared,static} and on the presence of
+dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
+dnl $(top_builddir)/intl/libintl.a will be created.
+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
+dnl implementations (in libc or libintl) without the ngettext() function
+dnl will be ignored. If NEEDSYMBOL is specified and is
+dnl 'need-formatstring-macros', then GNU gettext implementations that don't
+dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
+dnl INTLDIR is used to find the intl libraries. If empty,
+dnl the value `$(top_builddir)/intl/' is used.
+dnl
+dnl The result of the configuration is one of three cases:
+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
+dnl and used.
+dnl Catalog format: GNU --> install in $(datadir)
+dnl Catalog extension: .mo after installation, .gmo in source tree
+dnl 2) GNU gettext has been found in the system's C library.
+dnl Catalog format: GNU --> install in $(datadir)
+dnl Catalog extension: .mo after installation, .gmo in source tree
+dnl 3) No internationalization, always use English msgid.
+dnl Catalog format: none
+dnl Catalog extension: none
+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
+dnl The use of .gmo is historical (it was needed to avoid overwriting the
+dnl GNU format catalogs when building on a platform with an X/Open gettext),
+dnl but we keep it in order not to force irrelevant filename changes on the
+dnl maintainers.
+dnl
+AC_DEFUN([AM_GNU_GETTEXT],
+[
+ dnl Argument checking.
+ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
+ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
+])])])])])
+ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
+ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
+])])])])
+ define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
+ define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
+
+ AC_REQUIRE([AM_PO_SUBDIRS])dnl
+ ifelse(gt_included_intl, yes, [
+ AC_REQUIRE([AM_INTL_SUBDIR])dnl
+ ])
+
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
+ dnl Ideally we would do this search only after the
+ dnl if test "$USE_NLS" = "yes"; then
+ dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then
+ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
+ dnl the configure script would need to contain the same shell code
+ dnl again, outside any 'if'. There are two solutions:
+ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
+ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
+ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
+ dnl documented, we avoid it.
+ ifelse(gt_included_intl, yes, , [
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+ ])
+
+ AC_MSG_CHECKING([whether NLS is requested])
+ dnl Default is enabled NLS
+ AC_ARG_ENABLE(nls,
+ [ --disable-nls do not use Native Language Support],
+ USE_NLS=$enableval, USE_NLS=yes)
+ AC_MSG_RESULT($USE_NLS)
+ AC_SUBST(USE_NLS)
+
+ ifelse(gt_included_intl, yes, [
+ BUILD_INCLUDED_LIBINTL=no
+ USE_INCLUDED_LIBINTL=no
+ ])
+ LIBINTL=
+ LTLIBINTL=
+ POSUB=
+
+ dnl If we use NLS figure out what method
+ if test "$USE_NLS" = "yes"; then
+ gt_use_preinstalled_gnugettext=no
+ ifelse(gt_included_intl, yes, [
+ AC_MSG_CHECKING([whether included gettext is requested])
+ AC_ARG_WITH(included-gettext,
+ [ --with-included-gettext use the GNU gettext library included here],
+ nls_cv_force_use_gnu_gettext=$withval,
+ nls_cv_force_use_gnu_gettext=no)
+ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+
+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+ ])
+ dnl User does not insist on using GNU NLS library. Figure out what
+ dnl to use. If GNU gettext is available we use this. Else we have
+ dnl to fall back to GNU NLS library.
+
+ dnl Add a version number to the cache macros.
+ define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1)))
+ define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
+ define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
+
+ AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
+ [AC_TRY_LINK([#include <libintl.h>
+]ifelse([$2], [need-formatstring-macros],
+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+], [])[extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;],
+ [bindtextdomain ("", "");
+return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
+ gt_cv_func_gnugettext_libc=yes,
+ gt_cv_func_gnugettext_libc=no)])
+
+ if test "$gt_cv_func_gnugettext_libc" != "yes"; then
+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
+ ifelse(gt_included_intl, yes, , [
+ AM_ICONV_LINK
+ ])
+ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
+ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
+ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
+ dnl even if libiconv doesn't exist.
+ AC_LIB_LINKFLAGS_BODY([intl])
+ AC_CACHE_CHECK([for GNU gettext in libintl],
+ gt_cv_func_gnugettext_libintl,
+ [gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $INCINTL"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBINTL"
+ dnl Now see whether libintl exists and does not depend on libiconv.
+ AC_TRY_LINK([#include <libintl.h>
+]ifelse([$2], [need-formatstring-macros],
+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+], [])[extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias ();],
+ [bindtextdomain ("", "");
+return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
+ gt_cv_func_gnugettext_libintl=yes,
+ gt_cv_func_gnugettext_libintl=no)
+ dnl Now see whether libintl exists and depends on libiconv.
+ if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
+ LIBS="$LIBS $LIBICONV"
+ AC_TRY_LINK([#include <libintl.h>
+]ifelse([$2], [need-formatstring-macros],
+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+], [])[extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias ();],
+ [bindtextdomain ("", "");
+return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
+ [LIBINTL="$LIBINTL $LIBICONV"
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ gt_cv_func_gnugettext_libintl=yes
+ ])
+ fi
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"])
+ fi
+
+ dnl If an already present or preinstalled GNU gettext() is found,
+ dnl use it. But if this macro is used in GNU gettext, and GNU
+ dnl gettext is already preinstalled in libintl, we update this
+ dnl libintl. (Cf. the install rule in intl/Makefile.in.)
+ if test "$gt_cv_func_gnugettext_libc" = "yes" \
+ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \
+ && test "$PACKAGE" != gettext; }; then
+ gt_use_preinstalled_gnugettext=yes
+ else
+ dnl Reset the values set by searching for libintl.
+ LIBINTL=
+ LTLIBINTL=
+ INCINTL=
+ fi
+
+ ifelse(gt_included_intl, yes, [
+ if test "$gt_use_preinstalled_gnugettext" != "yes"; then
+ dnl GNU gettext is not found in the C library.
+ dnl Fall back on included GNU gettext library.
+ nls_cv_use_gnu_gettext=yes
+ fi
+ fi
+
+ if test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions used to generate GNU NLS library.
+ INTLOBJS="\$(GETTOBJS)"
+ BUILD_INCLUDED_LIBINTL=yes
+ USE_INCLUDED_LIBINTL=yes
+ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
+ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
+ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+ fi
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions to use GNU gettext tools.
+ CATOBJEXT=.gmo
+ fi
+ ])
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ AC_DEFINE(ENABLE_NLS, 1,
+ [Define to 1 if translation of program messages to the user's native language
+ is requested.])
+ else
+ USE_NLS=no
+ fi
+ fi
+
+ if test "$USE_NLS" = "yes"; then
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
+ AC_MSG_CHECKING([how to link with libintl])
+ AC_MSG_RESULT([$LIBINTL])
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
+ fi
+
+ dnl For backward compatibility. Some packages may be using this.
+ AC_DEFINE(HAVE_GETTEXT, 1,
+ [Define if the GNU gettext() function is already present or preinstalled.])
+ AC_DEFINE(HAVE_DCGETTEXT, 1,
+ [Define if the GNU dcgettext() function is already present or preinstalled.])
+ fi
+
+ dnl We need to process the po/ directory.
+ POSUB=po
+ fi
+
+ ifelse(gt_included_intl, yes, [
+ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
+ dnl to 'yes' because some of the testsuite requires it.
+ if test "$PACKAGE" = gettext; then
+ BUILD_INCLUDED_LIBINTL=yes
+ fi
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST(BUILD_INCLUDED_LIBINTL)
+ AC_SUBST(USE_INCLUDED_LIBINTL)
+ AC_SUBST(CATOBJEXT)
+ AC_SUBST(INTLOBJS)
+
+ dnl For backward compatibility. Some configure.ins may be using this.
+ nls_cv_header_intl=
+ nls_cv_header_libgt=
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ DATADIRNAME=share
+ AC_SUBST(DATADIRNAME)
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INSTOBJEXT=.mo
+ AC_SUBST(INSTOBJEXT)
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ GENCAT=gencat
+ AC_SUBST(GENCAT)
+
+ dnl Enable libtool support if the surrounding package wishes it.
+ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
+ AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
+ ])
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INTLLIBS="$LIBINTL"
+ AC_SUBST(INTLLIBS)
+
+ dnl Make all documented variables known to autoconf.
+ AC_SUBST(LIBINTL)
+ AC_SUBST(LTLIBINTL)
+ AC_SUBST(POSUB)
+])
+
+
+dnl Checks for all prerequisites of the po subdirectory,
+dnl except for USE_NLS.
+AC_DEFUN([AM_PO_SUBDIRS],
+[
+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+ AC_REQUIRE([AM_MKINSTALLDIRS])dnl
+
+ dnl Perform the following tests also if --disable-nls has been given,
+ dnl because they are needed for "make dist" to work.
+
+ dnl Search for GNU msgfmt in the PATH.
+ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+ dnl The second test excludes FreeBSD msgfmt.
+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+
+ dnl Search for GNU xgettext 0.11 or newer in the PATH.
+ dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+ dnl The second test excludes FreeBSD xgettext.
+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ dnl Remove leftover from FreeBSD xgettext call.
+ rm -f messages.po
+
+ dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
+
+ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
+ dnl Test whether we really found GNU msgfmt.
+ if test "$GMSGFMT" != ":"; then
+ dnl If it is no GNU msgfmt we define it as : so that the
+ dnl Makefiles still can work.
+ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
+ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ : ;
+ else
+ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
+ AC_MSG_RESULT(
+ [found $GMSGFMT program is not GNU msgfmt; ignore it])
+ GMSGFMT=":"
+ fi
+ fi
+
+ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
+ dnl Test whether we really found GNU xgettext.
+ if test "$XGETTEXT" != ":"; then
+ dnl If it is no GNU xgettext we define it as : so that the
+ dnl Makefiles still can work.
+ if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
+ (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ : ;
+ else
+ AC_MSG_RESULT(
+ [found xgettext program is not GNU xgettext; ignore it])
+ XGETTEXT=":"
+ fi
+ dnl Remove leftover from FreeBSD xgettext call.
+ rm -f messages.po
+ fi
+
+ AC_OUTPUT_COMMANDS([
+ for ac_file in $CONFIG_FILES; do
+ # Support "outfile[:infile[:infile...]]"
+ case "$ac_file" in
+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ esac
+ # PO directories have a Makefile.in generated from Makefile.in.in.
+ case "$ac_file" in */Makefile.in)
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+ rm -f "$ac_dir/POTFILES"
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
+ # on $ac_dir but don't depend on user-specified configuration
+ # parameters.
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ if test -n "$ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ # Hide the ALL_LINGUAS assigment from automake.
+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ fi
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ GMOFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ done
+ fi
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+ if test -f "$f"; then
+ case "$f" in
+ *.orig | *.bak | *~) ;;
+ *) cat "$f" >> "$ac_dir/Makefile" ;;
+ esac
+ fi
+ done
+ fi
+ ;;
+ esac
+ done],
+ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+ # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
+ # from automake.
+ eval 'ALL_LINGUAS''="$ALL_LINGUAS"'
+ # Capture the value of LINGUAS because we need it to compute CATALOGS.
+ LINGUAS="${LINGUAS-%UNSET%}"
+ ])
+])
+
+
+dnl Checks for all prerequisites of the intl subdirectory,
+dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
+dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
+AC_DEFUN([AM_INTL_SUBDIR],
+[
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+ AC_REQUIRE([AM_MKINSTALLDIRS])dnl
+ AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl
+ AC_REQUIRE([AC_PROG_RANLIB])dnl
+ AC_REQUIRE([AC_ISC_POSIX])dnl
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+ AC_REQUIRE([AC_C_CONST])dnl
+ AC_REQUIRE([AC_C_INLINE])dnl
+ AC_REQUIRE([AC_TYPE_OFF_T])dnl
+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+ AC_REQUIRE([AC_FUNC_ALLOCA])dnl
+ AC_REQUIRE([AC_FUNC_MMAP])dnl
+ AC_REQUIRE([jm_GLIBC21])dnl
+ AC_REQUIRE([gt_INTDIV0])dnl
+ AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl
+ AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
+ AC_REQUIRE([gt_INTTYPES_PRI])dnl
+
+ AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
+stdlib.h string.h unistd.h sys/param.h])
+ AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
+geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \
+strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next])
+
+ AM_ICONV
+ AM_LANGINFO_CODESET
+ if test $ac_cv_header_locale_h = yes; then
+ AM_LC_MESSAGES
+ fi
+
+ dnl intl/plural.c is generated from intl/plural.y. It requires bison,
+ dnl because plural.y uses bison specific features. It requires at least
+ dnl bison-1.26 because earlier versions generate a plural.c that doesn't
+ dnl compile.
+ dnl bison is only needed for the maintainer (who touches plural.y). But in
+ dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
+ dnl the rule in general Makefile. Now, some people carelessly touch the
+ dnl files or have a broken "make" program, hence the plural.c rule will
+ dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
+ dnl present or too old.
+ AC_CHECK_PROGS([INTLBISON], [bison])
+ if test -z "$INTLBISON"; then
+ ac_verc_fail=yes
+ else
+ dnl Found it, now check the version.
+ AC_MSG_CHECKING([version of bison])
+changequote(<<,>>)dnl
+ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
+changequote([,])dnl
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+ esac
+ AC_MSG_RESULT([$ac_prog_version])
+ fi
+ if test $ac_verc_fail = yes; then
+ INTLBISON=:
+ fi
+])
+
+
+AC_DEFUN([AM_MKINSTALLDIRS],
+[
+ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+ dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
+ dnl Try to locate is.
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+ AC_SUBST(MKINSTALLDIRS)
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
diff --git a/m4/glib-2.0.m4 b/m4/glib-2.0.m4
new file mode 100644
index 0000000..d6413ff
--- /dev/null
+++ b/m4/glib-2.0.m4
@@ -0,0 +1,215 @@
+# Configure paths for GLIB
+# Owen Taylor 1997-2001
+
+dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject or
+dnl gthread is specified in MODULES, pass to pkg-config
+dnl
+AC_DEFUN([AM_PATH_GLIB_2_0],
+[dnl
+dnl Get the cflags and libraries from pkg-config
+dnl
+AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program],
+ , enable_glibtest=yes)
+
+ pkg_config_args=glib-2.0
+ for module in . $4
+ do
+ case "$module" in
+ gmodule)
+ pkg_config_args="$pkg_config_args gmodule-2.0"
+ ;;
+ gmodule-no-export)
+ pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
+ ;;
+ gobject)
+ pkg_config_args="$pkg_config_args gobject-2.0"
+ ;;
+ gthread)
+ pkg_config_args="$pkg_config_args gthread-2.0"
+ ;;
+ esac
+ done
+
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+ no_glib=""
+
+ if test x$PKG_CONFIG != xno ; then
+ if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then
+ :
+ else
+ echo *** pkg-config too old; version 0.7 or better required.
+ no_glib=yes
+ PKG_CONFIG=no
+ fi
+ else
+ no_glib=yes
+ fi
+
+ min_glib_version=ifelse([$1], ,2.0.0,$1)
+ AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
+
+ if test x$PKG_CONFIG != xno ; then
+ ## don't try to run the test against uninstalled libtool libs
+ if $PKG_CONFIG --uninstalled $pkg_config_args; then
+ echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
+ enable_glibtest=no
+ fi
+
+ if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
+ :
+ else
+ no_glib=yes
+ fi
+ fi
+
+ if test x"$no_glib" = x ; then
+ GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+ GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
+ GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+
+ GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
+ GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
+ glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_glibtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+ LIBS="$GLIB_LIBS $LIBS"
+dnl
+dnl Now check if the installed GLIB is sufficiently new. (Also sanity
+dnl checks the results of pkg-config to some extent)
+dnl
+ rm -f conf.glibtest
+ AC_TRY_RUN([
+#include <glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.glibtest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = g_strdup("$min_glib_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_glib_version");
+ exit(1);
+ }
+
+ if ((glib_major_version != $glib_config_major_version) ||
+ (glib_minor_version != $glib_config_minor_version) ||
+ (glib_micro_version != $glib_config_micro_version))
+ {
+ printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
+ $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
+ glib_major_version, glib_minor_version, glib_micro_version);
+ printf ("*** was found! If pkg-config was correct, then it is best\n");
+ printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
+ printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+ printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+ printf("*** required on your system.\n");
+ printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+ printf("*** to point to the correct configuration files\n");
+ }
+ else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
+ (glib_minor_version != GLIB_MINOR_VERSION) ||
+ (glib_micro_version != GLIB_MICRO_VERSION))
+ {
+ printf("*** GLIB header files (version %d.%d.%d) do not match\n",
+ GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+ printf("*** library (version %d.%d.%d)\n",
+ glib_major_version, glib_minor_version, glib_micro_version);
+ }
+ else
+ {
+ if ((glib_major_version > major) ||
+ ((glib_major_version == major) && (glib_minor_version > minor)) ||
+ ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
+ glib_major_version, glib_minor_version, glib_micro_version);
+ printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
+ major, minor, micro);
+ printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
+ printf("***\n");
+ printf("*** If you have already installed a sufficiently new version, this error\n");
+ printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+ printf("*** being found. The easiest way to fix this is to remove the old version\n");
+ printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
+ printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+ printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+ printf("*** so that the correct libraries are found at run-time))\n");
+ }
+ }
+ return 1;
+}
+],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_glib" = x ; then
+ AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version))
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** A new enough version of pkg-config was not found."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig/"
+ else
+ if test -f conf.glibtest ; then
+ :
+ else
+ echo "*** Could not run GLIB test program, checking why..."
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GLIB_CFLAGS"
+ LIBS="$LIBS $GLIB_LIBS"
+ AC_TRY_LINK([
+#include <glib.h>
+#include <stdio.h>
+], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding GLIB or finding the wrong"
+ echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means GLIB is incorrectly installed."])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ GLIB_CFLAGS=""
+ GLIB_LIBS=""
+ GLIB_GENMARSHAL=""
+ GOBJECT_QUERY=""
+ GLIB_MKENUMS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(GLIB_CFLAGS)
+ AC_SUBST(GLIB_LIBS)
+ AC_SUBST(GLIB_GENMARSHAL)
+ AC_SUBST(GOBJECT_QUERY)
+ AC_SUBST(GLIB_MKENUMS)
+ rm -f conf.glibtest
+])
diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
new file mode 100644
index 0000000..9c9f3db
--- /dev/null
+++ b/m4/glibc21.m4
@@ -0,0 +1,32 @@
+# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40)
+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+# Test for the GNU C Library, version 2.1 or newer.
+# From Bruno Haible.
+
+AC_DEFUN([jm_GLIBC21],
+ [
+ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
+ ac_cv_gnu_library_2_1,
+ [AC_EGREP_CPP([Lucky GNU user],
+ [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+ ],
+ ac_cv_gnu_library_2_1=yes,
+ ac_cv_gnu_library_2_1=no)
+ ]
+ )
+ AC_SUBST(GLIBC21)
+ GLIBC21="$ac_cv_gnu_library_2_1"
+ ]
+)
diff --git a/m4/iconv.m4 b/m4/iconv.m4
new file mode 100644
index 0000000..c5f3579
--- /dev/null
+++ b/m4/iconv.m4
@@ -0,0 +1,103 @@
+# iconv.m4 serial AM4 (gettext-0.11.3)
+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+ dnl those with the standalone portable GNU libiconv installed).
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+ dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed libiconv and not disabled its use
+ dnl via --without-libiconv-prefix, he wants to use it. The first
+ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+ am_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+ am_cv_func_iconv=yes)
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+ am_cv_lib_iconv=yes
+ am_cv_func_iconv=yes)
+ LIBS="$am_save_LIBS"
+ fi
+ ])
+ if test "$am_cv_func_iconv" = yes; then
+ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ AC_MSG_CHECKING([how to link with libiconv])
+ AC_MSG_RESULT([$LIBICONV])
+ else
+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+ dnl either.
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+ AC_SUBST(LIBICONV)
+ AC_SUBST(LTLIBICONV)
+])
+
+AC_DEFUN([AM_ICONV],
+[
+ AM_ICONV_LINK
+ if test "$am_cv_func_iconv" = yes; then
+ AC_MSG_CHECKING([for iconv declaration])
+ AC_CACHE_VAL(am_cv_proto_iconv, [
+ AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ AC_MSG_RESULT([$]{ac_t:-
+ }[$]am_cv_proto_iconv)
+ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
+ [Define as const if the declaration of iconv() needs const.])
+ fi
+])
diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4
new file mode 100644
index 0000000..55dddcf
--- /dev/null
+++ b/m4/intdiv0.m4
@@ -0,0 +1,72 @@
+# intdiv0.m4 serial 1 (gettext-0.11.3)
+dnl Copyright (C) 2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([gt_INTDIV0],
+[
+ AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl
+
+ AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
+ gt_cv_int_divbyzero_sigfpe,
+ [
+ AC_TRY_RUN([
+#include <stdlib.h>
+#include <signal.h>
+
+static void
+#ifdef __cplusplus
+sigfpe_handler (int sig)
+#else
+sigfpe_handler (sig) int sig;
+#endif
+{
+ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
+ exit (sig != SIGFPE);
+}
+
+int x = 1;
+int y = 0;
+int z;
+int nan;
+
+int main ()
+{
+ signal (SIGFPE, sigfpe_handler);
+/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
+#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
+ signal (SIGTRAP, sigfpe_handler);
+#endif
+/* Linux/SPARC yields signal SIGILL. */
+#if defined (__sparc__) && defined (__linux__)
+ signal (SIGILL, sigfpe_handler);
+#endif
+
+ z = x / y;
+ nan = y / y;
+ exit (1);
+}
+], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
+ [
+ # Guess based on the CPU.
+ case "$host_cpu" in
+ alpha* | i[34567]86 | m68k | s390*)
+ gt_cv_int_divbyzero_sigfpe="guessing yes";;
+ *)
+ gt_cv_int_divbyzero_sigfpe="guessing no";;
+ esac
+ ])
+ ])
+ case "$gt_cv_int_divbyzero_sigfpe" in
+ *yes) value=1;;
+ *) value=0;;
+ esac
+ AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
+ [Define if integer division by zero raises signal SIGFPE.])
+])
diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4
new file mode 100644
index 0000000..fd007c3
--- /dev/null
+++ b/m4/inttypes-pri.m4
@@ -0,0 +1,32 @@
+# inttypes-pri.m4 serial 1 (gettext-0.11.4)
+dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+
+# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
+# macros to non-string values. This is the case on AIX 4.3.3.
+
+AC_DEFUN([gt_INTTYPES_PRI],
+[
+ AC_REQUIRE([gt_HEADER_INTTYPES_H])
+ if test $gt_cv_header_inttypes_h = yes; then
+ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
+ gt_cv_inttypes_pri_broken,
+ [
+ AC_TRY_COMPILE([#include <inttypes.h>
+#ifdef PRId32
+char *p = PRId32;
+#endif
+], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes)
+ ])
+ fi
+ if test "$gt_cv_inttypes_pri_broken" = yes; then
+ AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
+ [Define if <inttypes.h> exists and defines unusable PRI* macros.])
+ fi
+])
diff --git a/m4/inttypes.m4 b/m4/inttypes.m4
new file mode 100644
index 0000000..ab370ff
--- /dev/null
+++ b/m4/inttypes.m4
@@ -0,0 +1,27 @@
+# inttypes.m4 serial 1 (gettext-0.11.4)
+dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Paul Eggert.
+
+# Define HAVE_INTTYPES_H if <inttypes.h> exists and doesn't clash with
+# <sys/types.h>.
+
+AC_DEFUN([gt_HEADER_INTTYPES_H],
+[
+ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h,
+ [
+ AC_TRY_COMPILE(
+ [#include <sys/types.h>
+#include <inttypes.h>],
+ [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no)
+ ])
+ if test $gt_cv_header_inttypes_h = yes; then
+ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1,
+ [Define if <inttypes.h> exists and doesn't clash with <sys/types.h>.])
+ fi
+])
diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4
new file mode 100644
index 0000000..400a111
--- /dev/null
+++ b/m4/inttypes_h.m4
@@ -0,0 +1,28 @@
+# inttypes_h.m4 serial 4 (gettext-0.11.4)
+dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Paul Eggert.
+
+# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+AC_DEFUN([jm_AC_HEADER_INTTYPES_H],
+[
+ AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
+ [AC_TRY_COMPILE(
+ [#include <sys/types.h>
+#include <inttypes.h>],
+ [uintmax_t i = (uintmax_t) -1;],
+ jm_ac_cv_header_inttypes_h=yes,
+ jm_ac_cv_header_inttypes_h=no)])
+ if test $jm_ac_cv_header_inttypes_h = yes; then
+ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
+[Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
+ and declares uintmax_t. ])
+ fi
+])
diff --git a/m4/isc-posix.m4 b/m4/isc-posix.m4
new file mode 100644
index 0000000..1319dd1
--- /dev/null
+++ b/m4/isc-posix.m4
@@ -0,0 +1,26 @@
+# isc-posix.m4 serial 2 (gettext-0.11.2)
+dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
+
+# This test replaces the one in autoconf.
+# Currently this macro should have the same name as the autoconf macro
+# because gettext's gettext.m4 (distributed in the automake package)
+# still uses it. Otherwise, the use in gettext.m4 makes autoheader
+# give these diagnostics:
+# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
+# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
+
+undefine([AC_ISC_POSIX])
+
+AC_DEFUN([AC_ISC_POSIX],
+ [
+ dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
+ AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
+ ]
+)
diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4
new file mode 100644
index 0000000..ffd4008
--- /dev/null
+++ b/m4/lcmessage.m4
@@ -0,0 +1,32 @@
+# lcmessage.m4 serial 3 (gettext-0.11.3)
+dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
+
+# Check whether LC_MESSAGES is available in <locale.h>.
+
+AC_DEFUN([AM_LC_MESSAGES],
+[
+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+ if test $am_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES, 1,
+ [Define if your <locale.h> file defines LC_MESSAGES.])
+ fi
+])
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
new file mode 100644
index 0000000..ddb5732
--- /dev/null
+++ b/m4/lib-ld.m4
@@ -0,0 +1,97 @@
+# lib-ld.m4 serial 1 (gettext-0.11)
+dnl Copyright (C) 1996-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl Subroutines of libtool.m4,
+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
+dnl with libtool.m4.
+
+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+ acl_cv_prog_gnu_ld=yes
+else
+ acl_cv_prog_gnu_ld=no
+fi])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-1.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_ARG_WITH(gnu-ld,
+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by GCC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]* | [A-Za-z]:[\\/]*)]
+ [re_direlt='/[^/][^/]*/\.\./']
+ # Canonicalize the path of ld
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(acl_cv_path_LD,
+[if test -z "$LD"; then
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+ test "$with_gnu_ld" != no && break
+ else
+ test "$with_gnu_ld" != yes && break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_LIB_PROG_LD_GNU
+])
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
new file mode 100644
index 0000000..6b94251
--- /dev/null
+++ b/m4/lib-link.m4
@@ -0,0 +1,554 @@
+# lib-link.m4 serial 3 (gettext-0.11.3)
+dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ define([Name],[translit([$1],[./-], [___])])
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+ ])
+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+ dnl results of this search when this library appears as a dependency.
+ HAVE_LIB[]NAME=yes
+ undefine([Name])
+ undefine([NAME])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. If found, it
+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ define([Name],[translit([$1],[./-], [___])])
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+
+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed lib[]Name and not disabled its use
+ dnl via --without-lib[]Name-prefix, he wants to use it.
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+ ac_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIB[]NAME"
+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
+ LIBS="$ac_save_LIBS"
+ ])
+ if test "$ac_cv_lib[]Name" = yes; then
+ HAVE_LIB[]NAME=yes
+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
+ AC_MSG_CHECKING([how to link with lib[]$1])
+ AC_MSG_RESULT([$LIB[]NAME])
+ else
+ HAVE_LIB[]NAME=no
+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+ dnl $INC[]NAME either.
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ LIB[]NAME=
+ LTLIB[]NAME=
+ fi
+ AC_SUBST([HAVE_LIB]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ undefine([Name])
+ undefine([NAME])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
+dnl hardcode_direct, hardcode_minus_L,
+dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec.
+AC_DEFUN([AC_LIB_RPATH],
+[
+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+ ])
+ wl="$acl_cv_wl"
+ libext="$acl_cv_libext"
+ shlibext="$acl_cv_shlibext"
+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ hardcode_direct="$acl_cv_hardcode_direct"
+ hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec"
+ sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec"
+ dnl Determine whether the user wants rpath handling at all.
+ AC_ARG_ENABLE(rpath,
+ [ --disable-rpath do not hardcode runtime library paths],
+ :, enable_rpath=yes)
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_ARG_WITH([lib$1-prefix],
+[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
+ --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/lib"
+ fi
+ fi
+])
+ dnl Search the library and its dependencies in $additional_libdir and
+ dnl $LDFLAGS. Using breadth-first-seach.
+ LIB[]NAME=
+ LTLIB[]NAME=
+ INC[]NAME=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='$1 $2'
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+ dnl or AC_LIB_HAVE_LINKFLAGS call.
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+ else
+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+ dnl that this library doesn't exist. So just drop it.
+ :
+ fi
+ else
+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ if test $use_additional = yes; then
+ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+ found_dir="$additional_libdir"
+ found_so="$additional_libdir/lib$name.$shlibext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ else
+ if test -f "$additional_libdir/lib$name.$libext"; then
+ found_dir="$additional_libdir"
+ found_a="$additional_libdir/lib$name.$libext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+ found_dir="$dir"
+ found_so="$dir/lib$name.$shlibext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ else
+ if test -f "$dir/lib$name.$libext"; then
+ found_dir="$dir"
+ found_a="$dir/lib$name.$libext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ dnl Found the library.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ dnl Linking with a shared library. We attempt to hardcode its
+ dnl directory into the executable's runpath, unless it's the
+ dnl standard /usr/lib.
+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+ dnl No hardcoding is needed.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ dnl The hardcoding into $LIBNAME is system dependent.
+ if test "$hardcode_direct" = yes; then
+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+ dnl resulting binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ dnl Rely on "-L$found_dir".
+ dnl But don't add it if it's already contained in the LDFLAGS
+ dnl or the already constructed $LIBNAME
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+ fi
+ if test "$hardcode_minus_L" != no; then
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
+ dnl here, because this doesn't fit in flags passed to the
+ dnl compiler. So give up. No hardcoding. This affects only
+ dnl very old systems.
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ dnl Linking with a static library.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+ else
+ dnl We shouldn't come here, but anyway it's good to have a
+ dnl fallback.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+ fi
+ fi
+ dnl Assume the include files are nearby.
+ additional_includedir=
+ case "$found_dir" in
+ */lib | */lib/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ dnl Potentially add $additional_includedir to $INCNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 3. if it's already present in $CPPFLAGS or the already
+ dnl constructed $INCNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INC[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $INCNAME.
+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ dnl Look for dependencies.
+ if test -n "$found_la"; then
+ dnl Read the .la file. It defines the variables
+ dnl dlname, library_names, old_library, dependency_libs, current,
+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ dnl We use only dependency_libs.
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 3. if it's already present in $LDFLAGS or the already
+ dnl constructed $LIBNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/lib"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/lib"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LIBNAME.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LTLIBNAME.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ dnl Handle this in the next round.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ dnl Handle this in the next round. Throw away the .la's
+ dnl directory; it is already contained in a preceding -L
+ dnl option.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ dnl Most likely an immediate library name.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ dnl Didn't find the library; assume it is in the system directories
+ dnl known to the linker and runtime loader. (All the system
+ dnl directories known to the linker should also be known to the
+ dnl runtime loader, otherwise the system is severely misconfigured.)
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user must
+ dnl pass all path elements in one option. We can arrange that for a
+ dnl single library, but not when more than one $LIBNAMEs are used.
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+ done
+ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ dnl When using libtool, the option that works for both libraries and
+ dnl executables is -R. The -R options are cumulative.
+ for found_dir in $ltrpathdirs; do
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+ done
+ fi
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+ for element in [$2]; do
+ haveit=
+ for x in $[$1]; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ [$1]="${[$1]}${[$1]:+ }$element"
+ fi
+ done
+])
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
new file mode 100644
index 0000000..b8b79ab
--- /dev/null
+++ b/m4/lib-prefix.m4
@@ -0,0 +1,148 @@
+# lib-prefix.m4 serial 1 (gettext-0.11)
+dnl Copyright (C) 2001-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_ARG_WITH([lib-prefix],
+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+ --without-lib-prefix don't search for libraries in includedir and libdir],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/lib"
+ fi
+ fi
+])
+ if test $use_additional = yes; then
+ dnl Potentially add $additional_includedir to $CPPFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's already present in $CPPFLAGS,
+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ for x in $CPPFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $CPPFLAGS.
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ dnl Potentially add $additional_libdir to $LDFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's already present in $LDFLAGS,
+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/lib"; then
+ haveit=
+ for x in $LDFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_libdir" = "X/usr/local/lib"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LDFLAGS.
+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ $1
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+])
diff --git a/m4/progtest.m4 b/m4/progtest.m4
new file mode 100644
index 0000000..443c8e3
--- /dev/null
+++ b/m4/progtest.m4
@@ -0,0 +1,59 @@
+# progtest.m4 serial 2 (gettext-0.10.40)
+dnl Copyright (C) 1996-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+# Search path for a program which passes the given test.
+
+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+ /*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+ AC_MSG_RESULT([$]$1)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4
new file mode 100644
index 0000000..4b5a4ac
--- /dev/null
+++ b/m4/stdint_h.m4
@@ -0,0 +1,28 @@
+# stdint_h.m4 serial 2 (gettext-0.11.4)
+dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Paul Eggert.
+
+# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+AC_DEFUN([jm_AC_HEADER_STDINT_H],
+[
+ AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h,
+ [AC_TRY_COMPILE(
+ [#include <sys/types.h>
+#include <stdint.h>],
+ [uintmax_t i = (uintmax_t) -1;],
+ jm_ac_cv_header_stdint_h=yes,
+ jm_ac_cv_header_stdint_h=no)])
+ if test $jm_ac_cv_header_stdint_h = yes; then
+ AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
+[Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
+ and declares uintmax_t. ])
+ fi
+])
diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4
new file mode 100644
index 0000000..ec3a8b9
--- /dev/null
+++ b/m4/uintmax_t.m4
@@ -0,0 +1,29 @@
+# uintmax_t.m4 serial 6 (gettext-0.11)
+dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Paul Eggert.
+
+AC_PREREQ(2.13)
+
+# Define uintmax_t to `unsigned long' or `unsigned long long'
+# if <inttypes.h> does not exist.
+
+AC_DEFUN([jm_AC_TYPE_UINTMAX_T],
+[
+ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([jm_AC_HEADER_STDINT_H])
+ if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
+ AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
+ test $ac_cv_type_unsigned_long_long = yes \
+ && ac_type='unsigned long long' \
+ || ac_type='unsigned long'
+ AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
+ [Define to unsigned long or unsigned long long
+ if <inttypes.h> and <stdint.h> don't define.])
+ fi
+])
diff --git a/m4/ulonglong.m4 b/m4/ulonglong.m4
new file mode 100644
index 0000000..c375e47
--- /dev/null
+++ b/m4/ulonglong.m4
@@ -0,0 +1,23 @@
+# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40)
+dnl Copyright (C) 1999-2002 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Paul Eggert.
+
+AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG],
+[
+ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long,
+ [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;],
+ [unsigned long long ullmax = (unsigned long long) -1;
+ return ull << i | ull >> i | ullmax / ull | ullmax % ull;],
+ ac_cv_type_unsigned_long_long=yes,
+ ac_cv_type_unsigned_long_long=no)])
+ if test $ac_cv_type_unsigned_long_long = yes; then
+ AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1,
+ [Define if you have the unsigned long long type.])
+ fi
+])
diff --git a/missing b/missing
new file mode 100755
index 0000000..28055d2
--- /dev/null
+++ b/missing
@@ -0,0 +1,376 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# 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
+# the Free Software Foundation; either version 2, or (at your option)
+# 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, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program). This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+ lex*|yacc*)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar*)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te*)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison*|yacc*)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex*|flex*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit $?
+ fi
+ ;;
+
+ makeinfo*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ tar*)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case $firstarg in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case $firstarg in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/mkinstalldirs b/mkinstalldirs
new file mode 100755
index 0000000..4191a45
--- /dev/null
+++ b/mkinstalldirs
@@ -0,0 +1,162 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2009-04-28.21; # UTC
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" "" $nl"
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+ case $1 in
+ -h | --help | --h*) # -h for help
+ echo "$usage"
+ exit $?
+ ;;
+ -m) # -m PERM arg
+ shift
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+ dirmode=$1
+ shift
+ ;;
+ --version)
+ echo "$0 $scriptversion"
+ exit $?
+ ;;
+ --) # stop option processing
+ shift
+ break
+ ;;
+ -*) # unknown option
+ echo "$usage" 1>&2
+ exit 1
+ ;;
+ *) # first non-opt arg
+ break
+ ;;
+ esac
+done
+
+for file
+do
+ if test -d "$file"; then
+ shift
+ else
+ break
+ fi
+done
+
+case $# in
+ 0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error. This is a problem when calling mkinstalldirs
+# from a parallel make. We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+ '')
+ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ echo "mkdir -p -- $*"
+ exec mkdir -p -- "$@"
+ else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ test -d ./-p && rmdir ./-p
+ test -d ./--version && rmdir ./--version
+ fi
+ ;;
+ *)
+ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+ test ! -d ./--version; then
+ echo "mkdir -m $dirmode -p -- $*"
+ exec mkdir -m "$dirmode" -p -- "$@"
+ else
+ # Clean up after NextStep and OpenStep mkdir.
+ for d in ./-m ./-p ./--version "./$dirmode";
+ do
+ test -d $d && rmdir $d
+ done
+ fi
+ ;;
+esac
+
+for file
+do
+ case $file in
+ /*) pathcomp=/ ;;
+ *) pathcomp= ;;
+ esac
+ oIFS=$IFS
+ IFS=/
+ set fnord $file
+ shift
+ IFS=$oIFS
+
+ for d
+ do
+ test "x$d" = x && continue
+
+ pathcomp=$pathcomp$d
+ case $pathcomp in
+ -*) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp"
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ else
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $pathcomp"
+ lasterr=
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+ if test ! -z "$lasterr"; then
+ errstatus=$lasterr
+ fi
+ fi
+ fi
+ fi
+
+ pathcomp=$pathcomp/
+ done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/nano.spec b/nano.spec
new file mode 100644
index 0000000..117bbae
--- /dev/null
+++ b/nano.spec
@@ -0,0 +1,39 @@
+%define name nano
+%define version 2.2.6
+%define release 1
+
+Summary : Pico editor clone with enhancements
+Name : %{name}
+Version : %{version}
+Release : %{release}
+License : GPL
+Group : Applications/Editors
+URL : http://www.nano-editor.org/
+Source : http://www.nano-editor.org/dist/v2.0/%{name}-%{version}.tar.gz
+BuildRoot : %{_tmppath}/%{name}-%{version}-root
+BuildRequires : autoconf, automake, gettext-devel, ncurses-devel
+
+%description
+GNU nano is a small and friendly text editor. It aims to emulate the
+Pico text editor while also offering a few enhancements.
+
+%prep
+%setup -q
+
+%build
+%configure --enable-all
+make
+
+%install
+rm -rf %{buildroot}
+make DESTDIR="%{buildroot}" install
+
+%files
+%defattr(-,root,root)
+%doc AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README THANKS TODO doc/faq.html doc/nanorc.sample
+%{_bindir}/*
+%{_mandir}/man*/*
+%{_mandir}/fr/man*/*
+%{_infodir}/nano.info*
+%{_datadir}/locale/*/LC_MESSAGES/nano.mo
+%{_datadir}/nano/*
diff --git a/nano.spec.in b/nano.spec.in
new file mode 100644
index 0000000..3126213
--- /dev/null
+++ b/nano.spec.in
@@ -0,0 +1,39 @@
+%define name @PACKAGE@
+%define version @VERSION@
+%define release 1
+
+Summary : Pico editor clone with enhancements
+Name : %{name}
+Version : %{version}
+Release : %{release}
+License : GPL
+Group : Applications/Editors
+URL : http://www.nano-editor.org/
+Source : http://www.nano-editor.org/dist/v2.0/%{name}-%{version}.tar.gz
+BuildRoot : %{_tmppath}/%{name}-%{version}-root
+BuildRequires : autoconf, automake, gettext-devel, ncurses-devel
+
+%description
+GNU nano is a small and friendly text editor. It aims to emulate the
+Pico text editor while also offering a few enhancements.
+
+%prep
+%setup -q
+
+%build
+%configure --enable-all
+make
+
+%install
+rm -rf %{buildroot}
+make DESTDIR="%{buildroot}" install
+
+%files
+%defattr(-,root,root)
+%doc AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README THANKS TODO doc/faq.html doc/nanorc.sample
+%{_bindir}/*
+%{_mandir}/man*/*
+%{_mandir}/fr/man*/*
+%{_infodir}/nano.info*
+%{_datadir}/locale/*/LC_MESSAGES/nano.mo
+%{_datadir}/nano/*
diff --git a/po/ChangeLog b/po/ChangeLog
new file mode 100644
index 0000000..10db548
--- /dev/null
+++ b/po/ChangeLog
@@ -0,0 +1,976 @@
+2007-12-09 Jordi Mallach <jordi@gnu.org>
+
+ * LINGUAS: Add zh_CN.
+ * es.po, fr.po, it.po, nb.po, nl.po, pt_BR.po: New pull from the TP,
+ to fetch the now corrected latest pt_BR file.
+
+2007-12-08 Jordi Mallach <jordi@gnu.org>
+
+ * zh_CN.po: New Simplified Chinese translation by
+ LI Daobing <lidaobing@gmail.com>.
+ * fr.po, ga.po, ms.po, nl.po, nn.po, vi.po: Translation updates taken
+ from the Translation Project.
+ * Refreshed the rest of the files from the latest TP archive.
+
+2007-09-18 Jordi Mallach <jordi@gnu.org>
+
+ * po/ru.po: Updated Russian translation by Sergey A. Ribalchenko.
+
+2007-08-11 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * po/update.pl: Relicense to the GNU GPL version 3 or later.
+
+2007-07-31 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * po/update.pl: Update copyright notice to account for
+ modifications.
+
+2007-01-29 David Lawrence Ramsey <pooka109@cox.net>
+
+ * ru.po: Updated Russian translation by Dimitriy Ryazantcev.
+ * ru.po: Fix incorrect "Project-Id-Version" entry and misplaced
+ space.
+
+2007-01-13 David Lawrence Ramsey <pooka109@cox.net>
+
+ * es.po: Fix misplaced space.
+ * eu.po: Fix typos and misplaced space.
+ * fr.po: Fix misplaced space.
+ * gl.po: Fix typos and misplaced space.
+ * nb.po: Fix typos and more misplaced space.
+
+2007-01-06 David Lawrence Ramsey <pooka109@cox.net>
+
+ * nb.po: Fix misplaced space.
+
+2006-12-06 David Lawrence Ramsey <pooka109@cox.net>
+
+ * hu.po: Removed unneeded duplicate plural forms again.
+ * ms.po: Fix incorrect "Project-Id-Version" entry.
+
+2006-12-06 Jordi Mallach <jordi@gnu.org>
+
+ * hu.po: Updated Hungarian translation by Gabor Kelemen.
+ * ms.po: Updated Malay translation by
+ Sharuzzaman Ahmat Raslan.
+
+2006-11-20 David Lawrence Ramsey <pooka109@cox.net>
+
+ * tr.po: Removed unneeded blank plural forms, as gettext 0.15
+ generates errors upon encountering them.
+
+2006-10-25 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+ * nb.po: Updated Norwegian bokmål translation by
+ Geir Helland.
+
+2006-10-16 Jordi Mallach <jordi@gnu.org>
+
+ * gl.po: Updated Galician translation by
+ Francisco Javier Tsao Santín.
+
+2006-10-16 Jordi Mallach <jordi@gnu.org>
+
+ * eu.po: Updated Basque translation by Mikel Olasagasti.
+
+2006-10-10 Jordi Mallach <jordi@gnu.org>
+
+ * gl.po: Updated Galician translation by
+ Francisco Javier Tsao Santín.
+
+2006-10-02 Jordi Mallach <jordi@gnu.org>
+
+ * pt_BR.po: Refetch the current nano 1.9.99pre0 pt_BR file from
+ the TP, as the latest file offered is apparently for 1.3.11pre1.
+
+2006-10-02 David Lawrence Ramsey <pooka109@cox.net>
+
+ * pt_BR.po: Restore previous version of pt_BR, as it was for
+ nano 1.9.99pre0, and the current version is for 1.3.11pre1.
+
+2006-09-27 Jordi Mallach <jordi@gnu.org>
+
+ * pt_BR.po: Updated Brazilian Portuguese translation by
+ Joao Victor Duarte Martins.
+
+2006-09-10 David Lawrence Ramsey <pooka109@cox.net>
+
+ * hu.po: Removed unneeded duplicate plural forms again.
+
+2006-09-10 Jordi Mallach <jordi@gnu.org>
+
+ * hu.po: Updated Hungarian translation by Gabor Kelemen.
+
+2006-09-02 Jordi Mallach <jordi@gnu.org>
+
+ * pt_BR.po: Updated Brazilian Portuguese translation by
+ Joao Victor Duarte Martins.
+
+2006-09-01 Benno Schulenberg <bensberg@justemail.net>
+
+ * ChangeLog: Fix incorrect years in two entries.
+
+2006-08-31 David Lawrence Ramsey <pooka109@cox.net>
+
+ * bg.po: Fix misplaced space.
+
+2006-08-31 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+ * de.po: Updated German translation by Michael Piefel.
+ * es.po: Updated Spanish translation by
+ Ricardo Javier Cardenes Medina.
+
+2006-08-28 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+
+2006-08-25 Jordi Mallach <jordi@gnu.org>
+
+ * bg.po: Updated Bulgarian translation by Anton Zinoviev.
+ * ca.po: Updated Catalan translation.
+ * ga.po: Updated Irish translation by Kevin Patrick Scannell.
+ * it.po: Updated Italian translation by Marco Colombo.
+ * nl.po: Updated Dutch translation by Benno Schulenberg.
+ * sv.po: Updated Swedish translation by Daniel Nylander.
+
+2006-08-15 David Lawrence Ramsey <pooka109@cox.net>
+
+ * hu.po: Removed unneeded duplicate plural forms, as gettext
+ 0.15 generates errors upon encountering them.
+ * id.po: Removed unneeded duplicate plural forms, as gettext
+ 0.15 generates errors upon encountering them.
+
+2006-06-20 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+ * hu.po: Updated Hungarian translation by Gabor Kelemen.
+ * nl.po: Updated Dutch translation by Benno Schulenberg.
+
+2006-06-20 David Lawrence Ramsey <pooka109@cox.net>
+
+ * fr.po: Fix incorrect "Project-Id-Version" entry.
+ * hu.po: Fix incorrect "Project-Id-Version" entry.
+ * it.po: Fix incorrect "Project-Id-Version" entry.
+
+2006-06-19 Jordi Mallach <jordi@gnu.org>
+
+ * bg.po: Updated Bulgarian translation by Anton Zinoviev.
+ * ga.po: Updated Irish translation by Kevin Patrick Scannell.
+
+2006-06-17 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+ * de.po: Updated German translation by Michael Piefel.
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+ * hu.po: Updated Hungarian translation by Gabor Kelemen.
+ * it.po: Updated Italian translation by Marco Colombo.
+ * nl.po: Updated Dutch translation by Benno Schulenberg.
+
+2006-06-12 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+ * hu.po: Updated Hungarian translation by Gabor Kelemen.
+
+2006-06-09 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+ * ga.po: Updated Irish translation by Kevin Patrick Scannell.
+ * it.po: Updated Italian translation by Marco Colombo.
+ * nl.po: Updated Dutch translation by Benno Schulenberg.
+
+2006-05-17 Jordi Mallach <jordi@gnu.org>
+
+ * LINGUAS: Added "ga".
+ * ga.po: New Irish translation by
+ Kevin Patrick Scannell <scannell@SLU.EDU>.
+
+2006-05-10 Jordi Mallach <jordi@gnu.org>
+
+ * nl.po: Updated Dutch translation by Benno Schulenberg.
+
+2006-03-15 Jordi Mallach <jordi@gnu.org>
+
+ * sv.po: Updated Swedish translation by Daniel Nylander.
+
+2006-03-06 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Vietnamese translation by
+ Phan Vinh Thinh.
+
+2005-12-21 Jordi Mallach <jordi@gnu.org>
+
+ * bg.po: Updated Bulgarian translation by Anton Zinoviev.
+ * ca.po: Updated Catalan translation.
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+ * ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
+ * zh_TW: Updated Traditional Chinese translation by
+ Wei-Lun Chao.
+
+2005-12-13 Jordi Mallach <jordi@gnu.org>
+
+ * it.po: Updated Italian translation by Marco Colombo.
+ * de.po: Updated German translation by Michael Piefel.
+ * nl.po: Updated Dutch translation by Benno Schulenberg.
+
+2005-11-08 David Lawrence Ramsey <pooka109@cox.net>
+
+ * POTFILES.in: Add prompt.c.
+
+2005-11-05 David Lawrence Ramsey <pooka109@cox.net>
+
+ * POTFILES.in: Add browser.c.
+
+2005-11-01 David Lawrence Ramsey <pooka109@cox.net>
+
+ * POTFILES.in: Add help.c.
+
+2005-10-23 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+ * eu.po: Updated Basque translation by Mikel Olasagasti.
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+ * it.po: Updated Italian translation by Marco Colombo.
+ * ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
+ * nl.po: Updated Dutch translation by Benno Schulenberg.
+ * zh_TW: Updated Traditional Chinese translation by
+ Wei-Lun Chao.
+
+2005-08-22 Jordi Mallach <jordi@gnu.org>
+ * bg.po: New Bulgarian translation by
+ Yavor Doganov <yavor@doganov.org>.
+
+ * LINGUAS: Added "bg".
+
+2005-08-16 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+
+2005-08-16 Jordi Mallach <jordi@gnu.org>
+
+ * nl.po: Updated Dutch translation by
+ Benno Schulenberg and Reinout van Schouwen.
+
+2005-07-24 David Lawrence Ramsey <pooka109@cox.net>
+
+ * POTFILES.in: Add text.c.
+
+2005-07-19 Jordi Mallach <jordi@gnu.org>
+
+ * ms.po: Updated Malay translation by
+ Sharuzzaman Ahmat Raslan.
+
+2005-07-18 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated French translation by
+ Jean-Philippe Guérard.
+
+2005-07-07 Jordi Mallach <jordi@gnu.org>
+
+ * it.po: Updated Italian translation by Marco Colombo.
+ * ca.po: Updated Catalan translation.
+
+2005-06-28 David Lawrence Ramsey <pooka109@cox.net>
+
+ * POTFILES.in: Remove source files that contain no translatable
+ strings.
+
+2005-06-19 David Lawrence Ramsey <pooka109@cox.net>
+
+ * pt_BR.po: Typo fix.
+
+2005-06-15 Jordi Mallach <jordi@gnu.org>
+
+ * de.po: Typo fix by Jens Seidel.
+
+2005-05-23 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated French translation by
+ Jean-Philippe Guérard.
+
+2005-04-27 Jordi Mallach <jordi@gnu.org>
+
+ * ms.po: Updated Malay translation by
+ Sharuzzaman Ahmat Raslan.
+
+2005-04-22 Jordi Mallach <jordi@gnu.org>
+
+ * nb.po: Updated Norwegian bokmål translation by
+ Geir Helland.
+
+2005-04-20 Jordi Mallach <jordi@gnu.org>
+
+ * ms.po: Updated Malay translation by
+ Sharuzzaman Ahmat Raslan.
+ * ro.po: Updated Romanian translation by Laurentiu Buzdugan.
+ * zh_TW.po: Updated Traditional Chinese translation by
+ CHAO Wei-Lun.
+
+2005-04-18 Jordi Mallach <jordi@gnu.org>
+
+ * vi.po: Updated Vietnamese translation by Phan Vinh Thinh.
+
+2005-04-18 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+ * it.po: Updated Italian translation by Marco Colombo.
+ * ro.po: Updated Romanian translation by Laurentiu Buzdugan.
+
+2005-04-14 Jordi Mallach <jordi@gnu.org>
+
+ * es.po: Updated Spanish translation by
+ Ricardo Javier Cárdenes Medina.
+
+2005-04-13 Jordi Mallach <jordi@gnu.org>
+
+ * vi.po: New Vietnamese translation by Phan Vinh Thinh.
+ * LINGUAS: Added "vi".
+
+2005-04-09 Jordi Mallach <jordi@gnu.org>
+
+ * zh_TW.po: Added Plural-Forms header and fix format specification
+ typos.
+
+2005-04-08 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+ * it.po: Updated Italian translation by Marco Colombo.
+ * zh_TW.po: Updated Traditional Chinese translation by
+ CHAO Wei-Lun.
+
+2005-04-06 Jordi Mallach <jordi@gnu.org>
+
+ * rw.po: New Kinyarwanda translation by Steve Murphy.
+ * LINGUAS: Added "rw".
+
+2005-04-05 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated French translation by
+ Jean-Philippe Guérard.
+ * ro.po: Updated Romanian translation by
+ Laurentiu Buzdugan.
+
+2005-03-11 Jordi Mallach <jordi@gnu.org>
+
+ * ms.po: Updated Malay translation by
+ Sharuzzaman Ahmat Raslan.
+
+2005-01-17 Jordi Mallach <jordi@gnu.org>
+
+ * pt_BR.po: Updated Brazilian Portuguese translation by
+ Joao Victor Duarte Martins.
+
+2004-12-15 Jordi Mallach <jordi@gnu.org>
+
+ * it.po: Updated Italian translation by Marco Colombo.
+
+2004-12-15 Jordi Mallach <jordi@gnu.org>
+
+ * sv.po: Updated Swedish translation by Christian Rose.
+
+2004-12-13 Jordi Mallach <jordi@gnu.org>
+
+ * sv.po: Updated Swedish translation by Christian Rose.
+
+2004-12-07 Jordi Mallach <jordi@gnu.org>
+
+ * it.po: Updated Italian translation by
+ Marco Colombo.
+ * ro.po: Updated Romanian translation by
+ Laurentiu Buzdugan.
+
+2004-12-01 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+ * nb: Updated Norwegian bokmål translation by
+ Geir Helland.
+ * fr.po: Updated French translation by
+ Jean-Philippe Guérard.
+
+2004-11-18 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated French translation by
+ Jean-Philippe Guérard.
+
+2004-11-18 Jordi Mallach <jordi@gnu.org>
+
+ * ms.po: Updated Malay translation by
+ Sharuzzaman Ahmat Raslan.
+
+2004-10-07 Jordi Mallach <jordi@gnu.org>
+
+ * eu.po: Updated Basque translation by
+ Mikel Olasagasti.
+
+2004-08-31 Jordi Mallach <jordi@gnu.org>
+
+ * es.po: Updated Spanish translation by
+ Ricardo Javier Cárdenes Medina.
+
+2004-08-31 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated Catalan translation by
+ Jean-Philippe Guérard.
+
+2004-08-27 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+ * de.po: Updated German translation by Michael Piefel.
+
+2004-06-01 Jordi Mallach <jordi@gnu.org>
+
+ * zh_TW.po: Added Traditional Chinese translation by
+ CHAO Wei-Lun <chaoweilun@pcmail.com.tw>.
+ * LINGUAS: Added "zh_TW".
+
+2004-02-24 Jordi Mallach <jordi@gnu.org>
+
+ * ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
+
+2003-11-25 Jordi Mallach <jordi@gnu.org>
+
+ * ro.po: Updated Romanian translation by Laurentiu Buzdugan.
+
+2003-11-06 Jordi Mallach <jordi@gnu.org>
+
+ * sr.po: Added Serbian translation by Danilo Segan <dsegan@gmx.net>.
+ * LINGUAS: Added "sr" (Serbian), and alphabetize.
+ * ChangeLog: Recoded as UTF-8.
+
+2003-10-30 Jordi Mallach <jordi@gnu.org>
+
+ * fi.po: Patch from Martin-Eric Racine <q-funk@pp.fishpool.fi>
+ to accept "Yy" and "Nn" as well as the Finnish letters in Yes/No
+ prompts.
+
+2003-10-18 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+
+2003-09-12 Jordi Mallach <jordi@gnu.org>
+
+ * POTFILES.in: Updated path to sources.
+
+2003-09-01 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+
+2003-08-17 Jordi Mallach <jordi@gnu.org>
+
+ * tr.po: Updated Turkish translation by A. Murat EREN.
+
+2003-08-05 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+
+2003-06-11 Jordi Mallach <jordi@gnu.org>
+
+ * nb.po: Updated Norwegian bokmål translation by Geir Helland.
+
+2003-06-10 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+
+2003-06-02 Jordi Mallach <jordi@gnu.org>
+
+ * de.po: Updated German translation by Michael Piefel.
+
+2003-05-06 Jordi Mallach <jordi@gnu.org>
+
+ * ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
+
+2003-04-24 Jordi Mallach <jordi@gnu.org>
+
+ * ro.po: New Romanian translation by Laurentiu Buzdugan.
+ * id.po: Updated Indonesian translation by Tedi Heriyanto.
+ * LINGUAS: Added "ro" (Romanian).
+
+2003-04-12 Jordi Mallach <jordi@gnu.org>
+
+ * ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
+
+2003-04-04 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+
+2003-03-17 Jordi Mallach <jordi@gnu.org>
+
+ * ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
+
+2003-03-10 Jordi Mallach <jordi@gnu.org>
+
+ * da.po: Updated Danish translation by Keld Simonsen.
+
+2003-03-06 Jordi Mallach <jordi@gnu.org>
+
+ * ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
+ * id.po: Updated Indonesian translation by Tedi Heriyanto.
+
+2003-02-23 Jordi Mallach <jordi@gnu.org>
+
+ * nl.po: Updated Dutch translation by Guus Sliepen.
+
+2003-02-19 Jordi Mallach <jordi@gnu.org>
+
+ * fi.po: Updated Finnish translation by Kalle Olavi Niemitalo.
+ * es.po: Updated Spanish translation by Ricardo Javier Cárdenes
+ Medina.
+
+2003-02-17 Jordi Mallach <jordi@gnu.org>
+
+ * de.po: Updated German translation by Michael Piefel.
+ * ru.po: Updated Russian translation by Sergey A. Ribalchenko.
+ * uk.po: Updated Ukrainian translation by Sergey A. Ribalchenko.
+
+2003-02-16 Jordi Mallach <jordi@gnu.org>
+
+ * gl.po: Updated Galician translation by Jacobo Tarrío.
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+
+2003-02-15 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+ * nl.po: Updated Dutch translation by Guus Sliepen.
+ * sv.po: Updated Swedish translation by Christian Rose.
+ * ca.po: Updated Catalan translation.
+
+2003-02-13 Jordi Mallach <jordi@gnu.org>
+
+ * ru.po: Updated Russian translation from Sergey A. Ribalchenko.
+
+2003-02-10 Jordi Mallach <jordi@gnu.org>
+
+ * Makevars (XGETTEXT_OPTIONS): Added --keyword=P_:1,2.
+ * update.pl: likewise.
+ * fi.po: Added Plural-Forms: header.
+
+2003-02-10 Jordi Mallach <jordi@gnu.org>
+
+ * fi.po: Updated Finnish translation by Kalle Kivimaa and
+ Kalle Olavi Niemitalo.
+
+2003-02-08 Chris Allegretta <chrisa@asty.org>
+
+ * it.po: Fix broken format string in translation.
+
+2003-02-08 Jordi Mallach <jordi@gnu.org>
+
+ * it.po: Updated Italian translation by Marco Colombo.
+ * gl.po: Updated Galician translation by Jacobo Tarrío.
+ * es.po: Updated Spanish translation by Ricardo Javier Cárdenes
+ Medina.
+
+2003-02-06 Jordi Mallach <jordi@gnu.org>
+
+ * pl.po: Updated Polish translation by Wojciech Kotwica.
+ * sv.po: Updated Swedish translation by Christian Rose.
+
+2003-02-04 Jordi Mallach <jordi@gnu.org>
+
+ * ca.po: Updated Catalan translation.
+ * fr.po: Updated French translation by Jean-Philippe Guérard.
+ * uk.po: Updated Ukrainian translation by Sergey A. Ribalchenko.
+ * de.po: Updated German translation by Michael Piefel.
+
+2003-01-27 Jordi Mallach <jordi@gnu.org>
+
+ * es.po: Updated translation by Ricardo Javier Cárdenes Medina.
+
+2002-01-26 Jordi Mallach <jordi@gnu.org>
+
+ * pl.po: Updated translation by Wojciech Kotwica.
+
+2002-01-25 Jordi Mallach <jordi@gnu.org>
+
+ * gl.po: Updated translation by Jacobo Tarrío.
+
+2002-01-22 Jordi Mallach <jordi@gnu.org>
+
+ * de.po: Updated translation by Michael Piefel.
+
+2003-01-21 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+ * ms.po: Updated translation by Sharuzzaman Ahmat Raslan.
+ * uk.po: Updated translation by Sergey A. Ribalchenko.
+
+2003-01-18 Jordi Mallach <jordi@gnu.org>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+ * sv.po: Updated translation by Christian Rose.
+ * nl.po: Updated translation by Guus Sliepen.
+ * ca.po: Updated translation.
+
+2003-01-15 Jordi Mallach <jordi@gnu.org>
+
+ * Makefile.in.in: Removed, generated by autopoint.
+ * Rules-quot: Likewise.
+ * boldquot.sed: Likewise.
+ * en@boldquot.header: Likewise.
+ * en@quot.header: Likewise.
+ * insert-header.sin: Likewise.
+ * quot.sed: Likewise.
+ * remove-potcdate.sin: Likewise.
+
+2003-01-15 Jordi Mallach <jordi@gnu.org>
+
+ * LINGUAS: New file, exported values from configure.ac's ALL_LINGUAS.
+ * it.po: Updated translation by Marco Colombo.
+ * eu.po: New Basque translation by Peio Ziarsolo.
+
+2002-12-14 Jordi Mallach <jordi@sindominio.net>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+ * tr.po: New Turkish translation by Doruk Fisek.
+
+2002-11-10 Jordi Mallach <jordi@sindominio.net>
+
+ * uk.po: Updated translation by Sergey A. Ribalchenko.
+ * da.po: Updated translation by Keld Simonsen.
+
+2002-11-05 Jordi Mallach <jordi@sindominio.net>
+
+ * ms.po: Updated translation by Sharuzzaman Ahmat Raslan.
+
+2002-11-03 Jordi Mallach <jordi@sindominio.net>
+
+ * sv.po: Updated translation by Christian Rose.
+ * pl.po: Updated translation by Wojciech Kotwica.
+
+2002-10-29 Jordi Mallach <jordi@sindominio.net>
+
+ * id.po: Updated translation by Tedi Heriyanto.
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+
+2002-10-27 Jordi Mallach <jordi@sindominio.net>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+
+2002-10-26 Jordi Mallach <jordi@sindominio.net>
+
+ * es.po: Updated translation by Ricardo Javier Cárdenes Medina.
+
+2002-10-26 Jordi Mallach <jordi@sindominio.net>
+
+ * gl.po: Updated translation by Jacobo Tarrío.
+ * sv.po: Updated translation by Christian Rose.
+ * de.po: Updated translation by Michael Piefel.
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+ * ca.po: Updated translation.
+
+2002-10-17 Jordi Mallach <jordi@sindominio.net>
+
+ * de.po: Updated translation by Michel Piefel.
+
+2002-10-14 Jordi Mallach <jordi@sindominio.net>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+
+2002-10-13 Jordi Mallach <jordi@sindominio.net>
+
+ * es.po: Updated translation by Ricardo Javier Cárdenes Medina.
+
+2002-10-08 Jordi Mallach <jordi@sindominio.net>
+
+ * id.po: Updated translation by Tedi Heriyanto.
+ * ms.po: Updated translation by Sharuzzaman Ahmat Raslan.
+
+2002-10-07 Jordi Mallach <jordi@sindominio.net>
+
+ * de.po: Updated translation by Michel Piefel.
+
+2002-10-07 Jordi Mallach <jordi@sindominio.net>
+
+ * ca.po: Updated translation.
+
+2002-10-07 Jordi Mallach <jordi@sindominio.net>
+
+ * sv.po: Updated translation by Christian Rose.
+ * gl.po: Updated translation by Jacobo Tarrío.
+ * pl.po: Updated translation by Wojciech Kotwica.
+
+2002-09-08 Jordi Mallach <jordi@sindominio.net>
+
+ * ms.po: Updated translation by Sharuzzaman Ahmat Raslan.
+
+2002-09-08 Jordi Mallach <jordi@sindominio.net>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+ * da.po: Updated translation by Keld Simonsen.
+
+2002-08-19 Jordi Mallach <jordi@sindominio.net>
+
+ * de.po: Updated translation by Michael Piefel.
+ * ms.po: Updated translation by Sharuzzaman Ahmat Raslan.
+
+2002-07-31 Jordi Mallach <jordi@sindominio.net>
+
+ * gl.po: Updated translation by Jacobo Tarrío.
+
+2002-07-31 Jordi Mallach <jordi@sindominio.net>
+
+ * es.po: Updated translation by Ricardo Javier Cárdenes Medina.
+
+2002-07-31 Jordi Mallach <jordi@sindominio.net>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+
+2002-07-30 Jordi Mallach <jordi@sindominio.net>
+
+ * pl.po: Updated translation by Wojciech Kotwica.
+ * sv.po: Upadted translation by Christian Rose.
+
+2002-07-29 Jordi Mallach <jordi@sindominio.net>
+
+ * ca.po: Updated translation.
+
+2002-07-29 Jordi Mallach <jordi@sindominio.net>
+
+ * sv.po: Updated translation by Christian Rose.
+
+2002-07-27 Jordi Mallach <jordi@sindominio.net>
+
+ * pt_BR.po: New Brazilian Portuguese translation by
+ Claudio Neves.
+
+2002-07-25 Jordi Mallach <jordi@sindominio.net>
+
+ * id.po: Updated translation by Tedi Heriyanto.
+
+2002-07-09 Jordi Mallach <jordi@sindominio.net>
+
+ * de.po: Updated translation by Michael Piefel.
+
+2002-07-07 Jordi Mallach <jordi@sindominio.net>
+
+ * da.po: Updated translation by Keld Simonsen.
+
+2002-07-03 Jordi Mallach <jordi@sindominio.net>
+
+ * ms.po: New Bahasa Melayu translation by
+ Sharuzzaman Ahmat Raslan.
+
+2002-06-03 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.11.2.
+ * Rules-quot: New file, from gettext-0.11.2.
+ * boldquot.sed: New file, from gettext-0.11.2.
+ * en@boldquot.header: New file, from gettext-0.11.2.
+ * en@quot.header: New file, from gettext-0.11.2.
+ * insert-header.sin: New file, from gettext-0.11.2.
+ * quot.sed: New file, from gettext-0.11.2.
+ * remove-potcdate.sin: New file, from gettext-0.11.2.
+
+2002-05-13 Jordi Mallach <jordi@sindominio.net>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+ * de.po: Updated translation by Michael Piefel.
+
+2002-05-13 Jordi Mallach <jordi@sindominio.net>
+
+ * it.po: Updated translation by Marco Colombo.
+ * gl.po: Updated translation by Jacobo Tarrío.
+ * ca.po: Updated translation.
+ * es.po: Updated translation.
+
+2002-05-13 Jordi Mallach <jordi@sindominio.net>
+
+ * sv.po: Updated translation by Christian Rose.
+
+2002-05-05 Jordi Mallach <jordi@sindominio.net>
+
+ * sv.po: Updated translation by Christian Rose.
+
+2002-04-25 Jordi Mallach <jordi@sindominio.net>
+
+ * id.po: Updated translation by Tedi Heriyanto.
+
+2002-04-19 Jordi Mallach <jordi@sindominio.net>
+
+ * ru.po: Updated translation by Sergey A. Ribalchenko.
+ * uk.po: Updated translation by Sergey A. Ribalchenko.
+
+2002-04-13 Jordi Mallach <jordi@sindominio.net>
+
+ * it.po: Updated translation by Marco Colombo.
+
+2002-04-13 Jordi Mallach <jordi@sindominio.net>
+
+ * nl.po: Updated translation by Guus Sliepen.
+
+2002-04-10 Jordi Mallach <jordi@sindominio.net>
+
+ * sv.po: Updated translation by Christian Rose.
+
+2002-04-05 Jordi Mallach <jordi@sindominio.net>
+
+ * gl.po: Updated translation by Jacobo Tarrio.
+ * de.po: Updated translation by Michael Piefel.
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+ * ca.po: Updated.
+ * es.po: Updated.
+
+2002-03-29 Jordi Mallach <jordi@sindominio.net>
+
+ * da.po: Updated translation by Keld Simonsen.
+
+2002-03-27 Jordi Mallach <jordi@sindominio.net>
+
+ * it.po: Updated translation by Marco Colombo.
+
+2002-03-25 Jordi Mallach <jordi@sindominio.net>
+
+ * id.po: Updated translation by Tedi Heriyanto.
+
+2002-03-17 Jordi Mallach <jordi@sindominio.net>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+
+2002-03-15 Jordi Mallach <jordi@sindominio.net>
+
+ * pl.po: Updated translation by Wojciech Kotwica.
+
+2002-03-14 Jordi Mallach <jordi@sindominio.net>
+
+ * uk.po, ru.po: Updated translations by Sergey A.
+ Ribalchenko.
+
+2002-03-12 Jordi Mallach <jordi@sindominio.net>
+
+ * ca.po: Updated to current CVS.
+ * es.po: Updated to current CVS.
+ * gl.po: Updated translation to current CVS by Jacobo Tarrio.
+
+2002-03-12 Jordi Mallach <jordi@sindominio.net>
+
+ * gl.po: Updated translation by Jacobo Tarrio.
+
+2002-03-11 Jordi Mallach <jordi@sindominio.net>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+
+2002-03-09 Jordi Mallach <jordi@sindominio.net>
+
+ * id.po: Updated translation by Tedi Heriyanto.
+ * ca.po: Updated.
+ * es.po: Updated.
+
+2002-03-07 Jordi Mallach <jordi@sindominio.net>
+
+ * sv.po: Updated translation by Christian Rose.
+ * de.po: Updated translation by Michael Piefel.
+
+2002-03-05 Jordi Mallach <jordi@sindominio.net>
+
+ * pl.po: Updated translation by Wojciech Kotwica.
+
+2002-02-20 Jordi Mallach <jordi@sindominio.net>
+
+ * nl.po: Updated translation by Guus Sliepen.
+
+2002-02-15 Jordi Mallach <jordi@sindominio.net>
+
+ * nb.po: Updated translation by Stig E Sandoe.
+
+2002-02-15 Jordi Mallach <jordi@sindominio.net>
+
+ * nb.po: Updated translation by Stig E Sandoe.
+
+2002-02-14 Jordi Mallach <jordi@sindominio.net>
+
+ * da.po: Updated translation by Keld Simonsen.
+
+2002-02-10 Jordi Mallach <jordi@sindominio.net>
+
+ * hu.po: Updated translation by Gergely Nagy.
+
+2002-02-07 Jordi Mallach <jordi@sindominio.net>
+
+ * uk.po, ru.po: Updated translations by Sergey A.
+ Ribalchenko.
+
+2002-02-06 Jordi Mallach <jordi@sindominio.net>
+
+ * hu.po: Updated translation by Gergely Nagy.
+
+2002-02-06 Jordi Mallach <jordi@sindominio.net>
+
+ * cs.po: Incomplete update by Václav Haisman.
+
+2002-01-27 Jordi Mallach <jordi@sindominio.net>
+
+ * it.po: Updated translation by Marco Colombo.
+
+2002-01-26 Jordi Mallach <jordi@sindominio.net>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+ * nn.po: Updated translation by Kjetil Torgrim Homme.
+ * de.po: Updated translation by Michael Piefel.
+
+2002-01-25 Jordi Mallach <jordi@sindominio.net>
+
+ * sv.po: Updated translation by Christian Rose.
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+
+2002-01-25 Jordi Mallach <jordi@sindominio.net>
+
+ * ca.po: Updated.
+ * es.po: Updated.
+
+2002-01-23 Jordi Mallach <jordi@sindominio.net>
+
+ * ca.po: Updated.
+ * es.po: Updated.
+
+2002-01-19 gettextize <bug-gnu-utils@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.10.40.
+ * cat-id-tbl.c: Remove file.
+ * stamp-cat-id: Remove file.
+
+2002-01-19 Jordi Mallach <jordi@sindominio.net>
+
+ * ca.po: Updated.
+ * es.po: Updated.
+
+2002-01-19 Jordi Mallach <jordi@sindominio.net>
+
+ * da.po: Updated translation by Keld Simonsen.
+
+2002-01-17 Jordi Mallach <jordi@sindominio.net>
+
+ * no.po: Removed, replaced by nn.po.
+ * nn.po: Updated translation by Kjetil Torgrim Homme.
+ * nb.po: New Norwegian bokmål translation by Stig E Sandoe.
+
+2002-01-12 Jordi Mallach <jordi@sindominio.net>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+
+2002-01-10 Jordi Mallach <jordi@sindominio.net>
+
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+
+2002-01-08 Jordi Mallach <jordi@sindominio.net>
+
+ * ru.po, uk.po: Updated translations by Sergey A.
+ Ribalchenko.
+ * fr.po: Updated translation by Jean-Philippe Guérard.
+
+2002-01-07 Jordi Mallach <jordi@sindominio.net>
+
+ * de.po: Updated translation by Michael Piefel.
+
+2002-01-07 Jordi Mallach <jordi@sindominio.net>
+
+ * sv.po: Updated translation by Christian Rose.
+
+2002-01-07 Jordi Mallach <jordi@sindominio.net>
+
+ * ca.po: Updated.
+ * es.po: Updated.
+
+
+$Id: ChangeLog 4195 2007-12-09 17:12:03Z jordi $
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644
index 0000000..319e869
--- /dev/null
+++ b/po/LINGUAS
@@ -0,0 +1,2 @@
+# List of available languages.
+bg ca cs da de es eu fi fr ga gl hu id it ms nb nl nn pl pt_BR ro ru rw sr sv tr uk vi zh_CN zh_TW
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644
index 0000000..ada8bb4
--- /dev/null
+++ b/po/Makefile.in.in
@@ -0,0 +1,317 @@
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+localedir = $(datadir)/locale
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
+
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in Makevars remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update
+
+.po.mo:
+ @echo "$(MSGFMT) -c -o $@ $<"; \
+ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+ @lang=`echo $* | sed -e 's,.*/,,'`; \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
+ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+ sed -e '/^#/d' $< > t-$@
+ mv t-$@ $@
+
+
+all: all-@USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
+ --files-from=$(srcdir)/POTFILES.in \
+ --copyright-holder='$(COPYRIGHT_HOLDER)'
+ test ! -f $(DOMAIN).po || { \
+ if test -f $(srcdir)/$(DOMAIN).pot; then \
+ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+ else \
+ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+ fi; \
+ else \
+ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+ fi; \
+ }
+
+$(srcdir)/$(DOMAIN).pot:
+ $(MAKE) $(DOMAIN).pot-update
+
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+ @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
+ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext"; then \
+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+ for file in $(DISTFILES.common); do \
+ $(INSTALL_DATA) $(srcdir)/$$file \
+ $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ else \
+ : ; \
+ fi
+install-data-no: all
+install-data-yes: all
+ $(mkinstalldirs) $(DESTDIR)$(datadir)
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkinstalldirs) $(DESTDIR)$$dir; \
+ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+ fi; \
+ done; \
+ done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext"; then \
+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+ else \
+ : ; \
+ fi
+installdirs-data-no:
+installdirs-data-yes:
+ $(mkinstalldirs) $(DESTDIR)$(datadir)
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkinstalldirs) $(DESTDIR)$$dir; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ fi; \
+ done; \
+ done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext"; then \
+ for file in $(DISTFILES.common); do \
+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ else \
+ : ; \
+ fi
+uninstall-data-no:
+uninstall-data-yes:
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ done; \
+ done
+
+check: all
+
+dvi info tags TAGS ID:
+
+mostlyclean:
+ rm -f remove-potcdate.sed
+ rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+ rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+ $(MAKE) update-po
+ @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \
+ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+ for file in $$dists; do \
+ if test -f $$file; then \
+ cp -p $$file $(distdir); \
+ else \
+ cp -p $(srcdir)/$$file $(distdir); \
+ fi; \
+ done
+
+update-po: Makefile
+ $(MAKE) $(DOMAIN).pot-update
+ $(MAKE) $(UPDATEPOFILES)
+ $(MAKE) update-gmo
+
+# General rule for updating PO files.
+
+.nop.po-update:
+ @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \
+ tmpdir=`pwd`; \
+ echo "$$lang:"; \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+ cd $(srcdir); \
+ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$lang.po failed!" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+ @:
+
+Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
+ $(SHELL) ./config.status
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
new file mode 100644
index 0000000..3796adb
--- /dev/null
+++ b/po/Makevars
@@ -0,0 +1,25 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --keyword=P_:1,2
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
+# package. (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.) Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright. The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Free Software Foundation, Inc.
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used. It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 0000000..5bfd68b
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,14 @@
+# $Id: POTFILES.in 3118 2005-11-09 00:34:52Z dolorous $
+# List of source files containing translatable strings.
+
+src/browser.c
+src/files.c
+src/global.c
+src/help.c
+src/nano.c
+src/prompt.c
+src/rcfile.c
+src/search.c
+src/text.c
+src/utils.c
+src/winio.c
diff --git a/po/Rules-quot b/po/Rules-quot
new file mode 100644
index 0000000..5f46d23
--- /dev/null
+++ b/po/Rules-quot
@@ -0,0 +1,42 @@
+# Special Makefile rules for English message catalogs with quotation marks.
+
+DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
+
+.SUFFIXES: .insert-header .po-update-en
+
+en@quot.po-update: en@quot.po-update-en
+en@boldquot.po-update: en@boldquot.po-update-en
+
+.insert-header.po-update-en:
+ @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
+ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
+ tmpdir=`pwd`; \
+ echo "$$lang:"; \
+ ll=`echo $$lang | sed -e 's/@.*//'`; \
+ LC_ALL=C; export LC_ALL; \
+ cd $(srcdir); \
+ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "creation of $$lang.po failed!" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi
+
+en@quot.insert-header: insert-header.sin
+ sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
+
+en@boldquot.insert-header: insert-header.sin
+ sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
+
+mostlyclean: mostlyclean-quot
+mostlyclean-quot:
+ rm -f *.insert-header
diff --git a/po/bg.gmo b/po/bg.gmo
new file mode 100644
index 0000000..633c741
--- /dev/null
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 0000000..24087de
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,2186 @@
+# Bulgarian translation of nano.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# Yavor Doganov <yavor@doganov.org>, 2005.
+# Anton Zinoviev <zinoviev@debian.org>, 2005,2006
+#
+# This file should be sent to translation@iro.umontreal.ca with the
+# following subject line: TP-Robot nano-VERSION.bg.po
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.9.99pre0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2006-08-25 00:56+0300\n"
+"Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n"
+"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Отиване в директориÑ"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Отменено"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Ðе може да Ñе излезе от %s в ограничен режим"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Грешка при четене на %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Ðе може да Ñе премине в горната директориÑ"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(дир)"
+
+# TODO: по-добър превод
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(родит.дир.)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "ТърÑене"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Зачитане на малки/големи]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Рег.израз]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Ðазад]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "ТърÑене отначало"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Това е единÑтвеното Ñъвпадение"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "ÐÑма въведен низ за Ñ‚ÑŠÑ€Ñене"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Ðе може да Ñе вмъкне файл извън %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "ÐÑма повече буфери за отварÑне на файлове"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Превключено на %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Ðов буфер"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Прочетен %lu ред (конвертиран от DOS и Mac формат)"
+msgstr[1] "Прочетени %lu реда (конвертирани от DOS и Mac формат)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "Прочетен %lu ред (конвертиран от DOS и Mac формат)"
+msgstr[1] "Прочетени %lu реда (конвертирани от DOS и Mac формат)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Прочетен %lu ред (конвертиран от Mac формат)"
+msgstr[1] "Прочетени %lu реда (конвертирани от Mac формат)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Прочетен %lu ред (конвертиран от Mac формат)"
+msgstr[1] "Прочетени %lu реда (конвертирани от Mac формат)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Прочетен %lu ред (конвертиран от DOS формат)"
+msgstr[1] "Прочетени %lu реда (конвертирани от DOS формат)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Прочетен %lu ред (конвертиран от DOS формат)"
+msgstr[1] "Прочетени %lu реда (конвертирани от DOS формат)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Прочетен %lu ред"
+msgstr[1] "Прочетени %lu реда"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Четене на файл"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Ðов файл"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "„%s“ не е намерен"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "„%s“ е директориÑ"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "„%s“ е файл за уÑтройÑтво"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Команда за изпълнение в нов буфер [от %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Команда за изпълнение [от %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Файл за вмъкване в Ð½Ð¾Ð²Ð¸Ñ Ð±ÑƒÑ„ÐµÑ€ [от %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Файл за вмъкване [от %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Клавишът е недопуÑтим в режим без буфери"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Ðе може да Ñе запише извън %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "Ðе може да Ñе Ð´Ð¾Ð±Ð°Ð²Ñ Ð½Ð¸Ñ‰Ð¾ към Ñимволна връзка, наÑтроена Ñ --nofollow"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, fuzzy, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Грешка при запиÑа на временен файл: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Твърде много резервни копиÑ?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Грешка при Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Грешка при запиÑа на временен файл: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Запазен е %lu ред"
+msgstr[1] "Запазени Ñа %lu реда"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS формат]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac формат]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Резервно копие]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "ПрикрепÑне на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚ в началото на файл"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "ПрикрепÑне на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚ в ÐºÑ€Ð°Ñ Ð½Ð° файл"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Запазване на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚ във файл"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Име на файла за прикрепÑне в началото му"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Име на файла за прикрепÑне в ÐºÑ€Ð°Ñ Ð¼Ñƒ"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Име на файл за запазване"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Файлът ÑъщеÑтвува, ПРЕЗÐПИСВÐÐЕ? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Запазване под РÐЗЛИЧÐО ИМЕ? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(повече)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"ÐатиÑнете „Enter“, за да продължи Ñтартирането на nano\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "ОтмÑна"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "ЗамÑна"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Без замÑна"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Зач. м/г"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Ðазад"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Рег.израз"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "ПредИÑтор."
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "СледИÑтор."
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Отиване на текÑÑ‚"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "КъдеEÑледв."
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Първи файл"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "ПоÑл. файл"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Към файловете"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS формат"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac формат"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "ДобавÑне в краÑ"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "ДобавÑне в нач."
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Резервно копие"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Изпълнение на команда"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Отиване в директориÑ"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Помощ"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Изход"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "ТърÑене"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "ПредСтр"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "СледвСтр"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Първи ред"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "ПоÑл. ред"
+
+#: src/global.c:487
+#, fuzzy
+msgid "Suspend"
+msgstr "Временно Ñпиране"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Ðач. абзац"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Край абзац"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "Пълно подравн."
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "ОпреÑнÑване"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Вмъкване на файл"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Отив. ред"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "ПодравнÑване на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð°Ð±Ð·Ð°Ñ†"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "ОтмÑна на текущата функциÑ"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Извежда тази помощна информациÑ"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "ЗатварÑне на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² буфер/Изход от nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Изход от nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Запазване на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð» на диÑка"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Вмъкване на друг файл в текущиÑ"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "ТърÑене на низ или регулÑрен израз"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "Отиване на Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¸Ñ ÐµÐºÑ€Ð°Ð½"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "Отиване на ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ ÐµÐºÑ€Ð°Ð½"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "ОтрÑзване на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€ÐµÐ´ и ÑъхранÑване в буфера за обмен"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "ОтрÑзване от буфера за обмен и поÑтавÑне в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€ÐµÐ´"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Показване на положението на курÑора"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Извикване на програмата за проверка на правопиÑа"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "ЗамÑна на низ или регулÑрен израз"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Отиване на поÑочен ред и Ñтълб"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Маркиране на текÑÑ‚ в позициÑта на курÑора"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "ПовтарÑне на поÑледното Ñ‚ÑŠÑ€Ñене"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "ОтрÑзване на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€ÐµÐ´ и ÑъхранÑване в буфера за обмен"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "ОтÑтъп вдÑÑно на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€ÐµÐ´"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Маха отÑтъпа на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€ÐµÐ´"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "Отиване един Ñимвол напред"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "Отиване един Ñимвол назад"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "Отиване напред Ñ ÐµÐ´Ð½Ð° дума"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "Отиване назад Ñ ÐµÐ´Ð½Ð° дума"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "Отиване на Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¸Ñ Ñ€ÐµÐ´"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "Отиване на ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ñ€ÐµÐ´"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "Отиване в началото на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€ÐµÐ´"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "Отиване в ÐºÑ€Ð°Ñ Ð½Ð° Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€ÐµÐ´"
+
+#: src/global.c:555
+#, fuzzy
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Отиване в началото на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð°Ð±Ð·Ð°Ñ†"
+
+#: src/global.c:557
+#, fuzzy
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Отиване в ÐºÑ€Ð°Ñ Ð½Ð° Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð°Ð±Ð·Ð°Ñ†"
+
+#: src/global.c:560
+#, fuzzy
+msgid "Go to the first line of the file"
+msgstr "Отиване в началото на файла"
+
+#: src/global.c:562
+#, fuzzy
+msgid "Go to the last line of the file"
+msgstr "Отиване в ÐºÑ€Ð°Ñ Ð½Ð° файла"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "Отиване при Ñъответната Ñкоба"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Превърта нагоре Ñ ÐµÐ´Ð¸Ð½ ред без да меÑти курÑора"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Превърта надолу Ñ ÐµÐ´Ð¸Ð½ ред без да меÑти курÑора"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Превключване на Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² буфер"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Превключване на ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² буфер"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Вмъкване на ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ ÐºÐ»Ð°Ð²Ð¸Ñˆ доÑловно"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Вмъкване на Ñимвол за Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸ курÑора"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Вмъкване на Ñимвол за нов ред при курÑора"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Изтриване на Ñимвола под курÑора"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Изтриване на Ñимвола влÑво от курÑора"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "ОтрÑзване от позициÑта на курÑора до ÐºÑ€Ð°Ñ Ð½Ð° файла"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "ПодравнÑване на Ñ†ÐµÐ»Ð¸Ñ Ñ„Ð°Ð¹Ð»"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "ПреброÑване на думите, редовете и знаците във файла"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "ОпреÑнÑване на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ ÐµÐºÑ€Ð°Ð½"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Зачитане малки/големи букви при Ñ‚ÑŠÑ€Ñене (вкл/изкл)"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Обратна поÑока на Ñ‚ÑŠÑ€Ñене"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Използване на регулÑрни изрази (вкл/изкл)"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Връща Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¸Ñ Ð½Ð¸Ð· за Ñ‚ÑŠÑ€Ñене/замÑна"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Връща ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð½Ð¸Ð· за Ñ‚ÑŠÑ€Ñене/замÑна"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Отиване във файлов браузър"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Запазване на файла в DOS формат (вкл/изкл)"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Запазване на файла в Mac формат (вкл/изкл)"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Вмъкване в ÐºÑ€Ð°Ñ Ð½Ð° файла (вкл/изкл)"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Вмъкване в началото на файла (вкл/изкл)"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Резервно копира ÑъщеÑтвуващи файлове (вкл/изкл)"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Изпълнение на външна команда"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Използване на нов буфер (вкл/изкл)"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Изход от Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Отиване при Ð¿ÑŠÑ€Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð» от ÑпиÑъка"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Отиване при поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» от ÑпиÑъка"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Отиване при поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» от ÑпиÑъка"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Отиване при Ð¿ÑŠÑ€Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð» от ÑпиÑъка"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Отиване в директориÑ"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "ЗатварÑне"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Запазване"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Подравн."
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "ОтварÑне"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "ОтрÑзване"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Изкл.подр."
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "ПоÑтавÑне"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Поз.курÑор"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "ПравопиÑ"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Избор на текÑÑ‚"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Копиране"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "ОтÑтъп"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Без отÑтъп"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Ðапред"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Ðазад"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Следваща дума"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Предишна дума"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Предишен ред"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Следващ ред"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Home"
+
+#: src/global.c:833
+msgid "End"
+msgstr "End"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Ðамиране на другата Ñкоба"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Превъртане нагоре"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Превъртане надолу"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Предишен файл"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Следващ файл"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "ДоÑловен вход"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Delete"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Backspace"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "Отр. до краÑ"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Брой на думи"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Режим на помощ"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "ПоÑтоÑнно показване на позициÑта на курÑора"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Използване на още един ред за редактиране"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Плавно превъртане"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Показване на интервали"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Синтактично оÑветÑване"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Интелигентен клавиш „Home“"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Ðвтоматичен отÑтъп"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "ОтрÑзване до краÑ"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Ðвтоматично пренаÑÑне"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Превръщане на табулации в интервали"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Запазване на резервни копиÑ"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Много файлови буфери"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Поддръжка на мишка"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Без конвертиране от DOS/Mac формат"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Временно Ñпиране"
+
+#: src/global.c:1399
+#, fuzzy
+msgid "Soft line wrapping"
+msgstr "Ðвтоматично пренаÑÑне"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Помощ за командата „ТърÑене“\n"
+"\n"
+" Въведете думите или Ñимволите, които иÑкате да Ñ‚ÑŠÑ€Ñите, и натиÑнете "
+"„Enter“. Ðко има Ñъвпадение за Ð²ÑŠÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚, на екрана ще Ñе покаже "
+"първото Ñъвпадение на Ñ‚ÑŠÑ€ÑÐµÐ½Ð¸Ñ Ð½Ð¸Ð·.\n"
+"\n"
+" ПредишниÑÑ‚ низ за Ñ‚ÑŠÑ€Ñене ще бъде показан в Ñкоби Ñлед подканването за "
+"Ñ‚ÑŠÑ€Ñене. Ðко натиÑнете „Enter“, без да въвеждате текÑÑ‚, ще Ñе извърши "
+"предишнто Ñ‚ÑŠÑ€Ñене. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Ðко Ñте избрали текÑÑ‚ и Ñлед това Ñ‚ÑŠÑ€Ñене и замÑна, ще бъдат заменÑни Ñамо "
+"ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð² Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚.\n"
+"\n"
+" Следните клавиши за доÑтъпни в режим „ТърÑене“:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Помощен текÑÑ‚ за „Отиване на ред“\n"
+"\n"
+" Въведете номера на реда, на който иÑкате да отидете, и натиÑнете „Enter“. "
+"Ðко има по-малък брой редове от номера, който Ñте въвели, ще отидете на "
+"поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ñ€ÐµÐ´ на файла.\n"
+"\n"
+" Следните клавишни комбинации Ñа налични в режим „Отиване на ред“:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Помощен текÑÑ‚ за „Вмъкване на файл“\n"
+"\n"
+" Ðапишете името на файла за вмъкване в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð±ÑƒÑ„ÐµÑ€ на позициÑта на "
+"курÑора.\n"
+"\n"
+" Ðко Ñте компилирали nano Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на много буфери и Ñте ги активирали Ñ "
+"флаговете -F или --multibuffer, комбинациÑта Meta-F или файла nanorc, файлът "
+"за вмъкване ще Ñе зареди в отделен буфер. Използвайте Meta-< и >, за да "
+"превключвате между буферите. "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Ðко иÑкате друг празен буфер, не въвеждайте име на файл или напишете "
+"неÑъщеÑтвуващо име и натиÑнете „Enter“.\n"
+"\n"
+" Следните клавишни комбинации Ñа налични в режим „Вмъкване на файл“:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Помощен текÑÑ‚ за „Запазване на файл“\n"
+"\n"
+" Въведете името, под което иÑкате да запазите файла, и натиÑнете „Enter“.\n"
+"\n"
+" Ðко Ñте избрали текÑÑ‚, ще бъдете подканени да запазите Ñамо избраната чаÑÑ‚ "
+"под отделен файл. С цел намалÑване на риÑка от презапиÑване на файла Ñ Ñ‡Ð°ÑÑ‚ "
+"от него, в този режим текущото име на файла не е по подразбиране.\n"
+"\n"
+" Следните клавишни комбинации Ñа налични в режим „Запазване на файл“:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Помощен текÑÑ‚ за „Файлов браузър“\n"
+"\n"
+" ФайловиÑÑ‚ браузър Ñе използва за визуално разглеждане на директорийната "
+"Ñтруктура и избиране на файл за четене или запиÑ. Може да използвате "
+"Ñтрелките или „Page Up/Page Down“ за придвижване из файловете, и „S“ или "
+"„Enter“, за да изберете файл или директориÑ. За да отидете едно ниво нагоре, "
+"изберете директориÑта „..“ в горната чаÑÑ‚ на ÑпиÑъка.\n"
+"\n"
+" Следните клавишни комбинации Ñа налични във Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Помощ за командата „ТърÑене“\n"
+"\n"
+" Въведете думите или Ñимволите, които иÑкате да Ñ‚ÑŠÑ€Ñите, и натиÑнете "
+"„Enter“. Ðко има Ñъвпадение за Ð²ÑŠÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚, на екрана ще Ñе покаже "
+"първото Ñъвпадение на Ñ‚ÑŠÑ€ÑÐµÐ½Ð¸Ñ Ð½Ð¸Ð·.\n"
+"\n"
+" ПредишниÑÑ‚ низ за Ñ‚ÑŠÑ€Ñене ще бъде показан в Ñкоби Ñлед подканването за "
+"Ñ‚ÑŠÑ€Ñене. Ðко натиÑнете „Enter“, без да въвеждате текÑÑ‚, ще Ñе извърши "
+"предишното Ñ‚ÑŠÑ€Ñене.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+"Следните функционални клавиши Ñа доÑтъпни в режим „ТърÑене“:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Помощен текÑÑ‚ за „Отиване в директориÑ“ на браузъра\n"
+"\n"
+" Въведете името на директориÑта, коÑто иÑкате да разглеждате.\n"
+"\n"
+" Ðко автоматичното допълване не е било изключено, може да използвате клавиша "
+"„Tab“ за (евентуално) автоматично допълване на името на директориÑта.\n"
+"\n"
+" Следните клавишни комбинации Ñа налични в режим „Отиване в директориÑ“ на "
+"браузъра:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Помощен текÑÑ‚ за проверка на правопиÑа\n"
+"\n"
+" Програмата за проверка на правопиÑа проверÑва правопиÑа на Ñ†ÐµÐ»Ð¸Ñ Ñ‚ÐµÐºÑÑ‚ в "
+"Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð». Когато бъде намерена непозната дума, Ñ‚Ñ Ñе оÑветÑва и Ñе "
+"предлага да бъде редактирана. След това ще бъдете подканени да замените "
+"вÑÑко Ñъвпадение на дадената Ñгрешена дума в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð», или в Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ "
+"текÑÑ‚, ако има такъв.\n"
+"\n"
+" Може да Ñе използват Ñледните допълнителни функционални клавиши:\n"
+"\n"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Помощен текÑÑ‚ за „Изпълнение на команда“\n"
+"\n"
+" Това меню позволÑва да вмъкнете в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð±ÑƒÑ„ÐµÑ€ (или в нов буфер в режим Ñ "
+"много файлови буфери) изхода от команда, изпълнена от обвивката. Ðко иÑкате "
+"нов празен буфер, не въвеждайте никаква команда.\n"
+"\n"
+" Може да Ñе използват Ñледните функционални клавиши:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+" Помощен текÑÑ‚ на nano\n"
+"\n"
+" Редакторът nano е проектиран да емулира функционалноÑтта и лекотата за "
+"работа на редактора UW Pico. Екранът на редактора има четири оÑновни дÑла. "
+"ГорниÑÑ‚ ред показва верÑиÑта на програмата, името на файла, който Ñе "
+"редактира, и дали той е бил променÑн. След това е Ð³Ð»Ð°Ð²Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† на "
+"редактора, показващ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð». Лентата за ÑÑŠÑтоÑнието е третиÑÑ‚ ред "
+"от долу нагоре и е предназначен за важни ÑъобщениÑ. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Долните два реда показват най-чеÑто използваните бързи клавиши в редактора.\n"
+"\n"
+"СиÑтемата за отбелÑзване на бързи клавиши е Ñледната: Комбинации Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ° "
+"„Control“ Ñе отбелÑзват Ñ Ð´Ð¸Ð°ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡ÐµÐ½ Ñимвол (^) и могат да бъдат въвеждани "
+"Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ° „Control“ (Ctrl) или Ñ Ð´Ð²Ð¾Ð¹Ð½Ð¾ натиÑкане на клавиша „Escape“ (Esc). "
+"Комбинации Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ° „Escape“ Ñе отбелÑзват ÑÑŠÑ Ñимвола „Meta“ (M) и могат "
+"да бъдат въвеждани Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸Ñ‚Ðµ „Esc“, „Alt“ или „Meta“ в завиÑимоÑÑ‚ от "
+"наÑтройките на клавиатурата. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Двойното натиÑкане на клавиша „Esc“, поÑледвано Ñ Ð²ÑŠÐ²ÐµÐ¶Ð´Ð°Ð½Ðµ на трицифрен "
+"номер от 000 до 255, ще вмъкне Ñимвола ÑÑŠÑ Ñъответната ÑтойноÑÑ‚. Следните "
+"клавишни комбинации за налични в Ð³Ð»Ð°Ð²Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† на редактора, като "
+"алтернативните Ñа показани в Ñкоби:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "(вкл/изкл)"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Ðепозволен клавиш в режим на преглед"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Буферът е запиÑан в %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Буферът не е запиÑан в %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Буферът не е запиÑан: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Размерът на прозореца е твърде малък за nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Използване: nano [ОПЦИИ] [[+РЕД,СТЪЛБ]] ФÐЙЛ]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "ОпциÑ\t\tДълга опциÑ\t\tЗначение\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "ОпциÑ\t\tЗначение\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Показва тази Ñправка"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+РЕД,СТЪЛБ"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Започва от ред РЕД, Ñтълб СТЪЛБ"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "С интелигентен клавиш „Home“"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Резервно копира ÑъщеÑтвуващи файлове"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <дир>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<дир>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° резервните копиÑ"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Удебелен шрифт вмеÑто инверÑно видео"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Прави въведените табулации на интервали"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "ПозволÑва много файлови буфери"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Запазва/чете иÑториÑта на Ñ‚ÑŠÑ€Ñене/замÑна"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Пренебрегва конфиг. файлове nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Коригира объркване от Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¸Ñ ÐºÐ»Ð°Ð².блок"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Без знак за нов ред в ÐºÑ€Ð°Ñ Ð½Ð° файловете"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Без преобразуване от DOS/Mac формат"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Използване още един ред за редактиране"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <низ>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<низ>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Ðиз за цитиране"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Ограничен режим"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#Ñтълбове>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#Ñтълбове>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Широчината на табулациÑта - #Ñтълбове"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Бързо изключване на лентата за ÑÑŠÑтоÑние"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Показва верÑиÑта и излиза"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Открива прецизно междуÑловните граници"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <низ>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<низ>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "ПоÑочва ÑинтакÑÐ¸Ñ Ð·Ð° оцветÑване"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "ПоÑтоÑнно показва позициÑта на курÑора"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Коригира объркване на „Backspace/Delete“"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Ðвтоматичен отÑтъп при нови редове"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "ОтрÑзване от курÑора до ÐºÑ€Ð°Ñ Ð½Ð° реда"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Ðе Ñледва Ñимволните връзки, замеÑтва ги"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "С използване на мишка"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <дир>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<дир>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Работна директориÑ"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Запазва клавишите „XON“(^Q) и „XOFF“(^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#Ñтълбове>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#Ñтълбове>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "ПренаÑÑ Ñ€ÐµÐ´Ð¾Ð²ÐµÑ‚Ðµ при ширина #Ñтълбове"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <прог>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<прог>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Ðлтернативен правопиÑен коректор"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "При изход запазва файла без питане"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Режим на преглед (Ñамо за четене)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Без пренаÑÑне на дългите редове"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Без двата поÑледни реда Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "ПозволÑва временно Ñпиране"
+
+#: src/nano.c:924
+#, fuzzy
+msgid "Enable soft line wrapping"
+msgstr "Ðвтоматично пренаÑÑне"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(не Ñе използват,за ÑъвмеÑтимоÑÑ‚ Ñ Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano, верÑÐ¸Ñ %s (компилиран в %s чаÑа на %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr ""
+" Е-поща: nano@nano-editor.org\tИнтернет адреÑ: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Компилирани опции:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "За Ñъжаление поддръжката за тази Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ðµ изключена"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"Запазване на Ð¿Ñ€Ð¾Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÑ„ÐµÑ€? (ПРИ ОТГОВОР „Ðе“ ПРОМЕÐИТЕ ЩЕ СЕ ЗÐГУБЯТ)"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Получи Ñе SIGHUP или SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Използвайте „fg“, за да Ñе върнете в nano.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "активирано"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "деактивирано"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "ÐеизвеÑтна команда"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "„XON“ е пренебрегнат, мън-мън."
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "„XOFF“ е пренебрегнат, мън-мън."
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "ПоиÑканиÑÑ‚ размер на Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ñ â€ž%s“ е неправилен"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "ПоиÑканиÑÑ‚ размер „%s“ за макÑимална дължина на редове е неправилен"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "YyДд"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "NnÐн"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "AaВв"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Да"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Ð’Ñички"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Ðе"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Грешка в %s на ред %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Ðргументът „%s“ има незатворенa \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr ""
+"Ðизовете за регулÑрни изрази Ñ‚Ñ€Ñбва да започват и завършват ÑÑŠÑ Ñимвола \""
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Ðеправилен регулÑрен израз \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "ЛипÑва името на ÑинтакÑиÑа"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "СинтакÑиÑÑŠÑ‚ „none“ е запазен"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "СинтакÑиÑÑŠÑ‚ „default“ не приема разширениÑ"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "ЛипÑва името на ÑинтакÑиÑа"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr ""
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "ÐеуÑпех при извикване на „%s“"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Цветът „%s“ е неизвеÑтен.\n"
+"ДопуÑтими цветове Ñа „green“, „red“, „blue“,\n"
+"„white“, „yellow“, „cyan“, „magenta“ и\n"
+"„black“, Ñ Ð²ÑŠÐ·Ð¼Ð¾Ð¶Ð½Ð° предÑтавка „bright“\n"
+"за цветове на преден план."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Ðе може да бъде добавена команда за цвÑÑ‚ без Ñинтактична команда"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "ЛипÑва името на цвета"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Цветът за фон „%s“ не може да бъде Ñрък"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "ЛипÑва низът за регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð·"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "„start=“ изиÑква ÑъответÑтващ „end=“"
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Ðе може да бъде добавена команда за цвÑÑ‚ без Ñинтактична команда"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Командата „%s“ не е позволена във вмъкван файл"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "СинтакÑиÑÑŠÑ‚ „%s“ нÑма команди за цветове"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Командата „%s“ е неизвеÑтна"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "ЛипÑващ флаг"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "ОпциÑта „%s“ изиÑква аргумент"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "ОпциÑта не е правилен многобайтов низ"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Ðеобходими Ñа Ñимволи, които не Ñа празни"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Ðеобходими Ñа два Ñимвола Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð° ширина"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Ðе може да Ñе отмени флаг „%s“"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "ÐеизвеÑтен флаг „%s“"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Ðе може да бъде намерена домашната директориÑ! ÐÑ…!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "„%.*s%s“ не е намерен"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (за замÑна) в Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (за замÑна)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "ЗамÑна на това Ñъвпадение?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "ЗамÑна Ñ"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Заменено е %lu Ñъвпадение"
+msgstr[1] "Заменени Ñа %lu ÑъвпадениÑ"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Въведете номер на ред и Ñтълб"
+
+#: src/search.c:1061
+#, fuzzy
+msgid "Invalid line or column number"
+msgstr "Въведете номер на ред и Ñтълб"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Ðе е Ñкоба"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "ÐÑма Ñъвпадаща Ñкоба"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "УÑтавено е маркиране"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Отменено е маркирането"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "Следващ файл"
+
+#: src/text.c:489 src/text.c:628
+#, fuzzy
+msgid "line wrap"
+msgstr "Ðвтоматично пренаÑÑне"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "Следващ ред"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr " (за замÑна)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "ÐеуÑпех при pipe"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "ÐеуÑпех при fork"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Ðеправилен низ за цитиране %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Сега може да Ñе отмени подравнÑването!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Редактиране на замÑна"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "ÐеуÑпех при Ñъздаването на pipe"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Създаване на ÑпиÑък ÑÑŠÑ Ñгрешени думи, изчакайте..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Ðе може да Ñе определи размера на буфера на pipe"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Грешка при извикване на „spell“"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Грешка при извикване на „sort -f“"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Грешка при извикване на „uniq“"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Проверката на правопиÑа завърши"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Грешка при извикване на „%s“"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "ÐеуÑпех при проверката на правопиÑа: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "ÐеуÑпех при проверката на правопиÑа: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sДуми: %lu Редове: %ld Знаци: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "Ð’ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano е в недоÑтиг на памет!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Вход уникод"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Променен"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Преглед"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "ДИР:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Файл:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "ред %ld/%ld (%d%%), Ñтълб %lu/%lu (%d%%), Ñимвол %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "ТекÑтов редактор nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "верÑиÑ"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Създадено от:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Специални благодарноÑти на:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "Ð¤Ð¾Ð½Ð´Ð°Ñ†Ð¸Ñ â€žÐ¡Ð²Ð¾Ð±Ð¾Ð´ÐµÐ½ Ñофтуер“"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "За ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "и вÑички оÑтанали, които Ñме забравили..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Благодарим, че използвате nano!"
+
+#~ msgid "Space"
+#~ msgstr "Space"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Хайде, бъдете разумни"
+
+#~ msgid "Indent marked text"
+#~ msgstr "ОтÑтъп на Ð¼Ð°Ñ€ÐºÐ¸Ñ€Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚"
+
+#~ msgid "Unindent marked text"
+#~ msgstr "Без отÑтъп на Ð¼Ð°Ñ€ÐºÐ¸Ñ€Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚"
+
+#~ msgid "Use more space for editing"
+#~ msgstr "Използва повече мÑÑто за редактиране"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "ПренаÑÑ Ñ€ÐµÐ´Ð¾Ð²Ðµ Ñ Ð´ÑŠÐ»Ð¶Ð¸Ð½Ð° > #Ñтълбове"
+
+#~ msgid "No lines selected, nothing to do!"
+#~ msgstr "ÐÑма избрани редове, нÑма нищо за правене!"
+
+#~ msgid "Refusing zero-length regex match"
+#~ msgstr "Отказване да Ñе ÑъпоÑÑ‚Ð°Ð²Ñ Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрен израз Ñ Ð½ÑƒÐ»ÐµÐ²Ð° дължина"
+
+#~ msgid "Make the current search/replace case (in)sensitive"
+#~ msgstr "(Ðе)зачитане на малки/големи букви"
+
+#~ msgid "Make the current search/replace go backwards"
+#~ msgstr "ТърÑене/замÑна в обратен ред"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "ДобавÑне в началото на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð»"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Резервно копие на оригинала при запазване"
+
+#~ msgid "Insert into new buffer"
+#~ msgstr "Вмъкване в нов буфер"
+
+#~ msgid "-T [#cols]"
+#~ msgstr "-T [#Ñтълбове]"
+
+#~ msgid "--tabsize=[#cols]"
+#~ msgstr "--tabsize=[#Ñтълбове]"
+
+#~ msgid "Requested tab size %s invalid"
+#~ msgstr "ИзиÑкваниÑÑ‚ размер на Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ñ %s е неправилен"
+
+#~ msgid "Requested fill size %s invalid"
+#~ msgstr "ЗададениÑÑ‚ размер за макÑимална дължина на редове %s е неправилен"
+
+#~ msgid "Prepending to %s failed: %s"
+#~ msgstr "ÐеуÑпех при прикрепÑнето към %s: %s"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "ОтварÑне на менюто за помощ"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "ТърÑене на текÑÑ‚ в редактора"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "ЗамÑна на текÑÑ‚ в редактора"
+
+#~ msgid "Find matching bracket"
+#~ msgstr "ÐÑма ÑъответÑтваща Ñкоба"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE,COLUMN] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Употреба: nano [+РЕД,СТЪЛБ] [дълга Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° GNU] [опциÑ] [файл]\n"
+#~ "\n"
+
+#~ msgid "Duplicate syntax name %s"
+#~ msgstr "Дублирано име на ÑинтакÑÐ¸Ñ %s"
+
+#~ msgid "Could not create temp file: %s"
+#~ msgstr "ÐеуÑпех при Ñъздаването на временен файл: %s"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Ðамиране на друга Ñкоба"
+
+#~ msgid "--quickblank"
+#~ msgstr "--quickblank"
+
+#~ msgid "Word Count in Selection"
+#~ msgstr "Брой думи в Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚"
diff --git a/po/boldquot.sed b/po/boldquot.sed
new file mode 100644
index 0000000..4b937aa
--- /dev/null
+++ b/po/boldquot.sed
@@ -0,0 +1,10 @@
+s/"\([^"]*\)"/“\1â€/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“â€/""/g
+s/“/“/g
+s/â€/â€/g
+s/‘/‘/g
+s/’/’/g
diff --git a/po/ca.gmo b/po/ca.gmo
new file mode 100644
index 0000000..6cff23c
--- /dev/null
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
new file mode 100644
index 0000000..ce39359
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,2509 @@
+# Catalan messages for the GNU nano editor.
+# Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same licence as the nano package.
+# Jordi Mallach <jordi@gnu.org>, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009.
+# Miquel Vidal <miquel@sindominio.net>, 2001.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.1.11pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2009-09-19 13:28+0200\n"
+"Last-Translator: Jordi Mallach <jordi@gnu.org>\n"
+"Language-Team: Catalan <ca@dodds.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!=1;\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Vés a un directori"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Cancel·lat"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "No es pot anar fora de %s en mode restringit"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "S'ha produït un error en llegir %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "No es pot ascendir de directori"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(dir)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(directori pare)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Cerca"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Maj/Min]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [ExpReg]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Cap Enrere]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Recerca recomençada"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Aquesta és la única coincidència"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "No hi ha cap patró de recerca actual"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "No es poden inserir fitxers des de fora de %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "No hi ha més búfers de fitxer oberts"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "S'ha canviat a %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Nou búfer"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "%lu línia llegida (convertida des del format DOS i Mac)"
+msgstr[1] "%lu línies llegides (convertides des del format DOS i Mac)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"%lu línia llegida (convertida des del format DOS i Mac - Avís: no hi ha "
+"permís d'escriptura)"
+msgstr[1] ""
+"%lu línies llegides (convertides des del format DOS i Mac - Avís: no hi ha "
+"permís d'escriptura)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "%lu línia llegida (convertida des del format Mac)"
+msgstr[1] "%lu línies llegides (convertides des del format Mac)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"%lu línia llegida (convertida des del format Mac - Avís: no hi ha permís "
+"d'escriptura)"
+msgstr[1] ""
+"%lu línies llegides (convertides des del format Mac - Avís: no hi ha permís "
+"d'escriptura)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "%lu línia llegida (convertida des del format DOS)"
+msgstr[1] "%lu línies llegides (convertides des del format DOS)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"%lu línia llegida (convertida des del format DOS - Avís: no hi ha permís "
+"d'escriptura)"
+msgstr[1] ""
+"%lu línies llegides (convertides des del format DOS - Avís: no hi ha permís "
+"d'escriptura)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "%lu línia llegida"
+msgstr[1] "%lu línies llegides"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "S'està llegint el fitxer"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Nou fitxer"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "«%s» no trobat"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "«%s» és un directori"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "«%s» és un fitxer de dispositiu"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Fitxer a executar a un nou búfer [des de %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Ordre a executar [des de %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Fitxer a inserir a un nou búfer [des de %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Fitxer a inserir [des de %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Tecla il·legal en mode no-multibuffer"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "No es pot escriure fora de %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"No es pot avantposar o afegir a un enllaç simbòlic amb --nofollow establert"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "S'ha produït un error en escriure la còpia de seguretat %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Massa fitxers de còpia de seguretat?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "S'ha produït un error en escriure %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "S'ha produït un error en escriure un fitxer temporal: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "S'ha escrit %lu línia"
+msgstr[1] "S'han escrit %lu línies"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [Format DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Format Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Còpia de seguretat]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Avantposa sel·lecció a un fitxer"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Afegeix la sel·lecció a un fitxer"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Escriu la sel·lecció a un fitxer"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Nom del fitxer en el qual avantposar"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Nom del fitxer en el qual afegir"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Nom del fitxer a escriure"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "El fitxer existeix, el voleu SOBREESCRIURE? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Voleu desar el fitxer sota un NOM DIFERENT? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "S'ha modificat el fitxer des de que l'heu obert, voleu desar-lo?"
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(més)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Premeu Intro per a continuar carregant nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Reemplaça"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "No reemplaces"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Maj/Min"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Cap Enrere"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Expreg"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "HistPrèv"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "HistSeg"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Vés al text"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "On és la següent"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Primer fitxer"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Últim fitxer"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "A fitxers"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Format DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Format Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Afegeix"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Avantposa"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Fes còpia de seguretat"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Executa una ordre"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Vés a directori"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Ajuda"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Surt"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Cerca"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Pàg Ant"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Pàg Seg"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Primera línia"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Última línia"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Suspèn"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Princ de par"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Final de par"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "JustCompl"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Refresca"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Insereix un fitxer"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Vés a línia"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Justifica el paràgraf actual"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Cancel·la la funció actual"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Mostra aquest text d'ajuda"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Tanca el búfer de fitxer actual / Surt del nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Surt del nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Escriu el fitxer actual al disc"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Insereix un altre fitxer dins de l'actual"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Cerca una cadena o expressió regular"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Vés a la pàgina anterior"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Vés a la pàgina següent"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Retalla la línia actual i desa-la al cutbuffer"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Enganxa el cutbuffer a la línia actual"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Mostra la posició del cursor"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Invoca el corrector ortogràfic, si està disponible"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Reemplaça una cadena o una expressió regular"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Vés a un número de línia i columna"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Marca text a la posició del cursor"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Repeteix l'última recerca"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Copia la línia actual i emmagatzema-la al cutbuffer"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Ajusta el fitxer actual"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Desajusta el fitxer actual"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Desfés l'última operació"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Refés l'última operació"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Vés endavant un caràcter"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Vés enrere un caràcter"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Vés endavant una paraula"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Vés enrere una paraula"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Vés a la línia anterior"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Vés a la línia següent"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Vés al principi de la línia actual"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Vés al final de la línia actual"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr ""
+"Vés al principi del paràgraf actual; posteriorment del paràgraf anterior"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Vés al final del paràgraf actual; posteriorment del paràgraf següent"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Vés a la primera línia del fitxer"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Vés a l'última línia del fitxer"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Vés a la clau corresponent"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Desplaça amunt una línia sense desplaçar el cursor"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Desplaça avall una línia sense desplaçar el cursor"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Canvia a l'anterior búfer de fitxer"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Canvia al següent búfer de fitxer"
+
+# Verbatim -> textualment segons un diccionari online.
+# S'accepten altres propostes. jm
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Insereix la següent premuda de tecla textualment"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Insereix una tabulació a la posició del cursor"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Insereix una línia nova a la posició del cursor"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Suprimeix el caràcter sota el cursor"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Suprimeix el caràcter a l'esquerra del cursor"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Retalla des de la posició del cursor al final del fitxer"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Justifica el fitxer sencer"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Compta el nombre de paraules, línies i caràcters"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Redibuixa la pantalla actual"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Suspèn l'editor (si la suspensió és habilitada)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Commuta la sensibilitat a majúscules de la cerca"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Inverteix la direcció de la cerca"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Commuta l'ús d'expressions regulars"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Recupera la cadena de cerca/reemplaça anterior"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Recupera la cadena de cerca/reemplaça següent"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Vés al navegador de fitxers"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Commuta l'ús del format DOS"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Commuta l'ús del format Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Commuta l'afegiment"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Commuta l'avantposat"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Commuta la creació d'una còpia de seguretat del fitxer original"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Executa una ordre externa"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Commuta l'ús d'un búfer nou"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Surt del navegador de fitxers"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Vés al primer fitxer de la llista"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Vés a l'últim fitxer de la llista"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Vés a l'últim fitxer de la llista"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Vés al primer fitxer de la llista"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Vés al directori"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Tanca"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Desa"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Justifica"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Llegeix"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Retalla"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Desjustifica"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Destalla el text"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Pos Act"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Ortografia"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Marca text"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Copia text"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Sagna text"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Desagna text"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Desfés"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Refés"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Endavant"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Enrere"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Paraula següent"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Paraula anterior"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Ant Línia"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Seg Línia"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Inici"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Fi"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Troba la clau corresponent"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Desplaça amunt"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Desplaça avall"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Anterior fitxer"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Següent fitxer"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Entrada textual"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Retorn"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Suprimeix"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Retrocés"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "RetallaFinsFinal"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Compte de paraules"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Mode ajuda"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Visualització constant de la posició del cursor"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Utilitza una línia més per a editar"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Desplaçament suau"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Mostra l'espai en blanc"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Resaltat de sintaxi en color"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Tecla «Inici» intel·ligent"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Sagna automàticament"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Retalla fins al final"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Ajustament de línies llargues"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Conversió de les tabulacions introduïdes a espais"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Fitxers de còpia de seguretat"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Múltiples búfers de fitxers"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Suport per a ratolí"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Sense conversió des del format DOS/Mac"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Suspensió"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "Ajustament de línies suau"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Text d'ajuda per a l'ordre Cerca\n"
+"\n"
+" Introduïu les paraules o caràcters que voleu cercar i premeu Retorn. Si hi "
+"ha una coincidència per a el text que heu introduït, la pantalla "
+"s'actualitzarà al lloc on està la coincidència més propera de la cadena "
+"cercada.\n"
+"\n"
+" La cadena de la recerca anterior es mostrarà entre claudàtors després de "
+"l'indicatiu de recerca. Prémer Retorn sense introduir cap text durà a terme "
+"l'anterior recerca. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+" Si heu seleccionat text amb la marca i després feu una recerca amb "
+"reemplaç, només les coincidències al text seleccionat seran reemplaçades.\n"
+"\n"
+" Les següents tecles de funció estan disponibles en el mode Cerca:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Text d'ajuda d'anar a línia\n"
+"\n"
+" Introduïu el número de la línia a la qual voleu anar i premeu Retorn. Si hi "
+"ha menys línias de text que el número que heu introduit, el cursor es mourà "
+"a la última línia del fitxer.\n"
+"\n"
+" Les següents tecles de funció estan disponibles en el mode anar a línia:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Text d'ajuda d'insereix fitxer\n"
+"\n"
+" Escriviu el nom del fitxer a afegir en el búfer actual en la posició actual "
+"del cursor.\n"
+"\n"
+" Si s'ha compilat nano amb suport per a múltiples fitxers i heu habilitat "
+"els búfers múltiples amb les opcions -F o --multibuffer, l'interruptor Meta-"
+"F o amb un fitxer nanorc, la inserció d'un fitxer farà que es carregue en un "
+"búfer diferent (feu servir Meta-< i > per a canviar de búfers de fitxer). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+" Si necessiteu un altre búfer en blanc, no inseriu cap nom de fitxer o "
+"escriviu el nom d'un fitxer no existent en l'indicatiu i premeu Retorn.\n"
+"\n"
+" Les següents tecles de funció estan disponibles en el mode insereix "
+"fitxer:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Text d'ajuda de desa el fitxer\n"
+"\n"
+" Escriviu el nom amb el que voleu desar el fitxer actual i premeu Retorn per "
+"a desar-ho.\n"
+"\n"
+" Si heu seleccionat text amb la marca, s'us preguntarà si voleu desar només "
+"la porció marcada a un fitxer diferent. Per a reduir la possibilitat de "
+"sobreescriure el fitxer actual amb només una part d'ell, el nom del fitxer "
+"actual no és el predeterminat en aquest mode.\n"
+"\n"
+" Les següents tecles de funció estan disponibles en el mode desa el fitxer:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Text d'ajuda del navegador de fitxers\n"
+"\n"
+" El navegador de fitxers s'utilitza per a navegar visualment l'estructura "
+"del directori per a seleccionar un fitxer per a lectura o escriptura. Podeu "
+"fer servir els cursors o Re/Av Pag per a navegar per els fitxers i S o Intro "
+"per a triar el fitxer seleccionat o entrar dins del directori seleccionat. "
+"Per a pujar un nivell, seleccioneu el directori «..» en la part superior de "
+"la llista de fitxers.\n"
+"\n"
+" Les següents tecles de funció estan disponibles en el navegador de "
+"fitxers:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Text d'ajuda per a l'ordre Cerca d'ordres\n"
+"\n"
+" Introduïu les paraules o caràcters que voleu cercar i premeu Retorn. Si hi "
+"ha una coincidència per a el text que heu introduït, la pantalla "
+"s'actualitzarà al lloc on està la coincidència més propera de la cadena "
+"cercada.\n"
+"\n"
+" La cadena de la recerca anterior es mostrarà entre claudàtors després de "
+"l'indicatiu de recerca. Prémer Retorn sense introduir cap text durà a terme "
+"l'anterior recerca.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Les tecles de funció següents són disponibles al mode de cerca del "
+"navegador:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Text d'ajuda d'«anar a un directori» del navegador\n"
+"\n"
+" Introduïu el nom del directori pel qual voleu navegar.\n"
+"\n"
+" Si el completat amb el tabulador no està desactivat, podeu fer servir la "
+"tecla Tab per a (intentar) completar automàticament el nom del directori.\n"
+"\n"
+" Les següents tecles de funció estan disponibles en el mode del navegador "
+"«anar a un directori»:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Text d'ajuda del corrector d'ortografia\n"
+"\n"
+" El corrector d'ortografia comprova l'ortografia de tot el text al fitxer "
+"actual. Quan es troba una paraula desconeguda, aquesta es ressalta i es pot "
+"editar una substitució. Després preguntarà si es vol reemplaçar totes les "
+"coincidències d'eixa paraula mal escrita al fitxer actual, o, si heu "
+"seleccionat text amb la marca, al text marcat.\n"
+"\n"
+" Les següents tecles de funció estan disponibles en el mode corrector "
+"d'ortografia:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Text d'ajuda d'Executa una ordre\n"
+"\n"
+" Aquest mode us permet inserir l'eixida d'una ordre executada per "
+"l'intèrpret al búfer actual (o un nou búfer al mode múltiples búfers de "
+"fitxer). Si necessiteu un altre búfer en blanc, no introduïu cap ordre.\n"
+"\n"
+" Les següents tecles de funció estan disponibles al mode Executa una ordre:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Text d'ajuda de nano\n"
+"\n"
+" L'editor nano està dissenyat per a emular la funcionalitat i la facilitat "
+"d'ús del Pico, l'editor de text de la UW. Hi ha quatre seccions a l'editor: "
+"la línia superior mostra la versió del programa, el nom del fitxer editat i "
+"si el fitxer ha estat o no modificat. La finestra principal d'edició mostra "
+"el fitxer que s'està editant. La línia d'estat és la tercera per la part "
+"inferior i mostra missatges importants. Les últimes dues línies mostren les "
+"dreceres més utilitzades a l'editor."
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Les dos línies inferiors mostren les dreceres més usades a l'editor.\n"
+"\n"
+" La notació de les dreceres és la següent: les sequències amb la tecla "
+"Control estan anotades amb el símbol circumflex (^) i s'introdueixen "
+"mitjançant la tecla Control o prement la tecla Escape (Esc) dos vegades. Les "
+"seqüències amb tecles d'escapada estan anotades amb el símbol Meta (M) i "
+"s'hi pot accedir mitjançant les tecles Esc, Alt o Meta, tot depenent de la "
+"configuració del vostre teclat. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"També, prement Esc dos vegades i després introduint un número de tres xifres "
+"del 000 al 255 introduirà el caràcter amb el valor corresponent. Les "
+"següents combinacions estan disponibles a la finestra principal. Les tecles "
+"alternatives estan representades entre parèntesi:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "habilita/inhabilita"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "La tecla és il·legal al mode visualització"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"S'ha escrit el búfer en %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"No s'ha escrit el búfer a %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"No s'ha escrit el búfer: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "La mida de la terminal és massa petita per a nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr "Forma d'ús: nano [OPCIONS] [[+LÃNIA,COLUMNA] FITXER]...\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Opció\t\tOpció llarga GNU\tSignificat\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Opció\t\tSignificat\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Mostra aquest missatge"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+LÃNIA,COLUMNA"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Comença en la línia número LÃNIA, columna COLUMNA"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Habilita la tecla «inici» intel·ligent"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Fes còpies de seguretat dels fitxers existents"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <dir>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<dir>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Directori on desar els fitxers de còpia de seguretat únics"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Utilitza negreta en comptes de text amb els colors invertits"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Converteix les tabulacions introduïdes a espais"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Habilita múltiples búfers de fitxers"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Registra i llegeix la història de cerca/reemplaça"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "No faces servir els fitxers nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Arregla el problema de confusió del teclat numèric"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "No afegeixes retorns de carro al final dels fitxers"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "No converteixes des del format DOS/Mac"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Utilitza una línia més per a editar"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <str>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<cad>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Marcador de cita"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Mode restringit"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Desplaça't per línies en lloc de mitges pantalles"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#cols>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#cols>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Estableix l'amplada de tab a #cols columnes"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Neteja la barra d'estat ràpidament"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Imprimeix informació sobre la versió i surt"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Detecta els límits entre paraules amb més detall"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <cad>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<cad>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Definició de sintaxi a utilitzar per a colorejar"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Mostra contínuament la posició del cursor"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Arregla el problema de confusió entre Esborra/Suprimeix"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Sagna automàticament noves línies"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Retalla des del cursor al final de línia"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "No segueixes enllaços simbòlics, sobreescriu-los"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Habilita l'ús del ratolí"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <dir>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<dir>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Estableix directori d'operació"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Preserva les tecles XON (^Q) i XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "Omet silenciosament problemes d'inici com errors al fitxer rc"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#cols>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#cols>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Estableix el punt d'ajustament a la columna #cols"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Habilita un corrector alternatiu"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Desa automàticament en sortir, no preguntes"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "Permet el desfer genèric [EXPERIMENTAL]"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Mode de visualització (només lectura)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "No ajustes les línies llargues"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "No mostres les dues línies d'ajuda"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Habilita la suspensió"
+
+#: src/nano.c:924
+#, fuzzy
+msgid "Enable soft line wrapping"
+msgstr "Habilita l¡ajustament suau de línies"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(ignorades, per a compatibilitat amb Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano versió %s (compilat %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Correu-e: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Opcions compilades:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "El suport per a aquesta funció està inhabilitat"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Voleu desar el búfer modificat (RESPONDRE «No» DESTRUIRÀ ELS CANVIS) ?"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "No s'ha pogut tornar a obrir l'entrada estàndard des del teclat\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "S'està llegint des de l'entrada estàndard, ^C per a avortar-ho\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "S'ha rebut SIGHUP o SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Utilitzeu «fg» per a tornar a nano.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "habilitat"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "inhabilitat"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "L'ordre és desconeguda"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON ignorat, blah, blah"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF ignorat, blah, blah"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "La mida de tabulador demanada «%s» és invàlida"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "La mida de plenat demanada «%s» és invàlida"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "SsYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "TtAa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Sí"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Totes"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "No"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Error en %s en la línia %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "L'argument «%s» té una «\"» no terminada"
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr ""
+"Les cadenes d'expressió regular han de començar i acabar amb un caràcter \""
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "L'expreg «%s» és invàlida: %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Manca el nom de la sintaxi"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "La sintaxi «none» és reservada"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "La sintaxi «default» no admet extensions"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Manca el nom de la clau"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "les assignacions de tecles han de començar amb «^», «M» o «F»"
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "Heu d'especificar una funció a la qual assignar la tecla"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "Heu d'especificar un menú al qual assignar la tecla (o «all»)"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "No s'ha pogut assignar «%s» a una funció"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "No s'ha pogut assignar el nom «%s» a un menú"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "La combinació «%s» és una assignació il·legal"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"No s'ha reconegut el color «%s».\n"
+"Els colors vàlids són «green», «red», «blue»,\n"
+"«white», «yellow», «cyan», «magenta» i\n"
+"«black», amb el prefix opcional «bright»\n"
+"per als colors de primer pla."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "No es pot afegir una ordre de color sense una ordre de sintaxi"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Manca el nom del color"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "El color de fons «%s» no pot ser brillant"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Manca la cadena d'expreg"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "«start=» requereix el seu «end=» corresponent"
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr "No es pot afegir una expreg de capçalera sense una ordre de sintaxi"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Error fatal: no hi ha lletres asignades per a la funció «%s»"
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"S'està sortint. Useu nano amb l'opció -I si heu d'ajustar les vostres "
+"preferències\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "L'ordre «%s» no es pot utilitzar a un fitxer inclós"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "La sintaxi «%s» no té ordres de colors"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "No es pot entendre l'ordre «%s»"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Manca el senyalador"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "L'opció «%s» requereix un argument"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "L'opció no és una cadena d'octets múltiples vàlida"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Es requereixen caràcters que no siguen d'espaiat"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Es necessiten dos caràcters d'una columna"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "No es pot llevar el senyalador «%s»"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "El senyalador «%s» és desconegut"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "No s'ha pogut trobar el directori d'usuari! Wah!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "«%.*s%s» no trobat"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (a reemplaçar) dins de la selecció"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (a reemplaçar)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Voleu reemplaçar aquesta instància?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Reemplaça amb"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "S'ha reemplaçat %lu coincidència"
+msgstr[1] "S'han reemplaçat %lu coincidències"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Introduïu el número de línia, número de columna"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "El número de línia o columna és invàlid"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "No és una clau"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "No hi ha clau corresponent"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Marca establida"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Marca esborrada"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "No hi ha res al búfer de desfer."
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+"Error intern: no hi ha coincidència per a la línia %d. Deseu el vostre "
+"treball"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "afegiment de text"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "supressió de text"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "ajustament de línies llargues"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "unió de línia"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "tall de text"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "enganxada de text"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "trencat de línia"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "inserció de text"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "reemplaçament de text"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Error intern: tipus desconegut. Deseu el vostre treball"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "S'ha desfet l'acció (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "No hi ha res a refer."
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+"Error intern: la configuració del refer ha fallat. Deseu el vostre treball"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "S'ha refet l'acció (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "No s'ha pogut canalitzar"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "No s'ha pogut iniciar un altre procés"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+"Error intern: no es pot configurar l'enganxada. Deseu el vostre treball."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Error intern: tipus desconegut. Deseu el vostre treball."
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "El marcador de cita %s és erroni: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Ara podeu desjustificar!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Edita un reemplaçament"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "No s'ha pogut crear un conducte"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "S'està creant una llista de paraules incorrectes, espereu..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "No s'ha pogut obtindre la mida de la memòria intermèdia del conducte"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "S'ha produït un error en iniciar «spell»"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "S'ha produït un error en iniciar «sort -f»"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "S'ha produït un error en iniciar «uniq»"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Revisió d'ortografia finalitzada"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "S'ha produït un error en iniciar executar «%s»"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "La comprovació d'ortografia ha fallat: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "La comprovació d'ortografia ha fallat: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sParaules: %lu Línies: %ld Caràcters: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "A la selecció: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano s'ha quedat sense memòria!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Entrada d'Unicode"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Modificat"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Visualitza"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "DIR:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Fitxer:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "línia %ld/%ld (%d%%), col %lu/%lu (%d%%), car %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "L'editor de text GNU nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "versió"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Per cortesia de:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Agraïments especials per a:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "La Fundació per al Software Lliure (FSF)"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Per ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "i per qualsevol dels qui ens hem oblidat esmentar..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Gràcies per fer servir nano!"
+
+#~ msgid "line split"
+#~ msgstr "trencament de línia"
+
+#~ msgid "Space"
+#~ msgstr "Espai"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Au vinga, sigueu assenyat"
+
+#~ msgid "Indent marked text"
+#~ msgstr "Sagna el text marcat"
+
+#~ msgid "Unindent marked text"
+#~ msgstr "Lleva el sagnat del text marcat"
+
+#~ msgid "Use more space for editing"
+#~ msgstr "Utilitza més espai per a editar"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Omple colúmes (ajusta les línies en) #cols"
+
+#~ msgid "No lines selected, nothing to do!"
+#~ msgstr "No hi ha línies seleccionades, no hi ha res a fer!"
+
+#~ msgid "Refusing zero-length regex match"
+#~ msgstr "S'ha rebutjat una coincidència d'expreg de mida zero"
+
+#~ msgid "Make the current search/replace case (in)sensitive"
+#~ msgstr "Fes que la recerca/reemplaç actual siga sensible a majúscules"
+
+#~ msgid "Make the current search/replace go backwards"
+#~ msgstr "Fes que la recerca/reemplaç actual vaja cap enrere"
+
+#~ msgid "Write file out in DOS format"
+#~ msgstr "Escriu el fitxer en format DOS"
+
+#~ msgid "Write file out in Mac format"
+#~ msgstr "Escriu el fitxer en format Mac"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Avantposa al fitxer actual"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Fes una còpia de seguretat del fitxer original al desar"
+
+#~ msgid "Insert into new buffer"
+#~ msgstr "Insereix en un nou búfer"
+
+#~ msgid "Requested tab size %s invalid"
+#~ msgstr "La mida de tabulador demanada %s no és vàlida"
+
+#~ msgid "Requested fill size %s invalid"
+#~ msgstr "La mida de plenat demanada %s no és vàlida"
+
+#~ msgid "Prepending to %s failed: %s"
+#~ msgstr "S'ha produït un error en avantposar a %s: %s"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Invoca el menú d'ajuda"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Cerca un text al editor"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Reemplaça text al editor"
+
+#~ msgid "Find matching bracket"
+#~ msgstr "Cerca la clau corresponent"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE,COLUMN] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Forma d'ús: nano [+LÃNIA,COLUMNA] [opció llarga GNU] [opció] [fitxer]\n"
+#~ "\n"
+
+#~ msgid "Duplicate syntax name %s"
+#~ msgstr "El nom de la sintaxi %s és duplicat"
+
+#~ msgid "Could not create temp file: %s"
+#~ msgstr "No s'ha pogut crear un fitxer temporal: %s"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Troba la clau corresponent"
+
+#~ msgid "--quickblank"
+#~ msgstr "--quickblank"
+
+#~ msgid "Word Count in Selection"
+#~ msgstr "Compte de paraules a la selecció"
+
+#~ msgid "Direction"
+#~ msgstr "Direcció"
+
+#~ msgid ""
+#~ "\n"
+#~ "Buffer not written to %s (too many backup files?)\n"
+#~ msgstr ""
+#~ "\n"
+#~ "No s'ha escrit el búfer a %s (massa còpies de seguretat?)\n"
+
+#~ msgid "Up"
+#~ msgstr "Amunt"
+
+#~ msgid "+LINE"
+#~ msgstr "+LÃNIA"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "Cerca amb expressions regulars"
+
+#~ msgid "Verbatim input"
+#~ msgstr "Entrada textual"
+
+#~ msgid "Can't open \"%s\": %s"
+#~ msgstr "No es pot obrir «%s»: %s"
+
+#~ msgid "File to insert into new buffer [from ./] "
+#~ msgstr "Fitxer a inserir a un nou búfer [des de ./] "
+
+#~ msgid "File to insert [from ./] "
+#~ msgstr "Fitxer a inserir [des de ./] "
+
+#~ msgid "Insert a tab character"
+#~ msgstr "Insereix un caràcter tab"
+
+#~ msgid "Writing file in DOS format"
+#~ msgstr "S'està escrivint el fitxer en format DOS"
+
+#~ msgid "Writing file in Mac format"
+#~ msgstr "S'està escrivint el fitxer en format Mac"
+
+#~ msgid "Search Cancelled"
+#~ msgstr "Recerca cancel·lada"
+
+#~ msgid "Replace Cancelled"
+#~ msgstr "Reemplaç cancel·lat"
+
+#~ msgid "Aborted"
+#~ msgstr "Avortat"
+
+#~ msgid "Could not read %s for backup: %s"
+#~ msgstr "No s'ha pogut obrir %s per a fer una còpia de seguretat: %s"
+
+#~ msgid "Couldn't write backup: %s"
+#~ msgstr "No s'ha pogut escriure una còpia de seguretat: %s"
+
+#~ msgid "Could not set permissions %o on backup %s: %s"
+#~ msgstr "No s'ha pogut establir permisos %o en la còpia de seguretat %s: %s"
+
+#~ msgid "Could not set owner %d/group %d on backup %s: %s"
+#~ msgstr ""
+#~ "No s'ha pogut establir el propietari %d/grup %d en la còpia de seguretat %"
+#~ "s: %s"
+
+#~ msgid "Could not set access/modification time on backup %s: %s"
+#~ msgstr ""
+#~ "No s'ha pogut establir la data d'accés modificació en la còpia de "
+#~ "seguretat %s: %s"
+
+#~ msgid "Could not open file for writing: %s"
+#~ msgstr "No s'ha pogut obrir el fitxer per a escriure: %s"
+
+#~ msgid "Could not close %s: %s"
+#~ msgstr "No s'ha pogut tancar %s: %s"
+
+#~ msgid "Could not reopen %s: %s"
+#~ msgstr "No s'ha pogut reobrir %s: %s"
+
+#~ msgid "Could not open %s for prepend: %s"
+#~ msgstr "No s'ha pogut obrir %s per a avantposar: %s"
+
+#~ msgid "Could not open %s for writing: %s"
+#~ msgstr "No s'ha pogut obrir %s per a escriure: %s"
+
+#~ msgid "Could not set permissions %o on %s: %s"
+#~ msgstr "No s'ha pogut establir permisos %o en %s: %s"
+
+#~ msgid "Goto Cancelled"
+#~ msgstr "«Vés a» cancel·lat"
+
+#~ msgid "Unable to open ~/.nano_history file, %s"
+#~ msgstr "No s'ha pogut obrir el fitxer ~/.nano_history, %s"
+
+#~ msgid "Unable to write ~/.nano_history file, %s"
+#~ msgstr "No s'ha pogut escriure el fitxer ~/.nano_history, %s"
+
+#~ msgid "Backing up file"
+#~ msgstr "S'està fent una còpia de seguretat del fitxer"
+
+#~ msgid "Unjustify after a justify"
+#~ msgstr "Desjustifica després d'un justificar"
+
+#~ msgid "Move up one line"
+#~ msgstr "Mou una línia cap a dalt"
+
+#~ msgid "Move down one line"
+#~ msgstr "Mou una línia cap a baix"
+
+#~ msgid "Search backwards"
+#~ msgstr "Cerca enrrere"
+
+#~ msgid "Open previously loaded file"
+#~ msgstr "Obre el fitxer prèviament carregat"
+
+#~ msgid "Open next loaded file"
+#~ msgstr "Obre el següent fitxer carregat"
+
+#~ msgid "Down"
+#~ msgstr "Avall"
+
+#~ msgid "Use alternate keypad routines"
+#~ msgstr "Fes servir rutines de teclat numèric alternatives"
+
+#~ msgid "-T [num]"
+#~ msgstr "-T [núm]"
+
+#~ msgid "Spell checking failed: unable to write temp file!"
+#~ msgstr ""
+#~ "Revisió d'ortografia fallida: no s'ha pogut escriure fitxer temporal!"
+
+#~ msgid "Cannot resize top win"
+#~ msgstr "No es pot canviar la mida de la finestra superior"
+
+#~ msgid "Cannot move top win"
+#~ msgstr "No es pot moure la finestra superior"
+
+#~ msgid "Cannot resize edit win"
+#~ msgstr "No es pot canviar la mida de la finestra d'edició"
+
+#~ msgid "Cannot move edit win"
+#~ msgstr "No es pot moure la finestra d'edició"
+
+#~ msgid "Cannot resize bottom win"
+#~ msgstr "No es pot canviar la mida de la finestra inferior"
+
+#~ msgid "Cannot move bottom win"
+#~ msgstr "No es pot moure la finestra inferior"
+
+#~ msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
+#~ msgstr ""
+#~ "Detectat NumLock trencat. El tecl. numèric funcionarà amb NumLock activat"
+
+#~ msgid "Tab size is too small for nano...\n"
+#~ msgstr "La mida de la tabulació és massa petita per a nano...\n"
+
+#~ msgid "Errors found in .nanorc file"
+#~ msgstr "S'ha trobat errors al fitxer .nanorc"
+
+#~ msgid "Unable to open ~/.nanorc file, %s"
+#~ msgstr "No s'ha pogut obrir fitxer ~/.nanorc, %s"
+
+#~ msgid "\"%s...\" not found"
+#~ msgstr "«%s...» no trobat"
+
+#~ msgid "Invalid regex \"%s\""
+#~ msgstr "L'expreg «%s» és invàlida"
+
+#~ msgid "Replace failed: unknown subexpression!"
+#~ msgstr "No es pot reemplaçar: la subexpressió és desconeguda!"
+
+#~ msgid " File: ..."
+#~ msgstr " Fitxer: ..."
+
+#~ msgid " DIR: ..."
+#~ msgstr " DIR: ..."
+
+#~ msgid "add_to_cutbuffer() called with inptr->data = %s\n"
+#~ msgstr "s'ha cridat a add_to_cutbuffer() amb inptr->data = %s\n"
+
+#~ msgid "Blew away cutbuffer =)\n"
+#~ msgstr "Hem foragitat el cuttbuffer =)\n"
+
+#~ msgid "filename is %s\n"
+#~ msgstr "filename és %s\n"
+
+#~ msgid "%s: free'd a node, YAY!\n"
+#~ msgstr "%s: alliberat un node, YEAH!\n"
+
+#~ msgid "%s: free'd last node.\n"
+#~ msgstr "%s: alliberat l'últim node.\n"
+
+#~ msgid "Backing up %s to %s\n"
+#~ msgstr "S'està fent una còpia de seguretat de %s en %s\n"
+
+#~ msgid "Wrote >%s\n"
+#~ msgstr "Escrites >%s\n"
+
+#~ msgid "current->data now = \"%s\"\n"
+#~ msgstr "current->data ara = «%s»\n"
+
+#~ msgid "After, data = \"%s\"\n"
+#~ msgstr "Després, data = «%s»\n"
+
+#~ msgid "Main: set up windows\n"
+#~ msgstr "Main: configura les finestres\n"
+
+#~ msgid "Main: bottom win\n"
+#~ msgstr "Main: finestra inferior\n"
+
+#~ msgid "Main: open file\n"
+#~ msgstr "Main: obre fitxer\n"
+
+#~ msgid "AHA! %c (%d)\n"
+#~ msgstr "Aha! %c (%d)\n"
+
+#~ msgid "I got Alt-O-%c! (%d)\n"
+#~ msgstr "S'ha agafat Alt-O-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-1-%c! (%d)\n"
+#~ msgstr "S'ha agafat Alt-[-1-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-2-%c! (%d)\n"
+#~ msgstr "S'ha agafat Alt-[-2-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-%c! (%d)\n"
+#~ msgstr "S'ha agafat Alt-[-%c! (%d)\n"
+
+#~ msgid "I got Alt-%c! (%d)\n"
+#~ msgstr "S'ha agafat Alt-%c! (%d)\n"
+
+#~ msgid "I got %c (%d)!\n"
+#~ msgstr "S'ha agafat Alt-%c! (%d)\n"
+
+#~ msgid "Adding new syntax after 1st\n"
+#~ msgstr "S'està afegint una nova sintaxi després de la 1a\n"
+
+#~ msgid "Starting a new syntax type\n"
+#~ msgstr "S'està començant un nou tipus de sintaxi\n"
+
+#~ msgid "Starting a new colorstring for fg %d bg %d\n"
+#~ msgstr "S'està començant una nova cadena de color amb text %d fons %d\n"
+
+#~ msgid "Adding new entry for fg %d bg %d\n"
+#~ msgstr "S'està afegint una nova entrada per a text %d fons %d\n"
+
+#~ msgid "%s: Read a comment\n"
+#~ msgstr "%s: Llegit un comentari\n"
+
+#~ msgid "%s: Parsing option %s\n"
+#~ msgstr "%s: S'està analitzant l'opció %s\n"
+
+#~ msgid "set flag %d!\n"
+#~ msgstr "marca %d establerta!\n"
+
+#~ msgid "actual_x for xplus=%d returns %d\n"
+#~ msgstr "actual_x per a xplus=%d ha tornat %d\n"
+
+#~ msgid "Aha! '%c' (%d)\n"
+#~ msgstr "Aha! '%c' (%d)\n"
+
+#~ msgid "input '%c' (%d)\n"
+#~ msgstr "entrada '%c' (%d)\n"
+
+#~ msgid "Moved to (%d, %d) in edit buffer\n"
+#~ msgstr "Mogut a (%d, %d) a búfer d'edició\n"
+
+#~ msgid "I got \"%s\"\n"
+#~ msgstr "S'ha rebut «%s»\n"
+
+#~ msgid "Dumping file buffer to stderr...\n"
+#~ msgstr "S'està abocant el búfer de fitxer a stderr...\n"
+
+#~ msgid "Dumping cutbuffer to stderr...\n"
+#~ msgstr "S'està abocant el cutbuffer a stderr...\n"
+
+#~ msgid "Dumping a buffer to stderr...\n"
+#~ msgstr "S'està abocant un buffer a stderr...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "The -p flag now invokes the Pico \"preserve\" flag.\n"
+#~ "The Pico compatibility flag has been removed as nano\n"
+#~ "now fully Pico compatible. Please see the nano FAQ\n"
+#~ "for more info on this change...\n"
+#~ "\n"
+#~ "Press return to continue\n"
+#~ msgstr ""
+#~ "\n"
+#~ "El commutador -p ara activa el senyal «preserve» de Pico.\n"
+#~ "El senyal de compatibilitat amb Pico s'ha eliminat ja que\n"
+#~ "nano és ara completament compatible amb Pico. Vegeu les PMF\n"
+#~ "de nano per a més informació sobre aquest canvi...\n"
+#~ "\n"
+#~ "Premeu retorn per a continuar\n"
+
+#~ msgid "Generic error"
+#~ msgstr "Error genèric"
+
+#~ msgid "Can't visit parent in restricted mode"
+#~ msgstr "No es pot visitar el directori pare en mode restringit"
+
+#~ msgid "Pico mode"
+#~ msgstr "Mode Pico"
+
+#~ msgid "Emulate Pico as closely as possible"
+#~ msgstr "Emula a Pico tant com sigui possible"
+
+#~ msgid "'\")}]>"
+#~ msgstr "'\")}]>»"
+
+#~ msgid ".?!"
+#~ msgstr ".?!"
+
+#~ msgid "Replaced 1 occurrence"
+#~ msgstr "1 ocurrència reemplaçada"
+
+#~ msgid "Replace with [%s]"
+#~ msgstr "Reemplaçar amb [%s]"
+
+#~ msgid "nano: realloc: out of memory!"
+#~ msgstr "nano: realloc: memòria insuficient!"
diff --git a/po/cs.gmo b/po/cs.gmo
new file mode 100644
index 0000000..5ae0be4
--- /dev/null
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
new file mode 100644
index 0000000..81f7b5b
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,2114 @@
+# Czech translation for nano
+# Copyright (C) 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+#
+# Pavel Fric <pavelfric@seznam.cz>, 2010.
+# Václav Haisman <V.Haisman@sh.cvut.cz>, 2000, 2001.
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.4pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-10-19 22:11+0100\n"
+"Last-Translator: Pavel Fric <pavelfric@seznam.cz>\n"
+"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Lokalize 1.0\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Jít do adresáře"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Zrušeno"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "V omezeném režimu nelze jít mimo %s"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Chyba pÅ™i Ätení: %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Nepodařilo se přejít do nadřazeného adresáře"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(adresář)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(rodiÄovský adresář)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Hledat"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Rozlišovat velikost písmen]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [regulární výraz]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Zpět]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Hledání dokonÄeno"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Toto je jediný výskyt"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Žádný souÄasný vzor hledání"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Nelze vložit soubor z vně %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Žádné další otevřené souborové vyrovnávací paměti"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Přepnuto na %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Nová vyrovnávací paměť"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "PÅ™eÄten jeden řádek (pÅ™eveden z formátu DOS a Mac)"
+msgstr[1] "PÅ™eÄteny %lu řádky (pÅ™evedeny z formátu DOS a Mac)"
+msgstr[2] "PÅ™eÄteno %lu řádků (pÅ™evedeny z formátu DOS a Mac)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"PÅ™eÄten jeden řádek (pÅ™eveden z formátu DOS a Mac - Varování: Žádné "
+"oprávnění pro zápis)"
+msgstr[1] ""
+"PÅ™eÄteny %lu řádky (pÅ™evedeny z formátu DOS a Mac - Varování: Žádné "
+"oprávnění pro zápis)"
+msgstr[2] ""
+"PÅ™eÄteno %lu řádků (pÅ™evedeny z formátu DOS a Mac - Varování: Žádné "
+"oprávnění pro zápis)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "PÅ™eÄten jeden řádek (pÅ™eveden z formátu Mac)"
+msgstr[1] "PÅ™eÄteny %lu řádky (pÅ™evedeny z formátu Mac)"
+msgstr[2] "PÅ™eÄteno %lu řádků (pÅ™evedeny z formátu Mac)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"PÅ™eÄten jeden řádek (pÅ™eveden z formátu Mac - Varování: Žádné oprávnÄ›ní pro "
+"zápis)"
+msgstr[1] ""
+"PÅ™eÄteny %lu řádky (pÅ™evedeny z formátu Mac - Varování: Žádné oprávnÄ›ní pro "
+"zápis)"
+msgstr[2] ""
+"PÅ™eÄteno %lu řádků (pÅ™evedeny z formátu Mac - Varování: Žádné oprávnÄ›ní pro "
+"zápis)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "PÅ™eÄten jeden řádek (pÅ™eveden z formátu DOS)"
+msgstr[1] "PÅ™eÄteny %lu řádky (pÅ™evedeny z formátu DOS)"
+msgstr[2] "PÅ™eÄteno %lu řádků (pÅ™evedeny z formátu DOS)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"PÅ™eÄten jeden řádek (pÅ™eveden z formátu DOS - Varování: Žádné oprávnÄ›ní pro "
+"zápis)"
+msgstr[1] ""
+"PÅ™eÄteny %lu řádky (pÅ™evedeny z formátu DOS - Varování: Žádné oprávnÄ›ní pro "
+"zápis)"
+msgstr[2] ""
+"PÅ™eÄteno %lu řádků (pÅ™evedeny z formátu DOSc - Varování: Žádné oprávnÄ›ní pro "
+"zápis)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "PÅ™eÄten jeden řádek"
+msgstr[1] "PÅ™eÄteny %lu řádky"
+msgstr[2] "PÅ™eÄteno %lu řádků"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "PÅ™eÄten jeden řádek (Varování: Žádné oprávnÄ›ní pro zápis)"
+msgstr[1] "PÅ™eÄteny %lu řádky (Varování: Žádné oprávnÄ›ní pro zápis)"
+msgstr[2] "PÅ™eÄteno %lu řádků (Varování: Žádné oprávnÄ›ní pro zápis)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "ÄŒte se soubor"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Nový soubor"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" nenalezen"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "„%s“ je adresář"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" je soubor zařízení"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Příkaz k provedení v nové vyrovnávací paměti [z %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Příkaz k provedení [z %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Soubor k vložení do nové vyrovnávací paměti [z %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Soubor k vložení [z %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Klávesa nepřípustná, když není v režimu více vyrovnávacích pamětí"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Nelze zapsat vnÄ› %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"Nelze připojit dopředu nebo dozadu k symbolickému odkazu, když je nastaveno "
+"--nofollow"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Chyba při zápisu zálohovacího souboru %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Příliš mnoho zálohovacích souborů?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Chyba při zápisu %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Chyba pÅ™i zápisu doÄasného souboru s: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Zapsán jeden řádek"
+msgstr[1] "Zapsány %lu řádky"
+msgstr[2] "Zapsáno %lu řádků"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [Formát DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Formát Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Záloha]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Připojit výběr k souboru dopředu"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Připojit výběr k souboru"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Zapsat výběr do souboru"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Název souboru k připojení dopředu"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Název souboru k připojení"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Název souboru k zapsání"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Soubor existuje. PŘEPSAT?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Uložit soubor pod JINÃM NÃZVEM? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "Soubor byl poté, co jste jej otevÅ™el, upraven. PokraÄovat v ukládání?"
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(více)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"StisknÄ›te klávesu Enter pro pokraÄování ve spouÅ¡tÄ›ní programu nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Nahradit"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Žádné nahrazení"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "VELKà PÃSMENA/malá písmena"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Zpět"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Regulární výraz"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "Předchozí historie"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "Další historie"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Jít na text"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Kde je další"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "První soubor"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Poslední soubor"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Jít na soubory"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Formát DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Formát Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Připojit"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Připojit dopředu"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Soubor se zálohou"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Provést příkaz"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Jít do adresáře"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Získat nápovědu"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "UkonÄit"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Kde je"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Předchozí strana"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Další strana"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "První řádek"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Poslední řádek"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Odložit (na pozadí)"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "ZaÄátek odstavce"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Konec odstavce"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "Plné zarovnání"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Obnovit"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Vložit soubor"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Přejít na řádek"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Zarovnat nynější odstavec"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "ZruÅ¡it souÄasnou funkci"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Zobrazit tento text s nápovědou"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Zavřít nynÄ›jší souborovou vyrovnávací paměť/UkonÄit nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "UkonÄit nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Zapsat nynější soubor na disk"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Vložit další soubor do nynějšího"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Hledat řetězec nebo regulární výraz"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Jít na předchozí obrazovku"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Jít na další obrazovku"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Vyjmout nynější řádek a uložit jej ve schránce"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Vložit ze schránky do nynějšího řádku"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Zobrazit polohu ukazovátka"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Vyvolat ověření pravopisu (je-li dostupné)"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Nahradit řetězec nebo regulární výraz"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Jít na urÄitý řádek a sloupec"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "OznaÄit text v poloze ukazovátka"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Opakovat poslední hledání"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Zkopírovat nynější řádek a uložit jej ve schránce"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Odsadit nynější řádek"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Zrušit odsazení nynějšího řádku"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Zrušit poslední operaci"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Zopakovat poslední zrušenou operaci"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Jít o jeden znak vpřed"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Jít o jeden znak zpět"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Jít o jedno slovo vpřed"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Jít o jedno slovo zpět"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Jít na předchozí řádek"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Jít na další řádek"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Jít na zaÄátek nynÄ›jšího řádku"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Jít na konec nynějšího řádku"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Jít na zaÄátek odstavce; potom pÅ™edchozího odstavce"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Jít za koneck odstavce; potom dalšího odstavce"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Jít na první řádek souboru"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Jít na poslední řádek souboru"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Jít na odpovídající závorky"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Posunout obraz o jeden řádek nahoru, aniž by se pohnulo ukazovátko"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Posunout obraz o jeden řádek dolů, aniž by se pohnulo ukazovátko"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Přepnout na předchozí souborovou vyrovnávací paměť"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Přepnout na další souborovou vyrovnávací paměť"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Vložit další znak přímo (doslovně, nevykládaný)"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Vložit zarážku v poloze ukazovátka"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Vložit zalomení řádku v poloze ukazovátka"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Smazat znak v poloze ukazovátka"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Smazat znak nalevo od polohy ukazovátka"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Vyjmout od polohy ukazovátka po konec souboru"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Zarovnat celý soubor"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "SpoÄítat poÄet slov, řádků a znaků"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Obnovit (pÅ™ekreslit) souÄasnou obrazovku"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Odložit editor na pozadí (je-li povolen \"suspend\")"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Přepnout při hledání rozlišování mezi psaním velkých a malých písmen"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Obrátit směr hledání"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Přepnout používání regulárních výrazů"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Vybavit předchozí řetězec hledání/nahrazení"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Vybavit další řetězec hledání/nahrazení"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Jít do prohlížeÄe souborů"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Přepnout zápis ve formátu DOS"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Přepnout zápis ve formátu Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Přepnout připojování"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Přepnout připojování dopředu"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Přepnout zálohování původního souboru při ukládání"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Provést vnější příkaz"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Přepnout používání nové vyrovnávací paměti"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "UkonÄit prohlížeÄ souborů"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Jít na první řádek v seznamu"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Jít na poslední řádek v seznamu"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "Jít na další řádek v seznamu"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "Jít na předchozí řádek v seznamu"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Jít do adresáře"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Zavřít"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Uložit"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Zarovnat"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Otevřít soubor"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Vyjmout text"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Zrušit zarovnání"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Zrušit vyjmutí textu"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Poloha ukazovátka"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Pravopis"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "OznaÄit text"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Kopírovat text"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Odsadit text"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Zrušit odsazení textu"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Zpět"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Znovu"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Vpřed"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Zpět"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Další slovo"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Předchozí slovo"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Předchozí řádek"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Další řádek"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Poloha 1"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Konec"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Najít jiné závorky"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Posunout obraz nahoru"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Posunout obraz dolů"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Předchozí soubor"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Další soubor"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Přímé zadání"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Zarážka"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Delete (smazat následující znak)"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Backspace (smazat předcházející znak)"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "Vyjmout až po konec"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "PoÄet slov"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Režim s nápovědou"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Ukazovat stálou polohu ukazovátka"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Používání ještě jednoho řádku k úpravám"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Plynulé posunování obrazu"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Zobrazování prázdného místa"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Barevné zvýrazňování skladby"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Chytrá klávesa pro Polohu 1"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Automaticky odsadit"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Vyjmout po konec"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Zalamování dlouhých řádků"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Převod zadaných zarážek na mezery"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Zálohovací soubory"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Více souborových vyrovnávacích pamětí"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Podpora pro myš"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Žádný převod z formátů DOS/Mac"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Odklad na pozadí"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "Plynulé zalamování dlouhých řádků"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Text s nápovědou pro příkaz ke hledání\n"
+"\n"
+" Zadejte slova nebo znaky, podle kterých chcete hledat, a stiskněte klávesu "
+"Enter. Pokud je pro vámi zadaný text nalezena shoda, obrazovka se posune k "
+"místu nejbližšího nálezu hledaného řetězce.\n"
+"\n"
+" Předchozí hledaný řetězec se po výzvě k hledání bude ukazovat v hranatých "
+"závorkách. Stisknutí klávesy Enter bez zadání nějakého textu povede k "
+"provedení předchozího požadavku na hledání. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Pokud jste oznaÄil text, a pak provádÄ›l hledání kvůli nahrazování, budou se "
+"nahrazovat pouze shody ve vybraném textu.\n"
+"\n"
+" Následující funkÄní klávesy jsou dostupné v režimu Hledání:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Text s nápovědou pro „Přejít na řádek“\n"
+"\n"
+" zadejte Äíslo řádku, na který si pÅ™ejete pÅ™ejít, a stisknÄ›te klávesu Enter. "
+"Pokud je v textu menší poÄet řádků, než jaký jste udal, nano provede skok na "
+"poslední řádek v souboru.\n"
+"\n"
+" Následující funkÄní klávesy jsou dostupné v režimu PÅ™ejít na řádek:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Text s nápovědou pro Vložit soubor\n"
+"\n"
+" Zadejte název souboru, který se má vložit do nynější souborové vyrovnávací "
+"pamÄ›ti v souÄasné poloze ukazovátka.\n"
+"\n"
+" Pokud jste nano sestavil s podporou pro více souborových vyrovnávacích "
+"pamětí, a povolil tuto funkci více souborových vyrovnávacích pamětí volbou "
+"příkazového řádku -F nebo --multibuffer, kombinací kláves Meta-F, nebo s "
+"pomocí souboru nanorc, vložení souboru povede k tomu, že bude nahrán do "
+"oddělené vyrovnávací paměti (použijte Meta-< a > pro přepínání mezi "
+"souborovými vyrovnávacími paměťmi)."
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Pokud potřebujete další prázdnou vyrovnávací paměť, nezadávejte žádný "
+"souborový název, a stiskněte jednoduše Enter, nebo napište neexistující "
+"souborový název.\n"
+"\n"
+" Následující funkÄní klávesy jsou dostupné v režimu Vložit soubor:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Text s nápovědou pro „Zapsat soubor“\n"
+"\n"
+" Zadejte název, pod kterým si pÅ™ejete uložit souÄasný soubor, a stisknÄ›te "
+"klávesu Enter.\n"
+"\n"
+" Pokud jste oznaÄil text, bude vám položena otázka, zda chete zapsat pouze "
+"vybranou Äást textu do oddÄ›leného souboru. Abyste zmenÅ¡il nebezpeÄí, že by "
+"doÅ¡lo k pÅ™epsání nynÄ›jšího souboru jeho Äástí, není v tomto režimu nynÄ›jší "
+"souborový název veden jako výchozí.\n"
+"\n"
+" Následující funkÄní klávesy jsou dostupné v režimu Zapsat soubor:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Text s nápovÄ›dou pro „ProhlížeÄ souborů\"\n"
+"\n"
+" ProhlížeÄ souborů se používá pro názorné procházení uspořádání adresářů, "
+"aby se vybral soubor pro Ätení nebo zápis. Můžete použít klávesy Å¡ipek nebo "
+"Page Up/Page Down (listovat o stranu nahoru/dolů) pro procházení souborů, a "
+"S nebo klávesu Enter pro volbu vybraného souboru, nebo pro vstoupení do "
+"vybraného adresáře. Pro pohyb o jednu úroveň výše, vyberte adresář nazvaný "
+"\"..\" zcela nahoře v seznamu souborů.\n"
+"\n"
+" Následující funkÄní klávesy jsou dostupné v prohlížeÄi souborů:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Text s nápovÄ›dou pro příkaz k \"Hledání v prohlížeÄi souborů\"\n"
+"\n"
+" Zadejte slova nebo znaky, které byste chtěl vyhledat, a potom stiskněte "
+"klávesu Enter. Pokud dojde k nalezení textu shodného s textem, který jste "
+"zadal, obrazovka se posune k místu nejbližšího nálezu hledaného řetězce.\n"
+"\n"
+" Předchozí hledaný řetězec se po výzvě k hledání bude ukazovat v hranatých "
+"závorkách. Stisknutí klávesy Enter bez zadání nějakého textu povede k "
+"provedení předchozího požadavku na hledání.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Následující funkÄní klávesy jsou dostupné v režimu \"Hledání v prohlížeÄi "
+"souborů\":\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Text s nápovÄ›dou pro \"Jít do adresáře\" v prohlížeÄi souborů\n"
+"\n"
+" Zadejte název adresáře, který byste chtěl procházet.\n"
+"\n"
+" Pokud nebylo zakázáno doplňování pomocí zarážek, můžete používat klávesu "
+"pro zarážku (tabulátor), abyste (se pokusil) nechat název adresáře doplnit "
+"automaticky.\n"
+"\n"
+" Následující funkÄní klávesy jsou dostupné v režimu \"Jít do adresáře\" v "
+"prohlížeÄi souborů:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Text s nápovědou pro \"Ověřování pravopisu\"\n"
+"\n"
+" Ověřování pravopisu ověřuje pravopis celého textu v souÄasném souboru. "
+"Narazí-li se na neznámé slovo, je zvýrazněno a náhradu lze upravovat. Budete "
+"potom dotazován, zda chcete nahrazení provést v celém souboru, nebo, pokud "
+"jste text oznaÄil, zda chcete zmÄ›ny provést v rámci výbÄ›ru.\n"
+"\n"
+" Následující funkÄní klávesy jsou dostupné v režimu \"Ověřování pravopisu"
+"\":\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Text s nápovědou pro \"Provést příkaz\"\n"
+"\n"
+" Tento režim vám umožňuje vložit výstup vnějšího příkazu, který byl proveden "
+"v shellu, do souÄasné vyrovnávací pamÄ›ti (nebo do nové vyrovnávací pamÄ›ti v "
+"režimu více souborových vyrovnávacích pamětí). Pokud potřebujete další "
+"prázdnou vyrovnávací paměť, nezadavejte žádný příkaz.\n"
+"\n"
+" Následující funkÄní klávesy jsou dostupné v režimu \"Provést příkaz\":\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Hlavní text s nápovědou pro program nano\n"
+"\n"
+" Editor nano je navržen tak, aby napodoboval funkÄnost a snadnost používání "
+"textového editoru UW Pico. V editoru jsou ÄtyÅ™i hlavní oblasti. Horní řádek "
+"ukazuje verzi programu, název souboru, který je nyní upravován, a zda byl "
+"soubor změněn, nebo nebyl. Hlavní okno obsahuje soubor, který je upravován. "
+"Stavový řádek (třetí řádek zdola) ukazuje důležité zprávy. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"NejspodnÄ›jší dva řádky ukazují v editoru nejÄastÄ›ji používané zkratky.\n"
+"\n"
+" Zápis zkratek je takový, jak dále následuje: Klávesové zkratky s klávesou "
+"Ctrl jsou zapsány se symbolem vsuvky (^) a lze je zadat pomocí klávesy "
+"Control (Ctrl) nebo dvojitým stisknutím klávesy Escape (Esc). Klávesové "
+"zkratky s klávesou Escape jsou zapsány se symbolem Meta (M-) a lze je zadat "
+"buÄ pomocí klávesy Esc, Alt, nebo Meta v závislosti na nastavení vaší "
+"klávesnice. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Mimo to lze pomocí dvojitého stisknutí klávesy Esc a zadání trojmístného "
+"Äísla od 000 do 255 zadat znak s odpovídající hodnotou. Následující "
+"kombinace kláves jsou dostupné v hlavním okně editoru. Náhradní klávesy jsou "
+"uváděny v závorkách:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "Zapnout/Vypnout"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Klávesa nepřípustná v režimu pouze pro Ätení"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Vyrovnávací paměť zapsána do %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Vyrovnávací paměť nezapsána do %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Vyrovnávací paměť nezapsána: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Velikost okna je pro nano příliš malá...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Použití: nano [VOLBY] [[+ŘÃDEK,SLOUPEC] SOUBOR]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Volba\t\tdlouhá volba GNU\t\tVýznam\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Volba\t\tVýznam\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Ukázat tuto zprávu"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+ŘÃDEK,SLOUPEC"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "ZaÄít na řádku ŘÃDEK,sloupec SLOUPEC"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Povolit chytrou klávesu Poloha 1"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Uložit zálohy stávajících souborů"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <adresář>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<adresář>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Adresář pro ukládání jedineÄných zálohovacích souborů"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Použít tuÄný tisk místo opaÄného textu"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Převést zadané zarážky na mezery"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Povolit více souborových vyrovnávacích pamětí"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Zapisovat a Äíst historii hledání/nahrazování Å™etÄ›zců"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Nezkoumat soubory nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Opravit zmatek okolo kláves na Äíselné klávesnici"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Nepřidávat zalomení řádku na koncích souborů"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Nepřevádět soubory z formátů DOS/Mac"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Používat ještě jeden řádek k úpravám"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <řetězec znaků>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<řetězec znaků>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Dání řetězce do uvozovek"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Omezený režim"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Posunovat obraz po řádcích místo po půlobrazovkách"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#sloupce>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#sloupce>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Nastavit velikost zarážky na #sloupce"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Provést rychlé vymazání stavového řádku"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Vytisknout informaci o verzi a ukonÄit"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Rozpoznávat hranice slov přesněji"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <řetězec znaků>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<řetězec znaků>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Vymezení skladby k užití pro obarvování"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Stále ukazovat polohu ukazovátka"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Odstranit záměnu kláves Backspace/Delete"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Automaticky odsadit nové řádky"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Vyjmout od polohy ukazovátka po konec řádku"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Nenásledovat symbolické odkazy, nýbrž přepsat"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Povolit použití myši"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <adresář>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<adresář>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Nastavit pracovní adresář"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Zachovat klávesy XON (^Q) a XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "Přecházet tiše potíže při spuštění, jako jsou chyby v souborech rc"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#sloupce>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#sloupce>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Nastavit bod zalomení při sloupci #sloupce"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <program>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<program>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Povolit náhradní program na ověřování pravopisu"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "PÅ™i ukonÄení automaticky bez zpÄ›tného dotazu uložit"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "Povolit obecnou funkci pro zpět [pokusné]"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Režim pouze pro Ätení (žádné zmÄ›ny nejsou možné)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Nezalamovat dlouhé řádky do nových řádků"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Neukazovat dva pomocné řádky"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Povolit odložení na pozadí (zastavit a zpět k shellu)"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "Povolit plynulé zalamování dlouhých řádků"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(pÅ™echází se, pro sluÄitelnost s Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU verze nano %s (sestaveno %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr ""
+"Adresa elektronické pošty: nano@nano-editor.org\tWWW: http://www.nano-editor."
+"org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Volby při sestavování:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Promiňte, ale tato funkce není podporována"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Uložit zmÄ›nÄ›nou vyrovnávací paměť (odpovÄ›Ä \"Ne\" zahodí zmÄ›ny)?"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+"Obvyklý vstup (stdin) se z klávesnice znovu otevřít nepodařilo. Promiňte\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Čte se z obvyklého vstupu (stdin), ^C k pro přerušení\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Přijat SIGHUP nebo SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Použijte \"fg\" pro návrat do nano.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "povoleno"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "zakázáno"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Neznámý příkaz"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON nebrán na vědomí, huhňání"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF nebrán na vědomí, huhňání"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Požadovaná velikost zarážky \"%s\" je neplatná"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Požadovaná velikost výplně \"%s\" je neplatná"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Yy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Aa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Ano"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "VÅ¡e"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Ne"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Chyba v %s na řádku %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Argument „%s“ má neukonÄené \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "ŘetÄ›zce znaků pro regulární výrazy musí zaÄínat a konÄit znakem \""
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Špatný regulární výraz \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Chybí název skladby"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "Skladba \"none\" je zamluvena"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "Skladba \"defaul\" nesmí mít žádné přípony"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Chybí název klíÄe"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "Klávesové zkratky musí zaÄínat \"^\", \"M\", nebo \"F\""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "Funkce spojená s klávesou musí být zadána"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "Nabídka spojená s klávesou (nebo \"vše\") musí být zadána"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Nepodařilo se spojit název \"%s\" s funkcí"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Nepodařilo se spojit název \"%s\" s nabídkou"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "Promiňte, ale keystr \"%s\" není dovoleným přiřazením"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Barvě „%s“ neporozuměno.\n"
+"Platnými barvami jsou „green“ (zelená), „red“ (Äervená), „blue“ (modrá),\n"
+"„white“ (bílá), „yellow“ (žlutá), „cyan“ (modrozelená), "
+"„magenta“ (Äervenorudá)\n"
+"a „black“ (Äerná), s volitelnou pÅ™edponou „bright“ (svÄ›tlá)\n"
+"pro barvy popředí."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Nelze přidat pokyn pro barvu bez příkazu pro skladbu"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Chybí název barvy"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Barva pozadí \"%s\" nemůže být světlá (\"bright\")"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Chybí řetězec regulárního výrazu"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "„start=“ vyžaduje odpovídající „end=“"
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Nelze přidat regulární výraz pro záhlaví bez příkazu pro skladbu"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Vážná chyba: s funkcí \"%s\" nejsou spojeny žádné klávesy"
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"UkonÄuje se. SpusÅ¥te, prosím, v případÄ› potÅ™eby nano s volbou \"-l\", chcete-"
+"li změnit svá nastavení nanorc\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Příkaz \"%s\" nedovolen v zahrnutém souboru"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Skladba \"%s\" nemá pokyny pro barvy"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Příkazu \"%s\" neporozuměno"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Chybí příznak"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Volba \"%s\" vyžaduje argument"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Volba není žádným platným řetězcem znaků multibyte"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Požadovány ne-prázdné znaky"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Požadovány dva znaky v rozsahu jednoho sloupce"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Nelze vypnout příznak \"%s\""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Neznámý příznak \"%s\""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Nemohu najít svůj domovský adresář! Jau!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%.*s%s\" nenalezen"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (k nahrazení) ve výběru"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (k nahrazení)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Nahradit tento případ?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Nahradit"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Nahrazen jeden výskyt"
+msgstr[1] "Nahrazeny %lu výskyty"
+msgstr[2] "Nahrazeno %lu výskytů"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Zadat Äíslo řádku, Äíslo sloupce"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Neplatné Äíslo řádku nebo, Äíslo sloupce"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Žádná závorka"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Žádná odpovídající závorka"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "ZnaÄka nastavena"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "ZnaÄka odstranÄ›na"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Nic ve vyrovnávací paměti pro \"Zpět\"!"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr "Vnitřní chyba: nelze nalézt řádek %d. Uložte, prosím, svou práci."
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "Přidat text"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "Smazat text"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "Zalomení řádku"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "Spojit řádek"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "Vyjmout text"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "Vzít zpět vyjmutí textu"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "Zalamovat řádky"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "Vložit text"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "Nahradit text"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Vnitřní chyba: neznámý typ. Uložte, prosím, svou práci."
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Operace vrácena zpět (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Nic k zopakování!"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+"Vnitřní chyba: Příprava na zopakování operace se nezdařila. Uložte, prosím, "
+"svou práci."
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Operace zopakována (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Přenos dat se nepodařilo provést"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Vidlici se nepodařilo provést"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+"Vnitřní chyba: vzetí vyjmutí zpět nelze nastavit. Uložte, prosím, svou práci."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Vnitřní chyba: neznámý typ. Uložte, prosím, svou práci."
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Neplatný řetězec znaku uvozovek %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Nyní lze zrušit zarovnání odstavce!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Upravit nahrazení"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Nepodařilo se vytvořit přenos dat"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Vytváří se seznam nesprávně napsaných slov. Čekejte, prosím,..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Nepodařilo se získat velikost vyrovnávací paměti přenosu dat"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Chyba při vyvolání „spell“"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Chyba při vyvolání „sort -f“"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Chyba při vyvolání „uniq“"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Ověřování pravopisu dokonÄeno"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Chyba při vyvolání „%s“"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Ověření pravopisu se nezdařilo: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Ověření pravopisu se nezdařilo: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sSlov: %lu Řádků: %ld Znaků: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "Ve výběru: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano už nemá paměti!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Vstup Unicode"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Změněno"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Pohled"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "Adresář:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Soubor:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "Řádek %ld/%ld (%d%%), Sloupec %lu/%lu (%d%%), Znak %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Textový editor nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "Verze"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Vyvíjeno:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Zvláštní poděkování:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "The Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Pro ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "a všichni nejmenovaní..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Děkujeme vám za to, že používáte nano!"
+
+#~ msgid "Error writing backup file %s: File owner mismatch"
+#~ msgstr "Chyba při zápisu zálohovacího souboru %s: Nesouhlasí vlastník"
diff --git a/po/da.gmo b/po/da.gmo
new file mode 100644
index 0000000..af55c44
--- /dev/null
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
new file mode 100644
index 0000000..0a644d3
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,2497 @@
+# Danish messages for nano.
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+#
+# Keld Simonsen <keld@dkuug.dk>, 2001-2003
+# Ask Hjorth Larsen <asklarsen@gmail.com>, 2010
+#
+# Konventioner:
+# view mode -> visningstilstand ?
+# justify -> ombryd (den ombryder med hårde linjeskift)
+# option -> flag (kan evt. ændres til tilvalg i fremtiden)
+# suspend -> køre i baggrunden (svarer til ^Z)
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.4pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-06-14 14:48+0200\n"
+"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "GÃ¥ til katalog"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Afbrudt"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Kan ikke gå uden for %s i begrænset tilstand"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Fejl ved læsning af %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Kan ikke gå et katalog op"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(kat)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(ophavs-kat)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Søg"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Versalfølsom]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Regudtr]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Bagud]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Søgningen genstartet fra begyndelsen"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Dette er det eneste tilfælde"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Intet aktuelt søgemønster"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Kan ikke indsætte fil fra ydersiden af %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Ikke flere åbne filbuffere"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Skiftede til %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Ny buffer"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Læste %lu linje (Konverteret fra DOS- og Mac-format)"
+msgstr[1] "Læste %lu linjer (Konverteret fra DOS- og Mac-format)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"Læste %lu linje (Konverteret fra DOS- og Mac-format - Advarsel: Ingen "
+"skriveadgang)"
+msgstr[1] ""
+"Læste %lu linjer (Konverteret fra DOS- og Mac-format - Advarsel: Ingen "
+"skriveadgang)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Læste %lu linje (Konverteret fra Mac-format)"
+msgstr[1] "Læste %lu linjer (Konverteret fra Mac-format)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"Læste %lu linje (Konverteret fra Mac-format - Advarsel: Ingen skriveadgang)"
+msgstr[1] ""
+"Læste %lu linjer (Konverteret fra Mac-format - Advarsel: Ingen skriveadgang)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Læste %lu linje (Konverteret fra DOS-format)"
+msgstr[1] "Læste %lu linjer (Konverteret fra DOS-format)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"Læste %lu linje (Konverteret fra DOS-format - Advarsel: Ingen skriveadgang)"
+msgstr[1] ""
+"Læste %lu linjer (Konverteret fra DOS-format - Advarsel: Ingen skriveadgang)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Læste %lu linje"
+msgstr[1] "Læste %lu linjer"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "Læs %lu linje (Advarsel: Ingen skriveadgang)"
+msgstr[1] "Læs %lu linjer (Advarsel: Ingen skriveadgang)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Læser filen"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Ny fil"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" kunne ikke findes"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" er et katalog"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" er en enhedsfil"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Kommando at køre i ny buffer [fra %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Kommando der skal køres [fra %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Fil at indsætte i ny buffer [fra %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Fil at indsætte [fra %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Tasten ugyldig i ikke-multibuffer-tilstand"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Kan ikke skrive uden for %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "Kan ikke foran- eller efterstille til symlænke med --nofollow givet"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Fejl ved skrivning af sikkerhedskopifil %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "For mange sikkerhedskopifiler?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Fejl ved skrivning af %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Fejl ved skrivning af midlertidig fil: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Skrev %lu linje"
+msgstr[1] "Skrev %lu linjer"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS-format]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac-format]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Sikkerhedskopi]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Foranstil udvalg til fil"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Tilføj udvalg til fil"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Skriv udvalg til fil"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Filnavn at foranstille på"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Filnavn at tilføje på"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Filnavn at skrive"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Filen findes, OVERSKRIV?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Gem filen under ET ANDET NAVN?"
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "Filen blev ændret siden du sidst åbnede den, gem alligevel?"
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(mere)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Tryk enter for at fortsætte opstart af nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Annullér"
+
+# max 10 tegn
+#: src/global.c:416
+msgid "Replace"
+msgstr "Erstat"
+
+# max 10 tegn
+#: src/global.c:417
+msgid "No Replace"
+msgstr "ErstatIkke"
+
+# max 10 tegn
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "VersalFøls"
+
+# max 10 tegn
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Baglæns"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Regudtr"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "ForrigHist"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "NæstHist"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "GÃ¥ til tekst"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Find næste"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Første fil"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Sidste fil"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Til filer"
+
+# max 16 tegn
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS-format"
+
+# max 16 tegn
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac-format"
+
+# max 16 tegn
+#: src/global.c:464
+msgid "Append"
+msgstr "Tilføj ved enden"
+
+# max 16 tegn
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Tilføj ved start"
+
+# max 16 tegn
+#: src/global.c:466
+msgid "Backup File"
+msgstr "SikrKopiér fil"
+
+# max 16 tegn
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Kør kommando"
+
+# max 16 tegn
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "GÃ¥ til katalog"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Få hjælp"
+
+# max 10 tegn
+#: src/global.c:481
+msgid "Exit"
+msgstr "Afslut"
+
+# max 10 tegn
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Hvor er"
+
+# max 10 tegn
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "ForrigSide"
+
+# max 10 tegn
+#: src/global.c:484
+msgid "Next Page"
+msgstr "NæsteSide"
+
+# max 10 tegn
+#: src/global.c:485
+msgid "First Line"
+msgstr "FørstLinje"
+
+# max 10 tegn
+#: src/global.c:486
+msgid "Last Line"
+msgstr "SidstLinje"
+
+# max 10 tegn
+#: src/global.c:487
+msgid "Suspend"
+msgstr "I baggrund"
+
+# max 10 tegn
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "AfsnitStrt"
+
+# max 10 tegn
+#: src/global.c:490
+msgid "End of Par"
+msgstr "AfsnitSlut"
+
+# max 10 tegn
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "FuldOmbryd"
+
+# max 10 tegn
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Opdatér"
+
+# okay, her slutter 'max 10 tegn'-regionen vist, eftersom den engelske er på 11
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Indsæt fil"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "GÃ¥ til linje"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Ombryd den aktuelle paragraf"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Afbryd den aktuelle funktion"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Vis denne hjælpetekst"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Luk nuværende filbuffer / afslut nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Afslut nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Skriv den aktuelle fil til disk"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Indsæt en anden fil i den nuværende"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Søg efter en streng eller et regulært udtryk"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Gå til forrige skærm"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Gå til næste skærm"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Klip den aktuelle linje ud og gem den i udklipsbufferen"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Indsæt fra udklipsbufferen i aktuel linje"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Vis markørens position"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Start stavekontrollen, hvis tilgængelig"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Erstat en streng eller et regulært udtryk"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "GÃ¥ til linje- og kolonnenummer"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Markér tekst ved aktuel markørposition"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Gentag sidste søgning"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Kopiér aktuelle linje ud og gem den i udklipsbufferen"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Indryk den aktuelle linje"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Fjern indrykning af aktuel linje"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Fortryd sidste handling"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Omgør sidste fortrudte handling"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "GÃ¥ et tegn fremad"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "GÃ¥ et tegn bagud"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "GÃ¥ et ord fremad"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "GÃ¥ et ord bagud"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "GÃ¥ til forrige linje"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Gå til næste linje"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "GÃ¥ til begyndelsen af aktuel linje"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "GÃ¥ til enden af aktuel linje"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Gå til starten af afsnittet; dernæst af forrige afsnit"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Gå til lige efter afsnittets slutning; dernæst efter næste afsnit"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Gå til filens første linje"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "GÃ¥ til filens sidste linje"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "GÃ¥ til modsvarende klamme"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Rul en linje op uden at flytte markøren"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Rul en linje ned uden at flytte markøren"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "GÃ¥ til forrige filbuffer"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Gå til næste filbuffer"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Indsæt næste tasteanslag ordret"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Indsæt et tabulatortegn ved markørpositionen"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Indsæt et linjeskift ved markørpositionen"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Fjern tegnet under markøren"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Fjern tegnet til venstre for markøren"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Klip fra markørpositionen til filens slutning"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Ombryd hele filen"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Tæl ord, linjer og tegn"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Opdatér (genskriv) den aktuelle skærm"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Kør i baggrunden (hvis suspend er slået til)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Slå forskel på store og små bogstaver til eller fra"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Omvend søgeretning"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Slå brug af regulære udtryk til eller fra"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Husk de foregående søg og erstat-strenge"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Husk de følgende søg og erstat-strenge"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "GÃ¥ til filbrowser"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Slå DOS-format til eller fra"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Slå Mac-format til eller fra"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Slå efterstillet tilføjelse til eller fra"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Slå foranstillet tilføjelse til eller fra"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Slå sikkerhedskopiering af originalfil til eller fra"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Udfør ekstern kommando"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Slå brug af ny buffer til eller fra"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "GÃ¥ ud af filbrowseren"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Gå til første fil i listen"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "GÃ¥ til sidste fil i listen"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "Gå til næste fil i listen"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "GÃ¥ til forrige fil i listen"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "GÃ¥ til katalog"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Luk"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Gem"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Ombryd"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Læs fil"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Klip ud"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "AfOmbryd"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Indsæt"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Akt. pos"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Stavetjek"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Markér tekst"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Kopiér tekst"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Indryk tekst"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Fjern indrykning"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Fortryd"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Omgør"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Fremad"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Bagud"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Næste ord"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Forrige ord"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Forrige linje"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Næste linje"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Hjem"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Slut"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Find anden klamme"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Rul op"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Rul ned"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Foregående fil"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Næste fil"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Ordret input"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tabulator"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Fjern"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Slet baglæns"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "KlipResten"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Ordtælling"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Hjælpetilstand"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Konstant visning af markørposition"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Brug af en ekstra linje til redigering"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Jævn rulning"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Visning af mellemrum"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Farvefremhævelse af syntaks"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Smart home-tast"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Automatisk indrykning"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Klip ud til enden"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Ombrydning af lange linjer"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Konvertering af skrevne tab-tegn til mellemrum"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Sikkerhedskopiér filer"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Flere fil-buffere"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Museunderstøttelse"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Ingen konvertering fra DOS/Mac-format"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Suspension"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "Blød linjeombrydning"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Hjælpetekst for søgekommando\n"
+"\n"
+" Indtast de ord eller tegn, du vil lede efter, og tryk så enter. Hvis der er "
+"en træffer for teksten du indtastede, vil skærmen blive opdateret til stedet "
+"for den nærmeste træffer for søgestrengen.\n"
+"\n"
+" Den foregående søgestreng vil blive vist i kantparanteser efter Søg:-"
+"teksten. Hvis du taster enter uden at indtaste nogen tekst vil den "
+"foregående søgning blive udført. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Hvis du har valgt tekst ved markering og så søger/erstatter, vil kun "
+"træffere i den valgte tekst blive erstattet.\n"
+"\n"
+"Følgende funktionstaster er tilgængelige i søgetilstand:\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Hjælpetekst for Gå til linje\n"
+"\n"
+" Indtast linjenummeret du ønsker at gå til, og tast enter. Hvis der er "
+"færre linjer i teksten end det tal du indtastede, vil du blive bragt hen til "
+"den sidste linje i filen.\n"
+"\n"
+" Følgende funktionstaster er til stede i Gå til linje-tilstand:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Hjælpetekst for indsæt fil\n"
+"\n"
+" Indtast navnet på en fil, der skal indsættes i den nuværende filbuffer på "
+"den aktuelle markørposition.\n"
+"\n"
+" Hvis du har kompileret nano med understøttelse for flere filbuffere, og "
+"aktiveret flere filbuffere med kommandolinjeflag -F eller --multibuffer, "
+"eller Meta-F-skifteren, eller brugt en nanorc-fil, vil indsætning af en fil "
+"få den til at blive indlæst i en separat buffer (brug Meta-< og > til at "
+"skifte mellem filbuffere). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Hvis du har brug for endnu en tom buffer, så undlad at skrive et filnavn, "
+"eller skriv navnet på en fil, der ikke findes, og tryk enter.\n"
+"\n"
+" Følgende funktionstaster er tilgængelige i Indsæt fil-tilstand:\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Hjælpetekst for skriv fil\n"
+"\n"
+" Indtast navnet som du ønsker at gemme den nuværende fil som, og tryk enter "
+"for at gemme filen.\n"
+"\n"
+" Hvis du har valgt tekst ved markering, vil du blive spurgt om du vil gemme "
+"kun den udvalgte del til en separat fil. For at begrænse risikoen for "
+"overskrivning af den aktuelle fil med kun en del af den, er det nuværende "
+"filnavn ikke forvalgt i denne tilstand.\n"
+"\n"
+" Følgende funktionstaster er til stede i Skriv fil-tilstand:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Hjælpetekst for filbrowser\n"
+"\n"
+" Filsbrowseren bruges til at gennemse katalogstrukturen for at udvælge en "
+"fil til læsning eller skrivning. Du kan bruge piletasterne eller Page Up/"
+"Down til at skimme gennem filerne, og S eller enter for at vælge den "
+"markerede fil, eller gå ind i det markerede katalog. For at gå et niveau op "
+"udvælges kataloget kaldet \"..\" i toppen af fillisten.\n"
+"\n"
+" Følgende funktionstaster er til stede i filskimmeren:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Hjælpetekst for søgekommando i filbrowser\n"
+"\n"
+" Indtast de ord eller tegn, du vil lede efter, og tryk så enter. Hvis der "
+"er en træffer for teksten du indtastede, vil skærmen blive opdateret til "
+"stedet for den nærmeste træffer for søgestrengen.\n"
+"\n"
+" Den foregående søgestreng vil blive vist i kantparanteser efter Søg:-"
+"teksten. Hvis du taster enter uden at indtaste nogen tekst vil den "
+"foregående søgning blive udført. \n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Følgende funktionstaster er til stede i browsersøgetilstand:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Hjælpetekst for Gå til katalog i filbrowser\n"
+"\n"
+" Indtast navnet på det katalog, som du vil gennemse.\n"
+"\n"
+" Hvis tab-fuldførelse ikke er deaktiveret kan du bruge Tab-tasten til at "
+"(forsøge) automatisk at fuldføre katalognavnet.\n"
+"\n"
+" Følgende funktionstaster er til stede i Gå til katalog-tilstand i "
+"filbrowser:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Hjælpetekst for stavekontrol\n"
+"\n"
+" Stavekontrollen kontrollerer stavningen af al teksten i den nuværende fil. "
+"Når et ukendt ord findes, fremhæves det og en erstatning kan redigeres. Den "
+"vil så spørge om at erstatte alle tilfælde af det givne fejlstavede ord i "
+"den nuværende fil eller, hvis du har valgt tekst ved markering, i den valgte "
+"tekst.\n"
+"\n"
+" Følgende andre funktioner er til stede i stavekontrol-tilstand:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Hjælpetekst for Kør kommando\n"
+"\n"
+" Denne tilstand lader dig indsætte udskriften fra en kommando kørt af "
+"skallen i den aktuelle buffer (eller en ny buffer i multibuffer-tilstand). "
+"Hvis du skal bruge en tom buffer mere, så undlad at skrive en kommando.\n"
+"\n"
+" Følgende taster er tilgængelige i denne tilstand:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Hovedhjælpetekst for nano\n"
+"\n"
+" Tekstredigereren nano er designet til at efterligne funktionaliteten og "
+"brugervenligheden i tekstredigereren UW Pico. Der er fire hoveddele i "
+"programmet: Øverste linje viser programmets versionsnummer, navnet på filen "
+"som redigeres, og om filen er ændret eller ej. Efter dette findes "
+"hovedvinduet som viser filen der redigeres. Statuslinjen er tredje linje fra "
+"underkanten og viser vigtige meddelelser. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"De nederste to linjer viser de mest brugte genveje i redigeringsprogrammet.\n"
+"\n"
+" Notationen for genveje er som følger: Kombinationer med Ctrl-tasten noteres "
+"med en circumfleks (^), og kan skrives enten ved at trykke Ctrl, eller ved "
+"at trykke Esc to gange. Kombinationer med Esc noteres med Meta-symbolet "
+"(M-), og kan skrives enten ved at taste Esc, Alt eller selve Meta-tasten "
+"afhængigt af tastaturopsætningen. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Desuden kan man, ved at trykke Esc to gange efterfulgt af et trecifret tal "
+"(i titalssystemet) mellem 000 og 255, indtaste tegnet med den tilsvarende "
+"værdi. Følgende tastetryk kan bruges i hovedredigeringsvinduet. "
+"Alternative taster vises i parenteser:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "aktivér/deaktivér"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Tasten ugyldig i visningstilstand"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Bufferen skrevet til %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Buffer ikke skrevet til %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Buffer ikke skrevet: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Vinduestørrelsen er for lille til Nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Brug: nano [FLAG] [[+LINJE,KOLONNE] FIL]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Flag\t\tLangt GNU-flag\t\tBetydning\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Flag\t\tBetydning\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Vis denne meddelelse"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+LINJE,KOLONNE"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Start ved linjenummer LINJE, kolonne KOLONNE"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Brug smart home-tast"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Gem sikkerhedskopier af eksisterende filer"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <kat>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<kat>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Katalog til at gemme unikke sikkerhedskopifiler"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Brug fed frem for omvendt video-tekst"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Konvertér skrevne tabulatortegn til mellemrum"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Tillad flere fil-buffere"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Log & læs streng-historik for søg og erstat"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Se ikke på nanorc-filer"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Fiks forvirringsproblem med numerisk tastatur"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Tilføj ikke linjeskift til slut i filer"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Konvertér ikke fra DOS/Mac-format"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Brug en ekstra linje til redigering"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <str>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<str>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Anførelsesstreng"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Begrænset tilstand"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Rul linjevis frem for en halv skærm ad gangen"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#kolonner>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#kolonner>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Sæt bredden på et tabulatortegn til #kolonner"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Ryd statuslinje hurtigt"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Udskriv versionsinformation og afslut"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Find ordgrænser mere præcist"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <str>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<str>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Syntaksdefinition for farvelægning"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Vis markørposition hele tiden"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Fiks forvirringsproblem med Tilbagetast/Slettetast"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Indryk automatisk nye linjer"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Klip fra markøren til linjens slutning"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Følg ikke symbolske lænker, overskriv"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Aktivér styring med mus"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <kat>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<kat>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Sæt behandlet katalog"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Behold XON- (^Q) og XOFF- (^S) taster"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "Ignorer opstartsproblemer såsom fejl i rc-fil uden fejlmeddelelser"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#kolonner>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#kolonner>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Placér ombrydningspunkt ved #kolonner"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Brug alternativ stavekontrol"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Gem automatisk ved afslutning, spørg ikke"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "Tillad generisk fortryd [EKSPERIMENTEL]"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Visningstilstand (skrivebeskyttet)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Ombryd ikke lange linjer"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Vis ikke de to hjælpelinjer"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Slå suspend til"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "Brug blød linjeombrydning"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(ignoreret, for Pico-kompatibilitet)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano version %s (kompileret %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " E-post: nano@nano-editor.org\tHjemmeside: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Kompileringsflag:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Desværre, understøttelse af denne funktion er blevet deaktiveret"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Gem ændret buffer (AT SVARE \"Nej\" VIL ØDELÆGGE ÆNDRINGER)? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "Kunne ikke genåbne stdin fra tastaturet, beklager\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Læser fra stdin, ^C for at afbryde\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Modtog SIGHUP eller SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Brug \"fg\" for at returnere til nano\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "aktiveret"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "deaktiveret"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Ukendt kommando"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON ignoreret, mumle mumle"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF ignoreret, mumle mumle"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Ønsket tab-størrelse \"%s\" er ugyldig"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Ønsket fyld-størrelse \"%s\" er ugyldig"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "JjYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Aa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Ja"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Alle"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Nej"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Fejl i %s på linje %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Argument \"%s\" har et uafsluttet \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Regex-strenge skal begynde og ende med et \"-tegn"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Dårligt regulært udtryk \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Mangler syntaksnavn"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "\"none\"-syntaksen er reserveret"
+
+# Extension skal her forstås som f.eks. 'nano --something extension', altså en slags argument, der kræves af et andet argument
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "\"default\"-syntaksen kan ikke tage udvidelser"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Mangler tastenavn"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "tastebindinger skal starte med \"^\", \"M\" eller \"F\""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "Skal angive funktion at binde tast til"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "Skal angive menu at binde tast til (eller \"all\")"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Kunne ikke associere navnet \"%s\" med en funktion"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Kunne ikke associere navnet \"%s\" med en menu"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "Beklager, keystr \"%s\" er en ugyldig binding"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Farve \"%s\" ikke forstået.\n"
+"Gyldige farver er \"green\", \"red\", \"blue\", \n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" og \n"
+"\"black\", med den valgfri forstavelse \"bright\"\n"
+"til forgrundsfarver."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Kan ikke tilføje farvekommando uden en syntakskommando"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Mangler farvenavn"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Baggrundsfarven \"%s\" må ikke være lys"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Mangler regex-streng"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" kræver et tilsvarende \"end=\""
+
+# Headeren/filhovedet er første linje i rc-filen, så vidt jeg kan se
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Kan ikke tilføje filhoved-regex uden en syntakskommando"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Fatal fejl: Ingen taster bundet til funktionen \"%s\""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Afslutter. Start om nødvendigt nano med flaget -I for at justere dine "
+"nanorc-indstillinger\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Kommandoen \"%s\" tillades ikke i inkluderet fil"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Syntaksen \"%s\" har ingen farvekommandoer"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Kommando \"%s\" ikke forstået"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Mangler flag"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Flaget \"%s\" kræver et argument"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Flaget er ikke en gyldig flerbytestreng"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Kræver ikke-blanke tegn"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Der kræves to enkelt-kolonnetegn"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Kan ikke fjerne flag \"%s\""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Ukendt flag \"%s\""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Jeg kan ikke finde mit hjemmekatalog! Hulk!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%.*s%s\" ikke fundet"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (at erstatte) i markering"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (at erstatte)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Erstat denne forekomst?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Erstat med"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Erstattede %lu forekomst"
+msgstr[1] "Erstattede %lu forekomster"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Indtast linjenummer, kolonnenummer"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Ugyldigt linje- eller kolonnenummer"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Ikke en klamme"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Ingen modsvarende klamme"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Markering sat"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Markering fjernet"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Intet i fortrydelsesbufferen!"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr "Intern fejl: Kan ikke matche linje %d. Gem venligst dit arbejde"
+
+# De her mystiske "text add" og den slags indgår i strengen "Undid action (%s)" hvor %s er en af disse
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "tilføj tekst"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "slet tekst"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "ombryd linje"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "sammenføj linje"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "klip tekst"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "indsæt tekst"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "linje bryd"
+
+# dette sker hvis teksten f.eks. er læst fra en fil
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "import af tekst"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "tekst erstat"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Intern fejl: ukendt type. Gem venligst dit arbejde"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Fortrød handling (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Intet at omgøre!"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr "Intern fejl: Opsætning af Omgør slog fejl. Gem venligst dit arbejde"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Omgjorde handling (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Kunne ikke overføre i datakanal"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Kunne ikke forgrene"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr "Intern fejl: Kan ikke opsætte uncut. Gem venligst dit arbejde."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Intern fejl: ukendt type. Gem venligst dit arbejde."
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Dårlig anførselsstreng %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Kan nu af-ombryde!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Redigér en erstatning"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Kunne ikke oprette datakanal"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Opretter ordliste med fejlstavelser, vent venligst..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Kunde ikke få størrelse af datakanals-buffer"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Fejl ved kald af \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Fejl ved kald af \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Fejl ved kald af \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Stavekontrol færdiggjort"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Fejl ved kald af \"%s\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Stavekontrollen mislykkedes: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Stavekontrollen mislykkedes: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sOrd: %lu Linjer: %ld Tegn: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "I markering: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano har ikke mere hukommelse!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Unicode-input"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Ændret"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Se"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "KAT:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Fil:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "linje %ld/%ld (%d%%), kol %lu/%lu (%d%%), tegn %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Tekstredigereren nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "version"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Præsenteres af:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Særlig tak til:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "For ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "og alle andre som vi har glemt..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Tak for at du bruger nano!"
+
+#~ msgid "Error writing backup file %s: File owner mismatch"
+#~ msgstr ""
+#~ "Fejl ved skrivning af sikkerhedskopifil %s: Filens ejer stemmer ikke"
+
+#~ msgid "add_to_cutbuffer() called with inptr->data = %s\n"
+#~ msgstr "add_to_cutbuffer() kaldt med inptr->data = %s\n"
+
+#~ msgid "Blew away cutbuffer =)\n"
+#~ msgstr "Sprængte udklipsbufferen =)\n"
+
+#~ msgid "File to insert into new buffer [from ./] "
+#~ msgstr "Fil at indsætte i ny buffer [fra ./] "
+
+#~ msgid "File to insert [from ./] "
+#~ msgstr "Fil at indsætte [fra ./] "
+
+#~ msgid "filename is %s\n"
+#~ msgstr "filnavnet er %s\n"
+
+#~ msgid "%s: free'd a node, YAY!\n"
+#~ msgstr "%s: frigjorde en knude, JUBII!\n"
+
+#~ msgid "%s: free'd last node.\n"
+#~ msgstr "%s: frigjorde sidste knude.\n"
+
+#~ msgid "Could not read %s for backup: %s"
+#~ msgstr "Kunde ikke åbne %s for sikkerhedskopiering: %s"
+
+#~ msgid "Couldn't write backup: %s"
+#~ msgstr "Kunne ikke skrive sikkerhedskopi: %s"
+
+#~ msgid "Backing up %s to %s\n"
+#~ msgstr "Sikkerhedskopierer %s til %s\n"
+
+#~ msgid "Could not set permissions %o on backup %s: %s"
+#~ msgstr "Kunne ikke sætte rettighederne %o på sikkerhedskopi %s: %s"
+
+#~ msgid "Could not set owner %d/group %d on backup %s: %s"
+#~ msgstr "Kunne ikke sætte ejer %d/gruppe %d på sikkerhedskopi %s: %s"
+
+#~ msgid "Could not set access/modification time on backup %s: %s"
+#~ msgstr "Kunne ikke sætte adgangs-/ændringstid på sikkerhedskopi %s: %s"
+
+#~ msgid "Could not open file for writing: %s"
+#~ msgstr "Kunne ikke åbne filen for skrivning: %s"
+
+#~ msgid "Wrote >%s\n"
+#~ msgstr "Skrev >%s\n"
+
+#~ msgid "Could not close %s: %s"
+#~ msgstr "Kunne ikke lukke %s: %s"
+
+#~ msgid "Could not reopen %s: %s"
+#~ msgstr "Kunne ikke genåbne %s: %s"
+
+#~ msgid "Could not open %s for prepend: %s"
+#~ msgstr "Kunde ikke åbne %s for foranstilling: %s"
+
+#~ msgid "Could not set permissions %o on %s: %s"
+#~ msgstr "Kunne ikke sætte rettighederne %o på %s: %s"
+
+#~ msgid "Can't open \"%s\": %s"
+#~ msgstr "Kan ikke åbne \"%s\": %s"
+
+#~ msgid "Goto Cancelled"
+#~ msgstr "GÃ¥ til annulleret"
+
+#~ msgid "Unable to open ~/.nano_history file, %s"
+#~ msgstr "Kunne ikke åbne ~/.nano_history-fil, %s"
+
+#~ msgid "Unable to write ~/.nano_history file, %s"
+#~ msgstr "Kunne ikke åbne ~/.nano_history-fil, %s"
+
+#~ msgid "Writing file in DOS format"
+#~ msgstr "Skriver fil i DOS-format"
+
+#~ msgid "Writing file in Mac format"
+#~ msgstr "Skriver fil i Mac-format"
+
+#~ msgid "Backing up file"
+#~ msgstr "Sikkerhedskopierer fil"
+
+#~ msgid "Auto wrap"
+#~ msgstr "Automatisk linjeombrydning"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Start hjælpmenuen"
+
+#~ msgid "Unjustify after a justify"
+#~ msgstr "Nulstil efter en ombryding"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Erstat tekst inden i tekstredigereren"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Søg efter tekst inden i tekstredigereren"
+
+#~ msgid "Move up one line"
+#~ msgstr "GÃ¥ en linje op"
+
+#~ msgid "Insert a tab character"
+#~ msgstr "Indsæt et tabulatortegn"
+
+#~ msgid "Make the current search or replace case (in)sensitive"
+#~ msgstr "Slå versalfølsomhed til/fra i den aktuelle søgning eller erstatning"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Tilføj før begyndelsen på aktuel fil"
+
+#~ msgid "Search backwards"
+#~ msgstr "Søg bagud"
+
+#~ msgid "Write file out in DOS format"
+#~ msgstr "Skriver fil ud i DOS-format"
+
+#~ msgid "Write file out in Mac format"
+#~ msgstr "Skriver fil ud i Mac-format"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Sikkerhedskopiér oprindelig fil ved gemning"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Find anden klamme"
+
+#~ msgid "Open previously loaded file"
+#~ msgstr "Åbn tidligere indlæst fil"
+
+#~ msgid "Open next loaded file"
+#~ msgstr "Åbn næste indlæste fil"
+
+#~ msgid "Up"
+#~ msgstr "Op"
+
+#~ msgid "Down"
+#~ msgstr "Ned"
+
+#~ msgid "Direction"
+#~ msgstr "Retning"
+
+#~ msgid "Space"
+#~ msgstr "Mellemrum"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Brug: nano [+LINJE] [langt GNU-flag] [flag] <fil>\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Brug: nano [+LINJE] [flag] <fil>\n"
+#~ "\n"
+
+#~ msgid "+LINE"
+#~ msgstr "+LINJE"
+
+#~ msgid "Use alternate keypad routines"
+#~ msgstr "Brug alternative tastatur-rutiner"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "Lav søgninger med regulært udtryk"
+
+#~ msgid "-T [num]"
+#~ msgstr "-T [tal]"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Ombryd linjer efter antal tegn"
+
+#~ msgid "current->data now = \"%s\"\n"
+#~ msgstr "current->data nu = \"%s\"\n"
+
+#~ msgid "After, data = \"%s\"\n"
+#~ msgstr "Efter, data = \"%s\"\n"
+
+#~ msgid "Could not create a temporary filename: %s"
+#~ msgstr "Kunne ikke skabe et midlertidigt filnavn: %s"
+
+#~ msgid "Spell checking failed: unable to write temp file!"
+#~ msgstr "Stavekontrol mislykkedes: kan ikke skrive til midlertidig fil!"
+
+#~ msgid "Cannot resize top win"
+#~ msgstr "Kan ikke ændre størrelse på øvre vindue"
+
+#~ msgid "Cannot move top win"
+#~ msgstr "Kan ikke flytte øvre vindue"
+
+#~ msgid "Cannot resize edit win"
+#~ msgstr "Kan ikke ændre størrelse på redigeringsvindue"
+
+#~ msgid "Cannot move edit win"
+#~ msgstr "Kan ikke flytte redigeringsvindue"
+
+#~ msgid "Cannot resize bottom win"
+#~ msgstr "Kan ikke ændre størrelse på bundvinduet"
+
+#~ msgid "Cannot move bottom win"
+#~ msgstr "Kan ikke flytte bundvinduet"
+
+#~ msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
+#~ msgstr "NumLock-problem opdaget. Tasterne vil ikke fungere uden NumLock"
+
+#~ msgid "Tab size is too small for nano...\n"
+#~ msgstr "Tabulatorstørrelsen er for lille til Nano...\n"
+
+#~ msgid "Main: set up windows\n"
+#~ msgstr "Main: konfigurér vindue\n"
+
+#~ msgid "Main: bottom win\n"
+#~ msgstr "Main: bundvindue\n"
+
+#~ msgid "Main: open file\n"
+#~ msgstr "Main: åbn fil\n"
+
+# Osæker.
+#~ msgid "AHA! %c (%d)\n"
+#~ msgstr "Aha! '%c' (%d)\n"
+
+#~ msgid "I got Alt-O-%c! (%d)\n"
+#~ msgstr "Jeg modtog Alt-O-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-1-%c! (%d)\n"
+#~ msgstr "Jeg modtog Alt-[-1-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-2-%c! (%d)\n"
+#~ msgstr "Jeg modtog Alt-[-2-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-%c! (%d)\n"
+#~ msgstr "Jeg modtog Alt-[-%c! (%d)\n"
+
+#~ msgid "I got Alt-%c! (%d)\n"
+#~ msgstr "Jeg modtog Alt-%c! (%d)\n"
+
+#~ msgid "I got %c (%d)!\n"
+#~ msgstr "Jeg modtog %c (%d)!\n"
+
+#~ msgid "Adding new syntax after 1st\n"
+#~ msgstr "Tilføjer ny syntaks efter første\n"
+
+#~ msgid "Starting a new syntax type\n"
+#~ msgstr "Starter en ny syntakstype\n"
+
+#~ msgid "Starting a new colorstring for fg %d bg %d\n"
+#~ msgstr "Starter en ny farvestreng for fg %d bg %d\n"
+
+#~ msgid "Adding new entry for fg %d bg %d\n"
+#~ msgstr "Tilføjer ny indgang for fg %d bg %d\n"
+
+#~ msgid "%s: Read a comment\n"
+#~ msgstr "%s: Læs en kommentar\n"
+
+#~ msgid "%s: Parsing option %s\n"
+#~ msgstr "%s: Fortolker valgmulighed %s\n"
+
+#~ msgid "set flag %d!\n"
+#~ msgstr "sæt flag %d!\n"
+
+#~ msgid "Errors found in .nanorc file"
+#~ msgstr "Fejl fundet i .nanorc-fil"
+
+#~ msgid "Unable to open ~/.nanorc file, %s"
+#~ msgstr "Kunne ikke åbne ~/.nanorc fil, %s"
+
+#~ msgid "\"%s...\" not found"
+#~ msgstr "\"%s...\" kunne ikke findes"
+
+#~ msgid "Invalid regex \"%s\""
+#~ msgstr "Ugyldigt regulært udtryk \"%s\""
+
+#~ msgid "Search Cancelled"
+#~ msgstr "Søgningen annulleret"
+
+#~ msgid "Replace Cancelled"
+#~ msgstr "Erstatning afbrudt"
+
+#~ msgid "Replace failed: unknown subexpression!"
+#~ msgstr "Erstatning mislykkedes: ukendt deludtryk!"
+
+#~ msgid "Aborted"
+#~ msgstr "Afbrudt"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Ja ja, vær nu rimelig"
+
+#~ msgid "actual_x for xplus=%d returns %d\n"
+#~ msgstr "actual_x for xplus=%d returnerede %d\n"
+
+# Osæker.
+#~ msgid "Aha! '%c' (%d)\n"
+#~ msgstr "Aha! '%c' (%d)\n"
+
+# Osæker.
+#~ msgid "input '%c' (%d)\n"
+#~ msgstr "inddata \"%c\" (%d)\n"
+
+#~ msgid " File: ..."
+#~ msgstr " Fil:..."
+
+#~ msgid " DIR: ..."
+#~ msgstr " KAT:..."
+
+#~ msgid "Refusing 0 length regex match"
+#~ msgstr "Afviser regex-træffer med længen 0"
+
+#~ msgid "Moved to (%d, %d) in edit buffer\n"
+#~ msgstr "Gik til (%d, %d) i redigeringsbufferen\n"
+
+#~ msgid "I got \"%s\"\n"
+#~ msgstr "Jeg modtog \"%s\"\n"
+
+#~ msgid "Dumping file buffer to stderr...\n"
+#~ msgstr "Dumper filbufferen til standard fejl...\n"
+
+#~ msgid "Dumping cutbuffer to stderr...\n"
+#~ msgstr "Dumper udklipsbufferen til standard fejl...\n"
+
+#~ msgid "Dumping a buffer to stderr...\n"
+#~ msgstr "Dumper en buffer til standard fejl...\n"
+
+#~ msgid "read_line: not on first line and prev is NULL"
+#~ msgstr "read_line: ikke på første linje og foregående er NULL"
+
+#~ msgid "delete_opennode(): free'd a node, YAY!\n"
+#~ msgstr "delete_opennode(): frigjorde en knude, JUBII!\n"
+
+#~ msgid "delete_opennode(): free'd last node.\n"
+#~ msgstr "delete_opennode(): frigjorde sidste knude.\n"
+
+#~ msgid "Can't visit parent in restricted mode"
+#~ msgstr "Kan ikke besøge forælder i begrænset tilstand"
+
+#~ msgid "Pico mode"
+#~ msgstr "Pico-tilstand"
+
+#~ msgid "Emulate Pico as closely as possible"
+#~ msgstr "Efterlign Pico så tæt som muligt"
+
+#~ msgid "'\")}]>"
+#~ msgstr "'\")}]>"
+
+#~ msgid ".?!"
+#~ msgstr ".?!"
+
+#~ msgid "string val=%s\n"
+#~ msgstr "strengval=%s\n"
+
+#~ msgid "For end part, beginning = \"%s\"\n"
+#~ msgstr "For slutdel, begyndelse = \"%s\"\n"
+
+#~ msgid "Replaced 1 occurrence"
+#~ msgstr "Erstattede 1 forekomst"
+
+#~ msgid "Replace with [%s]"
+#~ msgstr "Erstat med [%s]"
+
+#~ msgid "nano: realloc: out of memory!"
+#~ msgstr "nano: realloc: ikke mere hukommelse!"
+
+#~ msgid "current->data = \"%s\"\n"
+#~ msgstr "current->data = \"%s\"\n"
+
+#~ msgid "do_cursorpos: linepct = %f, bytepct = %f\n"
+#~ msgstr "do_cursorpos: linepct = %f, bytepct = %f\n"
+
+#~ msgid "nano: calloc: out of memory!"
+#~ msgstr "nano: calloc: ikke mere hukommelse!"
+
+#~ msgid "Match! (%d chars) \"%s\"\n"
+#~ msgstr "Træffer! (%d tegn) \"%s\"\n"
+
+#~ msgid "paintlen (%d) = eo (%d) - so (%d)\n"
+#~ msgstr "paintlen (%d) = eo (%d) - so (%d)\n"
+
+#~ msgid "paintlen (%d) = COLS (%d) - k (%d), - rm.so (%d) - 1\n"
+#~ msgstr "paintlen (%d) = KOL'ER (%d) - k (%d), - rm.so (%d) - 1\n"
+
+#~ msgid "start = %d, smatch = %d, ematch = %d\n"
+#~ msgstr "start = %d, smatch = %d, ematch = %d\n"
+
+#~ msgid "Backwards search"
+#~ msgstr "Baglæns søgning"
+
+#~ msgid "Goto"
+#~ msgstr "GÃ¥ til"
+
+#~ msgid "check_wrap called with inptr->data=\"%s\"\n"
+#~ msgstr "check_wrap kaldt med inptr->data=\"%s\"\n"
diff --git a/po/de.gmo b/po/de.gmo
new file mode 100644
index 0000000..852b801
--- /dev/null
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..4fa0974
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,2473 @@
+# German Messages for the nano editor
+# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# Karl Eichwalder <keichwa@gmx.net>, 2001.
+# Florian König <floki@bigfoot.com>, 2000, 2001.
+# Michael Piefel <piefel@informatik.hu-berlin.de>, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.4pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-04-15 15:28+0100\n"
+"Last-Translator: Michael Piefel <piefel@informatik.hu-berlin.de>\n"
+"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Gehe zu Verzeichnis"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Abgebrochen"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Kann im eingeschränkten Modus nicht nach außerhalb von %s gehen"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Fehler beim Lesen von %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Konnte nicht ins übergeordnete Verzeichnis wechseln"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(Verz.)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(Verz. höher)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Suche"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [GROSS/klein]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [reg. Ausdruck]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Rückwärts]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Suche wieder von vorn"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Das ist das einzige Auftreten"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Kein aktuelles Suchmuster"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Kann Datei von außerhalb %s nicht einfügen"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Keine weiteren offenen Dateipuffer"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Umgeschaltet zu %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Neuer Puffer"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "eine Zeile gelesen (aus DOS- und Mac-Format konvertiert)"
+msgstr[1] "%lu Zeilen gelesen (aus DOS- und Mac-Format konvertiert)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"eine Zeile gelesen (aus DOS- und Mac-Format konvertiert – Warnung: Kein "
+"Schreibrecht)"
+msgstr[1] ""
+"%lu Zeilen gelesen (aus DOS- und Mac-Format konvertiert – Warnung: Kein "
+"Schreibrecht)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "eine Zeile gelesen (aus Mac-Format konvertiert)"
+msgstr[1] "%lu Zeilen gelesen (aus Mac-Format konvertiert)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"eine Zeile gelesen (aus Mac-Format konvertiert – Warnung: Kein Schreibrecht)"
+msgstr[1] ""
+"%lu Zeilen gelesen (aus Mac-Format konvertiert – Warnung: Kein Schreibrecht)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "eine Zeile gelesen (aus DOS-Format konvertiert)"
+msgstr[1] "%lu Zeilen gelesen (aus DOS-Format konvertiert)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"eine Zeile gelesen (aus DOS-Format konvertiert – Warnung: Kein Schreibrecht)"
+msgstr[1] ""
+"%lu Zeilen gelesen (aus DOS-Format konvertiert – Warnung: Kein Schreibrecht)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "eine Zeile gelesen"
+msgstr[1] "%lu Zeilen gelesen"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "eine Zeile gelesen (Warnung: Kein Schreibrecht)"
+msgstr[1] "%lu Zeilen gelesen (Warnung: Kein Schreibrecht)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Lese Datei"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Neue Datei"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "„%s“ nicht gefunden"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "„%s“ ist ein Verzeichnis"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "„%s“ ist eine Gerätedatei"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "In neuem Puffer auszuführender Befehl [von %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Auszuführender Befehl [von %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "in neuen Puffer einzufügende Datei [von %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "einzufügende Datei [von %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Taste unzulässig wenn nicht im Multibuffer-Modus"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Kann nicht außerhalb von %s schreiben"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"Kann nicht vorn oder hinten an eine symbolische Verknüpfung anfügen, wenn --"
+"nofollow gesetzt ist"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Fehler beim Schreiben der Sicherungskopie %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Zu viele Sicherungskopien?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Fehler beim Schreiben von %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Fehler beim Schreiben der temporären Datei: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "eine Zeile geschrieben"
+msgstr[1] "%lu Zeilen geschrieben"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS-Format]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac-Format]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Sicherungskopie]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Auswahl vorne an Datei anfügen"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Auswahl an Datei anhängen"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Auswahl in Datei schreiben"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Dateiname zum vorn Anfügen"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Dateiname zum Anhängen"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Dateiname zum Speichern"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Datei exisitiert, ÃœBERSCHREIBEN? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Datei unter einem ANDEREN NAMEN speichern? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "Datei wurde seit dem Öffnen geändert, dennoch speichern? "
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(mehr)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Drücken Sie die Eingabetaste, um mit dem Starten von nano fortzufahren.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Ersetzen"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Keine Ersetzung"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "GROSS/klein"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Rückwärts"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "reg. Ausdruck"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "zur. Geschichte"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "vor Geschichte"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Zu Text"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Wo ist nächstes"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Erste Datei"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Letzte Datei"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "In Dateien"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS-Format"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac-Format"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Anhängen"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "vorn Anfügen"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Sicherungskopie"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Befehl ausführen"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Gehe zu Verz."
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Hilfe"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Beenden"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Wo ist"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Seite zurück"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Seite vor"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Erste Zeile"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Letzte Zeile"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "in den Hintergrund"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Anf des Abs."
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Ende des Abs."
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "Kompl. Ausr."
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Auffrischen"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Datei einfügen"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Zu Zeile"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Absatz ausrichten"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Funktion abbrechen"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Diese Hilfe anzeigen"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Aktuellen Dateipuffer schließen / nano beenden"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "nano beenden"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Datei speichern"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Datei einfügen"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "nach einer Zeichenkette oder einem regulären Ausdruck suchen"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "zum vorhergehenden Bildschirm springen"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "zum folgenden Bildschirm springen"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "die aktuelle Zeile ausschneiden und in der Zwischenablage speichern"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "aus der Zwischenablage einfügen"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "die aktuelle Cursorposition anzeigen"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Rechtschreibprüfung aufrufen (wenn verfügbar)"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "eine Zeichenkette oder einen regulären Ausdruck ersetzen"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "zu einer bestimmten Zeile und Spalte springen"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Text an der Cursorposition markieren"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "letzte Suche wiederholen"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "die aktuelle Zeile kopieren und in der Zwischenablage speichern"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "die aktuelle Zeile einrücken"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "die aktuelle Zeile ausrücken"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "letzte Operation rückgängig"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "rückgängig gemachte Operation wiederholen"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "ein Zeichen vorwärts gehen"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "ein Zeichen rückwärts gehen"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "ein Wort vorwärts gehen"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "ein Wort rückwärts gehen"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "zur vorhergehenden Zeile gehen"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "zur folgenden Zeile gehen"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "zum Anfang der aktuellen Zeile springen"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "zum Ende der aktuellen Zeile springen"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "zum Anfang des aktuellen Absatzes springen; dann des vorigen Absatzes"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr ""
+"hinter das Ende des aktuellen Absatzes springen; dann des vorigen Absatzes"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "zur ersten Zeile der Datei springen"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "zur letzten Zeile der Datei springen"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "zur passenden Klammer springen"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "eine Zeile hochrollen, ohne den Cursor zu bewegen"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "eine Zeile hinunterrollen, ohne den Cursor zu bewegen"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "zum vorhergehenden Dateipuffer umschalten"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "zum folgenden Dateipuffer umschalten"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "nächstes Zeichen direkt (nicht interpretiert) einfügen"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "einen Tabulator an der Cursorposition einfügen"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "einen Zeilenumbruch an der Cursorposition einfügen"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Zeichen an der Cursorposition löschen"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Zeichen links vom Cursor löschen"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "vom Cursor bis zum Dateiende ausschneiden"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "die gesamte Datei ausrichten"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "die Zahl der Wörter, Zeilen und Zeichen zählen"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Bildschirm auffrischen (neu zeichnen)"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+"den Editor in den Hintergrund schieben (wenn „suspend“ angeschaltet ist)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Unterscheidung von Groß- und Kleinschreibung bei Suche umschalten"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "die Richtung der Suche umkehren"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Benutzung regulärer Ausdrücke umschalten"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "den vorhergehenden Suchen-/Ersetzen-Begriff hervorholen"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "den nächsten Suchen-/Ersetzen-Begriff hervorholen"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "zum Dateibrowser"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Schreiben im DOS-Format umschalten"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Schreiben im Mac-Format umschalten"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Anhängen umschalten"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "vorn Anfügen umschalten"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Sicherung existierender Dateien beim Speichern umschalten"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "externen Befehl ausführen"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Benutzung eines neuen Puffers umschalten"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "den Dateibrowser beenden"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "zur ersten Datei der Liste springen"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "zur letzten Datei der Liste springen"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "zur nächsten Datei der Liste springen"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "zur vorigen Datei der Liste springen"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "gehe zu Verzeichnis"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Schließen"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Speichern"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Ausrichten"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Datei öffnen"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Ausschneiden"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Ausr.rückgängig"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Ausschn. rückgängig"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Cursor"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Rechtschr."
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Text markieren"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Kopieren"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Einrücken"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Ausrücken"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Rückgängig"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Wiederholen"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Vorwärts"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Zurück"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Nächstes Wort"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Vorheriges Wort"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Zeile zurück"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Zeile vor"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Pos 1"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Ende"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Andere Klammer finden"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Hochrollen"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Herunterrollen"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Vorherige Datei"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Nächste Datei"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Direkte Eingabe"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Löschen"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Rücktaste"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "AusschnBisEnde"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Wortanzahl"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Hilfe-Modus"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Cursorposition ständig anzeigen"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Verwendung einer Zeile mehr zum Editieren"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Sanftes Rollen"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Weißraumanzeige"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Farbige Syntaxhervorhebung"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Intell. Pos1-Taste"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Automatischer Einzug"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Bis Ende ausschneiden"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Lange Zeilen umbrechen"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Umwandlungen eingegebener Tabulatoren in Leerzeichen"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Sicherungskopien"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Mehrere Dateipuffer"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Mausunterstützung"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Keine Umwandlung aus DOS/Mac-Format"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "in den Hintergrund"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "Lange Zeilen fließend umbrechen"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Hilfetext für das Suchkommando\n"
+"\n"
+" Geben Sie die Wörter oder Buchstaben ein, nach denen Sie suchen möchten, "
+"und drücken Sie die Eingabetaste. Wenn eine Übereinstimmung für den "
+"eingegebenen Text gefunden wird, dann wird die Anzeige zur nächsten "
+"Fundstelle bewegt.\n"
+"\n"
+" Die vorhergehende Suchzeichenkette wird in eckigen Klammern nach der Such-"
+"Aufforderung angezeigt. Drücken der Eingabetaste ohne Eingabe irgenwelchen "
+"Textes führt die vorhergehende Suche durch. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Wenn Sie Text markiert haben und dann Suchen, um zu Ersetzen, werden nur "
+"Treffer in der ausgewählten Region ersetzt.\n"
+"\n"
+" Die folgenden Funktionstasten sind im Suchmodus verfügbar:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Hilfetext für „Zu Zeile“\n"
+"\n"
+" Geben Sie die Nummer der gewünschten Zeile ein und drücken Sie die "
+"Eingabetaste. Gibt es weniger Zeilen im Text, so springt nano zur letzten "
+"Zeile der Datei.\n"
+"\n"
+" Die folgenden Funktionstasten sind im Zu-Zeile-Modus verfügbar:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Hilfetext für „Datei einfügen“\n"
+"\n"
+" Geben Sie den Namen einer Datei ein, die an der momentanen Cursorposition "
+"in den momentanen Dateipuffer eingefügt werden soll.\n"
+"\n"
+" Wenn Sie nano mit Unterstützung für mehrere Dateipuffer compiliert haben "
+"und diese Funktion mit den Kommandozeilenoptionen -F oder --multibuffer, mit "
+"der Tastenkombination Meta-F oder mittels einer nanorc-Datei eingeschaltet "
+"haben, so wird die Einfügeoperation die Datei in einen separaten Puffer "
+"laden. (Benutzen Sie Meta-< und >, um zwischen den Dateipuffern "
+"umzuschalten.) "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Wenn Sie einen weiteren leeren Puffer benötigen, drücken Sie einfach die "
+"Eingabetaste, ohne einen Dateinamen einzugeben, oder geben Sie einen "
+"nichtexistierenden Dateinamen an.\n"
+"\n"
+" Die folgenden Funktionstasten sind im Datei-Einfügen-Modus verfügbar:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Hilfetext für „Datei schreiben“\n"
+"\n"
+" Geben Sie den Namen ein, unter dem Sie die momentane Datei speichern wollen "
+"und drücken Sie die Eingabetaste.\n"
+"\n"
+" Wenn Sie Text markiert haben, so werden Sie gefragt, ob Sie nur den "
+"ausgewählten Teil des Textes in eine separate Datei schreiben wollen. Um die "
+"Gefahr, eine Datei mit einem Teil von ihr zu überschreiben, zu minimieren, "
+"ist der aktuelle Dateiname in diesem Modus nicht die Vorgabe.\n"
+"\n"
+" Die folgenden Funktionstasten sind im Datei-Schreiben-Modus verfügbar:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Hilfetext für den Dateiwähler\n"
+"\n"
+" Mit dem Dateiwähler kann die Verzeichnisstruktur visuell durchsucht werden, "
+"um eine Datei für Lese- und Schreiboperationen auszuwählen. Sie können die "
+"Pfeiltasten oder Bild-Auf/Ab benutzen, um durch die Dateien zu blättern, und "
+"S oder die Eingabe, um die markierte Datei bzw. das markierte Verzeichnis "
+"auszuwählen. Um sich eine Ebene aufwärts zu bewegen, wählen Sie das "
+"Verzeichnis namens „..“ ganz oben in der Dateiliste.\n"
+"\n"
+" Die folgenden Funktionstasten sind im Dateiwähler verfügbar:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Hilfetext für das Suchkommando des Dateiwählers\n"
+"\n"
+" Geben Sie die Wörter oder Buchstaben ein, nach denen Sie suchen möchten, "
+"und drücken Sie die Eingabetaste. Wenn eine Übereinstimmung für den "
+"eingegebenen Text gefunden wird, dann wird die Anzeige zur nächsten "
+"Fundstelle bewegt.\n"
+"\n"
+" Die vorhergehende Suchzeichenkette wird in eckigen Klammern nach der Such-"
+"Aufforderung angezeigt. Drücken der Eingabetaste ohne Eingabe irgenwelchen "
+"Textes führt die vorhergehende Suche durch.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Die folgenden Funktionstasten sind im Suchkommando-Modus des Dateiwählers "
+"verfügbar:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Hilfetext für den Gehe-zu-Verzeichnis im Dateiwähler\n"
+"\n"
+" Geben Sie den Namen des Verzeichnisses ein, das Sie durchsuchen wollen.\n"
+"\n"
+" Wenn Tabulator-Vervollständigung nicht abgeschaltet worden ist, so können "
+"Sie die Tabulator-Taste benutzen, um (zu versuchen) den Verzeichnisnamen "
+"automatisch vervollständigen zu lassen.\n"
+"\n"
+" Die folgenden Funktionstasten sind im Gehe-zu-Verzeichnis-Modus des "
+"Dateiwählers verfügbar:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Hilfetext für die Rechtschreibprüfung\n"
+"\n"
+" Die Rechtschreibprüfung überprüft die Rechtschreibung des gesamten Texts "
+"der aktuellen Datei. Wenn ein unbekanntes Wort gefunden wird, wird es "
+"hervorgehoben und eine Ersetzung kann bearbeitet werden. Sie werden dann "
+"gefragt, ob Sie die vorgenommene Ersetzung in der ganzen Datei, oder, wenn "
+"Sie Text markiert haben, innerhalb der Auswahl vornehmen lassen wollen.\n"
+"\n"
+" Die folgenden Funktionstasten sind in der Rechtschreibprüfung verfügbar:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Hilfetext für Externen Befehl\n"
+"\n"
+" Dieses Menü erlaubt es, die Ausgabe eines externen Befehls, der in der "
+"Shell ausgeführt wird, in den aktuellen Puffer einzufügen (oder in einen "
+"neuen Puffer, wenn Unterstützung für mehrere Puffer aktiviert ist). Wenn Sie "
+"einen weiteren leeren Puffer benötigen, geben Sie keinen Befehl ein.\n"
+"\n"
+" Die folgenden Funktionstasten sind im Befehl-Ausführen-Modus verfügbar:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Haupt-Hilfe für nano\n"
+"\n"
+" Nano wurde konzipiert, die Funktionalität und die Benutzerfreundlichkeit "
+"des UW-Pico-Texteditors zu imitieren. Es gibt vier Hauptbereiche: Die "
+"Titelzeile zeigt die Version des Programms, den Namen der momentan "
+"editierten Datei und ob die Datei verändert wurde oder nicht. Das "
+"Hauptfenster enthält die zu bearbeitende Datei. Die Statuszeile (die dritte "
+"Zeile von unten) zeigt wichtige Meldungen. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Die untersten zwei Zeilen listen die meistgebrauchten Tastenkombinationen "
+"von nano auf.\n"
+"\n"
+" Tastenkombinationen werden wie folgt abgekürzt: Kombinationen mit der Strg-"
+"Taste werden mit einem ^ ausgedrückt und können auch eingegeben werden, "
+"indem Esc zwei Mal gedrückt wird. Escape-Sequenzen werden mit dem Meta-"
+"Symbol (M) angegeben und können je nach Tastatureinstellung mit Esc, Alt "
+"oder Meta eingegeben werden, abhängig von Ihrer Tastatureinstellung. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Zudem kann durch zweimaliges Drücken von Esc und anschließender Eingabe "
+"einer dreistelliger Zahl von 000 bis 255 das Zeichen mit dem entsprechenden "
+"Wert eingegeben werden. Die folgenden Tasten(kombinationen) sind im "
+"Hauptfenster verfügbar. Alternative Tasten stehen in Klammern:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "aktivieren/deaktivieren"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Taste unzulässig im Nur-Lese-Modus"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Puffer in %s geschrieben\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Puffer nicht in %s geschrieben: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Puffer nicht geschrieben: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Fenstergröße ist zu klein für Nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Aufruf: nano [OPTIONEN] [[+ZEILE,SPALTE] Datei]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Option\t\tlange GNU-Option\t\tBedeutung\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Option\t\tBedeutung\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "diese Meldung anzeigen"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+ZEILE,SPALTE"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "bei Zeile ZEILE, Spalte SPALTE beginnen"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "intelligente Pos1-Taste aktivieren"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "existierende Dateien beim Speichern sichern"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <verz>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<verz>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Verzeichnis, um Backupdateien zu schreiben"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Fettdruck anstelle von inversem Text benutzen"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "eingegebebene Tabulatoren in Leerzeichen umwandeln"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Benutzung mehrerer Dateipuffer aktivieren"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Geschichte der Suchen-/Ersetzen-Begriffe mitschreiben und lesen"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "die nanorc-Dateien ignorieren"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Verwirrung um Zehnertastatur lösen"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "keine Zeilenvorschübe an die Enden von Dateien anhängen"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "keine Umwandlung aus DOS/Mac-Format"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "eine Zeile mehr zum Editieren verwenden"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <zkette>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<zkette>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Zitatzeichen"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "eingeschränkter Modus"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "zeilenweise rollen (statt halb-bildschirm-weise)"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#spalten>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#spalten>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Tabulator-Größe auf #spalten setzen"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "schnelles Löschen der Statuszeile durchführen"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Versionsinfo ausgeben und beenden"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Wortgrenzen genauer erkennen"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <zkette>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<zkette>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "zu benutzende Syntaxdefinition für Einfärben"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Cursorposition ständig anzeigen"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Vertauschung von Rücktaste/Entf beheben"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Neue Zeilen automatisch einrücken"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Vom Cursor bis zum Zeilenende ausschneiden"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Symbolischen Links nicht folgen, sondern überschreiben"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Benutzung der Maus aktivieren"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <verz>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<verz>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Arbeitsverzeichnis setzen"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Tasten XON (^Q) und XOFF (^S) beibehalten"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "Startprobleme wie Fehler in den RC-Dateien stillschweigend ignorieren"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#spalten>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#spalten>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Umbruchpunkt bei #spalten setzen"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Alternatives Rechtschreibprüfungsprogramm"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Beim Beenden ohne Rückfrage speichern"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "Allgemeine Rückgängig-Function aktivieren [EXPERIMENTELL]"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Nur-Lese-Modus (keine Veränderungen möglich)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Lange Zeilen nicht in neue Zeilen umbrechen"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "die zwei Hilfe-Zeilen nicht anzeigen"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Schieben in den Hintergrund (anhalten und zurück zur Shell) aktivieren"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "fließenden Zeilenumbruch aktivieren"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(ignoriert, für Kompatibilität zu Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano Version %s (compiliert um %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Email: nano@nano-editor.org\tWWW: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Kompilierte Optionen:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Tut mir leid, diese Funktion wird nicht unterstützt"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Veränderten Puffer speichern („Nein“ VERWIRFT DIE ÄNDERUNGEN) ? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "Konnte Standardeingabe nicht erneut von Tastatur öffnen, sorry\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Lese von Standardeingabe, ^C zum Abbrechen\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "SIGHUP oder SIGTERM empfangen\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Benutzen Sie „fg“, um zu nano zurückzukehren.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "aktiviert"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "deaktiviert"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Unbekannter Befehl"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON ignoriert, murmel murmel"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF ignoriert, murmel murmel"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Angeforderte Tabulatorweite „%s“ ungültig"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Angeforderte Füllgröße „%s“ ungültig"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "JjYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Aa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Ja"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Alle"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Nein"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Fehler in %s in Zeile %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Argument „%s“ hat nicht beendetes \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Zeichenketten für reguläre Ausdrücke müssen mit \" anfangen und enden"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Ungültiger regulärer Ausdruck „%s“: %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Fehlender Syntaxname"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "Die Syntax „none“ ist reserviert"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "Die Syntax „default“ darf keine Erweiterungen haben"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Fehlender Schlüsselname"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "Tastenkürzel müssen mit „^“, „M“ oder „F“ beginnen"
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "Die an die Taste zu bindene Funktion muss angegeben werden"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "Das an die Taste zu bindene Menü (oder „all“) muss angegeben werden"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Konnte „%s“ nicht auf eine Funktion binden"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Konnte „%s“ nicht auf ein Menü binden"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "Tut mir Leid, keystr „%s“ ist keine legale Zuordnung"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Farbe „%s“ nicht verstanden.\n"
+"Gültige Farben sind „green“ (grün), „red“ (rot), „blue“ (blau),\n"
+"„white“ (weiß), „yellow“ (gelb), „cyan“ (zyanblau), „magenta“ (magentarot)\n"
+"und „black“ (schwarz), mit dem optionalen Präfix „bright“ (hell)\n"
+"für Vordergrundfarben."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Kann keine Farbdirektive hinzufügen, ohne einen Syntaxbefehl zu haben"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Fehlender Farbname"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Hintergrundfarbe „%s“ kann nicht hell („bright“) sein"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Fehlender regulärer Ausdruck"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "„start=“ erfordert ein entsprechendes „end=“"
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr ""
+"Kann keinen reg. Ausdruck für Header hinzufügen, ohne einen Syntaxbefehl zu "
+"haben"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Schwerwiegender Fehler: keine Tassten an Funktion „%s“ gebunden"
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Beende. Bitte starten Sie nano bei Bedarf mit der Option „-I“, wenn Sie Ihre "
+"nanorc-Einstellungen anpassen wollen\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Befehl „%s“ nicht in eingebundener Datei erlaubt"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Syntax „%s“ hat keine Farbbefehle"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Befehl „%s“ nicht verstanden"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Fehlendes Flag"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Option „%s“ erfordert ein Argument"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Option ist keine gültige Multibyte-Zeichenkette"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Nicht-Leerraum-Zeichen erforderlich"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Zwei einspaltige Zeichen erforderlich"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "kann Flag „%s“ nicht löschen"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Unbekanntes Flag „%s“"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Kann mein Heimatverzeichnis nicht finden! Autsch!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "„%.*s%s“ nicht gefunden"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (zu ersetzen) in Auswahl"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (zu ersetzen)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Fundstelle ersetzen?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Ersetzen mit"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "eine Ersetzung vorgenommen"
+msgstr[1] "%lu Ersetzungen vorgenommen"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Zeilennummer, Spaltennummer eingeben"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Ungültige Zeilen- oder Spaltennummer"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Keine Klammer"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Keine passende Klammer"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Markierung gesetzt"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Markierung entfernt"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Nichts im Rückgängig-Puffer!"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+"Interner Fehler: kann Zeile %d nicht finden. Bitte speichern Sie Ihre Arbeit"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "Text hinzu"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "Text löschen"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "Zeilenumbruch"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "Zeile verbinden"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "Text ausschneiden"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "Text ausschneiden zurücknehmen"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "Zeilenvorschub"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "Text einfügen"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "Text ersetzen"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Interner Fehler: unbekannter Typ. Bitte speichern Sie Ihre Arbeit"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Operation rückgangig gemacht (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Nichts zu wiederholen!"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+"Interner Fehler: Vorbereitung für Wiederholen fehlgeschlagen. Bitte "
+"speichern Sie Ihre Arbeit"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Operation wiederholt (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Konnte kein Pipe durchführen"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Konnte kein Fork durchführen"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+"Interner Fehler: kann Zurücknehmen des Ausschneidens nicht aufsetzen. Bitte "
+"speichern Sie Ihre Arbeit"
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Interner Fehler: Unbekannter Typ. Bitte speichern Sie Ihre Arbeit"
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Ungültiges Zitatzeichen %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Kann Absatzausrichtung jetzt rückgängig machen"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Ersetzung editieren"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Konnte keine Pipe erstellen"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Erstelle Liste falsch geschriebener Wörter, bitte warten..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Konnte Größe des Pipe-Puffers nicht bestimmen"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Fehler beim Aufruf von „spell“"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Fehler beim Aufruf von „sort -f“"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Fehler beim Aufruf von „uniq“"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Rechtschreibprüfung abgeschlossen"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Fehler beim Aufruf von „%s“"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Rechtschreibprüfung fehlgeschlagen: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Rechtschreibprüfung fehlgeschlagen: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sWörter: %lu Zeilen: %ld Zeichen: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "In Auswahl: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano hat keinen Speicher mehr!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Unicode-Eingabe"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Verändert"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Ansehen"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "Verz.:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Datei:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "Zeile %ld/%ld (%d%%), Spalte %lu/%lu (%d%%), Zeichen %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Der nano-Text-Editor"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "Version"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Entwickelt von:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Speziellen Dank an:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "The Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Für ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "und alle Nichtgenannten..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Danke für die Benutzung von nano!"
+
+#~ msgid "Error writing backup file %s: File owner mismatch"
+#~ msgstr ""
+#~ "Fehler beim Schreiben der Sicherungskopie %s: Besitzer stimmt nicht "
+#~ "überein"
+
+#~ msgid "line split"
+#~ msgstr "Zeile aufteilen"
+
+#~ msgid "line cut"
+#~ msgstr "Zeile ausschneiden"
+
+#~ msgid "Space"
+#~ msgstr "Space"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Komm schon, sei vernünftig"
+
+#~ msgid "Prepending to %s failed: %s"
+#~ msgstr "Vorne an %s anfügen fehlgeschlagen: %s"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Hilfe-Menü anzeigen"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Im Editor nach Text suchen"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Text im Editor ersetzen"
+
+#~ msgid "Find matching bracket"
+#~ msgstr "Passende Klammer finden"
+
+#~ msgid "Make the current search/replace case (in)sensitive"
+#~ msgstr ""
+#~ "Groß- und Kleinschreibung bei aktueller Suche oder Ersetzen (nicht) "
+#~ "berücksichtigen"
+
+#~ msgid "Make the current search/replace go backwards"
+#~ msgstr "Aktuelle Suche oder Ersetzen rückwärts gehen lassen"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "An momentane Datei vorne anfügen"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Original beim Abspeichern sichern"
+
+#~ msgid "Insert into new buffer"
+#~ msgstr "In neuen Puffer einfügen"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Spalten auffüllen (Zeilenumbruch bei) #Spalten"
+
+#~ msgid "Duplicate syntax name %s"
+#~ msgstr "Doppelter Syntaxname %s"
+
+#~ msgid "Could not create temp file: %s"
+#~ msgstr "Konnte temporäre Datei nicht erzeugen: %s"
+
+#~ msgid "Refusing zero-length regex match"
+#~ msgstr "Treffer mit Länge 0 bei regulärem Ausdruck abgelehnt"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Andere Klammer finden"
+
+#~ msgid "Direction"
+#~ msgstr "Richtung"
+
+#~ msgid "Up"
+#~ msgstr "Hoch"
+
+#~ msgid "+LINE"
+#~ msgstr "+ZEILE"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "Suche mit regulären Ausdrücken durchführen"
+
+#~ msgid "Verbatim input"
+#~ msgstr "Direkte Eingabe"
+
+#~ msgid "Search Cancelled"
+#~ msgstr "Suche abgebrochen"
+
+#~ msgid "Replace Cancelled"
+#~ msgstr "Ersetzung abgebrochen"
+
+#~ msgid "Aborted"
+#~ msgstr "Abgebrochen"
+
+#~ msgid "add_to_cutbuffer() called with inptr->data = %s\n"
+#~ msgstr "add_to_cutbuffer() aufgerufen mit inptr->data = %s\n"
+
+#~ msgid "Blew away cutbuffer =)\n"
+#~ msgstr "Inhalt der Zwischenablage verworfen\n"
+
+#~ msgid "filename is %s\n"
+#~ msgstr "Dateiname ist %s\n"
+
+#~ msgid "%s: free'd a node, YAY!\n"
+#~ msgstr "%s: Knoten freigegeben, JO!\n"
+
+#~ msgid "%s: free'd last node.\n"
+#~ msgstr "%s: letzter Knoten freigegeben.\n"
+
+#~ msgid "Could not read %s for backup: %s"
+#~ msgstr "Konnte %s nicht für die Sicherungskopie lesen: %s"
+
+#~ msgid "Couldn't write backup: %s"
+#~ msgstr "Konnte Sicherungskopie nicht schreiben: %s"
+
+#~ msgid "Backing up %s to %s\n"
+#~ msgstr "Fertige Sicherungskopie von %s auf %s an\n"
+
+#~ msgid "Could not set permissions %o on backup %s: %s"
+#~ msgstr "Konnte Rechte %o für Sicherungskopie %s nicht setzen: %s"
+
+#~ msgid "Could not set owner %d/group %d on backup %s: %s"
+#~ msgstr ""
+#~ "Konnte Besitzer %d/Gruppe %d für Sicherungskopie %s nicht setzen: %s"
+
+#~ msgid "Could not set access/modification time on backup %s: %s"
+#~ msgstr ""
+#~ "Konnte Zugriffs-/Änderungszeit für Sicherungskopie %s nicht setzen: %s"
+
+#~ msgid "Could not open file for writing: %s"
+#~ msgstr "Konnte nicht in Datei schreiben: %s"
+
+#~ msgid "Wrote >%s\n"
+#~ msgstr "Schrieb >%s\n"
+
+#~ msgid "Could not close %s: %s"
+#~ msgstr "Konnte %s nicht schließen: %s"
+
+#~ msgid "Could not reopen %s: %s"
+#~ msgstr "Konnte %s nicht erneut öffnen: %s"
+
+#~ msgid "Could not open %s for prepend: %s"
+#~ msgstr "Konnte %s nicht zum vorn Anfügen öffnen: %s"
+
+#~ msgid "Could not open %s for writing: %s"
+#~ msgstr "Konnte %s nicht zum Schreiben öffnen: %s"
+
+#~ msgid "Could not set permissions %o on %s: %s"
+#~ msgstr "Konnte Rechte %o für %s nicht setzen: %s"
+
+#~ msgid "Goto Cancelled"
+#~ msgstr "„Gehe zu“ abgebrochen"
+
+#~ msgid "Unable to open ~/.nano_history file, %s"
+#~ msgstr "Kann Datei ~/.nano_history nicht öffnen, %s"
+
+#~ msgid "Unable to write ~/.nano_history file, %s"
+#~ msgstr "Kann Datei ~/.nano_history nicht öffnen, %s"
+
+#~ msgid "Backing up file"
+#~ msgstr "Lege Sicherungskopie der Datei an"
+
+#~ msgid "Unjustify after a justify"
+#~ msgstr "Absatzausrichtung rückgängig machen"
+
+#~ msgid "Move up one line"
+#~ msgstr "Zur vorhergehenden Zeile springen"
+
+#~ msgid "Move down one line"
+#~ msgstr "Zur folgenden Zeile springen"
+
+#~ msgid "Search backwards"
+#~ msgstr "Suche rückwärts"
+
+#~ msgid "Open previously loaded file"
+#~ msgstr "Vorige geladene Datei öffnen"
+
+#~ msgid "Open next loaded file"
+#~ msgstr "Nächste geladene Datei öffnen"
+
+#~ msgid "Down"
+#~ msgstr "Runter"
+
+#~ msgid "Use alternate keypad routines"
+#~ msgstr "Alternative Routinen für Nummernblock benutzen"
+
+#~ msgid "-T [num]"
+#~ msgstr "-T [anzahl]"
+
+#~ msgid "current->data now = \"%s\"\n"
+#~ msgstr "current->data jetzt = „%s“\n"
+
+#~ msgid "After, data = \"%s\"\n"
+#~ msgstr "Nachher, data = „%s“\n"
+
+#~ msgid "Spell checking failed: unable to write temp file!"
+#~ msgstr ""
+#~ "Rechtschreibprüfung fehlgeschlagen: konnte nicht in temporäre Datei "
+#~ "schreiben"
+
+#~ msgid "Cannot resize top win"
+#~ msgstr "Kann die Größe des oberen Fensters nicht verändern"
+
+#~ msgid "Cannot move top win"
+#~ msgstr "Kann oberes Fenster nicht verschieben"
+
+#~ msgid "Cannot resize edit win"
+#~ msgstr "Kann Größe des Bearbeitungsfensters nicht verändern"
+
+#~ msgid "Cannot move edit win"
+#~ msgstr "Kann Bearbeitungsfenster nicht verschieben"
+
+#~ msgid "Cannot resize bottom win"
+#~ msgstr "Kann Größe des unteren Fensters nicht verändern"
+
+#~ msgid "Cannot move bottom win"
+#~ msgstr "Kann unteres Fenster nicht verschieben"
+
+#~ msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
+#~ msgstr ""
+#~ "NumLock-Problem entdeckt. Tastenblock funktioniert bei ausgeschaltetem "
+#~ "NumLock nicht"
+
+#~ msgid "Tab size is too small for nano...\n"
+#~ msgstr "Tabulatorweite ist zu klein für Nano...\n"
+
+#~ msgid "Main: set up windows\n"
+#~ msgstr "Hauptprogramm: Fenster konfigurieren\n"
+
+#~ msgid "Main: bottom win\n"
+#~ msgstr "Hauptprogramm: unteres Fenster\n"
+
+#~ msgid "Main: open file\n"
+#~ msgstr "Hauptprogramm: Datei öffnen\n"
+
+#~ msgid "AHA! %c (%d)\n"
+#~ msgstr "Aha! %c (%d)\n"
+
+#~ msgid "I got Alt-O-%c! (%d)\n"
+#~ msgstr "Erhielt Alt-O-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-1-%c! (%d)\n"
+#~ msgstr "Erhielt Alt-[-1-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-2-%c! (%d)\n"
+#~ msgstr "Erhielt Alt-[-2-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-%c! (%d)\n"
+#~ msgstr "Erhielt Alt-[-%c! (%d)\n"
+
+#~ msgid "I got Alt-%c! (%d)\n"
+#~ msgstr "Erhielt Alt-%c! (%d)\n"
+
+#~ msgid "I got %c (%d)!\n"
+#~ msgstr "Erhielt %c (%d)!\n"
+
+#~ msgid "Adding new syntax after 1st\n"
+#~ msgstr "Füge neue Syntax nach der ersten hinzu\n"
+
+#~ msgid "Starting a new syntax type\n"
+#~ msgstr "Beginne einen neuen Syntaxtyp\n"
+
+#~ msgid "Starting a new colorstring for fg %d bg %d\n"
+#~ msgstr "Beginne eine neue Farbzeichenkette für fg %d bg %d\n"
+
+#~ msgid "Adding new entry for fg %d bg %d\n"
+#~ msgstr "Füge neuen Eintrag für fg %d bg %d hinzu\n"
+
+#~ msgid "%s: Read a comment\n"
+#~ msgstr "%s: Kommentar lesen\n"
+
+#~ msgid "%s: Parsing option %s\n"
+#~ msgstr "%s: Option %s lesen\n"
+
+#~ msgid "set flag %d!\n"
+#~ msgstr "setze Flag %d!\n"
+
+#~ msgid "Errors found in .nanorc file"
+#~ msgstr "Fehler in .nanorc-Datei gefunden"
+
+#~ msgid "Unable to open ~/.nanorc file, %s"
+#~ msgstr "Kann Datei ~/.nanorc nicht öffnen, %s"
+
+#~ msgid "\"%s...\" not found"
+#~ msgstr "„%s...“ nicht gefunden"
+
+#~ msgid "Invalid regex \"%s\""
+#~ msgstr "Ungültiger regulärer Ausdrücke „%s“"
+
+#~ msgid "Replace failed: unknown subexpression!"
+#~ msgstr "Ersetzung gescheitert: unbekannter Unterausdruck"
+
+#~ msgid "actual_x for xplus=%d returns %d\n"
+#~ msgstr "actual_x für xplus=%d gab %d zurück\n"
+
+#~ msgid "Aha! '%c' (%d)\n"
+#~ msgstr "Aha! ‚%c‘ (%d)\n"
+
+#~ msgid "input '%c' (%d)\n"
+#~ msgstr "Eingabe ‚%c‘ (%d)\n"
+
+#~ msgid " File: ..."
+#~ msgstr " Datei: ..."
+
+#~ msgid " DIR: ..."
+#~ msgstr " Verz.: ..."
+
+#~ msgid "Moved to (%d, %d) in edit buffer\n"
+#~ msgstr "Nach (%d, %d) im Bearbeitungspuffer verschoben\n"
+
+#~ msgid "I got \"%s\"\n"
+#~ msgstr "Erhielt „%s“\n"
+
+#~ msgid "Dumping file buffer to stderr...\n"
+#~ msgstr "Gebe Datei Puffer nach stderr aus...\n"
+
+#~ msgid "Dumping cutbuffer to stderr...\n"
+#~ msgstr "Gebe Inhalt der Zwischenablage nach stderr aus...\n"
+
+#~ msgid "Dumping a buffer to stderr...\n"
+#~ msgstr "Gebe einen Puffer nach stderr aus...\n"
+
+#~ msgid "Generic error"
+#~ msgstr "Allgemeiner Fehler"
+
+#~ msgid "Can't visit parent in restricted mode"
+#~ msgstr "Kann im eingeschränkten Modus nicht nach oben wechseln"
+
+#~ msgid "Press return to continue\n"
+#~ msgstr "Drücken Sie die Eingabetaste zum Fortfahren\n"
+
+#~ msgid "string val=%s\n"
+#~ msgstr "Zeichenkette Wert=%s\n"
+
+#~ msgid "For end part, beginning = \"%s\"\n"
+#~ msgstr "Für End-Teil, Anfang = „%s“\n"
+
+#~ msgid "current->data = \"%s\"\n"
+#~ msgstr "current->data = „%s“\n"
+
+#~ msgid "do_cursorpos: linepct = %f, bytepct = %f\n"
+#~ msgstr "do_cursorpos: linepct = %f, bytepct = %f\n"
+
+#~ msgid "read_line: not on first line and prev is NULL"
+#~ msgstr "read_line: nicht in der ersten Zeile und prev ist NULL"
+
+# Punctuation:
+#~ msgid "'\")}]>"
+#~ msgstr "'\")}]>"
+
+#~ msgid "Replaced 1 occurrence"
+#~ msgstr "1 Ersetzung vorgenommen"
+
+#~ msgid "Replace with [%s]"
+#~ msgstr "Ersetzen mit [%s]"
+
+#~ msgid "nano: realloc: out of memory!"
+#~ msgstr "nano: realloc: Kein Speicher verfügbar!"
+
+#~ msgid "nano: calloc: out of memory!"
+#~ msgstr "nano: calloc: Kein Speicher verfügbar!"
+
+#~ msgid "Match! (%d chars) \"%s\"\n"
+#~ msgstr "Treffer! (%d Zeichen) „%s“\n"
+
+#~ msgid "paintlen (%d) = eo (%d) - so (%d)\n"
+#~ msgstr "paintlen (%d) = eo (%d) - so (%d)\n"
+
+#~ msgid "paintlen (%d) = COLS (%d) - k (%d), - rm.so (%d) - 1\n"
+#~ msgstr "paintlen (%d) = COLS (%d) - k (%d), - rm.so (%d) - 1\n"
+
+#~ msgid "start = %d, smatch = %d, ematch = %d\n"
+#~ msgstr "start = %d, smatch = %d, ematch = %d\n"
+
+#~ msgid "Backwards search"
+#~ msgstr "Suche rückwärts"
+
+#~ msgid "Goto"
+#~ msgstr "Zu Zeile"
+
+#~ msgid "check_wrap called with inptr->data=\"%s\"\n"
+#~ msgstr "check_wrap aufgerufen mit inptr->data=„%s“\n"
diff --git a/po/en@boldquot.header b/po/en@boldquot.header
new file mode 100644
index 0000000..fedb6a0
--- /dev/null
+++ b/po/en@boldquot.header
@@ -0,0 +1,25 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+# This catalog furthermore displays the text between the quotation marks in
+# bold face, assuming the VT100/XTerm escape sequences.
+#
diff --git a/po/en@quot.header b/po/en@quot.header
new file mode 100644
index 0000000..a9647fc
--- /dev/null
+++ b/po/en@quot.header
@@ -0,0 +1,22 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
diff --git a/po/es.gmo b/po/es.gmo
new file mode 100644
index 0000000..9df945b
--- /dev/null
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..5214250
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,2149 @@
+# translation of nano-1.9.99pre0.es.po to Spanish
+# Mensajes en español para GNU nano.
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# $Id: es.po,v 1.127 2002/10/26 19:56:43 jordi Exp $
+#
+# Jordi Mallach <jordi@sindominio.net>, 2000, 2001, 2002.
+# Ricardo Cárdenes <ricardo@conysis.com>, 2002, 2003, 2004, 2005.
+# Ricardo Javier Cardenes Medina <rcardenes@not.iac.es>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: nano-1.9.99pre0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2006-08-30 23:38+0100\n"
+"Last-Translator: Ricardo Javier Cardenes Medina <rcardenes@not.iac.es>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!=1;\n"
+"X-Generator: KBabel 1.11.2\n"
+
+# a un. sv
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Ir a un Directorio"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Cancelado"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "No se puede ir fuera de %s en modo restringido"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Error leyendo '%s': %s"
+
+# No se puede. sv
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "No se puede ascender de directorio"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(dir)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(dir padre)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Buscar"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Mayúsc/Minúsc]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [ExpReg]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Hacia Atrás]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Búsqueda Recomenzada"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Ésta es la única coincidencia"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "No hay patrón de búsqueda"
+
+# queda raro no usar ni "un" ni "el" antes de fichero. sv
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "No se puede insertar un fichero desde fuera de %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "No hay más ficheros abiertos"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Se ha cambiado a %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Nuevo Búfer"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "%lu línea leída (convertida desde formatos DOS y Mac)"
+msgstr[1] "%lu líneas leídas (convertidas desde formatos DOS y Mac)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "%lu línea leída (convertida desde formatos DOS y Mac)"
+msgstr[1] "%lu líneas leídas (convertidas desde formatos DOS y Mac)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "%lu línea leída (convertida desde formato Mac)"
+msgstr[1] "%lu líneas leídas (convertidas desde formato Mac)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "%lu línea leída (convertida desde formato Mac)"
+msgstr[1] "%lu líneas leídas (convertidas desde formato Mac)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "%lu línea leída (convertida desde formato DOS)"
+msgstr[1] "%lu líneas leídas (convertidas desde formato DOS)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "%lu línea leída (convertida desde formato DOS)"
+msgstr[1] "%lu líneas leídas (convertidas desde formato DOS)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "%lu línea leída"
+msgstr[1] "%lu líneas leídas"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Leyendo Fichero"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Nuevo Fichero"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" no encontrado"
+
+# Aquí pegaría poner "El fichero...", como en el mensaje siguiente. sv
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "El fichero \"%s\" es un directorio"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "El fichero \"%s\" es un dispositivo"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Orden a ejecutar en el nuevo búfer [desde %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Orden a ejecutar [desde %s]"
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Fichero a insertar en el nuevo búfer [desde %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Fichero a insertar [desde %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Tecla ilegal en modo no-multibuffer"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "No se puede escribir fuera de %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"No puedo añadir al principio o final a un enlace simbólico con --nofollow "
+"activo"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, fuzzy, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Error escribiendo en fichero temporal: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Demasiados ficheros de respaldo?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Error guardando '%s': %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Error escribiendo en fichero temporal: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Escrita línea %lu"
+msgstr[1] "%lu líneas escritas"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [Formato DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Formato Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Respaldo]"
+
+# Como antes, me suena raro que antes de Fichero no haya "un" o "el". sv
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Anteponer selección al fichero"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Añadir selección al fichero"
+
+# a el -> al. jm
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Escribir selección al fichero"
+
+# de -> del. sv
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Nombre del fichero al que anteponer"
+
+# de -> del. sv
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Nombre del fichero al que añadir"
+
+# ídem. sv
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Nombre del fichero a escribir"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "El fichero existe, ¿ SOBREESCRIBIR ?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "¿ Guardar el fichero con un NOMBRE DIFERENTE ? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(más)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Pulsa intro para continuar iniciando nano\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Reemplazar"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "No sustituir"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "May/Min"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Hacia Atrás"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "ExpReg"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "HistóricoPrev"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "HistSig"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Ir a texto"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "DóndeEstá Sig"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Primer Fich"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Último Fich"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "A ficheros"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Formato DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Formato Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Añadir"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Anteponer"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Respaldar fich"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Ejecutar orden"
+
+# a un. sv
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Ir a un dir"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Ver ayuda"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Salir"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Buscar"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Pág Ant"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Pág Sig"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Prim. lín."
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Última línea"
+
+#: src/global.c:487
+#, fuzzy
+msgid "Suspend"
+msgstr "Suspensión"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Ini de Pár"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Fin de Pár"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "JustifTodo"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Refrescar"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Inserte fichero"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Ir a Línea"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Justificar el párrafo actual"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Cancelar la función actual"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Mostrar esta ayuda"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Cerrar el fichero mostrado / Salir de nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Salir de nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Escribir el fichero actual a disco"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Insertar otro fichero en el actual"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Buscar una cadena o expresión regular"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "Moverse a la página anterior"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "Moverse a la página siguiente"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Cortar la línea actual y guardarla en el cutbuffer"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Pegar el cutbuffer en la línea actual"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Mostrar la posición del cursor"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Invocar el corrector ortográfico (si está disponible)"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Reemplazar una cadena o expresión regular"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Ir a una línea y columna"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Marcar texto en la posición actual del cursor"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Repetir la última búsqueda"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Copiar la línea actual y guardarla en el cutbuffer"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Sangrar la línea actual"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Quitar sangrado a la línea actual"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "Moverse hacia adelante un carácter"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "Moverse hacia atrás un carácter"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "Moverse hacia adelante una palabra"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "Moverse una palabra atrás"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "Moverse a la línea anterior"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "Moverse a la línea siguiente"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "Moverse al principio de la línea actual"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "Moverse al final de la línea actual"
+
+#: src/global.c:555
+#, fuzzy
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Moverse al principio del párrafo actual"
+
+#: src/global.c:557
+#, fuzzy
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Moverse al final del párrafo actual"
+
+#: src/global.c:560
+#, fuzzy
+msgid "Go to the first line of the file"
+msgstr "Mover a la primera línea del fichero"
+
+#: src/global.c:562
+#, fuzzy
+msgid "Go to the last line of the file"
+msgstr "Mover a la última línea del fichero"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "Mover a la llave correspondiente"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Desplazar el texto una línea arriba sin mover el cursor"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Desplazar el texto una línea abajo sin mover el cursor"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Cambiar al búfer de fichero anterior"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Cambiar al siguiente búfer de fichero"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Insertar la próxima pulsación literalmente"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Insertar un carácter de tabulación en la posición del cursor"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Insertar un retorno de carro en la posición del cursor"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Borrar el carácter bajo el cursor"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Borrar el carácter a la izquierda del cursor"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Cortar desde el cursor hasta el final de línea"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Justificar el fichero completo"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Contar el número de palabras, líneas y caracteres"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Redibujar la pantalla actual"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Cambiar la importancia de mayús./minús. en la búsqueda"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Cambiar la dirección de búsqueda"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Cambiar el uso de expresiones regulares"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Recupera la cadena previa de búsqueda/reemplazo"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Recupera la siguiente cadena de búsqueda/reemplazo"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Ir al navegador de ficheros"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Conmuta el uso de formato DOS"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Conmuta el uso de formato Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Conmuta añadir texto"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Conmuta prefijar texto"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Conmuta creación de ficheros de respaldo"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Ejecutar orden externa"
+
+# Ídem de ídem. Te dejo que revises los que siguen.
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Conmuta el uso de nuevo búfer"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Salir del navegador de ficheros"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Ir al primer fichero de la lista"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Ir al último fichero de la lista"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Ir al último fichero de la lista"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Ir al primer fichero de la lista"
+
+# a un. sv
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Ir a un Directorio"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Cerrar"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Guardar"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Justificar"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Leer Fich"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "CortarTxt"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Desjustificar"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "PegarTxt"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Pos actual"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Ortografía"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "MarcarTxt"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "CopiarTxt"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "SangrarTxt"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "DesangrarTxt"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Adelante"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Atrás"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Palabra siguiente"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Palabra anterior"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Línea Ant"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Línea siguiente"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Inicio"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Fin"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Buscar la otra llave"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "DesplArriba"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "DesplAbajo"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Fichero anterior"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Fichero siguiente"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Entrada literal"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+# Intro (?). sv
+# O introducir, no encuentro el contexto...
+# Ok, es Intro (pero no se usa, parece, reportaré el bug) jm
+#: src/global.c:870
+msgid "Enter"
+msgstr "Intro"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Suprimir"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Borrar"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "CortarHastaFinal"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Contar Palabras"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Modo ayuda"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Posición del cursor constante"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Uso de una línea más para editar"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Desplazamiento suave"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Mostrar blancos"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Coloreado de sintaxis"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Tecla 'smart home'"
+
+# En español se dice sangrar. Es un término tipográfico que se usa
+# desde hace mucho, pero que la gente olvida por influencia del inglés. sv
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Auto sangrar"
+
+# de la línea. sv
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Cortar hasta el final"
+
+# Uf. A ver si alguien encuentra una palabra para decir eso... sv
+# Esto creo que ya lo pregunté en la lista, a parte de en muchos otros
+# sitios y nadie encontró nada convincente. jm
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Ajuste de líneas largas"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Conversión de las pulsaciones de tabulador a espacios"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Respaldar ficheros"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Múltiples búfers de ficheros"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Soporte para ratón"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "No convertir desde el formato DOS/Mac"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Suspensión"
+
+# Uf. A ver si alguien encuentra una palabra para decir eso... sv
+# Esto creo que ya lo pregunté en la lista, a parte de en muchos otros
+# sitios y nadie encontró nada convincente. jm
+#: src/global.c:1399
+#, fuzzy
+msgid "Soft line wrapping"
+msgstr "Ajuste de líneas largas"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Texto de ayuda de la orden Búsqueda\n"
+"\n"
+" Introduzca las palabras o caracteres que quiera buscar y pulse intro. Si "
+"hay una coincidencia para el texto introducido, la pantalla se actualizará "
+"en el lugar donde esté la coincidencia más cercana de la cadena buscada.\n"
+"\n"
+" Se mostrará la cadena de texto de la búsqueda anterior entre corchetes tras "
+"el indicador. Si pulsa intro sin introducir texto repetirá la última "
+"búsqueda."
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Si ha escogido texto con el marcador y luego hace búsqueda con reemplazo, "
+"sólo se modificarán las coincidencias dentro del texto seleccionado.\n"
+"\n"
+" Dispone de las siguientes teclas de función en modo Búsqueda:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Texto de ayuda de Ir a Línea\n"
+"\n"
+" Introduce el número de la línea a la que quieres ir y pulsa Intro. Si hay "
+"menos líneas de texto que el número que has introducido, el cursor se moverá "
+"a la última línea del fichero.\n"
+"\n"
+" Se dispone de las siguientes teclas de función en el modo Ir a Línea:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Texto de ayuda de Insertar Fichero\n"
+"\n"
+" Escriba el nombre del fichero a insertar en el búfer, en la posición actual "
+"del cursor.\n"
+"\n"
+" Si ha compilado nano con soporte para múltiples búfer y habilita los búfer "
+"múltiples con las opciones -F o --multibuffer, con la combinación Meta-F o "
+"usando un fichero nanorc, el fichero será insertado en un búfer diferente "
+"(use Meta-< y > para cambiar de búfers de fichero)."
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Si necesitase otro búfer vacío, no escriba ningún nombre de fichero o en su "
+"lugar el nombre de un fichero que no exista y pulse Intro.\n"
+"\n"
+" Dispone de las siguientes teclas de función en el modo Insertar Fichero:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Texto de ayuda de Guardar Fichero\n"
+"\n"
+" Escriba el nombre con el que quiera guardar el fichero actual y pulse intro "
+"para salvarlo.\n"
+"\n"
+" Si ha escogido texto marcándolo, se le preguntará si quiere guardar sólo la "
+"porción marcada a un fichero diferente. Para reducir la posibilidad de "
+"sobreescribir el fichero actual con sólo una parte, el nombre del fichero "
+"actual no es el predeterminado en este modo.\n"
+"\n"
+" Dispone de las siguientes teclas de función en el modo Guardar Fichero:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Texto de ayuda del Navegador de Ficheros\n"
+"\n"
+" El navegador de ficheros se utiliza para navegar visualmente la estructura "
+"del directorio para seleccionar un fichero para lectura o escritura. Puedes "
+"usar los cursores o Re/Av Pág para navegar por los ficheros y S o Intro para "
+"elegir el fichero seleccionado o entrar en el directorio solicitado. Para "
+"subir un nivel, selecciona el directorio \"..\" en la parte superior de la "
+"lista de ficheros.\n"
+"\n"
+" Se dispone de las siguientes teclas de función en el navegador de "
+"ficheros:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Texto de ayuda de la orden Búsqueda\n"
+"\n"
+" Introduzca las palabras o caracteres que quiera buscar y pulse intro. Si "
+"hay una coincidencia para el texto introducido, la pantalla se actualizará "
+"en el lugar donde esté la coincidencia más cercana de la cadena buscada.\n"
+"\n"
+" Se mostrará entre corchetes la cadena de texto de la búsqueda anterior tras "
+"el indicador. Si pulsa intro sin introducir texto repetirá la última "
+"búsqueda.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Se dispone de las siguientes teclas de función en el modo Búsqueda:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Texto de ayuda de Ir a Directorio del Navegador\n"
+"\n"
+" Introduzca el nombre del directorio por el que quiera navegar.\n"
+"\n"
+" Si el completado con el tabulador no está inactivo, puede usar la tecla TAB "
+"para (intentar) completar automáticamente el nombre del directorio.\n"
+"\n"
+" Se dispone de las siguientes teclas de función en el modo Ir a Directorio "
+"del Navegador:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Texto de ayuda del Corrector de ortografía\n"
+"\n"
+" El Corrector de ortografía comprueba la ortografía de todo el texto en el "
+"fichero actual. Cuando se encuentra una palabra desconocida, queda marcada y "
+"se puede proporcionar un sustituto. Después preguntará si se quiere "
+"reemplazar todas las coincidencias de esa palabra mal escrita en el fichero "
+"actual o, si ha seleccionado un texto, dentro de la selecció.\n"
+"\n"
+" Dispone de las siguientes funciones adicionales en el modo Corrector de "
+"ortografía:\n"
+"\n"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Texto de ayuda de Orden Externa\n"
+"\n"
+" Este modo le permite insertar en el búfer actual (o en uno nuevo en modo "
+"multibúfer) la salida de una orden ejecutada por el intérprete. Si necesita "
+"un búfer vacío, no introduzca ninguna orden.\n"
+"\n"
+" En este modo dispone de las siguientes funciones adicionales:\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Texto de ayuda principal de nano\n"
+"\n"
+" El editor nano está diseñado para emular la funcionalidad y sencillez de "
+"uso del editor de texto UW Pico. El editor cuenta con cuatro secciones "
+"principales. La línea superior muestra la versión del programa, el nombre "
+"del fichero que se está editando, y si ha sido modificado o no. La siguiente "
+"es la ventana principal del editor que muestra lo que está siendo editado. "
+"La línea de estado es la tercera empezando por abajo y muestra mensajes "
+"importantes. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Las dos últimas líneas muestran los atajos usados más a menudo en el "
+"editor \n"
+"\n"
+" La notación para los atajos es como sigue: las secuencias con la tecla "
+"Control se indican con un circunflejo (^) y se pueden introducir tanto "
+"pulsando la tecla de Control (Ctrl) como pulsando dos veces la de Escape "
+"(Esc). Las secuencias con la tecla de Escape se indican con el símbolo Meta "
+"(M-) y se pueden introducir con las teclas Esc, Alt o Meta, dependiendo de "
+"su configuración de teclado. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Además, si pulsa dos veces Esc y escribe después un código decimal de tres "
+"dígitos entre 000 y 255, introducirá el carácter de valor correspondiente. "
+"Dispone de las siguientes pulsaciones en la ventana principal del editor. "
+"Las pulsaciones alternativas se muestran entre paréntesis:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "habilitar/deshabilitar"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Tecla ilegal en modo vistualización"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Buffer escrito en %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"No se ha escrito el búfer a %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"No se ha escrito el búfer: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "La ventana es demasiado pequeña para Nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Uso: nano [OPCIONES] [[+LÍNEA,COLUMNA] FICHERO]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Opción\t\tOpción larga\t\tSignificado\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Opción\t\tSignificado\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Mostrar este mensaje"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+LÍNEA,COLUMNA"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Comenzar en la línea número LÍNEA, y columna COLUMNA"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Habilitar tecla 'smart home'"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Guardar respaldo de los ficheros existentes"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <dir>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<dir>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Directorio donde guardar ficheros de respaldo únicos"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Usar negrita en lugar de texto inverso"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Convertir tabulaciones a espacios al escribir"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Habilitar múltiples búfer de ficheros"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Registrar y leer el histórico de cadenas de búsqueda/reemplazo"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "No leer los ficheros nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Arreglar el problema de confusión del teclado numérico"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "No añadir avances de línea al final de los ficheros"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "No convertir los ficheros desde el formato DOS/Mac"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Usar una línea más para edición"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <cad>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<cad>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Marcador de cita"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Modo restringido"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <núm>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<núm>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Fijar el ancho de tab a núm columnas"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Borrado rápido de la barra de estado"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Imprimir información sobre la versión y salir"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Detectar límite entre palabras más detalladamente"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <cad>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<cadena>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Definición de sintaxis a usar para coloreado"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Mostrar constantemente la posición del cursor"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Arreglar el problema de confusión Retroceso/Suprimir"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Indentar automáticamente nuevas líneas"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Cortar desde el cursor al final de línea"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "No seguir enlaces simbólicos, sobreescribirlos"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Habilitar el uso del ratón"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <dir>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<dir>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Establecer el directorio de operación"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Conservar teclas XON (^Q) y XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <núm>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<núm>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Fijar el límite de ajuste de líneas en núm columnas"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Habilitar corrector alternativo"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Autosalvar al salir, no preguntar"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Modo visualización (sólo lectura)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "No wrapear líneas largas"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "No mostrar las dos líneas de ayuda"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Habilitar suspensión"
+
+# Uf. A ver si alguien encuentra una palabra para decir eso... sv
+# Esto creo que ya lo pregunté en la lista, a parte de en muchos otros
+# sitios y nadie encontró nada convincente. jm
+#: src/nano.c:924
+#, fuzzy
+msgid "Enable soft line wrapping"
+msgstr "Ajuste de líneas largas"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(se ignora, está por compatibilidad con Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano versión %s (compilado %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Correo: nano@nano-editor.org\tWeb: http://www.nano-editor.org"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Opciones compiladas:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Lo siento, se ha deshabilitado el soporte de esta función"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"¿ Salvar el búfer modificado (RESPONDER \"No\" DESTRUIRÁ LOS CAMBIOS) ?"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Recibido SIGHUP o SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Use \"fg\" para volver a nano \n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "habilitado"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "deshabilitado"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Orden desconocida"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "Se ignora XON, mmh mmh"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "Se ignora XOFF, mmh mmh"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "El tamaño de tabulador \"%s\" no es válido"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "El tamaño de llenado \"%s\" no es válido"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "SsYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Tt"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Sí"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Todas"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "No"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Error en %s en la línea %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "El argumento '%s' tiene una \" sin terminar"
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Las cadenas de regex han de empezar y acabar con un carácter \""
+
+# c-format
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Regex \"%s\" incorrecta: %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Nombre de la sintaxis inexistente"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "La sintaxis \"none\" está reservada"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "La sintaxis \"default\" no toma extensiones"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "Nombre de la sintaxis inexistente"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr ""
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr ""
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"No se ha reconocido el color \"%s\".\n"
+"Los válidos son \"green\", \"red\", \"blue\", \n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" y\n"
+"\"black\", con el prefijo opcional \"bright\"\n"
+"para los de primer plano."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "No se puede añadir una directiva de color sin una orden de sintaxis"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Nombre del color inexistente"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "El color de fondo \"%s\" no puede ser brillante"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Falta la cadena regex"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "«start=» requiere su «end=» correspondiente"
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "No se puede añadir una directiva de color sin una orden de sintaxis"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "No se admite la orden \"%s\" en el fichero incluido"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "La sintaxis \"%s\" no tiene órdenes de color"
+
+# en la línea. sv
+# el comando -> la orden.
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Orden \"%s\" no reconocida"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Falta la opción"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "La opción \"%s\" precisa un argumento"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "La opción no es una cadena multibyte válida"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Se requieren caracteres que no sean blancos"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Se precisan dos caracteres de una sola columna"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "No se pudo desactivar la opción \"%s\""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Opción \"%s\" desconocida"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "No se ha encontrado el directorio del usuario! Wah!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%.*s%s\" no encontrado"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (a reemplazar) en la selección"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (a reemplazar)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "¿Reemplazar esta instancia?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Reemplazar con"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Ocurrencia %lu reemplazada"
+msgstr[1] "%lu ocurrencias reemplazadas"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Introduce número de línea, número de columna"
+
+#: src/search.c:1061
+#, fuzzy
+msgid "Invalid line or column number"
+msgstr "Introduce número de línea, número de columna"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "No es una llave"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "No hay una llave correspondiente"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Marca Establecida"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Marca Borrada"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "Fichero siguiente"
+
+# Uf. A ver si alguien encuentra una palabra para decir eso... sv
+# Esto creo que ya lo pregunté en la lista, a parte de en muchos otros
+# sitios y nadie encontró nada convincente. jm
+#: src/text.c:489 src/text.c:628
+#, fuzzy
+msgid "line wrap"
+msgstr "Ajuste de líneas largas"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "Línea siguiente"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr " (a reemplazar)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+# Lo mismo. No se pudo cerrar. sv
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "No se pudo canalizar"
+
+# Lo mismo. No se pudo cerrar. sv
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "No se pudo crear otro proceso"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "El marcador de cita '%s' no es válido: %s"
+
+# ahora se puede. sv
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "¡Ahora se puede desjustificar!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Editar un reemplazo"
+
+# Lo mismo. No se pudo cerrar. sv
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "No se pudo crear una tubería (\"pipe\")"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Creando lista de palabras mal escritas. Espere, por favor..."
+
+# Ídem de ídem. Te dejo que revises los que siguen.
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "No se pudo obtener el tamaño del búfer de la tubería (\"pipe\")"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Error al invocar «spell»"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Error al invocar «sort -f»"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Error al invocar «uniq»"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Revisión de ortografía finalizada"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Error al invocar \"%s\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Comprobación de ortografía fallida: \"%s\""
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Comprobación de ortografía fallida: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sPalabras: %lu Líneas: %ld Caracteres: %lu "
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "En la selección: "
+
+# ¡memoria insuficiente! sv
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "¡nano se ha quedado sin memoria!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Entrada de Unicode"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Modificado"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Ver"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "DIR:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Fichero:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "línea %ld/%ld (%d%%), col %lu/%lu (%d%%), car %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "El editor de textos GNU nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "versión"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Por cortesía de:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Agradecimientos especiales para:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "La Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Por ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "y cualquiera del que nos hayamos olvidado..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "¡Gracias por usar nano!"
+
+#~ msgid "Space"
+#~ msgstr "Espacio"
+
+# sé. sv
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Venga ya, sé razonable"
diff --git a/po/eu.gmo b/po/eu.gmo
new file mode 100644
index 0000000..a7a42d5
--- /dev/null
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
new file mode 100644
index 0000000..2dd366f
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,2575 @@
+# GNU nano-rentzat egindako hitzulpena.
+# Copyright (C) 2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# Mikel Olasagasti <hey_neken@mundurat.net>, 2004,2005,2006.
+# Peio Ziarsolo <peio@sindominio.net>, 2001, 2002.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.9.99pre0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2006-09-25 19:59+0200\n"
+"Last-Translator: Mikel Olasagasti <hey_neken@mundurat.net>\n"
+"Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Joan direktorio honetara"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Bertan behera utzita"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Ezin da %stik kanpora joan era murriztuan"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Errorea %s irakurtzen: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Ezin da direktorioan gora egin"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(dir)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(aita dir.)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Bilatu"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr "[May/Min]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr "[Regexp]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr "[Atzeruntza]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Bilaketa berriz hasia"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Hau da kointzidentzia bakarra"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Ez dago bilatzeko eredurik"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Ezin da artxiboa txertatu %s-tik kanpo"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Ez dago irekitako fitxategi buffer gehiagorik"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "%s-ra aldatua"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Bufer berria"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Lerro %lu irakurria (DOS eta Mac formatutik bihurtuak)"
+msgstr[1] "%lu lerro irakurriak (DOS eta Mac formatutik bihurtuak)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "Lerro %lu irakurria (DOS eta Mac formatutik bihurtuak)"
+msgstr[1] "%lu lerro irakurriak (DOS eta Mac formatutik bihurtuak)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Lerro %lu irakurria (Mac formatutik bihurtuak)"
+msgstr[1] "%lu lerro irakurriak (Mac formatutik bihurtuak)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Lerro %lu irakurria (Mac formatutik bihurtuak)"
+msgstr[1] "%lu lerro irakurriak (Mac formatutik bihurtuak)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Lerro %lu irakurria (DOS formatutik bihurtuak)"
+msgstr[1] "%lu lerro irakurriak (DOS formatutik bihurtuak)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Lerro %lu irakurria (DOS formatutik bihurtuak)"
+msgstr[1] "%lu lerro irakurriak (DOS formatutik bihurtuak)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Lerro %lu irakurria"
+msgstr[1] "%lu lerro irakurriak"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Fitxategia irakurtzen"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Fitxategi berria"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" ezin aurkitu"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" direktorio bat da"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" fitxategia dispositibo-fitxategi bat da"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Buffer berrian exekutatzeko komandoa [%s-tik] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Exekutatutzeko komandoa [%s-(e)tik] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Buffer berrian txertatzeko fitxategia [%s-tik]"
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Txertatzeko fitxategia [%s-tik] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Baligabeko tekla ez-multibuffer moduan"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Ezin da %staz kanpo idatzi"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"Ezin zaio hasieran edo amaieran gehitu esteka sinboliko bati --nofollow "
+"ezarria dagoenean"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, fuzzy, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Errorea aldi baterako fitxategia idazten: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Babes-kopia fitxategi gehiegi?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Errorea %s idazten: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Errorea aldi baterako fitxategia idazten: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Lerro %lu idatzia"
+msgstr[1] "%lu lerro idatziak"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr "[DOS formatua]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr "[Mac formatua]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Babeskopia]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Gehitu aukeraketa fitxategiaren hasieran"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Gehitu aukeraketa fitxategian"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Ahuatespena artxiboan idatzi"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Gehitu nahi duzun fitxategiaren izena"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Gehituko zaion fitxategiaren izena "
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Idatzi nahi duzun artxiboaren izena"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Fitxategia existitzen da dagoeneko, GAINIDATZI?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Gorde fitxategia BESTE izen batekin?"
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(gehiago)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Nano abiarazten jarraitzeko return sakatu.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Bertan behera utzi"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Ordezkatu"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Ez ordezkatu"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "May/Min"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Atzeruntza"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Regexp"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "Aurreko historikoa"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "Hurrengo historikoa"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Joan testu hontara"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Non dago Hur."
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Lehen fitxategia"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Azken Fitxategia"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Fitxategietara"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS formatua"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac formatua"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Gehitu"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Gehitu"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Babeskopia fitxategia"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Exekutatu komandoa"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Joan direktorio honetara"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Laguntza begiratu"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Irten"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Bilatu"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Aurreko orrialdea"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Hurrengo orrialdea"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Lehen lerroa"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Azken lerroa"
+
+#: src/global.c:487
+#, fuzzy
+msgid "Suspend"
+msgstr "Eseki"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Par hasi"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Par amai"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "Justifikatu"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Freskatu"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Txertatu fitxategia"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Joan lerro hontara"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Uneko parrafoa justifikatu"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Uneko funtzioa bertan behera utzi"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Erakutsi laguntza testu hau"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Unean kargatutako fitxategi bufferra itxi/Nanotik irten"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Nanotik irten"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Uneko artxiboa diskoan idatzi"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Uneko lerroan beste lerro bat txertatu"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Bilatu kate bat edo expresio erregular bat"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "Aurreko pantailara mugitu"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "Hurrengo pantailara mugitu"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Uneko lerroa moztu eta cutbufferean gorde"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Cutbufferekoa uneko lerroan txertatu"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Kurtsorearen posisioa erakutsi"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Deitu zuzentzaileari, eskuragarri badago"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Ordezkatu kate bat edo expresio erregular bat"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Joan espezifikatutako lerro eta zutabera"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Markatu testua kurtsorearen uneko posizioan"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Errepikatu azken bilaketa"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Uneko lerroa kopiatu eta cutbufferean gorde"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Koskatu uneko lerroa"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Koska kendu uneko lerroari"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "Karaktere bat aurreruntz mugitu"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "Karaktere bat atzeruntz mugitu"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "Mugitu hitz bat atzera"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "Mugitu hitz bat atzeruntz"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "Aurreko lerrora mugitu"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "Mugitu hurrengo lerrora"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "Uneko lerroaren hasierara mugitu"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "Uneko lerroaren bukaerara mugitu"
+
+#: src/global.c:555
+#, fuzzy
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Mugitu uneko parrafoaren hasierara"
+
+#: src/global.c:557
+#, fuzzy
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Mugitu uneko parrafoaren amaierara"
+
+#: src/global.c:560
+#, fuzzy
+msgid "Go to the first line of the file"
+msgstr "Mugitu fitxategiaren lehen lerrora"
+
+#: src/global.c:562
+#, fuzzy
+msgid "Go to the last line of the file"
+msgstr "Mugitu fitxategiaren azken lerrora"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "Ez dago giltz egokirik"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Korritu gora lerro bat kurtsorea korritu gabe"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Korritu behera lerro bat kurtsorea korritu gabe"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Aldatu aurreko fitxategi buffer-era"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Aldatu hurrengo fitxategi buffer-era"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Hurrengo tekla-sakatzea literalki sartu"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Txertatu tabuladore karaktere bat kurtsorearen posizioan"
+
+#: src/global.c:581
+#, fuzzy
+msgid "Insert a newline at the cursor position"
+msgstr "Orga-itzulera bat kurtsorearen posizioan txertatu"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Kurtsorearen azpiko karaterea ezabatu"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Kurtsorearen ezkerraldeko karaterea ezabatu"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Moztu kurtsoretik posiziotik lerro amaierara arte"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Justifikatu lerro osoa"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Zenbatu hitz, lerro eta karaktere kopurua"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Freskatu uneko pantaila"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+#, fuzzy
+msgid "Toggle the case sensitivity of the search"
+msgstr "Mayuskula/minuskulaz egindako bilaketa"
+
+#: src/global.c:605
+#, fuzzy
+msgid "Reverse the direction of the search"
+msgstr "kurtsorearen posisioa erakutsi"
+
+#: src/global.c:609
+#, fuzzy
+msgid "Toggle the use of regular expressions"
+msgstr "Expresio erregularrak erabili"
+
+#: src/global.c:613
+#, fuzzy
+msgid "Recall the previous search/replace string"
+msgstr "Editatu aurreko bilaketa/aldaketa kateak"
+
+#: src/global.c:615
+#, fuzzy
+msgid "Recall the next search/replace string"
+msgstr "Editatu aurreko bilaketa/aldaketa kateak"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Fitxategi nabigatzailera joan"
+
+#: src/global.c:621
+#, fuzzy
+msgid "Toggle the use of DOS format"
+msgstr "Dos formatoan fitxategia idazten"
+
+#: src/global.c:622
+#, fuzzy
+msgid "Toggle the use of Mac format"
+msgstr "Idatzi fitxategia Mac formatuan"
+
+#: src/global.c:624
+#, fuzzy
+msgid "Toggle appending"
+msgstr "Auto-doitu lerro luzeak"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr ""
+
+#: src/global.c:628
+#, fuzzy
+msgid "Toggle backing up of the original file"
+msgstr "Gorde existitzen diren fitxategien babeskopiak"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Exekutatu kanpo-komandoa"
+
+#: src/global.c:633
+#, fuzzy
+msgid "Toggle the use of a new buffer"
+msgstr "Ezin izan da hodi buffer-aren tamainua lortu"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Irten fitxategi nabigatzailetik"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Joan zerrendako lehen fitxategira"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Joan zerrendako azken fitxategira"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Joan zerrendako azken fitxategira"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Joan zerrendako lehen fitxategira"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Joan direktorio honetara"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Itxi"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Gorde"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Justifikatu"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Artxiboa irakurri"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Textua moztu"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Justifikazioa ezeztatu"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Ezmoztu testua"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Uneko posizioa"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Ortografia"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Textua markatu"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Kopiatu testua"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Koskatu testua"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Ez koskatu testua"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Aurrean"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Atzean"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Hurrengo hitza"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Aurreko hitza"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Aurreko lerroa"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Hurrengo lerroa"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Etxea"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Bukaera"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Beste giltz bat bilatu"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Korritu gora"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Korritu behera"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Aurreko fitxategia"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Hurrengo fitxategia"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Sarrera literala"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Sartu"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Ezabatu"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Atzera tekla"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "MoztuAmaieraraArte"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Hitz kopurua"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Laguntza modua"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Kurtzorearen posizioa bistaratu beti"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Erabili lerro bat edo gehiago editatzeko"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Korritze leuna"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Erakutsi txuriguneak"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Kolore sintaxi nabarmentzea"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "'Smart home' tekla"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Auto indentatu"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Lerroaren bukaeraraino ebaki"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Auto-doitu lerro luzeak"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Bihurtu idatzitako tabulazioak zuriuneetara"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Babeskopia fitxategiak"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Fitxategi anitzen buffer-a"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Xagu euskarria"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Ez bihurtu DOS/Mac formatuak"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Eseki"
+
+#: src/global.c:1399
+#, fuzzy
+msgid "Soft line wrapping"
+msgstr "Auto-doitu lerro luzeak"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Bilaketa komandoen laguntza testua\n"
+"\n"
+" Sartu bilatu nahi dituzun hitz edo karaktereak, eta sakatu enter. Pareko "
+"zerbait aurkitzen badu gertuen aurkitu duen kateraino eramango zaitu.\n"
+"\n"
+" Aurreko bilaketa kortxete artean erakutsiko da 'Bilaketa:'-ren ondoren. "
+"Enter sakatuz karaktere berririk sartu gabe aurreko bilaketa berriz burutuko "
+"du. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Testurik aukeratua baduzu markarekin eta ondoren bilatu edo ordezkatzen "
+"baduzu, aukeratutako testuan egingo da.\n"
+"\n"
+" Honako funtzio teklak daude Bilaketa moduan:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Joan lerrora laguntza testua\n"
+"\n"
+" Sartu joan nahi duzun lerroaren zenbakia eta sakatu enter. Sartutakoa "
+"baina lerro gutxiago badaude fitxategiko azkeneko lerroan jarriko zaitu.\n"
+"\n"
+" Honako funtzio teklak daude joan lerrora moduan:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Txertatu fitxategia laguntza testua\n"
+"\n"
+" Idatzi buffer-ean uneko kurtsorearen posizioan txertatu nahi duzun "
+"fitxategiaren izena.\n"
+"\n"
+" Nano buffer anintz erabiltzeko euskarriarekin konpialtu baduzu, eta buffer "
+"anitzak aktibatuak badituzu -F edo --multibuffer komando-banderak erabiliz, "
+"Meta-F, edo nanorc fitxategi baten bidez, fitxategi berri bat txertatzeak "
+"beste buffer batean kargatzen du (erabili Meta-< edo > buffer-ez "
+"aldatzeko). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Beste buffer garbi bat behar baduzu, ez sartu fitxategi izenik, edo idatzi "
+"existitzen ez den fitxategi izen bat eta sakatu enter.\n"
+"\n"
+" Honako funtzio teklak daude eskuragarri fitxategi txertaketa moduan:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Fitxategi idazketarako laguntza testua\n"
+"\n"
+" Idatzi uneko fitxategiaren izena eta sakatu enter gordetzeko.\n"
+"\n"
+" Testuaren zatiren bat markatua badaukazu, galdetu egingo zaizu ea zati hori "
+"fitxategi ezberdin batean gorde nahi duzun. Gainidazketa arazoak ekiditeko "
+"ez da izaten uneko fitxategiaren izena lehenetsia modu hontan.\n"
+"\n"
+"Honako funtzio teklak daude eskuragarri fitxategia idatzi moduan:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Fitxategi nabigatzailearen laguntza testua\n"
+"\n"
+" Fitxategi arakatzailea direktorio estrukturatik nabigatzeko eta bertako "
+"idazteko edo irakurtzeko fitxategi bat aukeratzeko erabiltzen da. Norabide "
+"teklak edo Gor/Ber-Orria erabili daitezke nabigatzeko, eta S edo Enter "
+"fitxategia aukeratzeko edo aukeratutako direktoriora sartzeko. Maila bat "
+"gora egiteko, aukeratu \"..\" izena duen direktorioa fitxategi zerrendaren "
+"goian.\n"
+"\n"
+" Honako funtzio teklak daude eskuragarri fitxategi nabigatzaile moduan:\n"
+"\n"
+
+#: src/help.c:302
+#, fuzzy
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Bilaketa komandoen laguntza testua\n"
+"\n"
+" Sartu bilatu nahi dituzun hitz edo karaktereak, eta sakatu enter. Pareko "
+"zerbait aurkitzen badu gertuen aurkitu duen kateraino eramango zaitu.\n"
+"\n"
+" Aurreko bilaketa kortxete artean erakutsiko da 'Bilaketa:'-ren ondoren. "
+"Enter sakatuz karaktere berririk sartu gabe aurreko bilaketa berriz burutuko "
+"du. "
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Honako funtzio teklak daude eskuragarri Bilaketa Nabigatzaile moduan:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Nabigatzaileko joan direktoriora laguntza testua\n"
+"\n"
+" Sartu nabigatu nahi duzun direktorioaren izena.\n"
+"\n"
+" Tab betetzea ezgaitu ez bada, TAB tekla erabili dezakezu automatikoki "
+"betetzeko direktorio izena.\n"
+"\n"
+"Honako funtzio teklak gaituak daude Nabigatzaileko joan direktoriora "
+"moduan:\n"
+"\n"
+
+#: src/help.c:328
+#, fuzzy
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Zuzenketa laguntza testua\n"
+"\n"
+" Zuzenketak testu guztiko idazketa txekeatzen du. Hitz ezezagun bat "
+"aurkitzean, nabarmendu eta aldaketa egiteko aukera ematen da. Ondoren "
+"fitxategi guztiko edo aukeratua duzun testuko hitz berdinetan aldaketa egin "
+"nahi den galdetzen da.\n"
+"\n"
+" Honako funtzio teklak daude eskuragarri zuzenketa moduan:\n"
+"\n"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Kanpo komandoen laguntza testua\n"
+"\n"
+" Honek shell batean exekutatutako komando baten irteera uneko buffer-ean "
+"gehitzea onartzen du (edo buffer berri batean multibuffer moduan). Beste "
+"buffer garbi bat behar baduzu, ez sartu komandorik.\n"
+"\n"
+" Honako teklak gaituak daude modu hontan:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+" nano-ren laguntza testu nagusia\n"
+"\n"
+"nano editorea UW Pico testu editorearen errestasun eta funtzionalitateak "
+"emulatzeko diseinatua dago. Lau dira editorearen sekzio nagusiak: Goiko "
+"lerroak programaren bertsioa uneko fitxategiaren izena eta modifikatua ala "
+"ez izan den. Ondoren editorearen leiho nagusia editatzen ari den fitxategia "
+"erakutsiz. Egoera lerroa da hirugarrena eta informazio garrantzitsuak "
+"ematen ditu "
+
+#: src/help.c:366
+#, fuzzy
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Laster-teklan erabilera: Kontrol teklarekin erabiltzen direnak (^) "
+"karakterearekin erakusten dira, eta Kontrol tekla edo ESC tekla bi aldiz "
+"sakatuta erabili daitezke. Eskape-tekla sekuentziak Meta (M) ikurrarekin "
+"agertzen dira, eta Esc, Alt edo Meta-tekla (zure teklatuaren araberakoa) "
+"sakatuz erabili daitezke. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Gainera, Eskape-tekla bi aldiz sakatuz eta 000-tik 255-rainoko zenbaki bat "
+"sartuz gero, ASCII taulan duen karakterea txertatuko du. Hauek dira "
+"editoreko leiho nagusian erabili daitezkeen teklak. Bestelako teklak "
+"parentesi artean erakusten dira:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "gaitu/ezgaitu"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Tekla baliogabea ikuskatze moduan"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Bufferra hemen idatzia: %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Bufferra ez da %s-(e)n idatzi: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Bufferra ez da idatzi: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Leihoaren tamainua txikiegia da nano-rentzat...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Erabilera: nano [AUKERAK] [[+LERROA,ZUTABEA] FITXATEGIA]\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Aukera\t\tGNU aukera luzea\t\tEsanahia\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Aukera\t\tEsanahia\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Mezu hau erakutsi"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+LERROA,ZUTABEA"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Hasi LERRO lerro zenbakian, ZUTABE zutabean"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Gaitu 'smart home' tekla"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Gorde existitzen diren fitxategien babeskopiak"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <dir>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<dir>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Babeskopia fitxategiak idazteko direktorioa"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Erabili lodia alderantzizko testua beharrean"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Bihurtu idatzitako tabuladoreak zuriuneetara"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Gaitu fitxategi buffer ugari"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Idatzi eta irakurri bilaketa/aldaketa kateen historia"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Ez begiratu nanorc fitxategietan"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Konpondu zenbakizko teklatu nahaste arazoak"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Ez gehitu lerro berria fitxategiaren amaieran"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Ez bihurtu DOS/Mac formatuko fitxategiak"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Erabili lerro bat edo gehiago editatzeko"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <str>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<str>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Aipamen katea"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Mugatutako modua"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#cols>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#cols>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Ezarri fitxa baten zabalera #cols-era"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Egin egoera-barra garbiketa azkarra"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Bertsioaren informazioa inprimatu eta irten"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Aurkitu hitz amaierak zehatzago aurkitu"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <str>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<str>"
+
+#: src/nano.c:881
+#, fuzzy
+msgid "Syntax definition to use for coloring"
+msgstr "Erabiltzeko sintaxi definizioa"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Erakutsi beti kurtsorearen posizioa"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Konpondu atzera tekla/ezabatu nahaste arazoak"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Automatikoki indentatu lerro berriak"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Moztu kurtsoretik lerro amaierara"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Ez jarraitu esteka sinbolikoak, gainidatzi"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Gaitu xaguaren erabilera"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <dir>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<dir>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Ezarri eragiketa direktorioa"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Mantendu XON (^Q) eta XOFF (^S) teklak"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#cols>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#cols>"
+
+#: src/nano.c:906
+#, fuzzy
+msgid "Set wrapping point at column #cols"
+msgstr "Ezarri zutabe-tab baten zabalera #cols-i"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Gahitu zuzentzaile alternatiboa"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Irteterakoan automatikoki gorde, ez galdetu"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Ikuskatze modua (irakurri bakarrik)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Ez doitu lerro luzeak"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Ez erakutsi bi laguntza lerroak"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Gaitu esekitzea"
+
+#: src/nano.c:924
+#, fuzzy
+msgid "Enable soft line wrapping"
+msgstr "Auto-doitu lerro luzeak"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(ignoratua, Pico-rekin konpatibilitatea mantentzeko)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr "GNU nano %s bertsioa (%s %s konpilatua)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr "E-posta: nano@nano-editor.org\tWebgunea: http://www.nano-editor.org"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+"Konpilazio aukerak:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Barkatu, funtzio horrentzat euskarria gaitu gabe dago"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"Buffer aldatua gorde? (\"Ez\" ERANTZUTEKOTAN ALDAKETAK DEUZESTUEGINGO DIRA) ?"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "SIGHUP edo SIGTERM jaso da\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Erabili \"fg\" nano-ra itzultzeko.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "gaitua"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "ez gaitua"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Komando ezezaguna"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON ignoratua, kaka zarra"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF ignoratua, kaka zarra"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Eskatutako \"%s\" tab tamainua baliogabea da"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Eskatutako \"%s\" betetze tamainua baliogabea da"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Bb"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Ee"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Dd"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Bai"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Guztiak"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Ez"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Errorea %s-n %lu lerroan: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "'%s' argumentuak amaitu gabeko \" bat dauka"
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Regex kateak \" karaktearekin hasi eta amaitu behar dute"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "\"%s\" regex okerra: %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Sintaxiaren izena falta da"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "\"none\" sintaxia erreserbaturik dago"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "\"default\" sintaxiak ez du extentsiorik hartu behar"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "Sintaxiaren izena falta da"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Ezin izan zen %s ireki %s idazteko"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Ezin izan da \"%s\"-i deitu"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"\"%s\" kolorea ez da ulertu.\n"
+"Honako koloreak bakarrik balio dute:\n"
+"\"green\", \"red\", \"blue\"\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" eta\n"
+"\"black\", \"bright\" aukerazko aurrizkiarekin\n"
+"aurreplanoko koloreentzat."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Ezin izan da kolorea komando bat gehitu sintaxi komando bat gabe"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Kolorearen izena falta da"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Atzekaldeko \"%s\" koloreak ezin du bizia izan"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Regex katea falta da"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\"-k \"end=\" behar du"
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Ezin izan da kolorea komando bat gehitu sintaxi komando bat gabe"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "\"%s\" komandoa ez dago baimendua fitxategia barne moduan"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "\"%s\" sintaxiak ez dauka kolore komandorik"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Ez da \"%s\" komandoa ulertu"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Bandera falta da"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "\"%s\" aukerak argumentu bat behar du"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Aukera ez da baliodun multibyte katea"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Ez-hutsune karaktereak behar dira"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Bi zutabe-bakar karaktere behar dira"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Ezin da \"%s\" bandera kendu"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "\"%s\" bandera ezezaguna"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Ezin dut nire etxe direktorioa aurkitu! Outx!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%.*s%s\" ez da aurkitu"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (aldatzeko) aukeraketan"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr "(aldatzeko)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Instantsia hau aldatu?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Aldatu honekin"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "%lu kointzidentzia aldatuta"
+msgstr[1] "%lu kointzidentzia aldatuta"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Lerroaren zenbakia, zutabe zenbakia sartu"
+
+#: src/search.c:1061
+#, fuzzy
+msgid "Invalid line or column number"
+msgstr "Lerroaren zenbakia, zutabe zenbakia sartu"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Ez da hori giltza"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Ez dago giltz egokirik"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Marka aukeratua"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Markatu ez hautatua"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "Hurrengo fitxategia"
+
+#: src/text.c:489 src/text.c:628
+#, fuzzy
+msgid "line wrap"
+msgstr "Auto-doitu lerro luzeak"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "Hurrengo lerroa"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr "(aldatzeko)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Ezin da hoditik pasa"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Ezin izan da bikoiztu"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "%s aipamen kate okerra: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Orain ez-justifikatu dezakezu!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Ordezkoa editatu"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Ezin izan da hodia sortu"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Gaizki idatzitako hiz zerrenda sortzen, itxaron mesedez..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Ezin izan da hodi buffer-aren tamainua lortu"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Errorea \"spell\"-i deitzen"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Errorea \"sort -f\"-i deitzen"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Errorea \"uniq\"-i deitzen"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Zuzenketa ortografikoa bukatu da"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Errorea \"%s\"-(e)ri deitzen"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Zuzenketa ortografikoan huts egin du: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Zuzenketa ortografikoan huts egin du: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sHitzak: %lu Lerroak: %ld Karaktereak: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "Aukeraketan: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano: memoriatik kanpo!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Unicode sarrera"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Aldatua"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Ikusi"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "DIR:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Fitxategia:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr ""
+"%ld/%ld (%d%%) lerroa, %lu/%lu (%d%%) zutabea, %lu/%lu\t (%d%%) karakterea"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Nano textu editorea"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "bertsioa"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Zuretzako hauek egina:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Esker bereziak:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "The Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "ncurses-entzat:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "eta ahaztu dugun baten bat..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Mila esker nano erabiltzeagatik!"
+
+#~ msgid "Space"
+#~ msgstr "Hutsunea"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Bai zera, izan zentzuduna!"
+
+#~ msgid "Prepending to %s failed: %s"
+#~ msgstr "%s-(e)ra gehitzen huts egin da: %s"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Laguntza menua ireki"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Editorea erabiliz textu bat bilatu"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Editorea erabiliz textua ordezkatu"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Beste giltz bat bilatu"
+
+#~ msgid "Make the current search/replace case (in)sensitive"
+#~ msgstr "Egin uneko bilaketa/aldaketak letra larriak ezberdintzea"
+
+#~ msgid "Make the current search/replace go backwards"
+#~ msgstr "Egin uneko bilaketa/aldaketa atzeraka joatea"
+
+#~ msgid "Write file out in DOS format"
+#~ msgstr "Idatzi fitxategia DOS formatuan"
+
+#~ msgid "Write file out in Mac format"
+#~ msgstr "Idatzi fitxategia Mac formatuan"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Gehitu uneko fitxategiari"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Egin fitxategi originalaren babeskopia gordetzerakoan"
+
+#~ msgid "Insert into new buffer"
+#~ msgstr "Txertatu buffer berri batera"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE,COLUMN] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Erabilera: nano [+LERROA,ZUTABEA] [GNU aukera luzea] [aukera] [artxiboa]\n"
+#~ "\n"
+
+#~ msgid "Use more space for editing"
+#~ msgstr "Erabili leku gehiago editatzeko"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Ezarri bete zutabeak (itzulbira lerroak) #cols-i"
+
+#~ msgid "Duplicate syntax name %s"
+#~ msgstr "Bikoiztutako %s sintaxi izena"
+
+#~ msgid "Could not create temp file: %s"
+#~ msgstr "Ezin izan da aldi baterako fitxategia sortu: %s"
+
+#~ msgid "Refusing zero-length regex match"
+#~ msgstr "0 regex parekotasun luzeera ukatzen"
+
+#~ msgid "File to insert into new buffer [from ./] "
+#~ msgstr "Buffer berri batean txertatzeko fitxategia [./-tik] "
+
+#~ msgid "File to insert [from ./] "
+#~ msgstr "[./tik] txertatzeko fitxategia"
+
+#~ msgid "Can't open \"%s\": %s"
+#~ msgstr "Ezin da \"%s\" ireki: %s"
+
+#~ msgid "Direction"
+#~ msgstr "Helbidea"
+
+#~ msgid "Insert a tab character"
+#~ msgstr "Tab karaktere bat txertatu"
+
+#~ msgid "Writing file in DOS format"
+#~ msgstr "Dos formatoan artxiboa idazten"
+
+#~ msgid "Writing file in Mac format"
+#~ msgstr "Mac formatoan artxiboa idazten"
+
+#~ msgid "Up"
+#~ msgstr "Gora"
+
+#~ msgid "+LINE"
+#~ msgstr "+LERRO"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "Egin expresio erregularreko bilaketak"
+
+#~ msgid "Verbatim input"
+#~ msgstr "Sarrera literala"
+
+#~ msgid "Search Cancelled"
+#~ msgstr "Bilaketa ezeztatua"
+
+#~ msgid "Replace Cancelled"
+#~ msgstr "Aldaketa ezeztatua"
+
+#~ msgid "Aborted"
+#~ msgstr "Bertan behera utzia"
+
+#, fuzzy
+#~ msgid "Could not read %s for backup: %s"
+#~ msgstr "Ezin izan zen %s ireki %s idazteko"
+
+#, fuzzy
+#~ msgid "Couldn't write backup: %s"
+#~ msgstr "Ezin da %staz kanpo idatzi"
+
+#, fuzzy
+#~ msgid "Could not set permissions %o on backup %s: %s"
+#~ msgstr "Ezin izan ziren %o baimenak %sri ezarri: %s "
+
+#, fuzzy
+#~ msgid "Could not set owner %d/group %d on backup %s: %s"
+#~ msgstr "Ezin izan ziren %o baimenak %sri ezarri: %s "
+
+#, fuzzy
+#~ msgid "Could not set access/modification time on backup %s: %s"
+#~ msgstr "Ezin izan ziren %o baimenak %sri ezarri: %s "
+
+#~ msgid "Could not open file for writing: %s"
+#~ msgstr "Ezin da idazteko artxibo hau zabaldu:%s"
+
+#~ msgid "Could not close %s: %s"
+#~ msgstr "Ezin izan zen %s: %s itxi"
+
+#, fuzzy
+#~ msgid "Could not reopen %s: %s"
+#~ msgstr "Ezin izan zen %s: %s itxi"
+
+#, fuzzy
+#~ msgid "Could not open %s for prepend: %s"
+#~ msgstr "Ezin izan zen %s ireki %s idazteko"
+
+#~ msgid "Could not set permissions %o on %s: %s"
+#~ msgstr "Ezin izan ziren %o baimenak %sri ezarri: %s "
+
+#~ msgid "Goto Cancelled"
+#~ msgstr "Euzestura joan"
+
+#, fuzzy
+#~ msgid "Unable to open ~/.nano_history file, %s"
+#~ msgstr "Ezin ~/.nanorc artxiboa ireki, %s"
+
+#, fuzzy
+#~ msgid "Unable to write ~/.nano_history file, %s"
+#~ msgstr "Ezin ~/.nanorc artxiboa ireki, %s"
+
+#, fuzzy
+#~ msgid "Backing up file"
+#~ msgstr "Main: artxiboa ireki\n"
+
+#~ msgid "Unjustify after a justify"
+#~ msgstr "Justifikazioa deuseztu ostean justifikatu"
+
+#~ msgid "Move up one line"
+#~ msgstr "Lerro bat goruntz mugitu"
+
+#~ msgid "Move down one line"
+#~ msgstr "Lerro bat beherantz mugitu"
+
+#~ msgid "Search backwards"
+#~ msgstr "Atzerantza bilatu"
+
+#~ msgid "Open previously loaded file"
+#~ msgstr "Ireki aldez aurre kargatutako artxiboa"
+
+#~ msgid "Open next loaded file"
+#~ msgstr "Ireki kargatutako hurrengo artxiboa"
+
+#~ msgid "Down"
+#~ msgstr "Behean"
+
+#~ msgid "Spell checking failed: unable to write temp file!"
+#~ msgstr "Zuzenketa ortografikoan arazoa: ezin artxibo temporala idatzi!"
+
+#~ msgid "Cannot resize top win"
+#~ msgstr "Ezin goiko lehioaren tamainua aldatu"
+
+#~ msgid "Cannot move top win"
+#~ msgstr "Ezin goiko lehioa mugitu"
+
+#~ msgid "Cannot resize edit win"
+#~ msgstr "Ezin edizio lehioa tamainuz aldatu"
+
+#~ msgid "Cannot move edit win"
+#~ msgstr "Ezin edizio lehioa mugitu"
+
+#~ msgid "Cannot resize bottom win"
+#~ msgstr "Ezin Beheko lehioa tamainuz aldatu"
+
+#~ msgid "Cannot move bottom win"
+#~ msgstr "Ezin beheko lehioa mugitu"
+
+#~ msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
+#~ msgstr ""
+#~ "NumLock apurtua detektatu da. NumLock-a aktibatuta dagoeneanTecl. "
+#~ "numerikoak funtzionatuko du"
+
+#, fuzzy
+#~ msgid "Tab size is too small for nano...\n"
+#~ msgstr "Terminalaren tamainua txikiegia da nano-rentzat"
+
+#~ msgid "Errors found in .nanorc file"
+#~ msgstr "Arazo bat/batzuk aurkituak .nanorc artxiboan"
+
+#~ msgid "Unable to open ~/.nanorc file, %s"
+#~ msgstr "Ezin ~/.nanorc artxiboa ireki, %s"
+
+#~ msgid "\"%s...\" not found"
+#~ msgstr "\"%s...\" ez aurkitua"
+
+#~ msgid "Replace failed: unknown subexpression!"
+#~ msgstr "Aldaketan arazoak: subexpresio ezezaguna!"
+
+#~ msgid " File: ..."
+#~ msgstr " Artxiboa:..."
+
+#~ msgid " DIR: ..."
+#~ msgstr "DIR: ..."
+
+#, fuzzy
+#~ msgid "add_to_cutbuffer() called with inptr->data = %s\n"
+#~ msgstr "add_to_cutbuffer Honekin deitua: inptr->data = %s\n"
+
+#~ msgid "Blew away cutbuffer =)\n"
+#~ msgstr "Cutbuffera apurtu da =)\n"
+
+#, fuzzy
+#~ msgid "filename is %s\n"
+#~ msgstr "%s da artxiboaren izena"
+
+#, fuzzy
+#~ msgid "%s: free'd a node, YAY!\n"
+#~ msgstr "delete_node():nodo bat liberatua, IEPA!\n"
+
+#, fuzzy
+#~ msgid "%s: free'd last node.\n"
+#~ msgstr "delete_node(): Azkenengo nodoa liberatua.\n"
+
+#~ msgid "Wrote >%s\n"
+#~ msgstr "Idatzi zen >%s\n"
+
+#~ msgid "current->data now = \"%s\"\n"
+#~ msgstr "current->data orain =\"%s\"\n"
+
+#~ msgid "After, data = \"%s\"\n"
+#~ msgstr "Gero, data = \"%s\"\n"
+
+#~ msgid "Main: set up windows\n"
+#~ msgstr "Main: Lehioak konfiguratu\n"
+
+#~ msgid "Main: bottom win\n"
+#~ msgstr "Main: Beheko lehioa\n"
+
+#~ msgid "Main: open file\n"
+#~ msgstr "Main: artxiboa ireki\n"
+
+#, fuzzy
+#~ msgid "AHA! %c (%d)\n"
+#~ msgstr "Aha! '%c' (%d)\n"
+
+#~ msgid "I got Alt-O-%c! (%d)\n"
+#~ msgstr "Alt-O-%c! Lortu dut! (%d)\n"
+
+#~ msgid "I got Alt-[-1-%c! (%d)\n"
+#~ msgstr "Alt-[-1-%c Lortu dut! (%d)\n"
+
+#~ msgid "I got Alt-[-2-%c! (%d)\n"
+#~ msgstr "Alt-[-2-%c lortu dut! (%d)\n"
+
+#~ msgid "I got Alt-[-%c! (%d)\n"
+#~ msgstr "lt-[-%c lortu dut! (%d)\n"
+
+#~ msgid "I got Alt-%c! (%d)\n"
+#~ msgstr "Alt-%c lortu dut! (%d)\n"
+
+#, fuzzy
+#~ msgid "I got %c (%d)!\n"
+#~ msgstr "Alt-%c lortu dut! (%d)\n"
+
+#, fuzzy
+#~ msgid "%s: Read a comment\n"
+#~ msgstr "parse_rcfile:Komentarioa irakurria\n"
+
+#, fuzzy
+#~ msgid "%s: Parsing option %s\n"
+#~ msgstr "parse_rcfile: %s ahukera parseatzen\n"
+
+#~ msgid "set flag %d!\n"
+#~ msgstr "%dmarka jarri!\n"
+
+#, fuzzy
+#~ msgid "actual_x for xplus=%d returns %d\n"
+#~ msgstr "actual_x_from_start xplus=%d-entzat %d bueltatzen du\n"
+
+#~ msgid "Aha! '%c' (%d)\n"
+#~ msgstr "Aha! '%c' (%d)\n"
+
+#~ msgid "input '%c' (%d)\n"
+#~ msgstr "sarrera '%c' (%d)\n"
+
+#~ msgid "Moved to (%d, %d) in edit buffer\n"
+#~ msgstr "(%d, %d)ra mugitu bufer editatuan\n"
+
+#~ msgid "I got \"%s\"\n"
+#~ msgstr "\"%s\"Lortu dut!\n"
+
+#~ msgid "Dumping file buffer to stderr...\n"
+#~ msgstr "Artxibo buferra stderrera pasatzen...\n"
+
+#~ msgid "Dumping cutbuffer to stderr...\n"
+#~ msgstr "Cutbuferra stderrera pasatzen...\n"
+
+#~ msgid "Dumping a buffer to stderr...\n"
+#~ msgstr "Buferra stderrera pasatzen...\n"
+
+#~ msgid "Can't visit parent in restricted mode"
+#~ msgstr "Ezin da maila nagusia era murriztuan bisitatu"
+
+#, fuzzy
+#~ msgid "delete_opennode(): free'd a node, YAY!\n"
+#~ msgstr "delete_node():nodo bat liberatua, IEPA!\n"
+
+#, fuzzy
+#~ msgid "delete_opennode(): free'd last node.\n"
+#~ msgstr "delete_node(): Azkenengo nodoa liberatua.\n"
+
+#, fuzzy
+#~ msgid "Press return to continue\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Nanorekin jarraitzeko return sakatu\n"
+
+#~ msgid "current->data = \"%s\"\n"
+#~ msgstr "current->data = \"%s\"\n"
+
+#~ msgid "do_cursorpos: linepct = %f, bytepct = %f\n"
+#~ msgstr "do_cursorpos: linepct = %f, bytepct = %f\n"
+
+#~ msgid "read_line: not on first line and prev is NULL"
+#~ msgstr "read_line: Ez gaude aurreneko lerroan eta aurrekoa NULL da"
+
+#~ msgid "Pico mode"
+#~ msgstr "Pico era"
+
+#, fuzzy
+#~ msgid "Emulate Pico as closely as possible"
+#~ msgstr " -p \t\tPico ahain bezain hobeen emulatu\n"
+
+#~ msgid "Replaced 1 occurrence"
+#~ msgstr "Gertaketa 1 aldatua"
+
+#~ msgid "Replace with [%s]"
+#~ msgstr "[%s]-rekin aldatu"
+
+#~ msgid "nano: realloc: out of memory!"
+#~ msgstr "nano:realloc: memoria falta!"
+
+#~ msgid "Backwards search"
+#~ msgstr "Atzeruntzdako bilaketa"
+
+#~ msgid "Regular expressions"
+#~ msgstr "Expresio erregularra"
+
+#~ msgid "Goto"
+#~ msgstr "Joan"
+
+#~ msgid " -D \t\t--dos\t\t\tWrite file in DOS format\n"
+#~ msgstr " -D\t\t--dos\t\t\tIdatzi artxiboa DOS formatoan\n"
+
+#~ msgid " -F \t\t--multibuffer\t\tEnable multiple file buffers\n"
+#~ msgstr " -F \t\t--multibuffer\t\tArtxibo buffer anitz gaitu\n"
+
+#~ msgid " -M \t\t--mac\t\t\tWrite file in Mac format\n"
+#~ msgstr " -M\t\t--mac\t\t\tIdatzi artxiboa Mac formatoan\n"
+
+#~ msgid " -R\t\t--regexp\t\tUse regular expressions for search\n"
+#~ msgstr "-R\t\t--regexp\t\tExpresio erregularrak erabili bilaketan\n"
+
+#~ msgid " -S\t\t--smooth\t\tSmooth scrolling\n"
+#~ msgstr "-S\t\t--smooth\t\tKorrimendu leuna\n"
+
+#~ msgid " -T [num]\t--tabsize=[num]\t\tSet width of a tab to num\n"
+#~ msgstr " -T[num]\t--tabsize=[num]\t\tTab-aren luzeera ezarri\n"
+
+#~ msgid " -V \t\t--version\t\tPrint version information and exit\n"
+#~ msgstr ""
+#~ " -V \t\t--version\t\t Erakutsi bertsioari buruzko informazioa eta atera\n"
+
+#~ msgid " -c \t\t--const\t\t\tConstantly show cursor position\n"
+#~ msgstr " -c \t\t--const\t\t\tMomentu oro kurtsorearen posizioa erakutsi\n"
+
+#~ msgid " -h \t\t--help\t\t\tShow this message\n"
+#~ msgstr " -h \t\t--help\t\t\tMezu hau erakutsi\n"
+
+#~ msgid " -i \t\t--autoindent\t\tAutomatically indent new lines\n"
+#~ msgstr " -i \t\t--autoindent\t\tKoskatu automatikoki lerro berria\n"
+
+#~ msgid " -k \t\t--cut\t\t\tLet ^K cut from cursor to end of line\n"
+#~ msgstr ""
+#~ " -k \t\t--cut\t\t\t^K -k kurtsoretik lerroaren bukaerara mozten du\n"
+
+#~ msgid " -l \t\t--nofollow\t\tDon't follow symbolic links, overwrite\n"
+#~ msgstr ""
+#~ " -l \t\t--nofollow\t\tLaburbide sinbolikorik ez jarraitu, gainidatzi\n"
+
+#~ msgid " -m \t\t--mouse\t\t\tEnable mouse\n"
+#~ msgstr " -m \t\t--mouse\t\t\tArratoia gaitu\n"
+
+#~ msgid " -o [dir] \t--operatingdir=[dir]\tSet operating directory\n"
+#~ msgstr " -o [dir] \t--operatingdir=[dir]\tOperazio direktorioa ezarri\n"
+
+#~ msgid " -p \t\t--pico\t\t\tEmulate Pico as closely as possible\n"
+#~ msgstr " -p \t\t--pico\t\t\tPico ahal den hobekien emulatu\n"
+
+#~ msgid ""
+#~ " -r [#cols] \t--fill=[#cols]\t\tSet fill cols to (wrap lines at) #cols\n"
+#~ msgstr ""
+#~ " -r [#cols] \t--fill=[#cols]\t\tZutabeak bete (wrapeatu hor) #cols\n"
+
+#~ msgid " -s [prog] \t--speller=[prog]\tEnable alternate speller\n"
+#~ msgstr " -s [prog] \t--speller=[prog]\tOrdezko zuzentzaile gaitu\n"
+
+#~ msgid " -t \t\t--tempfile\t\tAuto save on exit, don't prompt\n"
+#~ msgstr " -t \t\t--tempfile\t\tAutomatikoki gorde irteterakoan, ez galdetu\n"
+
+#~ msgid " -v \t\t--view\t\t\tView (read only) mode\n"
+#~ msgstr " -v \t\t--view\t\t\tView (irakurri bakarrik) era\n"
+
+#~ msgid " -w \t\t--nowrap\t\tDon't wrap long lines\n"
+#~ msgstr " -w \t\t--nowrap\t\tLerro luzeak ez wrapeatu\n"
+
+#~ msgid " -x \t\t--nohelp\t\tDon't show help window\n"
+#~ msgstr " -x \t\t--nohelp\t\tEz erakutsi laguntza lehioa\n"
+
+#~ msgid " -z \t\t--suspend\t\tEnable suspend\n"
+#~ msgstr " -z \t\t--suspend\t\tSuspenditze ahalmena gaitu\n"
+
+#~ msgid " +LINE\t\t\t\t\tStart at line number LINE\n"
+#~ msgstr " +LINE\t\t\t\t\tLerroan hasi LINE\n"
+
+#~ msgid " -M \t\tWrite file in Mac format\n"
+#~ msgstr " -M \t\tIdatzi artxiboa Mac formatoan\n"
+
+#~ msgid " -S\t\tSmooth scrolling\n"
+#~ msgstr " -S\t\tScrool leuna\n"
+
+#~ msgid "check_wrap called with inptr->data=\"%s\"\n"
+#~ msgstr ""
+#~ "check_wrap inptr->data=\"%s\" rekin deitua\n"
+#~ "\n"
+
+#~ msgid "Error in %s on line %d: requested fill size %d too small"
+#~ msgstr "Arazoa %sn %d lerroan: %d betetze tamainua txikiegia"
+
+#~ msgid "nano: calloc: out of memory!"
+#~ msgstr "nano:malloc: memoria falta!"
+
+#~ msgid "Pavel Curtis, Zeyd Ben-Halim and Eric S. Raymond for ncurses"
+#~ msgstr "Pavel Curtis, Zeyd Ben-Halim and Eric S. Raymond for ncurses"
diff --git a/po/fi.gmo b/po/fi.gmo
new file mode 100644
index 0000000..3ae1d96
--- /dev/null
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
new file mode 100644
index 0000000..4a251b5
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,2614 @@
+# GNU nano Finnish Translation.
+# Copyright © 2000, 2001, 2003, 2009, 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# Pauli Virtanen <pauli.virtanen@saunalahti.fi>, 2000, 2001.
+# Kalle Kivimaa <kalle.kivimaa@iki.fi>, 2003.
+# Kalle Olavi Niemitalo <kon@iki.fi>, 2003.
+# Jorma Karvonen <karvonen.jorma@gmail.com>, 2009-2010
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.4pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-04-08 10:55+0200\n"
+"Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
+"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Siirry hakemistoon"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Peruttu"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Ei voi siirtyä pois hakemistosta %s rajoitetussa tilassa"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Virhe luettaessa kohdetta %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Ei voi siirtyä ylähakemistoon"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(hakem.)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(ylähakem.)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Etsi"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Kirj. koko]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Säännöke]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Taaksepäin]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Etsintä jatkuu"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Tämä on ainoa esiintymä"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Ei nykyistä etsintämallia"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Ei voi lisätä tiedostoa hakemiston %s ulkopuolelta"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Ei enää avoimia tiedostopuskureita"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Vaihdoin tiedostoon %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Uusi teksti"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Luettu %lu rivi (Muunnettu DOS- ja Mac-muodosta)"
+msgstr[1] "Luettu %lu riviä (Muunnettu DOS- ja Mac-muodosta)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"Luettu %lu rivi (Muunnettu Mac-muodosta - Varoitus: Ei kirjoitusoikeutta)"
+msgstr[1] ""
+"Luettu %lu riviä (Muunnettu Mac-muodosta - Varoitus: Ei kirjoitusoikeutta)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Luettu %lu rivi (Muunnettu Mac-muodosta)"
+msgstr[1] "Luettu %lu riviä (Muunnettu Mac-muodosta)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"Luettu %lu rivi (Muunnettu Mac-muodosta - Varoitus: Ei kirjoitusoikeutta)"
+msgstr[1] ""
+"Luettu %lu riviä (Muunnettu Mac-muodosta - Varoitus: Ei kirjoitusoikeutta)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Luettu %lu rivi (Muunnettu DOS-muodosta)"
+msgstr[1] "Luettu %lu riviä (Muunnettu DOS-muodosta)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"Luettu %lu rivi Muunnettu DOS-muodosta - Varoitus: Ei kirjoitusoikeutta)"
+msgstr[1] ""
+"Luettu %lu riviä (Muunnettu DOS-muodosta - Varoitus: Ei kirjoitusoikeutta)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Luettu %lu rivi"
+msgstr[1] "Luettu %lu riviä"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "Luettu %lu rivi (Varoitus: Ei kirjoitusoikeutta)"
+msgstr[1] "Luettu %lu riviä (Varoitus: Ei kirjoitusoikeutta)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Lukee tiedostoa"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Uusi tiedosto"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "Ei löytynyt: â€%sâ€"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "â€%s†on hakemisto"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "â€%s†on laitetiedosto"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Uudessa puskurissa suoritettava komento [kohteesta %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Suoritettava komento [kohteesta %s] "
+
+# Toisaalla on "Ei voi lisätä tiedostoa hakemiston %s ulkopuolelta",
+# joten täälläkin on "hakemistosta" eikä "hakemistossa".
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Uuteen puskuriin lisättävä tiedosto [hakemistosta %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Lisättävä tiedosto [hakemistosta %s] "
+
+# "Virheellinen näppäin yksipuskuritilassa"?
+# "Komento toimii vain monen puskurin tilassa"?
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Virheellinen näppäin yhden puskurin tilassa"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Ei voi kirjoittaa hakemiston %s ulkopuolelle"
+
+# "Prepend" ei ole englanti, oikea sana on "prefix"
+# "Prepend" is not an English word, use "prefix"
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"Symboliseen linkkiin ei voi liittää etuliitettä eikä jälkiliikettä "
+"parametrillä â€--nofollow setâ€"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Virhe kirjoitettaessa varmuuskopiotiedostoon %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Liian monta varmuuskopiotiedostoa?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Virhe kirjoitettaessa %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Virhe kirjoitettaessa tilapäiseen tiedostoon: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Kirjoitettu %lu rivi"
+msgstr[1] "Kirjoitettu %lu riviä"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS-muoto]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac-muoto]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Varmuuskopio]"
+
+# "Prepend" is not an English word, use "prefix"
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Lisää valinta tiedoston alkuun"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Lisää valinta tiedoston loppuun"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Kirjoita valinta tiedostoon"
+
+# "Alkuun lisättävä tiedosto" olisi väärinpäin.
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Minkä tiedoston alkuun"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Minkä tiedoston loppuun"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Kirjoitettava tiedosto"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Tiedosto olemassa, korvataanko ? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Tallennetaanko tiedosto eri nimellä ? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+"Tiedostoa on muokattu sen jälkeen kun avasit sen, jatketaanko "
+"tallentamista ? "
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(jatkuu)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Paina enteriä jatkaaksesi Nanon käynnistämistä.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Peru"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Korvaa"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Älä korvaa"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Kirj. koko"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Taaksepäin"
+
+# "Äiti, mikä on säännöke?" "Kai se joku pikku sääntö on."
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Säännöke"
+
+# Tämä on Etsi-valikossa.
+# 80 sarakkeen näytöllä mahtuu 11 merkkiä.
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "EdHistoria"
+
+# Tämä on Etsi-valikossa.
+# 80 sarakkeen näytöllä mahtuu 11 merkkiä.
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "SeurHistor."
+
+# Tämä on "Etsi"-valikossa.
+# 80 sarakkeen näytöllä mahtuu 13 merkkiä, mieluummin 12.
+# Huomaa myös "Go To Line Help Text".
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Tekstiin"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "EtsiSeuraava"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Ensim. tiedosto"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Viim. tiedosto"
+
+# Tämä on Kirjoita tiedosto- ja Lisää tiedosto -valikoissa.
+# 80 sarakkeen näytöllä mahtuu 17 merkkiä, mieluummin 16.
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Tiedostoselain"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS-muoto"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac-muoto"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Lisää loppuun"
+
+# "Prepend" is not an English word, use "prefix"
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Lisää alkuun"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Varmuuskopio"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Suorita komento"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Siirry hakemistoon"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Ohjeita"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Lopeta"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Etsi"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Ed. sivu"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Seur. sivu"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Ensim. rivi"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Viim. rivi"
+
+# Perään tulee "käytössä" tai "ei käytössä".
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Keskeytysnäppäin"
+
+# "Par" on "paragraph" ?
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Kappalealku"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Kappaleloppu"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "KokoTasaus"
+
+# "Päivitä"?
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Piirrä uudelleen"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Lisää tiedosto"
+
+# Tämä on "Etsi"-valikossa.
+# 80 sarakkeen näytöllä mahtuu 13 merkkiä, mieluummin 12.
+# Huomaa myös "Go To Line Help Text".
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Rivinumero"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Tasaa nykyinen kappale"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Peru nykyinen toiminto"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Näytä tämä ohjeteksti"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Sulje nykyinen tiedostopuskuri / Poistu Nanosta"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Poistu Nanosta"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Kirjoita nykyinen tiedosto levylle"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Lisää toinen tiedosto nykyiseen tiedostoon"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Etsi merkkijonoa tai säännöllistä lauseketta"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Siirry edelliseen ruutuun"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Siirry seuraavaan ruutuun"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Leikkaa nykyinen rivi leiketilaan"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Liitä rivi leiketilasta nykyiselle riville"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Näytä kohdistimen sijainti"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Käynnistä oikoluin (jos saatavilla)"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Korvaa merkkijono tai säännöllinen lauseke"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Siirry riville ja sarakkeelle numero"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Merkitse kohdistimen kohdalla oleva teksti"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Toista viimeisin etsintä"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Leikkaa nykyinen rivi leiketilaan"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Sisennä nykyinen rivi"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Poista nykyisen rivin sisennys"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Peru viimeisin toiminto"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Tee uudelleen viimeisen toiminnon peruminen"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Siirry yksi merkki eteenpäin"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Siirry yksi merkki taaksepäin"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Siirry yksi sana eteenpäin"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Siirry yksi sana taaksepäin"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Siirry edelliselle riville"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Siirry seuraavalle riville"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Siirry nykyisen rivin alkuun"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Siirry nykyisen rivin loppuun"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Siirry kappaleen alkuun; sitten seuraavan kappaleen"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Siirry vain kappaleen loppuun; sitten seuraavan kappaleen"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Siirry tiedoston ensimmäiselle riville"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Siirry tiedoston viimeiselle riville"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Siirry vastaavalle sulkeelle"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Siirry rivi ylöspäin liikuttamatta kohdistinta"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Siirry rivi alaspäin liikuttamatta kohdistinta"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Vaihda edelliseen tiedostopuskuriin"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Vaihda seuraavaan tiedostopuskuriin"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Lisää seuraava näppäily kirjaimellisesti"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Lisää sarkain kohdistimen kohdalle"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Lisää rivinvaihto kohdistimen kohdalle"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Poista kohdistimen kohdalla oleva merkki"
+
+# "Poista merkki kohdistimen vasemmalta puolelta"?
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Poista kohdistimesta vasemmalle oleva merkki"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Liitä teksti kohdistimesta tiedoston loppuun"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Tasaa nykyinen tiedosto"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Laske sanojen, rivien ja merkkien määrä"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Piirrä ruutu uudestaan"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Keskeytä editori (jos keskeytys on aktivoitu)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Vaihda merkkikoko etsinnässä"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Vaihda etsinnän suunta"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Vaihda säännöllisten lausekkeiden käyttö"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Kutsu takaisin edellinen haettu/korvattu merkkijono"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Kutsu takaisin seuraava haettu/korvattu merkkijono"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Siirry tiedostoselaimeen"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Vaihda DOS-muodon käyttö"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Vaihda Mac-muodon käyttö"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Vaihda liittäminen loppuun"
+
+# "Prepend" is not an English word, use "prefix"
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Vaihda liittäminen alkuun"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Vaihda alkuperäisen tiedoston varmuuskopiointi"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Suorita ulkoinen komento"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Vaihda uuden puskurin käyttö"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Poistu tiedostoselaimesta"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Siirry luettelon ensimmäiseen tiedostoon"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Siirry luettelon viimeiseen tiedostoon"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "Siirry luettelon seuraavaan tiedostoon"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "Siirry luettelon edelliseen tiedostoon"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Siirry hakemistoon"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Sulje"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Kirjoita"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Tasaa"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Lue tied."
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Leikkaa"
+
+# 80 sarakkeen näytöllä mahtuu 10 merkkiä, mieluummin 9.
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Epätasaa"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Liitä"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Sijainti"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Oikolue"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Merkitse tekstiä"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Kopioi"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Sisennä"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Poista sisennys"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Peru"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Tee uudelleen"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Eteenpäin"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Takaisin"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Seuraava sana"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Edellinen sana"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Ed. rivi"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Seuraava rivi"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Koti"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Loppu"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Etsi toinen sulje"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Vieritä ylös"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Vieritä alas"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Edellinen tiedosto"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Seuraava tiedosto"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Merkintarkka syöte"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Sarkain"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Poista"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Askelpalautin"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "LeikLoppuun"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Sanaluku"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Ohjetila"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Näytä kohdistimen sijainti aina"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Käytä lisäriviä muokkaukseen"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Pehmeä vieritys"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Tyhjemerkkien näyttö"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Värillinen rakenteen merkintä"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Älykäs kotiavain"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Automaattinen sisennys"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Leikkaa loppuun saakka"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Pitkän rivin jakaminen eri riveille"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Kirjoitettujen sarkainmerkkien muunnos välilyönneiksi"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Varmuuskopiotiedostot"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Useat puskurit"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Hiirituki"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Ei muunnosta DOS/Mac-muodosta"
+
+# Perään tulee "käytössä" tai "ei käytössä".
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Keskeytysnäppäin"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "Pehmeä rivin jakaminen usealle riville"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Etsi-komennon käyttöohje\n"
+"\n"
+" Kirjoita sanat tai merkit, joita haluat etsiä, ja paina enter. Jos antamasi "
+"teksti löytyy, näyttö siirtyy lähimpään paikkaan, josta teksti löytyi.\n"
+"\n"
+" Edellinen hakuteksti näkyy hakasuluissa Etsi:-kehotteen jälkeen. Jos painat "
+"vain enteriä antamatta mitään uutta tekstiä, Nano hakee edellistä "
+"hakutekstiä uudestaan. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Jos olet valinnut tekstin merkitsemällä ja sitten etsit sitä korvattavaksi, "
+"vain vastaava teksti korvataan.\n"
+"\n"
+" Seuraavat toimintonäppäimet ovat käytettävissä Etsintä-tilassa:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Etsi rivinumero -komennon käyttöohje\n"
+"\n"
+" Kirjoita haluamasi rivin numero ja paina enter. Jos tiedostossa on "
+"antamaasi lukua pienempi määrä rivejä, näyttö siirtyy viimeiselle riville.\n"
+"\n"
+" Seuraavat funktionäppäimet ovat käytössä Etsi rivinumero -tilassa:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Lisää tiedosto -komennon käyttöohje\n"
+"\n"
+" Kirjoita tiedoston nimi. Nano lisää tiedoston valittuun puskuriin "
+"kohdistimen kohdalle.\n"
+"\n"
+" Jos olet kääntänyt Nanon tukemaan useaa samanaikaista tiedostopuskuria, "
+"niin voit ottaa samanaikaiset puskurit käyttöön komentorivivalitsimilla -F "
+"tai --multibuffer, Meta-F-näppäinkomennolla tai nanorc-tiedostolla. Tällöin "
+"Nano ei lisääkään tiedostoa valittuun puskuriin vaan lataa sen erilliseen "
+"puskuriin. (Tiedostopuskureita voit vaihtaa näppäinkomennoilla Meta-< ja "
+"Meta->). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Jos tarvitset toisen tyhjän puskurin, älä valitse mitään tiedostonimeä tai "
+"kirjoita ei-olemassaolevaa tiedostonimeä komentokehotteella ja paina Enter-"
+"näppäintä.\n"
+"\n"
+" Seuraavat toimintonäppäimet ovat käytössä Lisää tiedosto -tilassa:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Kirjoita tiedosto -komennon käyttöohje\n"
+"\n"
+" Kirjoita, minkä nimiseksi haluat tallentaa nykyisen tiedoston, ja paina "
+"sitten Enter.\n"
+"\n"
+" Jos olet valinnut tekstiä merkitsemällä, niin Nano kysyykin, mihin "
+"tiedostoon haluat tallentaa valitsemasi osan. Jotta et vahingossa "
+"tallentaisi pelkkää valittua tekstiä koko alkuperäisen tiedoston tilalle, "
+"Nano ei tässä tapauksessa ehdota tiedoston nimeä valmiiksi.\n"
+"\n"
+" Seuraavat funktionäppäimet ovat käytössä Kirjoita tiedosto -tilassa:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Tiedostoselaimen käyttöohje\n"
+"\n"
+" Tiedostoselaimella voit visuaalisesti selata hakemistorakennetta ja valita "
+"siitä tiedoston luettavaksi tai kirjoitettavaksi. Voit selata tiedostoja "
+"nuolinäppäimillä tai Page Up- ja Page Down -näppäimillä. Kun olet löytänyt "
+"oikean tiedoston, valitse se painamalla S tai Enter; samoilla näppäimillä "
+"voit myös siirtyä alihakemistoon. Pääset hakemistorakenteessa ylöspäin yhden "
+"tason, kun valitset tiedostolistan yläpäästä hakemiston, jonka nimi on "
+"â€..â€.\n"
+"\n"
+" Seuraavat funktionäppäimet ovat käytössä tiedostoselaimessa:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Selaimen Etsi-komennon käyttöohje\n"
+"\n"
+" Kirjoita sanat tai merkit, joita haluat etsiä, ja paina enter. Jos antamasi "
+"teksti löytyy, näyttö siirtyy lähimpään paikkaan, josta teksti löytyi.\n"
+"\n"
+" Edellinen hakuteksti näkyy hakasuluissa Etsi:-kehoitteen jälkeen. Jos "
+"painat vain enteriä antamatta mitään uutta tekstiä, Nano hakee edellistä "
+"hakutekstiä uudestaan.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Seuraavat funktionäppäimet ovat käytössä selaimen Etsi-tilassa:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Selaimen siirry hakemistoon -komennon käyttöohje\n"
+"\n"
+" Kirjoita sen hakemiston nimi, jota haluat selata.\n"
+"\n"
+" Jos tab-täydennystä ei ole otettu pois käytöstä, niin voit TAB- eli "
+"sarkainnäppäintä painamalla (yrittää) täydentää hakemiston nimen "
+"automaattisesti.\n"
+"\n"
+" Seuraavat funktionäppäimet ovat käytössä Selaimen siirry hakemistoon -"
+"tilassa:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Oikolue-komennon käyttöohje\n"
+"\n"
+" Oikoluin tarkistaa koko nykyisen tiedoston oikeinkirjoituksen. Kun se "
+"kohtaa sanan, jota se ei tunne, niin se korostaa sanan, ja voit kirjoittaa "
+"sen tilalle oikean muodon. Tämän jälkeen oikoluin kysyy, haluatko korvata "
+"nykyisestä tiedostosta kaikki muutkin samalla tavalla väärin kirjoitetut "
+"sanat.\n"
+"\n"
+" Seuraavat funktionäppäimet ovat käytössä Oikolue-tilassa:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Suorita komento -komennon käyttöohje\n"
+"\n"
+" Tämän valikon kautta voit ajaa komentotulkissa komennon ja liittää sen "
+"tulosteet nykyiseen puskuriin (tai monen puskurin tilassa uuteen puskuriin). "
+"Jos tarvitset uuden tyhjän puskurin, älä kirjoita mitään komentoa.\n"
+"\n"
+" Seuraavat funktionäppäimet ovat käytössä Suorita komento -tilassa:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+" Nanon pääohje\n"
+"\n"
+" Nano-editori on suunniteltu vastaamaan toiminnallisuudeltaan ja "
+"helppokäyttöisyydeltään UW Pico -editoria. Nanon näyttö koostuu neljästä "
+"osasta: ylin rivi näyttää ohjelman versionumeron, nykyisen tiedoston nimen "
+"sekä sen, onko tiedostoa muutettu. Seuraavana on pääikkuna, jossa näkyy "
+"muokattava tiedosto. Tilarivi on kolmas rivi alhaalta lukien ja näyttää "
+"tärkeät viestit."
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Kaksi alinta riviä näyttää useimmin käytetyt pikavalitsimet editorissa.\n"
+"\n"
+" Pikavalitsiminen merkintä on seuraava: Control-näppäinsekvenssit merkitään "
+"(^)-symbolilla ja voidaan kirjoittaa käyttämällä Control (Ctrl) -näppäintä "
+"tai painamalla Escape (Esc) -näppäintä kahdesti. Escape-näppäinsekvenssit "
+"merkitään Meta (M-) -symbolillla ja voidaan kirjoittaa joko Esc, Alt, tai "
+"Meta -näppäimellä riippuen näppäimistösi asetuksista. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Vastaavan arvon voi kirjoittaa myös painamalla Esc-näppäintä kahdesti ja "
+"kirjoittamalla kolmelukuisen desimaalinumeron välillä 000 ... 255 saa "
+"vastaavan kirjaimen. Seuraavan näppäilyt ovat käytettävissä editorin "
+"pääikkunassa. Vaihtoehtoiset näppäimet näytetään sulkeissa:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "päälle/pois"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Virheellinen näppäin katselutilassa"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Puskuri kirjoitettu tiedostoon â€%sâ€\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Puskuria ei kirjoitettu tiedostoon %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Puskuria ei kirjoitettu tiedostoon: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Ikkuna on liian pieni Nanolle...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Käyttö: nano [VALITSIMET] [[+RIVI,SARAKE] TIEDOSTO]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Valitsin\t\tPitkä valitsin\t\tMerkitys\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Valitsin\tMerkitys\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Näytä tämä ohje"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+RIVI,SARAKE"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Aloita rivillä RIVI, sarakkeessa SARAKE"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Ota käyttöön älykäs kotinäppäin"
+
+# "tallennettaessa"?
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Tallenna olemassaolevien tiedostojen varmuuskopiot"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <hak>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<hak>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Hakemisto uniikkien varmuuskopitiedostojen tallentamiseen"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Käytä lihavoitua tekstiä käänteisen videotekstin sijasta"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Muunna näppäillyt sarkainlyönnit välilyönneiksi"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Mahdollista useiden puskureiden käyttö"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Muista viimeksi etsityt/korvatut merkkijonot"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Älä käytä nanorc-tiedostoja"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Korjaa numeerisen näppäistön näppäinten sekaantumispulma"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Älä lisää rivinvaihtoa tiedostojen loppuun"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Älä muunna tiedostoja DOS/Mac-muodosta"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Käytä yhtä lisäriviä muokkaukseen"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <jono>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<jono>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Lainauksen merkintä"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Rajoitettu tila"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Vieritä rivi kerrallaan puoliruudun sijasta"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#saraketta>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#saraketta>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Aseta sarkaimen leveys #cols -sarakkeeksi"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Tyhjennä tilarivi pikaisesti"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Tulosta versiotiedot ja lopeta"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Havaitse sanarajat tarkemmin"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <jono>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<jono>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Väritykseen käytettävä syntaksimääritys"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Näytä kohdistimen sijainti jatkuvasti"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Korjaa Backspace/Delete -näppäinten sekaantumispulma"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Sisennä uudet rivit automaattisesti"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Leikkaa rivin loppuun saakka"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Älä seuraa symbolisia linkkejä, vaan korvaa ne tiedostoilla."
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Käytä hiirtä"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <hak>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<hak>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Aseta toimintahakemisto"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Salli XON (^Q)- ja XOFF (^S) -näppäimet"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "Älä ilmoita käynnistyspulmista kuten rc-tiedoston virheistä"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#sarakkeet>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#sarakkeet>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Aseta rivityspiste sarakkeeseen #cols"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <ohjelma>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<ohjelma>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Käytö vaihtoehtoista oikolukuohjelmaa"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Tallenna tiedosto kysymättä poistuttaessa"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "Ota käyttöön yleinen perumistoiminto [KOKEELLINEN]"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Katselutila (vain luku)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Älä rivitä pitkiä rivejä"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Älä näytä kahta avusteriviä"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Ota käyttöön keskeyttäminen"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "Ota käyttöön pehmeä rivitys"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(eivät vaikuta Nanoon; Pico käyttäisi)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU Nano, versio %s (käännetty %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Sähköposti: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Mukaan käännetyt valitsimet:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Tämä ominaisuus ei ikävä kyllä ole käytössä"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Tallenna muutettu teksti (Muutokset häviävät, jos vastaat â€eiâ€) ? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "Ei voitu valitettavasti avata uudelleen vakiosyötettä näppäimistöstä\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Luetaan vakiosyötteestä, ^C lopettaa toiminnon\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Vastaanotettiin SIGHUP tai SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Palaa Nanoon komennolla â€fgâ€.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "käytössä"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "ei käytössä"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Tuntematon komento"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON:ia ei käytetä, mutinaa"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF:ia ei käytetä, mutinaa"
+
+# puuttuu tai liian iso tai liian pieni
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Haluttu sarkaimen koko â€%s†ei kelpaa"
+
+# puuttuu tai liian iso tai liian pieni
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Haluttu täydennyspituus â€%s†ei kelpaa"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "KkYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "EeNn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "aA"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Kyllä"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Kaikki"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Ei"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Virhe tiedostossa %s rivillä %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "parametri ’%s’ sisältää parittoman â€-merkin"
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Säännöllisten lausekkeiden on alettava ja loputtava â€-merkillä"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Säännöllinen lauseke â€%s†ei kelpaa: %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Puuttuva syntaksin nimi"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "Syntaksi â€none†on varattu"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "Syntaksi â€default†ei saa ottaa laajennuksia"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Puuttuva näppäinnimi"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "Näppäinsidontojen on alettava merkeillä â€^â€, â€Mâ€, tai â€Fâ€"
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "On määriteltävä funktionäppäin, johon näppäin sidotaan"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "On määriteltävä valikko, johon näppäin sidotaan (tai â€allâ€)"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Ei voitu kartoittaa nimeä â€%s†funktioon"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Ei voitu kartoittaa nimeä â€%s†valikkoon"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "Valitettavasti näppäinmerkkijonossa â€%s†on väärä sidonta"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Tuntematon väri â€%sâ€.\n"
+"Nano tuntee värit â€greenâ€, â€redâ€, â€blueâ€,\n"
+"â€whiteâ€, â€yellowâ€, â€cyanâ€, â€magenta†ja\n"
+"â€blackâ€, ja alussa voi olla â€brightâ€\n"
+"edustaväreinä."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "En voi lisätä värikomentoa ilman syntaksikomentoa"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Puuttuva värin nimi"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Taustaväri â€%s†ei voi olla â€brightâ€"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Puuttuva säännöllinen lausekemerkkijono"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "â€start=†vaatii vastaavan â€end=â€:n"
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Ei voi lisätä säännöllistä otsakelauseketta ilman syntaksikomentoa"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Vakava virhe: funktioon â€%s†ei ole kartoitettu näppäimiä"
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Poistutaan. Käytä Nano-ohjelmaa â€-Iâ€-valitsimella, jos nanorc-asetuksia "
+"täytyy säätää\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Komentoa â€%s†ei sallita sisällytetyssä tiedostossa"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Syntaksissa â€%s†ei ole värikomentoja"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Komentoa â€%s†ei ymmärretty"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Puuttuva lippu"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "valitsin â€%s†vaatii argumentin"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Valitsin ei ole monitavuinen merkkijono"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Ei-tyhjemerkkejä vaadittu"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Kaksi yksisarakkeista merkkiä vaadittu"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Ei voi poistaa lippua â€%sâ€"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Tuntematon lippu â€%sâ€"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Kotihakemistoa ei löydy! Vää!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "â€%.*s%s†ei löytynyt"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (korvattava) valinnassa"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (korvattava)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Korvataanko tämä kohta?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Korvaa merkkijonolla"
+
+# Pitäisiköhän olla passiivi?
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Korvattu %lu kohta"
+msgstr[1] "Korvattu %lu kohtaa"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Kirjoita rivin numero, sarakkeen numero"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Virheellinen rivi- tai sarakenumero"
+
+# versiossa 1.1.99pre2 hakee merkkejä "([{<>}])"
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Ei ole suljemerkki"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Ei vastaavaa suljetta"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Merkintä alkoi"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Merkintä loppui"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Peruutuspuskurissa ei ole mitään!"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr "Sisäinen virhe: vastaavaa riviä %d ei löydy. Tallenna työsi"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "teksti lisää"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "teksti poista"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "rivittäminen"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "rivin liittäminen"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "tekstileikkaus"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "testin leikkauksen peruutus"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "rivin katkaiseminen"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "teksti lisää"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "teksti korvaa"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Sisäinen virhe: tuntematon tyyppi. Tallenna työsi"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Peruttu toiminto (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Ei mitään tehtävää!"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr "Sisäinen virhe: Uudelleenteon asetukset epäonnistuivat. Tallenna työsi"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Toiminto tehtiin uudelleen (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Ei voitu tehdä putkea"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Ei voitu tehdä lapsiprosessia"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr "Sisäinen virhe: ei voi asettaa uncut-komentoa. Tallenna työsi"
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Sisäinen virhe: tuntematon tyyppi. Tallenna työsi."
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Lainausmerkintä %s ei kelpaa: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Tasaamisen voi perua nyt."
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Muokkaa korvausta"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Ei voitu tehdä putkea"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Luodaan väärin kirjoitettujen sanojen lista, ole hyvä ja odota..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Putken puskurin kokoa ei saatu selville"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Virhe komennon â€spell†aikana"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Virhe komennon â€sort -f†aikana"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Virhe komennon â€uniq†aikana"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Oikoluku on valmis"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Virhe kutsuttaessa kohdetta â€%sâ€"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Oikoluku epäonnistui: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Oikoluku epäonnistui: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sSanoja: %lu riviä: %ld merkkiä: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "Valinnassa:"
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "Nanolta loppui muisti!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Unikoodisyöte"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Muokattu"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Näkymä"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "HAKEMISTO:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Tiedosto:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "rivi %ld/%ld (%d%%), sarake %lu/%lu (%d%%), merkki %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Nano-editori"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "versio"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Tehneet:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Erikoiskiitokset:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "Free Software Foundation"
+
+# Special thanks to: (nimiä) For ncurses: (nimiä)
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Ncursesista:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "ja kaikille muille, jotka unohdimme..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Kiitos Nanon käyttämisestä!"
+
+#~ msgid "Error writing backup file %s: File owner mismatch"
+#~ msgstr ""
+#~ "Virhe kirjoitettaessa varmuuskopiotiedostoon %s: Tiedoston "
+#~ "omistajatäsmäämättömyys"
+
+#~ msgid "Space"
+#~ msgstr "Väli"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Jotakin järkevää, kiitos?"
+
+#~ msgid "File to insert into new buffer [from ./] "
+#~ msgstr "Uuteen puskuriin lisättävä tiedosto [hakemistosta ./] "
+
+#~ msgid "File to insert [from ./] "
+#~ msgstr "Lisättävä tiedosto [hakemistosta ./] "
+
+# Oikeasti ohjelma tuossa kohtaa vasta avaa tiedoston, mutta eipä
+# englanninkielinenkään versio käyttäjälle sitä kerro.
+#~ msgid "Could not read %s for backup: %s"
+#~ msgstr "Tiedostoa %s ei voitu lukea varmuuskopioitavaksi: %s"
+
+#~ msgid "Couldn't write backup: %s"
+#~ msgstr "Varmuuskopiota ei voitu kirjoittaa: %s"
+
+# Allatiivi kuulostaa väärältä.
+#~ msgid "Could not set permissions %o on backup %s: %s"
+#~ msgstr "Oikeuksia %o ei voitu asettaa varmuuskopiolle %s: %s"
+
+# Allatiivi kuulostaa väärältä.
+#
+# "Varmuuskopion %3$s omistajaa ei voitu asettaa %1$d:ksi ja ryhmää %2$d:ksi: %4$s"?
+# "Varmuuskopiota %3$s ei voitu siirtää käyttäjän %1$d ja ryhmän %2$d omistukseen: %4$s"?
+# "Käyttäjää %d ja ryhmää %d ei voitu asettaa varmuuskopion %s omistajaksi: %s"?
+#~ msgid "Could not set owner %d/group %d on backup %s: %s"
+#~ msgstr "Omistajaa %d ja ryhmää %d ei voitu asettaa varmuuskopiolle %s: %s"
+
+# Allatiivi kuulostaa väärältä.
+#
+# Mitenhän ajat pitäisi kääntää? Unixissa niitä on kolme:
+# * atime = access time
+# - milloin tiedoston sisältöä on luettu (read, execve)
+# - "käyttöaika", "lukuaika"?
+# * mtime = modification time
+# - milloin tiedoston sisältöä on muutettu (write)
+# - "muutosaika", "kirjoitusaika"?
+# * ctime = change time
+# - milloin metatietoja on muutettu (chown, chmod, link, unlink)
+# - "luontiaika"?
+#~ msgid "Could not set access/modification time on backup %s: %s"
+#~ msgstr "Varmuuskopion %s käyttö- ja muutosaikaa ei voitu asettaa: %s"
+
+#~ msgid "Could not open file for writing: %s"
+#~ msgstr "Tiedostoa ei voitu avata kirjoitettavaksi: %s"
+
+#~ msgid "Could not close %s: %s"
+#~ msgstr "Tiedostoa %s ei voitu sulkea: %s"
+
+#~ msgid "Could not reopen %s: %s"
+#~ msgstr "Tiedostoa %s ei voitu avata uudestaan: %s"
+
+# Ohjelma on tallentanut puskurin väliaikaiseen tiedostoon. Nyt se avaa
+# alkuperäisen tiedoston ja kopioi sen sisällön väliaikaistiedoston
+# perään. Jos tämä onnistuu, niin seuraavaksi se siirtää
+# väliaikaistiedoston alkuperäisen tilalle.
+#~ msgid "Could not open %s for prepend: %s"
+#~ msgstr "Tiedostoa %s ei voitu avata alkuun kirjoittamista varten: %s"
+
+# Allatiivi kuulostaa väärältä.
+#~ msgid "Could not set permissions %o on %s: %s"
+#~ msgstr "Oikeuksia %o ei voitu asettaa tiedostolle %s: %s"
+
+#~ msgid "Can't open \"%s\": %s"
+#~ msgstr "Hakemistoa â€%s†ei voi avata: %s"
+
+#~ msgid "Goto Cancelled"
+#~ msgstr "Siirtyminen peruttu"
+
+#~ msgid "Unable to open ~/.nano_history file, %s"
+#~ msgstr "Ei voi avata tiedostoa ~/.nano_history: %s"
+
+#~ msgid "Unable to write ~/.nano_history file, %s"
+#~ msgstr "Ei voi kirjoittaa tiedostoa ~/.nano_history: %s"
+
+# Perään tulee "käytössä" tai "ei käytössä".
+#~ msgid "Writing file in DOS format"
+#~ msgstr "Tiedoston kirjoitus DOS-muodossa"
+
+# Perään tulee "käytössä" tai "ei käytössä".
+#~ msgid "Writing file in Mac format"
+#~ msgstr "Tiedoston kirjoitus Mac-muodossa"
+
+# Perään tulee "käytössä" tai "ei käytössä".
+#~ msgid "Backing up file"
+#~ msgstr "Varmuuskopiointi"
+
+#~ msgid "Auto wrap"
+#~ msgstr "Automaattinen rivitys"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Avaa ohjevalikko"
+
+#~ msgid "Unjustify after a justify"
+#~ msgstr "Poista tasaus tasauksen jälkeen"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Etsi ja korvaa tekstiä"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Etsi tekstiä"
+
+#~ msgid "Move up one line"
+#~ msgstr "Siirry yksi rivi yläspäin"
+
+#~ msgid "Move down one line"
+#~ msgstr "Siirry yksi rivi alaspäin"
+
+#~ msgid "Insert a tab character"
+#~ msgstr "Lisää sarkainmerkki"
+
+# 80 sarakkeen näytöllä mahtuu 56 merkkiä.
+#~ msgid "Make the current search or replace case (in)sensitive"
+#~ msgstr "Muuta, huomioiko etsintä tai korvaus kirjainkokoa (a/A)"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Lisää levyllä olevan tiedoston alkuun"
+
+#~ msgid "Search backwards"
+#~ msgstr "Etsi taaksepäin"
+
+#~ msgid "Write file out in DOS format"
+#~ msgstr "Kirjoita tiedosto DOS-muodossa"
+
+#~ msgid "Write file out in Mac format"
+#~ msgstr "Kirjoita tiedosto Mac-muodossa"
+
+# "tallennettaessa"?
+#~ msgid "Back up original file when saving"
+#~ msgstr "Tee varmuuskopio alkuperäisestä tiedostosta talletettaessa"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Etsi toinen suljemerkki"
+
+# "edellinen"?
+#~ msgid "Open previously loaded file"
+#~ msgstr "Avaa viimeksi ladattu tiedosto"
+
+# "seuraavaksi"?
+#~ msgid "Open next loaded file"
+#~ msgstr "Avaa seuraava ladattu tiedosto"
+
+#~ msgid "Up"
+#~ msgstr "Yläs"
+
+#~ msgid "Down"
+#~ msgstr "Alas"
+
+#~ msgid "Direction"
+#~ msgstr "Suunta"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Käyttö: nano [+RIVI] [GNU pitkät valitsimet] [valitsimet] [tiedosto]\n"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Käyttö: nano [+RIVI] [valitsimet] [tiedosto]\n"
+#~ "\n"
+
+#~ msgid "+LINE"
+#~ msgstr "+RIVI"
+
+#~ msgid "Use alternate keypad routines"
+#~ msgstr "Käytä vaihtoehtoisia näppäimistörutiineja"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "Etsi säännällisillä lausekkeilla"
+
+#~ msgid "-T [num]"
+#~ msgstr "-T [luku]"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Rivitä annettua pidemmät rivit"
+
+#~ msgid "Could not create a temporary filename: %s"
+#~ msgstr "Väliaikaista tiedostonnimeä ei voitu luoda: %s"
+
+#~ msgid "Spell checking failed: unable to write temp file!"
+#~ msgstr "Oikoluku epäonnistui: väliaikaistiedostoa ei voitu kirjoittaa"
+
+#~ msgid "Cannot resize top win"
+#~ msgstr "Yläikkunan kokoa ei voi muuttaa"
+
+#~ msgid "Cannot move top win"
+#~ msgstr "Yläikkunaa ei voi siirtää"
+
+#~ msgid "Cannot resize edit win"
+#~ msgstr "Muokkausikkunan kokoa ei voi muuttaa"
+
+#~ msgid "Cannot move edit win"
+#~ msgstr "Muokkausikkunaa ei voi siirtää"
+
+#~ msgid "Cannot resize bottom win"
+#~ msgstr "Alaikkunan kokoa ei voi muuttaa"
+
+#~ msgid "Cannot move bottom win"
+#~ msgstr "Alaikkunaa ei voi siirtää"
+
+#~ msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
+#~ msgstr ""
+#~ "NumLock-ongelma: Numeronäppäimistö toimii väärin, kun NumLock ei ole "
+#~ "päällä."
+
+#~ msgid "Tab size is too small for nano...\n"
+#~ msgstr "Sarkaimen leveys on liian pieni Nanolle...\n"
+
+#~ msgid "Errors found in .nanorc file"
+#~ msgstr "Tiedostossa .nanorc oli virheitä"
+
+#~ msgid "Unable to open ~/.nanorc file, %s"
+#~ msgstr "Ei voi avata tiedostoa ~/.nanorc: %s"
+
+#~ msgid "\"%s...\" not found"
+#~ msgstr "â€%s...†ei löytynyt"
+
+#~ msgid "Invalid regex â€%sâ€"
+#~ msgstr "Virheellinen säännöllinen lauseke â€%sâ€"
+
+#~ msgid "Search Cancelled"
+#~ msgstr "Etsintä peruttu"
+
+#~ msgid "Replace Cancelled"
+#~ msgstr "Korvaus peruttu"
+
+#~ msgid "Replace failed: unknown subexpression!"
+#~ msgstr "Korvaus epäonnistui: tuntematon alilauseke!"
+
+#~ msgid "Aborted"
+#~ msgstr "Keskeytetty"
+
+#~ msgid " File: ..."
+#~ msgstr " Tiedosto: ..."
+
+#~ msgid " DIR: ..."
+#~ msgstr " HAKEMISTO: ..."
+
+#~ msgid "Refusing 0 length regex match"
+#~ msgstr "En hyväksy 0-pituista säännöllisen lausekkeen osumaa"
+
+#~ msgid "add_to_cutbuffer() called with inptr->data = %s\n"
+#~ msgstr "add_to_cutbuffer() kutsuttu, inptr->data = %s\n"
+
+#~ msgid "Blew away cutbuffer =)\n"
+#~ msgstr "Leiketila katosi =)\n"
+
+#~ msgid "filename is %s\n"
+#~ msgstr "tiedoston nimi on %s\n"
+
+#~ msgid "%s: free'd a node, YAY!\n"
+#~ msgstr "%s: solmu vapautettu, YAY!\n"
+
+#~ msgid "%s: free'd last node.\n"
+#~ msgstr "%s: viimeinen solmu vapautettu.\n"
+
+#~ msgid "Backing up %s to %s\n"
+#~ msgstr "Kopioin tiedoston %s tiedostoksi %s\n"
+
+#~ msgid "Wrote >%s\n"
+#~ msgstr "Kirjoitettu: >%s\n"
+
+#~ msgid "current->data now = \"%s\"\n"
+#~ msgstr "current->data nyt = â€%sâ€\n"
+
+#~ msgid "After, data = \"%s\"\n"
+#~ msgstr "Jälkeenpäin data = â€%sâ€\n"
+
+#~ msgid "Main: set up windows\n"
+#~ msgstr "Pääohjelma: ikkunoiden asettelu\n"
+
+#~ msgid "Main: bottom win\n"
+#~ msgstr "Pääohjelma: alaikkuna\n"
+
+#~ msgid "Main: open file\n"
+#~ msgstr "Pääohjelma: avaa tiedosto\n"
+
+#~ msgid "AHA! %c (%d)\n"
+#~ msgstr "Ahaa! %c (%d)\n"
+
+#~ msgid "I got Alt-O-%c! (%d)\n"
+#~ msgstr "Vastaanotettu Alt-O-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-1-%c! (%d)\n"
+#~ msgstr "Vastaanotettu Alt-[-1-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-2-%c! (%d)\n"
+#~ msgstr "Vastaanotettu Alt-[-2-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-%c! (%d)\n"
+#~ msgstr "Vastaanotettu Alt-[-%c! (%d)\n"
+
+#~ msgid "I got Alt-%c! (%d)\n"
+#~ msgstr "Vastaanotettu Alt-%c! (%d)\n"
+
+#~ msgid "I got %c (%d)!\n"
+#~ msgstr "Vastaanotettu %c (%d)!\n"
+
+#~ msgid "Adding new syntax after 1st\n"
+#~ msgstr "Lisään syntaksin ensimmäisen jälkeen\n"
+
+#~ msgid "Starting a new syntax type\n"
+#~ msgstr "Aloitan uuden syntaksityypin\n"
+
+#~ msgid "Starting a new colorstring for fg %d bg %d\n"
+#~ msgstr "Aloitan uuden värimerkkijonon fg: %d bg: %d\n"
+
+#~ msgid "Adding new entry for fg %d bg %d\n"
+#~ msgstr "Lisään uuden määrityksen fg: %d bg: %d\n"
+
+#~ msgid "%s: Read a comment\n"
+#~ msgstr "%s: Luki kommentin\n"
+
+#~ msgid "%s: Parsing option %s\n"
+#~ msgstr "%s: Tulkitsee asetusta %s\n"
+
+#~ msgid "set flag %d!\n"
+#~ msgstr "asetti lipun %d!\n"
+
+#~ msgid "actual_x for xplus=%d returns %d\n"
+#~ msgstr "actual_x parametrilla xplus=%d palauttaa %d\n"
+
+#~ msgid "Aha! '%c' (%d)\n"
+#~ msgstr "Ahaa! '%c' (%d)\n"
+
+#~ msgid "input '%c' (%d)\n"
+#~ msgstr "syäte '%c' (%d)\n"
+
+#~ msgid "Moved to (%d, %d) in edit buffer\n"
+#~ msgstr "Kohtaan (%d,%d) siirrytty muokkausruudussa\n"
+
+#~ msgid "I got \"%s\"\n"
+#~ msgstr "Saatiin â€%sâ€\n"
+
+#~ msgid "Dumping file buffer to stderr...\n"
+#~ msgstr "Syöttää tiedoston stderriin...\n"
+
+#~ msgid "Dumping cutbuffer to stderr...\n"
+#~ msgstr "Syöttää leiketilan stderriin...\n"
+
+#~ msgid "Dumping a buffer to stderr...\n"
+#~ msgstr "Syöttää tekstin stderriin...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "The -p flag now invokes the Pico \"preserve\" flag.\n"
+#~ "The Pico compatibility flag has been removed as nano\n"
+#~ "now fully Pico compatible. Please see the nano FAQ\n"
+#~ "for more info on this change...\n"
+#~ "\n"
+#~ "Press return to continue\n"
+#~ msgstr ""
+#~ "\n"
+#~ "-p-valitsin tarkoittaa nyt Picon â€preserveâ€-valitsinta.\n"
+#~ "Pico-yhteensopivuusvalitsin on poistettu, koska Nano on\n"
+#~ "nyt täysin Pico-yhteensopiva. Lue Nanon FAQ:sta\n"
+#~ "lisätietoja tästä muutoksesta...\n"
+#~ "\n"
+#~ "Paina enteriä jatkaaksesi\n"
+
+#~ msgid "Generic error"
+#~ msgstr "Yleinen virhe"
+
+#~ msgid "Can't visit parent in restricted mode"
+#~ msgstr "Ei voi siirtyä ylähakemistoon rajoitetussa tilassa"
+
+#~ msgid "delete_node(): free'd a node, YAY!\n"
+#~ msgstr "delete_node(): solmu vapautettu, YAY!\n"
+
+#~ msgid "delete_node(): free'd last node.\n"
+#~ msgstr "delete_node(): viimeinen solmu vapautettu.\n"
+
+#~ msgid "Press return to continue\n"
+#~ msgstr "Paina return-painiketta jatkaaksesi Nanon käynnistämistä\n"
+
+#~ msgid "read_line: not on first line and prev is NULL"
+#~ msgstr "read_line: ei ensimmäisellä rivillä ja prev on NULL"
+
+#~ msgid "Pico mode"
+#~ msgstr "Pico-tila"
+
+#~ msgid "Emulate Pico as closely as possible"
+#~ msgstr "Jäljittele Picoa mahdollisimman tarkasti"
+
+#~ msgid "Replaced 1 occurrence"
+#~ msgstr "Korvattu 1 tapahtuma"
+
+#~ msgid "Replace with [%s]"
+#~ msgstr "Korvaa merkkijonolla [%s]"
+
+#~ msgid "nano: realloc: out of memory!"
+#~ msgstr "nano: realloc: muisti loppui!"
+
+#~ msgid " -T \t\t--tabsize=[num]\t\tSet width of a tab to num\n"
+#~ msgstr " -T \t\t--tabsize=[luku]\tAseta sarkaimen leveys\n"
+
+#~ msgid " -R\t\t--regexp\t\tUse regular expressions for search\n"
+#~ msgstr " -R\t\t--regexp\t\tEtsi säännöllisillä lausekkeilla\n"
+
+#~ msgid " -V \t\t--version\t\tPrint version information and exit\n"
+#~ msgstr " -V \t\t--version\t\tTulosta versiotiedot ja lopeta\n"
+
+#~ msgid " -c \t\t--const\t\t\tConstantly show cursor position\n"
+#~ msgstr " -c \t\t--const\t\t\tNäytä kohdistimen sijainti jatkuvasti\n"
+
+#~ msgid " -h \t\t--help\t\t\tShow this message\n"
+#~ msgstr " -h \t\t--help\t\t\tNäytä tämä ohje\n"
+
+#~ msgid " -k \t\t--cut\t\t\tLet ^K cut from cursor to end of line\n"
+#~ msgstr " -k \t\t--cut\t\t\t^K leikkaa rivin loppuun saakka\n"
+
+#~ msgid " -i \t\t--autoindent\t\tAutomatically indent new lines\n"
+#~ msgstr " -i \t\t--autoindent\t\tSisennä uudet rivit automaattisesti\n"
+
+#~ msgid " -l \t\t--nofollow\t\tDon't follow symbolic links, overwrite\n"
+#~ msgstr ""
+#~ " -l \t\t--nofollow\t\tÄlä seuraa symbolisia linkkejä, vaan\n"
+#~ "\t\t\t\t\tkorvaa ne tiedostoilla.\n"
+
+#~ msgid " -m \t\t--mouse\t\t\tEnable mouse\n"
+#~ msgstr " -m \t\t--mouse\t\t\tKäytä hiirtä\n"
+
+#~ msgid ""
+#~ " -r [#cols] \t--fill=[#cols]\t\tSet fill cols to (wrap lines at) #cols\n"
+#~ msgstr " -r [#lkm] \t--fill=[#lkm]\t\tRivitä annettua pidemmät rivit\n"
+
+#~ msgid " -p\t \t--pico\t\t\tEmulate Pico as closely as possible\n"
+#~ msgstr " -p\t \t--pico\t\t\tJäljittele Picoa mahdollisimman tarkasti\n"
+
+#~ msgid " -s [prog] \t--speller=[prog]\tEnable alternate speller\n"
+#~ msgstr ""
+#~ " -s [ohjelma] \t--speller=[ohjelma]\tKäytä annettua oikolukuohjelmaa\n"
+
+#~ msgid " -t \t\t--tempfile\t\tAuto save on exit, don't prompt\n"
+#~ msgstr ""
+#~ " -t \t\t--tempfile\t\tTallenna tiedosto kysymättä\n"
+#~ "\t\t\t\t\tpoistuttaessa \n"
+
+#~ msgid " -v \t\t--view\t\t\tView (read only) mode\n"
+#~ msgstr " -v \t\t--view\t\t\tKatselutila (vain luku)\n"
+
+#~ msgid " -w \t\t--nowrap\t\tDon't wrap long lines\n"
+#~ msgstr " -w \t\t--nowrap\t\tÄlä rivitä pitkiä rivejä\n"
+
+#~ msgid " -x \t\t--nohelp\t\tDon't show help window\n"
+#~ msgstr " -x \t\t--nohelp\t\tÄlä näytä ohjeikkunaa\n"
+
+#~ msgid " -z \t\t--suspend\t\tEnable suspend\n"
+#~ msgstr " -z \t\t--suspend\t\tMahdollista keskeyttäminen\n"
+
+#~ msgid " +LINE\t\t\t\t\tStart at line number LINE\n"
+#~ msgstr " +RIVI\t\t\t\t\tSiirry riville RIVI\n"
+
+#~ msgid " -R\t\tUse regular expressions for search\n"
+#~ msgstr " -R\t\tEtsi säännöllisillä lausekkeilla\n"
+
+#~ msgid "check_wrap called with inptr->data=\"%s\"\n"
+#~ msgstr "check_wrap-funktion parametri inptr->data=â€%sâ€\n"
+
+#~ msgid "Case Sensitive Search%s%s"
+#~ msgstr "Kirjainkokotarkka etsintä%s%s"
+
+#~ msgid "Pavel Curtis, Zeyd Ben-Halim and Eric S. Raymond for ncurses"
+#~ msgstr "Pavel Curtis, Zeyd Ben-Halim ja Eric S. Raymond ncursesista"
+
+#~ msgid "Backwards search"
+#~ msgstr "Taaksepäin etsintä"
+
+#~ msgid "Goto"
+#~ msgstr "Siirry"
+
+#~ msgid "nano: calloc: out of memory!"
+#~ msgstr "nano: calloc: muisti loppui!"
+
+#~ msgid " -D \t\t--dos\t\t\tWrite file in DOS format\n"
+#~ msgstr " -D \t\t--dos\t\t\tKirjoita tiedosto DOS-muodossa\n"
+
+#~ msgid " -F \t\t--multibuffer\t\tEnable multiple file buffers\n"
+#~ msgstr " -F \t\t--multibuffer\t\tMahdollista useiden puskureiden käyttö\n"
+
+#~ msgid " -M \t\t--mac\t\t\tWrite file in Mac format\n"
+#~ msgstr " -M \t\t--mac\t\t\tKirjoita tiedosto Mac-muodossa\n"
+
+#~ msgid " -S\t\t--smooth\t\tSmooth scrolling\n"
+#~ msgstr " -S\t\t--smooth\t\tPehmeä vieritys\n"
diff --git a/po/fr.gmo b/po/fr.gmo
new file mode 100644
index 0000000..b6a23c7
--- /dev/null
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..9b65df9
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,3425 @@
+# Translation of the nano editor to French
+# Messages en langue française pour l'éditeur nano
+# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+#
+# Pierre Tane <tanep@bigfoot.com>, 2000.
+# Clement Laforet <sheep.killer@free.fr>, 2000.
+# Michel Robitaille <robitail@IRO.UMontreal.CA>, 2001.
+# Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir.org>, 2001-2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.4pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-10-30 15:43+0200\n"
+"Last-Translator: Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir."
+"org>\n"
+"Language-Team: French <traduc@traduc.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#
+# File: src/browser.c, line: 207
+# File: src/browser.c, line: 207
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Changer de répertoire"
+
+#
+# File: src/browser.c, line: 218
+# File: src/browser.c, line: 680
+# File: src/files.c, line: 736
+# File: src/files.c, line: 1788
+# File: src/nano.c, line: 956
+# File: src/search.c, line: 212
+# File: src/search.c, line: 934
+# File: src/search.c, line: 995
+# File: src/browser.c, line: 218
+# File: src/browser.c, line: 680
+# File: src/files.c, line: 736
+# File: src/files.c, line: 1788
+# File: src/nano.c, line: 956
+# File: src/search.c, line: 212
+# File: src/search.c, line: 934
+# File: src/search.c, line: 995
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Annulé"
+
+#
+# File: src/browser.c, line: 246
+# File: src/browser.c, line: 299
+# File: src/browser.c, line: 246
+# File: src/browser.c, line: 299
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "En mode restreint, sortir de %s est impossible"
+
+#
+# File: src/browser.c, line: 257
+# File: src/browser.c, line: 309
+# File: src/browser.c, line: 325
+# File: src/files.c, line: 610
+# File: src/files.c, line: 618
+# File: src/files.c, line: 1332
+# File: src/files.c, line: 1420
+# File: src/files.c, line: 1466
+# File: src/files.c, line: 1487
+# File: src/files.c, line: 1609
+# File: src/files.c, line: 2376
+# File: src/rcfile.c, line: 366
+# File: src/rcfile.c, line: 383
+# File: src/rcfile.c, line: 913
+# File: src/browser.c, line: 257
+# File: src/browser.c, line: 309
+# File: src/browser.c, line: 325
+# File: src/files.c, line: 610
+# File: src/files.c, line: 618
+# File: src/files.c, line: 1332
+# File: src/files.c, line: 1420
+# File: src/files.c, line: 1466
+# File: src/files.c, line: 1487
+# File: src/files.c, line: 1609
+# File: src/files.c, line: 2376
+# File: src/rcfile.c, line: 366
+# File: src/rcfile.c, line: 383
+# File: src/rcfile.c, line: 913
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Erreur lors de la lecture de %s : %s"
+
+#
+# File: src/browser.c, line: 288
+# File: src/browser.c, line: 288
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Impossible de passer au répertoire supérieur"
+
+#
+# File: src/browser.c, line: 564
+# File: src/browser.c, line: 569
+# File: src/browser.c, line: 564
+# File: src/browser.c, line: 569
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(rép.)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(remonter)"
+
+#
+# File: src/browser.c, line: 651
+# File: src/search.c, line: 179
+# File: src/browser.c, line: 651
+# File: src/search.c, line: 179
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Recherche"
+
+#
+# File: src/browser.c, line: 655
+# File: src/search.c, line: 183
+# File: src/browser.c, line: 655
+# File: src/search.c, line: 183
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Resp. casse]"
+
+#
+# File: src/browser.c, line: 661
+# File: src/search.c, line: 189
+# File: src/browser.c, line: 661
+# File: src/search.c, line: 189
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Exp. ration.]"
+
+#
+# File: src/browser.c, line: 667
+# File: src/search.c, line: 195
+# File: src/browser.c, line: 667
+# File: src/search.c, line: 195
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Arrière]"
+
+#
+# File: src/browser.c, line: 760
+# File: src/browser.c, line: 768
+# File: src/search.c, line: 369
+# File: src/browser.c, line: 760
+# File: src/browser.c, line: 768
+# File: src/search.c, line: 369
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "La recherche a fait le tour"
+
+#
+# File: src/browser.c, line: 855
+# File: src/browser.c, line: 888
+# File: src/search.c, line: 486
+# File: src/search.c, line: 489
+# File: src/search.c, line: 546
+# File: src/search.c, line: 549
+# File: src/browser.c, line: 855
+# File: src/browser.c, line: 888
+# File: src/search.c, line: 486
+# File: src/search.c, line: 489
+# File: src/search.c, line: 546
+# File: src/search.c, line: 549
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "C'est la seule occurrence"
+
+#
+# File: src/browser.c, line: 891
+# File: src/search.c, line: 555
+# File: src/browser.c, line: 891
+# File: src/search.c, line: 555
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Aucun motif de recherche défini"
+
+#
+# File: src/files.c, line: 119
+# File: src/files.c, line: 119
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Impossible d'insérer le fichier depuis l'extérieur de %s"
+
+#
+# File: src/files.c, line: 228
+# File: src/files.c, line: 228
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Plus aucun fichier ouvert"
+
+#
+# File: src/files.c, line: 244
+# File: src/files.c, line: 244
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Basculement vers %s"
+
+#
+# File: src/files.c, line: 245
+# File: src/global.c, line: 302
+# File: src/winio.c, line: 2022
+# File: src/files.c, line: 245
+# File: src/global.c, line: 302
+# File: src/winio.c, line: 2022
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Nouvel espace"
+
+#
+# File: src/files.c, line: 559
+# File: src/files.c, line: 559
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Lecture de %lu ligne (convertie des formats DOS et Mac)"
+msgstr[1] "Lecture de %lu lignes (converties des formats DOS et Mac)"
+
+#
+# File: src/files.c, line: 559
+# File: src/files.c, line: 559
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"Lecture de %lu ligne (convertie des formats DOS et Mac - En lecture seule !)"
+msgstr[1] ""
+"Lecture de %lu lignes (converties des formats DOS et Mac - En lecture "
+"seule !)"
+
+#
+# File: src/files.c, line: 564
+# File: src/files.c, line: 564
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Lecture de %lu ligne (convertie du format Mac)"
+msgstr[1] "Lecture de %lu lignes (converties du format Mac)"
+
+#
+# File: src/files.c, line: 564
+# File: src/files.c, line: 564
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Lecture de %lu ligne (convertie du format Mac - En lecture seule !)"
+msgstr[1] ""
+"Lecture de %lu lignes (converties du format Mac - En lecture seule !)"
+
+#
+# File: src/files.c, line: 569
+# File: src/files.c, line: 569
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Lecture de %lu ligne (convertie du format DOS)"
+msgstr[1] "Lecture de %lu lignes (converties du format DOS)"
+
+#
+# File: src/files.c, line: 569
+# File: src/files.c, line: 569
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Lecture de %lu ligne (convertie du format DOS - En lecture seule !)"
+msgstr[1] ""
+"Lecture de %lu lignes (converties du format DOS - En lecture seule !)"
+
+#
+# File: src/files.c, line: 574
+# File: src/files.c, line: 574
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Lecture de %lu ligne"
+msgstr[1] "Lecture de %lu lignes"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "Lecture de %lu ligne (En lecture seule !)"
+msgstr[1] "Lecture de %lu lignes (En lecture seule !)"
+
+#
+# File: src/files.c, line: 623
+# File: src/files.c, line: 623
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Lecture du fichier"
+
+#
+# File: src/files.c, line: 594
+# File: src/files.c, line: 594
+#: src/files.c:706
+msgid "New File"
+msgstr "Nouveau fichier"
+
+#
+# File: src/files.c, line: 597
+# File: src/files.c, line: 597
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "« %s » non trouvé"
+
+#
+# File: src/files.c, line: 605
+# File: src/rcfile.c, line: 375
+# File: src/rcfile.c, line: 870
+# File: src/rcfile.c, line: 904
+# File: src/files.c, line: 605
+# File: src/rcfile.c, line: 375
+# File: src/rcfile.c, line: 870
+# File: src/rcfile.c, line: 904
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "« %s » est un répertoire"
+
+#
+# File: src/files.c, line: 606
+# File: src/rcfile.c, line: 376
+# File: src/rcfile.c, line: 871
+# File: src/rcfile.c, line: 905
+# File: src/files.c, line: 606
+# File: src/rcfile.c, line: 376
+# File: src/rcfile.c, line: 871
+# File: src/rcfile.c, line: 905
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "« %s » est un périphérique"
+
+#
+# File: src/files.c, line: 696
+# File: src/files.c, line: 696
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Commande à exécuter dans un nouvel espace [à partir de %s] "
+
+#
+# File: src/files.c, line: 698
+# File: src/files.c, line: 698
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Commande à exécuter [à partir de %s] "
+
+#
+# File: src/files.c, line: 704
+# File: src/files.c, line: 704
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Fichier à insérer dans un nouvel espace [à partir de %s] "
+
+#
+# File: src/files.c, line: 706
+# File: src/files.c, line: 706
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Fichier à insérer [à partir de %s] "
+
+#
+# File: src/files.c, line: 885
+# File: src/files.c, line: 885
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Touche illégale hors du mode multi-espace"
+
+#
+# File: src/files.c, line: 1286
+# File: src/files.c, line: 1286
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Impossible d'écrire à l'extérieur de %s"
+
+#
+# File: src/files.c, line: 1301
+# File: src/files.c, line: 1301
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "Impossible d'ajouter pour un lien symbolique (option --nofollow)"
+
+#
+# File: src/files.c, line: 1476
+# File: src/text.c, line: 2315
+# File: src/text.c, line: 2327
+# File: src/files.c, line: 1476
+# File: src/text.c, line: 2315
+# File: src/text.c, line: 2327
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Erreur d'écriture de la copie de sécurité %s : %s"
+
+#
+# File: src/files.c, line: 1374
+# File: src/nano.c, line: 624
+# File: src/files.c, line: 1374
+# File: src/nano.c, line: 624
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Trop de copies de sécurité ?"
+
+#
+# File: src/files.c, line: 1373
+# File: src/files.c, line: 1397
+# File: src/files.c, line: 1424
+# File: src/files.c, line: 1442
+# File: src/files.c, line: 1499
+# File: src/files.c, line: 1518
+# File: src/files.c, line: 1530
+# File: src/files.c, line: 1553
+# File: src/files.c, line: 1571
+# File: src/files.c, line: 1581
+# File: src/files.c, line: 1617
+# File: src/files.c, line: 2449
+# File: src/files.c, line: 2458
+# File: src/files.c, line: 1373
+# File: src/files.c, line: 1397
+# File: src/files.c, line: 1424
+# File: src/files.c, line: 1442
+# File: src/files.c, line: 1499
+# File: src/files.c, line: 1518
+# File: src/files.c, line: 1530
+# File: src/files.c, line: 1553
+# File: src/files.c, line: 1571
+# File: src/files.c, line: 1581
+# File: src/files.c, line: 1617
+# File: src/files.c, line: 2449
+# File: src/files.c, line: 2458
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Erreur lors de l'écriture de %s : %s"
+
+#
+# File: src/files.c, line: 1476
+# File: src/text.c, line: 2315
+# File: src/text.c, line: 2327
+# File: src/files.c, line: 1476
+# File: src/text.c, line: 2315
+# File: src/text.c, line: 2327
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Erreur d'écriture du fichier temporaire : %s"
+
+#
+# File: src/files.c, line: 1651
+# File: src/files.c, line: 1651
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "%lu ligne écrite"
+msgstr[1] "%lu lignes écrites"
+
+#
+# File: src/files.c, line: 1751
+# File: src/files.c, line: 1751
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [Format DOS]"
+
+#
+# File: src/files.c, line: 1752
+# File: src/files.c, line: 1752
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Format Mac]"
+
+#
+# File: src/files.c, line: 1754
+# File: src/files.c, line: 1754
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Copie de sécurité]"
+
+#
+# File: src/files.c, line: 1758
+# File: src/files.c, line: 1758
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Ajouter la sélection au début d'un fichier"
+
+#
+# File: src/files.c, line: 1759
+# File: src/files.c, line: 1759
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Ajouter la sélection à la fin d'un fichier"
+
+#
+# File: src/files.c, line: 1760
+# File: src/files.c, line: 1760
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Écrire la sélection dans un fichier"
+
+#
+# File: src/files.c, line: 1763
+# File: src/files.c, line: 1763
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Nom du fichier au tête duquel ajouter"
+
+#
+# File: src/files.c, line: 1764
+# File: src/files.c, line: 1764
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Nom du fichier à la fin duquel ajouter"
+
+#
+# File: src/files.c, line: 1765
+# File: src/files.c, line: 1765
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Nom du fichier à écrire"
+
+#
+# File: src/files.c, line: 1856
+# File: src/files.c, line: 1856
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Le fichier existe, VOULEZ-VOUS L'ÉCRASER ? "
+
+#
+# File: src/files.c, line: 1871
+# File: src/files.c, line: 1871
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Écrire le fichier sous un NOM MODIFIÉ ? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+"Le fichier a été modifié depuis son ouverture. Voulez-vous vraiment "
+"sauvegarder ?"
+
+#
+# File: src/files.c, line: 2298
+# File: src/files.c, line: 2298
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(suite)"
+
+#
+# File: src/files.c, line: 2379
+# File: src/rcfile.c, line: 848
+# File: src/files.c, line: 2379
+# File: src/rcfile.c, line: 848
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Appuyez sur « Entrée » pour poursuivre le démarrage de nano.\n"
+
+#
+# File: src/global.c, line: 264
+# File: src/prompt.c, line: 1281
+# File: src/global.c, line: 264
+# File: src/prompt.c, line: 1281
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Annuler"
+
+#
+# File: src/global.c, line: 272
+# File: src/global.c, line: 272
+#: src/global.c:416
+msgid "Replace"
+msgstr "Remplacer"
+
+#
+# File: src/global.c, line: 828
+# File: src/global.c, line: 828
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Rechercher"
+
+#
+# File: src/global.c, line: 290
+# File: src/global.c, line: 290
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Resp.casse"
+
+#
+# File: src/global.c, line: 291
+# File: src/global.c, line: 291
+#: src/global.c:421
+msgid "Backwards"
+msgstr "->Arrière"
+
+#
+# File: src/global.c, line: 294
+# File: src/global.c, line: 294
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Exp. ratio."
+
+#
+# File: src/global.c, line: 297
+# File: src/global.c, line: 297
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "Précédente"
+
+#
+# File: src/global.c, line: 299
+# File: src/global.c, line: 299
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "Suivante"
+
+#
+# File: src/global.c, line: 919
+# File: src/global.c, line: 919
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Rechercher"
+
+#
+# File: src/global.c, line: 275
+# File: src/global.c, line: 275
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Cherch.suiv."
+
+#
+# File: src/global.c, line: 309
+# File: src/global.c, line: 309
+#: src/global.c:457
+msgid "First File"
+msgstr "Prem. fich."
+
+#
+# File: src/global.c, line: 311
+# File: src/global.c, line: 311
+#: src/global.c:458
+msgid "Last File"
+msgstr "Dern. fich."
+
+#
+# File: src/global.c, line: 307
+# File: src/global.c, line: 307
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Parcourir"
+
+#
+# File: src/global.c, line: 958
+# File: src/global.c, line: 958
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Format DOS"
+
+#
+# File: src/global.c, line: 964
+# File: src/global.c, line: 964
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Format Mac"
+
+#
+# File: src/global.c, line: 971
+# File: src/global.c, line: 971
+#: src/global.c:464
+msgid "Append"
+msgstr "Ajout (à la fin)"
+
+#
+# File: src/global.c, line: 977
+# File: src/global.c, line: 977
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Ajout (au début)"
+
+#
+# File: src/global.c, line: 984
+# File: src/global.c, line: 984
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Copie de sécu."
+
+#
+# File: src/global.c, line: 1021
+# File: src/global.c, line: 1021
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Exécuter une commande"
+
+#
+# File: src/global.c, line: 1154
+# File: src/global.c, line: 1154
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Aller -> rép."
+
+#
+# Les messages suivants doivent tenir sur 10 caractères !
+# Ils sont utilisés comme entrée des menus du bas d'écran.
+# File: src/global.c, line: 265
+# File: src/global.c, line: 265
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Aide"
+
+#
+# File: src/global.c, line: 266
+# File: src/global.c, line: 266
+#: src/global.c:481
+msgid "Exit"
+msgstr "Quitter"
+
+#
+# File: src/global.c, line: 267
+# File: src/global.c, line: 267
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Chercher"
+
+#
+# File: src/global.c, line: 268
+# File: src/global.c, line: 268
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Page préc."
+
+#
+# File: src/global.c, line: 269
+# File: src/global.c, line: 269
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Page suiv."
+
+#
+# File: src/global.c, line: 278
+# File: src/global.c, line: 278
+#: src/global.c:485
+msgid "First Line"
+msgstr "Prem. lig."
+
+#
+# File: src/global.c, line: 279
+# File: src/global.c, line: 279
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Dern. Lig."
+
+#
+# File: src/global.c, line: 1360
+# File: src/global.c, line: 1360
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Suspendre"
+
+#
+# File: src/global.c, line: 284
+# File: src/global.c, line: 284
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Début para."
+
+#
+# File: src/global.c, line: 285
+# File: src/global.c, line: 285
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Fin para."
+
+#
+# File: src/global.c, line: 286
+# File: src/global.c, line: 286
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "Justifier"
+
+#
+# File: src/global.c, line: 288
+# File: src/global.c, line: 288
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Rafraîchir"
+
+#
+# File: src/global.c, line: 1053
+# File: src/global.c, line: 1053
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Insérer un fichier"
+
+#
+# File: src/global.c, line: 270
+# File: src/global.c, line: 270
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Aller lig."
+
+#
+# File: src/global.c, line: 325
+# File: src/global.c, line: 325
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Justifier le paragraphe courant"
+
+#
+# File: src/global.c, line: 314
+# File: src/global.c, line: 314
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Annuler la fonction courante"
+
+#
+# File: src/global.c, line: 315
+# File: src/global.c, line: 315
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Affiche de message"
+
+#
+# File: src/global.c, line: 318
+# File: src/global.c, line: 318
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Fermer l'espace en cours / Quitter nano"
+
+#
+# File: src/global.c, line: 320
+# File: src/global.c, line: 320
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Quitter nano"
+
+#
+# File: src/global.c, line: 324
+# File: src/global.c, line: 324
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Écrire le fichier en cours sur le disque"
+
+#
+# File: src/global.c, line: 327
+# File: src/global.c, line: 327
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Insérer un autre fichier dans l'espace en cours"
+
+#
+# File: src/global.c, line: 329
+# File: src/global.c, line: 329
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Recherche d'une chaîne ou d'une expression rationnelle"
+
+#
+# File: src/global.c, line: 330
+# File: src/global.c, line: 330
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Aller à l'écran précédent"
+
+#
+# File: src/global.c, line: 331
+# File: src/global.c, line: 331
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Aller à l'écran suivant"
+
+#
+# File: src/global.c, line: 333
+# File: src/global.c, line: 333
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Couper la ligne courante vers le presse-papiers"
+
+#
+# File: src/global.c, line: 335
+# File: src/global.c, line: 335
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Coller le presse-papiers à partir de la ligne courante"
+
+#
+# File: src/global.c, line: 337
+# File: src/global.c, line: 337
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Indiquer la position du curseur"
+
+#
+# File: src/global.c, line: 339
+# File: src/global.c, line: 339
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Appeler le correcteur orthographique (si dispo.)"
+
+#
+# File: src/global.c, line: 342
+# File: src/global.c, line: 342
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Remplacer une chaîne ou une expression rationnelle"
+
+#
+# File: src/global.c, line: 340
+# File: src/global.c, line: 340
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Aller à la ligne et à la colonne indiquées"
+
+#
+# File: src/global.c, line: 344
+# File: src/global.c, line: 344
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Marquer le texte à la position du curseur"
+
+#
+# File: src/global.c, line: 345
+# File: src/global.c, line: 345
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Recommencer la dernière recherche"
+
+#
+# File: src/global.c, line: 347
+# File: src/global.c, line: 347
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Copier la ligne courante dans le presse-papiers"
+
+#
+# File: src/global.c, line: 314
+# File: src/global.c, line: 314
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Mise en retrait de la ligne courante"
+
+#
+# File: src/global.c, line: 314
+# File: src/global.c, line: 314
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Annuler le retrait de la ligne courante"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Annuler la dernière opération"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Refaire la dernière opération annulée"
+
+#
+# File: src/global.c, line: 351
+# File: src/global.c, line: 351
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Avancer d'un caractère"
+
+#
+# File: src/global.c, line: 352
+# File: src/global.c, line: 352
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Reculer d'un caractère"
+
+#
+# File: src/global.c, line: 354
+# File: src/global.c, line: 354
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Avancer d'un mot"
+
+#
+# File: src/global.c, line: 355
+# File: src/global.c, line: 355
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Reculer d'un mot"
+
+#
+# File: src/global.c, line: 357
+# File: src/global.c, line: 357
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Aller à la ligne précédente"
+
+#
+# File: src/global.c, line: 358
+# File: src/global.c, line: 358
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Aller à la ligne suivante"
+
+#
+# File: src/global.c, line: 360
+# File: src/global.c, line: 360
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Aller au début de la ligne courante"
+
+#
+# File: src/global.c, line: 362
+# File: src/global.c, line: 362
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Aller à la fin de la ligne courante"
+
+#
+# File: src/global.c, line: 365
+# File: src/global.c, line: 365
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Aller au début du paragraphe, puis à celui du précédent"
+
+#
+# File: src/global.c, line: 367
+# File: src/global.c, line: 367
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Aller à la fin du paragraphe, puis à celle du suivant"
+
+#
+# File: src/global.c, line: 370
+# File: src/global.c, line: 370
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Aller à la première ligne du fichier"
+
+#
+# File: src/global.c, line: 372
+# File: src/global.c, line: 372
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Aller à la dernière ligne du fichier"
+
+#
+# File: src/global.c, line: 374
+# File: src/global.c, line: 374
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Aller au crochet correspondant"
+
+#
+# File: src/global.c, line: 376
+# File: src/global.c, line: 376
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Remonter d'une ligne sans déplacer le curseur"
+
+#
+# File: src/global.c, line: 378
+# File: src/global.c, line: 378
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Descendre d'une ligne sans déplacer le curseur"
+
+#
+# File: src/global.c, line: 382
+# File: src/global.c, line: 382
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Basculer vers l'espace précédent"
+
+#
+# File: src/global.c, line: 384
+# File: src/global.c, line: 384
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Basculer vers l'espace suivant"
+
+#
+# File: src/global.c, line: 387
+# File: src/global.c, line: 387
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Insérer le prochain caractère tel quel"
+
+#
+# File: src/global.c, line: 389
+# File: src/global.c, line: 389
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Insérer une tabulation à la position du curseur"
+
+#
+# File: src/global.c, line: 391
+# File: src/global.c, line: 391
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Insérer un passage à la ligne à la position du curseur"
+
+#
+# File: src/global.c, line: 393
+# File: src/global.c, line: 393
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Supprimer le caractère sous le curseur"
+
+#
+# File: src/global.c, line: 395
+# File: src/global.c, line: 395
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Supprimer le caractère à la gauche du curseur"
+
+#
+# File: src/global.c, line: 398
+# File: src/global.c, line: 398
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Coupe du curseur à la fin du fichier"
+
+#
+# File: src/global.c, line: 401
+# File: src/global.c, line: 401
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Justifier le fichier entier"
+
+#
+# File: src/global.c, line: 405
+# File: src/global.c, line: 405
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Compter le nombre de mots, de lignes et de caractères"
+
+#
+# File: src/global.c, line: 408
+# File: src/global.c, line: 408
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Rafraîchir (redessiner) l'écran courant"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Suspendre l'éditeur (si vous y êtes autorisé)"
+
+#
+# File: src/global.c, line: 411
+# File: src/global.c, line: 411
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Chercher en tenant compte de la casse (commutateur)"
+
+#
+# File: src/global.c, line: 413
+# File: src/global.c, line: 413
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Inverser le sens de la recherche"
+
+#
+# File: src/global.c, line: 417
+# File: src/global.c, line: 417
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Utiliser des expressions rationnelles (commutateur)"
+
+#
+# File: src/global.c, line: 421
+# File: src/global.c, line: 421
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Rappeler la précédente chaîne de recherche"
+
+#
+# File: src/global.c, line: 423
+# File: src/global.c, line: 423
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Rappeler la chaîne de recherche suivante"
+
+#
+# File: src/global.c, line: 426
+# File: src/global.c, line: 426
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Ouvrir le navigateur de fichiers"
+
+#
+# File: src/global.c, line: 429
+# File: src/global.c, line: 429
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Utilisation du format DOS (commutateur)"
+
+#
+# File: src/global.c, line: 430
+# File: src/global.c, line: 430
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Utilisation du format Mac (commutateur)"
+
+#
+# File: src/global.c, line: 432
+# File: src/global.c, line: 432
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Ajouter à la fin du fichier (commutateur)"
+
+#
+# File: src/global.c, line: 433
+# File: src/global.c, line: 433
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Ajouter au début du fichier (commutateur)"
+
+#
+# File: src/global.c, line: 436
+# File: src/global.c, line: 436
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Créer une copie de sécurité de l'original (commutateur)"
+
+#
+# File: src/global.c, line: 437
+# File: src/global.c, line: 437
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Exécuter une commande externe"
+
+#
+# File: src/global.c, line: 441
+# File: src/global.c, line: 441
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Utiliser un nouvel espace (commutateur)"
+
+#
+# File: src/global.c, line: 444
+# File: src/global.c, line: 444
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Sortir du navigateur de fichiers"
+
+#
+# File: src/global.c, line: 446
+# File: src/global.c, line: 446
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Aller au premier fichier de la liste"
+
+#
+# File: src/global.c, line: 448
+# File: src/global.c, line: 448
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Aller au dernier fichier de la liste"
+
+#
+# File: src/global.c, line: 448
+# File: src/global.c, line: 448
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "Aller au prochain fichier de la liste"
+
+#
+# File: src/global.c, line: 446
+# File: src/global.c, line: 446
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "Aller au précédent fichier de la liste"
+
+#
+# File: src/global.c, line: 449
+# File: src/global.c, line: 449
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Changer de répertoire"
+
+#
+# File: src/global.c, line: 477
+# File: src/global.c, line: 477
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Fermer"
+
+#
+# File: src/global.c, line: 483
+# File: src/global.c, line: 483
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Écrire"
+
+#
+# File: src/global.c, line: 488
+# File: src/global.c, line: 488
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Justifier"
+
+#
+# File: src/global.c, line: 505
+# File: src/global.c, line: 505
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Lire fich."
+
+#
+# File: src/global.c, line: 528
+# File: src/global.c, line: 528
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Couper"
+
+#
+# File: src/global.c, line: 534
+# File: src/global.c, line: 534
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Dé-justif."
+
+#
+# File: src/global.c, line: 539
+# File: src/global.c, line: 539
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Coller"
+
+#
+# File: src/global.c, line: 544
+# File: src/global.c, line: 544
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Pos. cur."
+
+#
+# File: src/global.c, line: 552
+# File: src/global.c, line: 552
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Orthograp."
+
+#
+# File: src/global.c, line: 575
+# File: src/global.c, line: 575
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Marquer"
+
+#
+# File: src/global.c, line: 583
+# File: src/global.c, line: 583
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Copier"
+
+#
+# File: src/global.c, line: 587
+# File: src/global.c, line: 587
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Indenter"
+
+#
+# File: src/global.c, line: 591
+# File: src/global.c, line: 591
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Supprimer l'indentation"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Annuler"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Refaire"
+
+#
+# File: src/global.c, line: 596
+# File: src/global.c, line: 596
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "En avant"
+
+#
+# File: src/global.c, line: 600
+# File: src/global.c, line: 600
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "En arrière"
+
+#
+# File: src/global.c, line: 605
+# File: src/global.c, line: 605
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Mot suivant"
+
+#
+# File: src/global.c, line: 609
+# File: src/global.c, line: 609
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Mot précédent"
+
+#
+# File: src/global.c, line: 614
+# File: src/global.c, line: 1083
+# File: src/global.c, line: 614
+# File: src/global.c, line: 1083
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Ligne préc."
+
+#
+# File: src/global.c, line: 618
+# File: src/global.c, line: 1087
+# File: src/global.c, line: 618
+# File: src/global.c, line: 1087
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Ligne suiv."
+
+#
+# File: src/global.c, line: 622
+# File: src/global.c, line: 622
+#: src/global.c:830
+msgid "Home"
+msgstr "Début doc."
+
+#
+# File: src/global.c, line: 626
+# File: src/global.c, line: 626
+#: src/global.c:833
+msgid "End"
+msgstr "Fin"
+
+#
+# File: src/global.c, line: 649
+# File: src/global.c, line: 649
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Trouver l'autre crochet"
+
+#
+# File: src/global.c, line: 653
+# File: src/global.c, line: 653
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Remonter"
+
+#
+# File: src/global.c, line: 657
+# File: src/global.c, line: 657
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Descendre"
+
+#
+# File: src/global.c, line: 663
+# File: src/global.c, line: 663
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Fichier précédent"
+
+#
+# File: src/global.c, line: 668
+# File: src/global.c, line: 668
+#: src/global.c:858
+msgid "Next File"
+msgstr "Fichier suivant"
+
+#
+# File: src/global.c, line: 673
+# File: src/text.c, line: 2431
+# File: src/global.c, line: 673
+# File: src/text.c, line: 2431
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Entrée telle quelle"
+
+#
+# File: src/global.c, line: 677
+# File: src/global.c, line: 677
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tabulation"
+
+#
+# File: src/global.c, line: 681
+# File: src/global.c, line: 681
+#: src/global.c:870
+msgid "Enter"
+msgstr "Entrée"
+
+#
+# File: src/global.c, line: 685
+# File: src/global.c, line: 685
+#: src/global.c:873
+msgid "Delete"
+msgstr "Supprimer"
+
+#
+# File: src/global.c, line: 689
+# File: src/global.c, line: 689
+#: src/global.c:876
+msgid "Backspace"
+msgstr "RetourArr."
+
+#
+# File: src/global.c, line: 281
+# File: src/global.c, line: 281
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "Coup.->Fin"
+
+#
+# File: src/global.c, line: 710
+# File: src/global.c, line: 710
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Nombre de mots "
+
+#
+# File: src/global.c, line: 1277
+# File: src/global.c, line: 1277
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Mode aide"
+
+#
+# File: src/global.c, line: 1280
+# File: src/global.c, line: 1280
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Afficher la position du curseur"
+
+#
+# File: src/global.c, line: 1283
+# File: src/global.c, line: 1283
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Utiliser 1 ligne de plus pour l'édition"
+
+#
+# File: src/global.c, line: 1285
+# File: src/nano.c, line: 776
+# File: src/global.c, line: 1285
+# File: src/nano.c, line: 776
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Défilement progressif"
+
+#
+# File: src/global.c, line: 1294
+# File: src/global.c, line: 1294
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Afficher les blancs"
+
+#
+# File: src/global.c, line: 1304
+# File: src/global.c, line: 1304
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Coloration syntaxique"
+
+#
+# File: src/global.c, line: 1308
+# File: src/global.c, line: 1308
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Touche « Début » intelligente"
+
+#
+# File: src/global.c, line: 1311
+# File: src/global.c, line: 1311
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Indenter automatiquement"
+
+#
+# File: src/global.c, line: 1314
+# File: src/global.c, line: 1314
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Couper jusqu'en fin de ligne"
+
+#
+# File: src/global.c, line: 1318
+# File: src/global.c, line: 1318
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Passer à la ligne automatiquement"
+
+#
+# File: src/global.c, line: 1323
+# File: src/global.c, line: 1323
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "La touche tabulation ajoute des espaces"
+
+#
+# File: src/global.c, line: 1334
+# File: src/global.c, line: 1334
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Conserver des copies de sécurité"
+
+#
+# File: src/global.c, line: 1342
+# File: src/global.c, line: 1342
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Mode multi-espace"
+
+#
+# File: src/global.c, line: 1346
+# File: src/global.c, line: 1346
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Utiliser la souris"
+
+#
+# File: src/global.c, line: 1354
+# File: src/global.c, line: 1354
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Pas de conversion des formats DOS et Mac"
+
+#
+# File: src/global.c, line: 1360
+# File: src/global.c, line: 1360
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Autoriser à suspendre"
+
+#
+# File: src/global.c, line: 1318
+# File: src/global.c, line: 1318
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "Affichage multiligne automatique"
+
+#
+# File: src/help.c, line: 228
+# File: src/help.c, line: 228
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+" Aide de la commande de recherche\n"
+"\n"
+" Entrez les mots ou les caractères que vous désirez chercher, puis appuyez "
+"sur « Entrée ». Si un texte correspondant est trouvé, vous serez conduit à "
+"l'emplacement de la plus proche occurrence du texte recherché.\n"
+"\n"
+" La chaîne précédemment recherchée sera affichée entre crochets derrière "
+"l'invite de recherche. Appuyer sur « Entrée » sans indiquer de texte "
+"recommencera la recherche précédente. "
+
+#
+# File: src/help.c, line: 237
+# File: src/help.c, line: 237
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Si vous avez sélectionné un zone de texte en marquant le texte et que vous "
+"effectuez un remplacement seules les correspondances du texte sélectionné "
+"seront remplacées.\n"
+"\n"
+" Les touches de fonction suivantes sont disponibles en mode recherche :\n"
+"\n"
+
+#
+# File: src/help.c, line: 243
+# File: src/help.c, line: 243
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+" Aide de la commande aller à la ligne indiquée\n"
+"\n"
+" Indiquez le numéro de ligne que vous désirez atteindre et appuyer sur "
+"« Entrée ». S'il y a moins de lignes de texte que le nombre que vous avez "
+"indiqué, vous serez conduit à la dernière ligne de texte du fichier.\n"
+"\n"
+" Les touches de fonction suivantes sont disponibles dans le mode sauter à la "
+"ligne :\n"
+"\n"
+
+#
+# File: src/help.c, line: 252
+# File: src/help.c, line: 252
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+" Aide de l'insertion de fichier\n"
+"\n"
+" Indiquez le nom du fichier que vous désirez insérer dans l'espace courant. "
+"Il sera copié là où se trouve le curseur.\n"
+"\n"
+" Si vous avez compilé nano avec la capacité de traiter simultanément "
+"plusieurs espaces et que cette option a été activée soit via l'une des "
+"options de démarrage -F ou --multibuffer, soit via le commutateur Méta-F, "
+"soit via le fichier nanorc, l'insertion d'un fichier entraînera son "
+"chargement dans un espace séparé (utilisez Méta-< et > pour passer d'un "
+"espace à l'autre). "
+
+#
+# File: src/help.c, line: 261
+# File: src/help.c, line: 261
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Si vous avez besoin de créer un nouvel espace, appuyez sur « Entrée » à "
+"l'invite sans indiquer de nom de fichier ou en indiquant le nom d'un fichier "
+"inexistant.\n"
+"\n"
+" Les touches de fonction suivantes sont disponibles en mode insertion de "
+"fichier :\n"
+"\n"
+
+#
+# File: src/help.c, line: 267
+# File: src/help.c, line: 267
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+" Aide de l'écriture de fichier\n"
+"\n"
+" Indiquez le nom sous lequel vous désirez écrire le fichier courant et "
+"appuyez sur la touche « Entrée » pour effectuer la sauvegarde.\n"
+"\n"
+" Si vous avez sélectionné du texte en le marquant, il vous sera proposé de "
+"sauvegarder seulement la partie sélectionnée du texte dans un fichier "
+"différent. Pour limiter le risque d'écraser le fichier en cours avec une "
+"simple portion de ce dernier, le nom du fichier courant ne vous sera proposé "
+"par défaut dans ce mode.\n"
+"\n"
+" Les touches de fonction suivantes sont disponibles en mode écriture de "
+"fichier :\n"
+"\n"
+
+#
+# File: src/help.c, line: 281
+# File: src/help.c, line: 281
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+" Aide du navigateur de fichiers\n"
+"\n"
+" Le navigateur de fichiers est utilisé pour parcourir visuellement la "
+"structure des répertoires afin de sélectionner un fichier en lecture ou en "
+"écriture. Les flèches et les touches « page précédente » et « page suivante » "
+"peuvent être utilisées pour parcourir les fichiers, les touches « S » et "
+"« Entrée » permettent de sélectionner un fichier ou de descendre dans un "
+"répertoire. Pour remonter dans l'arborescence des répertoires, sélectionner "
+"le répertoire appelé « .. » en haut de la liste des fichiers.\n"
+"\n"
+" Les touches de fonction suivantes sont disponibles en mode navigateur de "
+"fichiers :\n"
+"\n"
+
+#
+# File: src/help.c, line: 294
+# File: src/help.c, line: 294
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+" Aide de la commande de recherche du navigateur\n"
+"\n"
+" Entrez les mots ou les caractères que vous désirez chercher, puis appuyez "
+"sur « Entrée ». Si un texte correspondant est trouvé, vous serez conduit à "
+"l'emplacement de la plus proche occurrence du texte recherché.\n"
+"\n"
+" La chaîne précédemment recherchée sera affichée entre crochets derrière "
+"l'invite de recherche. Appuyer sur « Entrée » sans indiquer de texte "
+"recommencera la recherche précédente. \n"
+"\n"
+
+#
+# File: src/help.c, line: 303
+# File: src/help.c, line: 303
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Les touches de fonction suivantes sont disponibles dans le mode recherche "
+"du navigateur :\n"
+"\n"
+
+#
+# File: src/help.c, line: 307
+# File: src/help.c, line: 307
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+" Aide du changement de répertoire\n"
+"\n"
+" Entrer le nom du répertoire que vous désirez parcourir.\n"
+"\n"
+" Si l'utilisation de « Tab. » pour compléter les noms de fichier n'a pas été "
+"désactivée, vous pouvez utiliser la touche « Tab. » pour (essayer de) "
+"compléter automatiquement le nom du répertoire.\n"
+"\n"
+" Les touches de fonction suivantes sont disponibles dans le mode changement "
+"de répertoire :\n"
+"\n"
+
+#
+# File: src/help.c, line: 320
+# File: src/help.c, line: 320
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+" Aide du correcteur orthographique\n"
+"\n"
+" Le correcteur orthographique traite tout le texte du fichier en cours. "
+"Lorsqu'un mot inconnu est rencontré, il sera surligné et pourra être "
+"corrigé. Il vous sera alors proposé de remplacer toutes les instances de ce "
+"mot dans le fichier courant ou, si vous avez sélectionné une zone de texte "
+"en la marquant, dans le texte sélectionné.\n"
+"\n"
+" Les touches de fonction suivantes sont disponibles dans le correcteur "
+"orthographique :\n"
+"\n"
+
+#
+# File: src/help.c, line: 335
+# File: src/help.c, line: 335
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+" Aide des commandes externes\n"
+"\n"
+" Ce menu vous permet d'insérer le texte produit par l'exécution d'une "
+"commande externe dans l'espace en cours (ou dans un nouvel espace en mode "
+"multi-espace). Si vous avez besoin d'un autre espace vide, n'entrez aucune "
+"commande.\n"
+"\n"
+" Les touches de fonction suivantes sont disponibles en mode Commande "
+"externe :\n"
+"\n"
+
+#
+# File: src/help.c, line: 348
+# File: src/help.c, line: 348
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+" Message d'aide de nano\n"
+"\n"
+" L'éditeur nano est conçu pour reproduire les fonctions et la facilité "
+"d'utilisation de l'éditeur Pico de l'Université de Washington. Il comporte "
+"quatre sections principales : la ligne du haut affiche la version du "
+"programme, le fichier actuellement en cours d'édition et s'il a été modifié "
+"ou non. En dessous se trouve la fenêtre principale d'édition qui affiche le "
+"fichier en cours de modification. La ligne d'état est la troisième ligne en "
+"partant du bas, elle affiche les messages importants. "
+
+#
+# File: src/help.c, line: 359
+# File: src/help.c, line: 359
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Les deux dernières lignes affichent les raccourcis les plus couramment "
+"utilisés.\n"
+"\n"
+" Les raccourcis sont représentés de la façon suivante : la touche "
+"« Contrôle » est représentée par l'accent circonflexe (^) et peut être entrée "
+"soit via la touche Contrôle (Ctrl), soit en pressant 2 fois la touche "
+"« Échap. ». Les séquences d'échappement sont représentées par le symbole "
+"« Méta » (M) et peuvent être entrées via les touches « Échap. », « Alt. » ou "
+"« Méta » selon la configuration de votre clavier. "
+
+#
+# File: src/help.c, line: 366
+# File: src/help.c, line: 366
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Appuyer 2 fois sur la touche « Échap. » puis entrer un nombre à 3 chiffres "
+"entre 000 et 255 insère le caractère de code correspondant. Les combinaisons "
+"suivantes sont disponibles dans la fenêtre principale de l'éditeur. Les "
+"combinaisons pouvant être utilisées comme alternatives sont affichées entre "
+"parenthèses :\n"
+"\n"
+
+#
+# File: src/help.c, line: 397
+# File: src/help.c, line: 551
+# File: src/help.c, line: 397
+# File: src/help.c, line: 551
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "(commutateur)"
+
+#
+# File: src/nano.c, line: 522
+# File: src/nano.c, line: 522
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Touche illégale en mode visualisation"
+
+#
+# Fin des entrées de menu sur 10 caractères
+# File: src/nano.c, line: 618
+# File: src/nano.c, line: 618
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Espace écrit dans %s\n"
+
+#
+# Fin des entrées de menu sur 10 caractères
+# File: src/nano.c, line: 620
+# File: src/nano.c, line: 620
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Espace non écrit dans %s : %s\n"
+
+#
+# Fin des entrées de menu sur 10 caractères
+# File: src/nano.c, line: 623
+# File: src/nano.c, line: 623
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Espace non écrit : %s\n"
+
+#
+# File: src/nano.c, line: 635
+# File: src/nano.c, line: 635
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "La taille de la fenêtre est trop petite pour nano...\n"
+
+#
+# File: src/nano.c, line: 727
+# File: src/nano.c, line: 727
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Utilisation : nano [OPTIONS] [[+LIGNE,COLONNE] FICHIER]...\n"
+"\n"
+
+#
+# File: src/nano.c, line: 730
+# File: src/nano.c, line: 730
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Option\t\tOption longue GNU\t\tDescription\n"
+
+#
+# File: src/nano.c, line: 732
+# File: src/nano.c, line: 732
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Option\t\tSignification\n"
+
+#
+# File: src/nano.c, line: 735
+# File: src/nano.c, line: 735
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Affiche ce message"
+
+#
+# File: src/nano.c, line: 736
+# File: src/nano.c, line: 736
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+LIGNE,COLONNE"
+
+#
+# File: src/nano.c, line: 737
+# File: src/nano.c, line: 737
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Démarre ligne LIGNE, colonne COLONNE"
+
+#
+# File: src/nano.c, line: 739
+# File: src/nano.c, line: 739
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Touche « Début » intelligente"
+
+#
+# File: src/nano.c, line: 740
+# File: src/nano.c, line: 740
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Sauver en créant une copie de sécurité"
+
+#
+# File: src/nano.c, line: 741
+# File: src/nano.c, line: 741
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <rép.>"
+
+#
+# File: src/nano.c, line: 741
+# File: src/nano.c, line: 741
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<rép.>"
+
+#
+# File: src/nano.c, line: 742
+# File: src/nano.c, line: 742
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Répertoire des copies de sécu. uniques"
+
+#
+# File: src/nano.c, line: 745
+# File: src/nano.c, line: 745
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Affiche en gras le texte vidéo inverse"
+
+#
+# File: src/nano.c, line: 748
+# File: src/nano.c, line: 748
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "La touche tabulation ajoute des espaces"
+
+#
+# File: src/nano.c, line: 751
+# File: src/nano.c, line: 751
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Mode multi-espace"
+
+#
+# File: src/nano.c, line: 756
+# File: src/nano.c, line: 756
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Mémorise les recherches & remplacements"
+
+#
+# File: src/nano.c, line: 759
+# File: src/nano.c, line: 759
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Ne pas utiliser les fichiers nanorc"
+
+#
+# File: src/nano.c, line: 762
+# File: src/nano.c, line: 762
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Corrige la gestion du pavé numérique"
+
+#
+# File: src/nano.c, line: 764
+# File: src/nano.c, line: 764
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Pas d'ajout de ligne en fin de fichier"
+
+#
+# File: src/nano.c, line: 767
+# File: src/nano.c, line: 767
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Pas de conversion depuis DOS et Mac"
+
+#
+# File: src/global.c, line: 1283
+# File: src/global.c, line: 1283
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Utiliser 1 ligne de plus pour l'édition"
+
+#
+# File: src/nano.c, line: 771
+# File: src/nano.c, line: 771
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <chaîne>"
+
+#
+# File: src/nano.c, line: 771
+# File: src/nano.c, line: 771
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<chaîne>"
+
+#
+# File: src/nano.c, line: 772
+# File: src/nano.c, line: 772
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Préfixe des citations"
+
+#
+# File: src/nano.c, line: 774
+# File: src/nano.c, line: 774
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Mode restreint"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Défilement ligne par ligne*"
+
+#
+# File: src/nano.c, line: 778
+# File: src/nano.c, line: 778
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <nombre>"
+
+#
+# File: src/nano.c, line: 778
+# File: src/nano.c, line: 778
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<nombre>"
+
+#
+# File: src/nano.c, line: 779
+# File: src/nano.c, line: 779
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Largeur des tabulations"
+
+#
+# File: src/nano.c, line: 781
+# File: src/nano.c, line: 781
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Effacement rapide de la barre d'état"
+
+#
+# File: src/nano.c, line: 784
+# File: src/nano.c, line: 784
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Affiche la version et s'arrête"
+
+#
+# File: src/nano.c, line: 787
+# File: src/nano.c, line: 787
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Meilleure détection des limites de mots"
+
+#
+# File: src/nano.c, line: 790
+# File: src/nano.c, line: 790
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <chaîne>"
+
+#
+# File: src/nano.c, line: 790
+# File: src/nano.c, line: 790
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<chaîne>"
+
+#
+# File: src/nano.c, line: 791
+# File: src/nano.c, line: 791
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Définit la syntaxe de coloration"
+
+#
+# File: src/nano.c, line: 793
+# File: src/nano.c, line: 793
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Afficher la position du curseur"
+
+#
+# File: src/nano.c, line: 795
+# File: src/nano.c, line: 795
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Corrige la confusion effac. arr./suppr."
+
+#
+# File: src/nano.c, line: 798
+# File: src/nano.c, line: 798
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Indentation automatique"
+
+#
+# File: src/nano.c, line: 799
+# File: src/nano.c, line: 799
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Coupe du curseur à la fin de la ligne"
+
+#
+# File: src/nano.c, line: 802
+# File: src/nano.c, line: 802
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Écraser les liens sym., sans les suivre"
+
+#
+# File: src/nano.c, line: 804
+# File: src/nano.c, line: 804
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Active l'utilisation de la souris"
+
+#
+# File: src/nano.c, line: 807
+# File: src/nano.c, line: 807
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <rép.>"
+
+#
+# File: src/nano.c, line: 807
+# File: src/nano.c, line: 807
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<rép.>"
+
+#
+# File: src/nano.c, line: 808
+# File: src/nano.c, line: 808
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Répertoire de fonctionnement"
+
+#
+# File: src/nano.c, line: 811
+# File: src/nano.c, line: 811
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Préserver ^Q (XON) & ^S (XOFF)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "Pas d'erreur au démarrage (nanorc...)"
+
+#
+# File: src/nano.c, line: 813
+# File: src/nano.c, line: 813
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <numéro>"
+
+#
+# File: src/nano.c, line: 813
+# File: src/nano.c, line: 813
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<numéro>"
+
+#
+# File: src/nano.c, line: 779
+# File: src/nano.c, line: 779
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Colonne de passage à la ligne"
+
+#
+# File: src/nano.c, line: 817
+# File: src/nano.c, line: 817
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#
+# File: src/nano.c, line: 817
+# File: src/nano.c, line: 817
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#
+# File: src/nano.c, line: 818
+# File: src/nano.c, line: 818
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Correcteur orthographique"
+
+#
+# File: src/nano.c, line: 821
+# File: src/nano.c, line: 821
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Sauver en quittant, sans question"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "Fonct. annuler générique [EXPÉRIMENTAL]"
+
+#
+# File: src/nano.c, line: 822
+# File: src/nano.c, line: 822
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Mode visualisation (lecture seule)"
+
+#
+# File: src/nano.c, line: 824
+# File: src/nano.c, line: 824
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Désactive le passage auto. à la ligne"
+
+#
+# File: src/nano.c, line: 826
+# File: src/nano.c, line: 826
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Ne pas afficher les deux lignes d'aide"
+
+#
+# File: src/nano.c, line: 827
+# File: src/nano.c, line: 827
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Autoriser à suspendre"
+
+#
+# File: src/global.c, line: 1318
+# File: src/global.c, line: 1318
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "Affichage multiligne automatique"
+
+#
+# File: src/nano.c, line: 831
+# File: src/nano.c, line: 831
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(ignoré, pour être compatible Pico)"
+
+#
+# File: src/nano.c, line: 841
+# File: src/nano.c, line: 841
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " nano GNU version %s (compilé à %s, le %s)\n"
+
+#
+# File: src/nano.c, line: 844
+# File: src/nano.c, line: 844
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Adr. él. : nano@nano-editor.org\tSite : http://www.nano-editor.org/"
+
+#
+# File: src/nano.c, line: 845
+# File: src/nano.c, line: 845
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Compilé avec les options :"
+
+#
+# File: src/nano.c, line: 923
+# File: src/nano.c, line: 923
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Désolé, le support de cette fonction a été désactivé"
+
+#
+# File: src/nano.c, line: 940
+# File: src/nano.c, line: 940
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Sauver l'espace modifié (RÉPONDRE « Non » EFFACERA LES CHANGEMENTS) ? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "Impossible de rouvrir l'entrée standard depuis le clavier, désolé\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Lecture depuis l'entrée standard, ^C pour abandonner\n"
+
+#
+# File: src/nano.c, line: 1003
+# File: src/nano.c, line: 1003
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Réception de SIGHUP ou SIGTERM\n"
+
+#
+# File: src/nano.c, line: 1020
+# File: src/nano.c, line: 1020
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Utilisez « fg » pour revenir à nano.\n"
+
+#
+# File: src/nano.c, line: 1186
+# File: src/nano.c, line: 1186
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "- marche"
+
+#
+# File: src/nano.c, line: 1187
+# File: src/nano.c, line: 1187
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "- arrêt"
+
+#
+# File: src/nano.c, line: 1361
+# File: src/winio.c, line: 530
+# File: src/nano.c, line: 1361
+# File: src/winio.c, line: 530
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Commande inconnue"
+
+#
+# File: src/nano.c, line: 1425
+# File: src/nano.c, line: 1425
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON ignoré, humm humm"
+
+#
+# File: src/nano.c, line: 1428
+# File: src/nano.c, line: 1428
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF ignoré, humm humm"
+
+#
+# File: src/nano.c, line: 1827
+# File: src/rcfile.c, line: 814
+# File: src/nano.c, line: 1827
+# File: src/rcfile.c, line: 814
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "taille de tabulation « %s » demandée non valide"
+
+#
+# File: src/nano.c, line: 1883
+# File: src/rcfile.c, line: 739
+# File: src/nano.c, line: 1883
+# File: src/rcfile.c, line: 739
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "la colonne maximale « %s » n'est pas valide"
+
+#
+# File: src/prompt.c, line: 1252
+# File: src/prompt.c, line: 1252
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Oo"
+
+#
+# File: src/prompt.c, line: 1253
+# File: src/prompt.c, line: 1253
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#
+# File: src/prompt.c, line: 1254
+# File: src/prompt.c, line: 1254
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Tt"
+
+#
+# File: src/prompt.c, line: 1268
+# File: src/prompt.c, line: 1268
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Oui"
+
+#
+# File: src/prompt.c, line: 1273
+# File: src/prompt.c, line: 1273
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Tous"
+
+#
+# File: src/prompt.c, line: 1278
+# File: src/prompt.c, line: 1278
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Non"
+
+#
+# File: src/rcfile.c, line: 120
+# File: src/rcfile.c, line: 120
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Erreur dans %s (ligne %lu) : "
+
+#
+# File: src/rcfile.c, line: 174
+# File: src/rcfile.c, line: 174
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "l'argument %s contient un \" non fermé"
+
+#
+# File: src/rcfile.c, line: 201
+# File: src/rcfile.c, line: 253
+# File: src/rcfile.c, line: 524
+# File: src/rcfile.c, line: 581
+# File: src/rcfile.c, line: 201
+# File: src/rcfile.c, line: 253
+# File: src/rcfile.c, line: 524
+# File: src/rcfile.c, line: 581
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "les expr. rationnelles doivent être encadrées par des « \" »"
+
+#
+# File: src/rcfile.c, line: 226
+# File: src/search.c, line: 62
+# File: src/rcfile.c, line: 226
+# File: src/search.c, line: 62
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "mauvaise expr. rationnelle « %s » : %s"
+
+#
+# File: src/rcfile.c, line: 247
+# File: src/rcfile.c, line: 247
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "nom de syntaxe manquant"
+
+#
+# File: src/rcfile.c, line: 302
+# File: src/rcfile.c, line: 302
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "le nom « none » est un nom de syntaxe réservé"
+
+#
+# File: src/rcfile.c, line: 309
+# File: src/rcfile.c, line: 309
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "la syntaxe « default » ne doit être associée à aucune extension"
+
+#
+# File: src/rcfile.c, line: 247
+# File: src/rcfile.c, line: 247
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Nom de clef manquant"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "Les combinaisons clavier doivent commencer par « ^ », « M » ou « F »"
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+"vous devez indiquer la fonction à laquelle cette combinaison est associée"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+"vous devez indiquer dans quel menu cette combinaison sera utilisée (ou "
+"« all » pour tous)"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "impossible de trouver la fonction « %s »"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "impossible de trouver le menu « %s »"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "désolé, « %s » n'est pas une combinaison valide"
+
+#
+# File: src/rcfile.c, line: 438
+# File: src/rcfile.c, line: 438
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"couleur « %s » inconnue.\n"
+"Les couleurs légales sont « green » (vert),\n"
+"« red » (rouge), « blue » (bleu),\n"
+"« white » (blanc), « yellow » (jaune),\n"
+"« cyan », « magenta » et « black » (noir),\n"
+"avec comme préfixe optionnel « bright » (lumineux)\n"
+"pour les couleurs de texte."
+
+#
+# File: src/rcfile.c, line: 460
+# File: src/rcfile.c, line: 460
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr ""
+"un directive de coloration (color) doit être précédée d'une commande "
+"« syntax »"
+
+#
+# File: src/rcfile.c, line: 465
+# File: src/rcfile.c, line: 465
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "nom de couleur manquant"
+
+#
+# File: src/rcfile.c, line: 485
+# File: src/rcfile.c, line: 485
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "une couleur de fond « %s » ne peut pas être lumineuse (bright)"
+
+#
+# File: src/rcfile.c, line: 503
+# File: src/rcfile.c, line: 503
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "chaîne d'expr. rationnelle manquante"
+
+#
+# File: src/rcfile.c, line: 575
+# File: src/rcfile.c, line: 575
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "« start » nécessite un « end » correspondant"
+
+#
+# File: src/rcfile.c, line: 460
+# File: src/rcfile.c, line: 460
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr ""
+"impossible d'ajouter un motif d'en-tête non précédé d'une commande « syntax »"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+"Erreur bloquante : aucune combinaison n'est associée à la fonction « %s »"
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Arrêt. Si besoin, lancez nano avec l'option -I pour modifier les paramètres "
+"de votre fichier nanorc\n"
+
+#
+# File: src/rcfile.c, line: 646
+# File: src/rcfile.c, line: 655
+# File: src/rcfile.c, line: 665
+# File: src/rcfile.c, line: 646
+# File: src/rcfile.c, line: 655
+# File: src/rcfile.c, line: 665
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "la commande « %s » est interdite dans un fichier inclus"
+
+#
+# File: src/rcfile.c, line: 671
+# File: src/rcfile.c, line: 838
+# File: src/rcfile.c, line: 671
+# File: src/rcfile.c, line: 838
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "la syntaxe « %s » ne contient aucune commande de coloration (color)"
+
+#
+# File: src/rcfile.c, line: 680
+# File: src/rcfile.c, line: 680
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "impossible de comprendre la commande « %s »"
+
+#
+# File: src/rcfile.c, line: 686
+# File: src/rcfile.c, line: 686
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "nom de l'option manquant"
+
+#
+# File: src/rcfile.c, line: 708
+# File: src/rcfile.c, line: 708
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "l'option « %s » nécessite un argument"
+
+#
+# File: src/rcfile.c, line: 726
+# File: src/rcfile.c, line: 726
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "l'option n'est pas une chaîne multioctet valide"
+
+#
+# File: src/rcfile.c, line: 752
+# File: src/rcfile.c, line: 780
+# File: src/rcfile.c, line: 789
+# File: src/rcfile.c, line: 752
+# File: src/rcfile.c, line: 780
+# File: src/rcfile.c, line: 789
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "les blancs sont interdits"
+
+#
+# File: src/rcfile.c, line: 762
+# File: src/rcfile.c, line: 762
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "indiquez 2 caractères (mono-colonne)"
+
+#
+# File: src/rcfile.c, line: 828
+# File: src/rcfile.c, line: 828
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "impossible de désactiver l'option « %s »"
+
+#
+# File: src/rcfile.c, line: 834
+# File: src/rcfile.c, line: 834
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "option inconnue « %s »"
+
+#
+# File: src/rcfile.c, line: 894
+# File: src/rcfile.c, line: 894
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "impossible de trouver mon répertoire personnel ! Ouah !"
+
+#
+# File: src/search.c, line: 94
+# File: src/search.c, line: 94
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "« %.*s%s » non trouvé"
+
+#
+# File: src/search.c, line: 199
+# File: src/search.c, line: 199
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (à remplacer) dans la sélection"
+
+#
+# File: src/search.c, line: 201
+# File: src/search.c, line: 201
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (à remplacer)"
+
+#
+# File: src/search.c, line: 753
+# File: src/search.c, line: 753
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Remplacer cette occurrence ?"
+
+#
+# File: src/search.c, line: 921
+# File: src/search.c, line: 921
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Remplacer par"
+
+#
+# File: src/search.c, line: 963
+# File: src/search.c, line: 963
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "%lu remplacement effectué"
+msgstr[1] "%lu remplacements effectués"
+
+#
+# File: src/search.c, line: 989
+# File: src/search.c, line: 989
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Entrez : numéro de ligne, numéro de colonne "
+
+#
+# File: src/search.c, line: 989
+# File: src/search.c, line: 989
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "numéro de ligne ou de colonne incorrect"
+
+#
+# File: src/search.c, line: 1167
+# File: src/search.c, line: 1167
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "N'est pas un crochet"
+
+#
+# File: src/search.c, line: 1234
+# File: src/search.c, line: 1234
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Aucun crochet correspondant"
+
+#
+# File: src/text.c, line: 54
+# File: src/text.c, line: 54
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Marque posée"
+
+#
+# File: src/text.c, line: 58
+# File: src/text.c, line: 58
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Marque enlevée"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Aucune opération à annuler !"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+"Erreur interne : impossible de trouver une correspondance pour la ligne %d. "
+"Sauvegardez votre travail"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "ajout de texte"
+
+#
+# File: src/global.c, line: 668
+# File: src/global.c, line: 668
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "effacement de texte"
+
+#
+# File: src/global.c, line: 1318
+# File: src/global.c, line: 1318
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "passage à la ligne"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "fusion de lignes"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "texte coupé"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "texte restauré"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "nouvelle ligne"
+
+#
+# File: src/global.c, line: 618
+# File: src/global.c, line: 1087
+# File: src/global.c, line: 618
+# File: src/global.c, line: 1087
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "insertion de texte"
+
+#
+# File: src/search.c, line: 201
+# File: src/search.c, line: 201
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "remplacement de texte"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Erreur interne : type inconnu. Sauvegardez votre travail"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Action annulée (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Rien à refaire !"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+"Erreur interne : impossible de se préparer à refaire l'action. Sauvegardez "
+"votre travail"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Action refaite (%s)"
+
+#
+# File: src/text.c, line: 441
+# File: src/text.c, line: 441
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Impossible d'ouvrir un tube"
+
+#
+# File: src/text.c, line: 468
+# File: src/text.c, line: 2032
+# File: src/text.c, line: 2179
+# File: src/text.c, line: 468
+# File: src/text.c, line: 2032
+# File: src/text.c, line: 2179
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Impossible de créer un nouveau processus"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+"Erreur interne : impossible de mettre en place le moyen d'annuler l'action "
+"« couper ». Sauvegardez votre travail."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Erreur interne : type inconnu. Sauvegardez votre travail"
+
+#
+# File: src/text.c, line: 1270
+# File: src/text.c, line: 1270
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Mauvaise chaîne de citation %s : %s"
+
+#
+# File: src/text.c, line: 1666
+# File: src/text.c, line: 1666
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Il est maintenant possible de dé-justifier !"
+
+#
+# File: src/text.c, line: 1858
+# File: src/text.c, line: 1858
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Entrez une correction"
+
+#
+# File: src/text.c, line: 1944
+# File: src/text.c, line: 1944
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Impossible de créer un tube"
+
+#
+# File: src/text.c, line: 1946
+# File: src/text.c, line: 1946
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Création de la liste des fautes, veuillez patienter..."
+
+#
+# File: src/text.c, line: 2038
+# File: src/text.c, line: 2038
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Impossible d'obtenir la taille de tampon du tube"
+
+#
+# File: src/text.c, line: 2089
+# File: src/text.c, line: 2089
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "erreur d'appel de « spell »"
+
+#
+# File: src/text.c, line: 2092
+# File: src/text.c, line: 2092
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "erreur à l'appel de « sort -f »"
+
+#
+# File: src/text.c, line: 2095
+# File: src/text.c, line: 2095
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "erreur à l'appel de « uniq »"
+
+#
+# File: src/text.c, line: 2351
+# File: src/text.c, line: 2351
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Vérification orthographique terminée"
+
+#
+# File: src/text.c, line: 2206
+# File: src/text.c, line: 2206
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "erreur d'appel de « %s »"
+
+#
+# File: src/text.c, line: 2346
+# File: src/text.c, line: 2346
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Échec de la correction : %s"
+
+#
+# File: src/text.c, line: 2348
+# File: src/text.c, line: 2348
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Échec de la correction : %s : %s"
+
+#
+# File: src/text.c, line: 2416
+# File: src/text.c, line: 2416
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%s %lu mots, %ld lignes, %lu caractères"
+
+#
+# File: src/text.c, line: 2417
+# File: src/text.c, line: 2417
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "Contenu de la sélection : "
+
+#
+# File: src/utils.c, line: 365
+# File: src/utils.c, line: 377
+# File: src/utils.c, line: 365
+# File: src/utils.c, line: 377
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano n'a plus de mémoire !"
+
+#
+# File: src/winio.c, line: 1467
+# File: src/winio.c, line: 1467
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Entrée Unicode"
+
+#
+# File: src/winio.c, line: 2004
+# File: src/winio.c, line: 2007
+# File: src/winio.c, line: 2004
+# File: src/winio.c, line: 2007
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Modifié"
+
+#
+# Cela devrait être « visualisation », pour être logique.
+# Mais il faut quelque chose de court qui tienne sans
+# déborder sur le bord haut de l'écran.
+# File: src/winio.c, line: 2005
+# File: src/winio.c, line: 2005
+#: src/winio.c:2150
+msgid "View"
+msgstr "Voir"
+
+#
+# File: src/winio.c, line: 2018
+# File: src/winio.c, line: 2018
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "RÉP. :"
+
+#
+# File: src/winio.c, line: 2025
+# File: src/winio.c, line: 2025
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Fichier :"
+
+#
+# File: src/winio.c, line: 3046
+# File: src/winio.c, line: 3046
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "ligne %ld/%ld (%d%%), col. %lu/%lu (%d%%), car. %lu/%lu (%d%%)"
+
+#
+# File: src/winio.c, line: 3166
+# File: src/winio.c, line: 3166
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "L'éditeur de texte nano"
+
+#
+# File: src/winio.c, line: 3167
+# File: src/winio.c, line: 3167
+#: src/winio.c:3493
+msgid "version"
+msgstr "version"
+
+#
+# File: src/winio.c, line: 3168
+# File: src/winio.c, line: 3168
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Proposé par :"
+
+#
+# File: src/winio.c, line: 3169
+# File: src/winio.c, line: 3169
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Remerciements particuliers à :"
+
+#
+# File: src/winio.c, line: 3170
+# File: src/winio.c, line: 3170
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "La Free Software Foundation"
+
+#
+# File: src/winio.c, line: 3171
+# File: src/winio.c, line: 3171
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Pour ncurses :"
+
+#
+# File: src/winio.c, line: 3172
+# File: src/winio.c, line: 3172
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "et toute autre personne que nous aurions oubliée..."
+
+#
+# File: src/winio.c, line: 3173
+# File: src/winio.c, line: 3173
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Merci d'utiliser nano !"
+
+#
+# File: src/files.c, line: 1476
+# File: src/text.c, line: 2315
+# File: src/text.c, line: 2327
+# File: src/files.c, line: 1476
+# File: src/text.c, line: 2315
+# File: src/text.c, line: 2327
+#~ msgid "Error writing backup file %s: File owner mismatch"
+#~ msgstr ""
+#~ "Erreur d'écriture de la copie de sécurité %s : propriétaire différent"
+
+#~ msgid "line split"
+#~ msgstr "coupure de ligne"
diff --git a/po/ga.gmo b/po/ga.gmo
new file mode 100644
index 0000000..c006617
--- /dev/null
+++ b/po/ga.gmo
Binary files differ
diff --git a/po/ga.po b/po/ga.po
new file mode 100644
index 0000000..9f00382
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,2213 @@
+# Irish translations for nano.
+# Copyright (C) 2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# Kevin Patrick Scannell <scannell@SLU.EDU>, 2006, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.1.7pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2008-10-23 15:14-0500\n"
+"Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
+"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :"
+"(n>6 && n<11) ? 3 : 4;\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Téigh go Comhadlann"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Cealaithe"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Ní féidir %s a fhágáil sa mhód teoranta"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Earráid agus %s á léamh: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Ní féidir dul go dtí an chomhadlann thuas"
+
+# max 7 with parens on 80 col screen --kps
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "cmhdlnn"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "téigh suas"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Cuardaigh"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Cásíogair]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Slonn]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Siar]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Thimfhill an Cuardach"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Níor aimsíodh an patrún in aon áit eile"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Níl patrún cuardaigh ann faoi láthair"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Ní féidir comhad a ionsá ón taobh amuigh de %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Níl aon mhaoláin oscailte fágtha"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Athraithe go %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Maolán Nua"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Léadh %lu líne (tiontaithe ó fhormáid DOS/Mac)"
+msgstr[1] "Léadh %lu líne (tiontaithe ó fhormáid DOS/Mac)"
+msgstr[2] "Léadh %lu líne (tiontaithe ó fhormáid DOS/Mac)"
+msgstr[3] "Léadh %lu líne (tiontaithe ó fhormáid DOS/Mac)"
+msgstr[4] "Léadh %lu líne (tiontaithe ó fhormáid DOS/Mac)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "Léadh %lu líne (tiontaithe ó fhormáid DOS/Mac)"
+msgstr[1] "Léadh %lu líne (tiontaithe ó fhormáid DOS/Mac)"
+msgstr[2] "Léadh %lu líne (tiontaithe ó fhormáid DOS/Mac)"
+msgstr[3] "Léadh %lu líne (tiontaithe ó fhormáid DOS/Mac)"
+msgstr[4] "Léadh %lu líne (tiontaithe ó fhormáid DOS/Mac)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Léadh %lu líne (tiontaithe ó fhormáid Mac)"
+msgstr[1] "Léadh %lu líne (tiontaithe ó fhormáid Mac)"
+msgstr[2] "Léadh %lu líne (tiontaithe ó fhormáid Mac)"
+msgstr[3] "Léadh %lu líne (tiontaithe ó fhormáid Mac)"
+msgstr[4] "Léadh %lu líne (tiontaithe ó fhormáid Mac)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Léadh %lu líne (tiontaithe ó fhormáid Mac)"
+msgstr[1] "Léadh %lu líne (tiontaithe ó fhormáid Mac)"
+msgstr[2] "Léadh %lu líne (tiontaithe ó fhormáid Mac)"
+msgstr[3] "Léadh %lu líne (tiontaithe ó fhormáid Mac)"
+msgstr[4] "Léadh %lu líne (tiontaithe ó fhormáid Mac)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Léadh %lu líne (tiontaithe ó fhormáid DOS)"
+msgstr[1] "Léadh %lu líne (tiontaithe ó fhormáid DOS)"
+msgstr[2] "Léadh %lu líne (tiontaithe ó fhormáid DOS)"
+msgstr[3] "Léadh %lu líne (tiontaithe ó fhormáid DOS)"
+msgstr[4] "Léadh %lu líne (tiontaithe ó fhormáid DOS)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Léadh %lu líne (tiontaithe ó fhormáid DOS)"
+msgstr[1] "Léadh %lu líne (tiontaithe ó fhormáid DOS)"
+msgstr[2] "Léadh %lu líne (tiontaithe ó fhormáid DOS)"
+msgstr[3] "Léadh %lu líne (tiontaithe ó fhormáid DOS)"
+msgstr[4] "Léadh %lu líne (tiontaithe ó fhormáid DOS)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Léadh %lu líne"
+msgstr[1] "Léadh %lu líne"
+msgstr[2] "Léadh %lu líne"
+msgstr[3] "Léadh %lu líne"
+msgstr[4] "Léadh %lu líne"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Comhad á Léamh"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Comhad Nua"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" gan aimsiú"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "Is comhadlann é \"%s\""
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "Is comhad gléis é \"%s\""
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Ordú le rith i maolán nua [ó %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Ordú le rith [ó %s]"
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Comhad le hionsá i maolán nua [ó %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Comhad le hionsá [ó %s]"
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Eochair neamhcheadaithe mura bhfuiltear i mód ilmhaoláin"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Ní féidir scríobh lasmuigh de %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"Ní féidir réamhcheangal nó iarcheangal le nasc siombalach nuair atá --"
+"nofollow socraithe"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Earráid agus comhad cúltaca %s á scríobh: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "An iomarca comhad cúltaca?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Earráid agus %s á scríobh: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Earráid agus comhad sealadach á scríobh: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Scríobhadh %lu líne"
+msgstr[1] "Scríobhadh %lu líne"
+msgstr[2] "Scríobhadh %lu líne"
+msgstr[3] "Scríobhadh %lu líne"
+msgstr[4] "Scríobhadh %lu líne"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [Formáid DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Formáid Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Cúltaca]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Réamhcheangail an Roghnúchán le Comhad"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Iarcheangail an Roghnúchán le Comhad"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Scríobh an Roghnúchán i gComhad"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Comhad is mian leat Réamhcheangal leis"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Comhad is mian leat Iarcheangal leis"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Ainm Comhaid le Scríobh"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Tá an comhad ann; FORSCRÃOBH ? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Sábháil an comhad le hAINM DIFRIÚIL ? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "Athraíodh an comhad ón am a d'oscail tú é; sábháil é mar sin féin?"
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(tuilleadh)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Brúigh \"Enter\" chun dul ar aghaidh le tosú nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Cealaigh"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Ionadaigh"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Gan Ionadú"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Cásíogair"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Siar"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Slonn"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "StairArAis"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "StairArAghaidh"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Téigh Go Téacs"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Cuardaigh Arís"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "An Chéad Chomhad"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Comhad Deiridh"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Go Comhaid"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Formáid DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Formáid Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Iarcheangail"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Réamhcheangail"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Comhad Cúltaca"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Rith Ordú"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Téigh i gComhadlann"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Cabhair"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Scoir"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Cuardach"
+
+# main menu - keep short?
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Ar Ais"
+
+# main menu - keep short?
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Ar Aghaidh"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "An Chéad Líne"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Líne Dheiridh"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Cuir ar Fionraí"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Barr an Ailt"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Bun an Ailt"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "LánComhfhadú"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Athnuaigh"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Ionsáigh Comhad"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Téigh Go Líne"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Comhfhadaigh an t-alt reatha"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Cealaigh an fheidhm reatha"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Taispeáin an chabhair seo"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Dún an maolán reatha / Scoir nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Scoir nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Scríobh an comhad reatha ar an diosca"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Ionsáigh comhad eile isteach sa cheann reatha"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Cuardach ar theaghrán nó slonn ionadaíochta"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Téigh chuig an scáileán roimhe seo"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Téigh chuig an chéad scáileán eile"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Gearr an líne reatha agus cuir é sa mhaolán ghearrtha"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Greamaigh ón mhaolán gearrtha isteach sa líne reatha"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Taispeáin ionad an chúrsóra"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Rith an litreoir, má tá sé ar fáil"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Ionadaigh teaghrán nó slonn ionadaíochta"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Téigh go dtí an líne agus an colún sonraithe"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Marcáil téacs ag ionad an chúrsóra"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "An cuardach céanna arís"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Cóipeáil an líne reatha agus cuir é sa mhaolán ghearrtha"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Eangaigh an líne reatha"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Dí-eangaigh an líne reatha"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Cealaigh an oibríocht is déanaí"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Athdhéan an oibríocht is déanaí a cealaíodh"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Ar aghaidh carachtar amháin"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Carachtar amháin siar"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Téigh ar aghaidh focal amháin"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Téigh siar focal amháin"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Téigh go dtí an líne roimhe seo"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Téigh go dtí an chéad líne eile"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Téigh go tosach na líne reatha"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Téigh go deireadh na líne reatha"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Téigh go tús an ailt reatha; ansin an ceann roimhe sin"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Téigh thar deireadh an ailt reatha; ansin an t-alt tar éis sin"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Téigh go dtí an chéad líne sa chomhad"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Téigh go dtí an líne dheiridh sa chomhad"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Téigh go dtí an lúibín comhoiriúnach"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Scrollaigh suas líne amháin, ach ná scrollaigh an cúrsóir"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Scrollaigh síos líne amháin, ach ná scrollaigh an cúrsóir"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Athraigh go dtí an maolán roimhe seo"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Athraigh go dtí an chéad mhaolán eile"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Ionsáigh an chéad charachtar eile go litriúil"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Ionsáigh táb ag an gcúrsóir"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Ionsáigh líne nua ag an gcúrsóir"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Scrios an carachtar faoin chúrsóir"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Scrios an carachtar ar an taobh clé den chúrsóir"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Gearr ón chúrsóir go deireadh an chomhaid"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Comhfhadaigh an comhad iomlán"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Ãirigh líon na bhfocal, líon na línte, agus líon na gcarachtar"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Athnuaigh (ataispeáin) an scáileán reatha"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Cuir an t-eagarthóir ar fionraí (más féidir)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Scoránaigh cásíogaireacht"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Scoránaigh treo an chuardaigh"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Scoránaigh úsáid de shloinn ionadaíochta"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Athghair an teaghrán cuardaigh roimhe seo"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Athghair an chéad teaghrán cuardaigh eile"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Téigh go brabhsálaí na gcomhad"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Scoránaigh úsáid d'fhormáid DOS"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Scoránaigh úsáid d'fhormáid Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Scoránaigh iarcheangal"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Scoránaigh réamhcheangal"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Scoránaigh cúltacaí"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Rith ordú seachtrach"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Scoránaigh úsáid de mhaolán nua"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Scoir brabhsálaí na gcomhad"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Téigh go dtí an chéad chomhad sa liosta"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Téigh go dtí an comhad deiridh sa liosta"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Téigh go dtí an comhad deiridh sa liosta"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Téigh go dtí an chéad chomhad sa liosta"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Téigh go comhadlann"
+
+# next batch are main menu - should be 9 characters at most
+# 10 characters fit, but with no space before next option
+# I'm assuming an 80 column terminal here
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Dún"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Scríobh"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Comhfhadú"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Léigh"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Gearr"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "DíComhfhdú"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "DíGhearr Téacs"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Cúrsóir"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Litreoir"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Marcáil Téacs"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Cóipeáil Téacs"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Eangaigh Téacs"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Dí-eangaigh Téacs"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Cealaigh"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Athdhéan"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Ar Aghaidh"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Siar"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "An Chéad Fhocal Eile"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "An Focal Roimhe Seo"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "An Líne Roimhe Seo"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "An Chéad Líne Eile"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Baile"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Deireadh"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Aimsigh an Lúibín Eile"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Scrollaigh Suas"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Scrollaigh Síos"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "An Comhad Roimhe Seo"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "An Chéad Chomhad Eile"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Ionchur Litriúil"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Táb"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Iontráil"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Scrios"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Cúlspás"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "GearrGoBun"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Líon na bhFocal"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Mód cabhrach"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Taispeáin ionad an chúrsóra i gcónaí"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Úsáid líne amháin eile le haghaidh eagarthóireachta"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Mínscrollú"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Taispeáint spáis bháin"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Aibhsiú comhréire le dathanna"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Eochair bhaile chliste"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Uath-eangú"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Gearr go dtí an deireadh"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Timfhilleadh líne"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Tiontaigh táib chlóscríofa go spásanna"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Comhaid chúltaca"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Maoláin iomadúla"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Tacaíocht luiche"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Ná tiontaigh ó fhormáid DOS/Mac"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Cur ar Fionraí"
+
+#: src/global.c:1399
+#, fuzzy
+msgid "Soft line wrapping"
+msgstr "Timfhilleadh líne"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Cabhair: Cuardach\n"
+"\n"
+" Iontráil na focail nó carachtair is mian leat a aimsiú, agus ansin brúigh "
+"\"Enter\". Má aimsítear aon rud oiriúnach, athrófar an scáileán go dtí an "
+"áit ina bhfuil an teaghrán is gaire a mheaitseálann an téarma cuardaigh.\n"
+"\n"
+" Taispeánfar an téarma cuardaigh is déanaí idir lúibíní cearnacha i ndiaidh "
+"na leide chuardaigh. Má bhrúnn tú \"Enter\" gan aon téacs, déanfar an "
+"cuardach céanna arís. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Má tá téacs roghnaithe agat leis an marc, agus má dhéanann tú cuardach is "
+"athchur, ní dhéanfar ionadú ar aon téacs nach roghnaithe.\n"
+"\n"
+"Tá na heochracha feidhme seo a leanas ar fáil sa mhód Cuardaigh:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Cabhair: Téigh Go Líne\n"
+"\n"
+" Iontráil an líne-uimhir a theastaíonn uait, agus brúigh \"Enter\". Má tá "
+"níos lú línte sa doiciméad ná an uimhir a d'iontráil tú, tabharfar thú go "
+"dtí an líne dheiridh.\n"
+"\n"
+"Tá na heochracha feidhme seo a leanas ar fáil sa mhód \"Téigh Go Líne\":\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Cabhair: Ionsáigh Comhad\n"
+"\n"
+" Iontráil ainm an chomhaid is mian leat ionsá isteach sa mhaolán reatha ag "
+"an áit ina bhfuil an cúrsóir faoi láthair.\n"
+"\n"
+" Má thiomsaigh tú nano le tacaíocht do mhaoláin iomadúla, agus má "
+"chumasaíonn tú an mód ilmhaoláin leis an rogha -F nó --multibuffer ar líne "
+"na n-orduithe, leis an scorán Meta-F, nó le comhad nanorc, luchtófar an "
+"comhad ionsáite i maolán ar leith (úsáid Meta-< agus > chun bogadh idir "
+"maoláin oscailte). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Má theastaíonn tú maolán folamh nua, ná hiontráil ainm comhaid, is é sin nó "
+"iontráil ainm de chomhad nach ann agus brúigh \"Enter\".\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Cabhair: Scríobh Comhad\n"
+"\n"
+" Iontráil ainm an chomhaid inar mian leat an maolán reatha a shábháil, agus "
+"ansin brúigh \"Enter\" chun an comhad a shábháil.\n"
+"\n"
+" Má tá téacs roghnaithe agat leis an marc, sábhálfar an téacs roghnaithe "
+"amháin nuair a úsáideann tú an t-ordú seo. Le forscríobh an chomhaid "
+"iomláin a sheachaint, ní úsáidfear an comhadainm reatha mar réamhshocrú sa "
+"mhód seo.\n"
+"\n"
+"Tá na heochracha feidhme seo a leanas ar fáil sa mhód \"Scríobh Comhad\":\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Cabhair: Brabhsálaí na gComhad\n"
+"\n"
+" Úsáidtear brabhsálaí na gcomhad chun comhad a roghnú trí struchtúr na "
+"gcomhadlann a bhrabhsáil i slí shoiléir. Is féidir leat na "
+"saigheadeochracha nó Page Up/Down a úsáid chun na comhaid a bhrabhsáil, agus "
+"\"S\" nó \"Enter\" chun an comhad aibhsithe a roghnú, nó chun dul isteach sa "
+"chomhadlann aibhsithe. Roghnaigh an chomhadlann darb ainm \"..\" ag barr "
+"liosta na gcomhad chun dul suas leibhéal amháin.\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Cabhair: Cuardach\n"
+"\n"
+" Iontráil na focail nó carachtair is mian leat a aimsiú, agus ansin brúigh "
+"\"Enter\". Má aimsítear aon rud oiriúnach, athrófar an scáileán go dtí an "
+"áit ina bhfuil an teaghrán is gaire a mheaitseálann an téarma cuardaigh.\n"
+"\n"
+" Taispeánfar an téarma cuardaigh is déanaí idir lúibíní cearnacha i ndiaidh "
+"na leide chuardaigh. Má bhrúnn tú \"Enter\" gan aon téacs, déanfar an "
+"cuardach céanna arís.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Tá na heochracha feidhme seo a leanas ar fáil sa mhód \"Cuardach Brabhsálaí"
+"\":\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Cabhair: Téigh Go Comhadlann\n"
+"\n"
+" Iontráil ainm na comhadlainne is mian leat a bhrabhsáil.\n"
+"\n"
+" Má tá comhlánú táib ar fáil, is féidir leat eochair \"Tab\" a úsáid chun "
+"ainm na comhadlainne a chomhlánú go huathoibríoch (nó iarracht a dhéanamh "
+"air).\n"
+"\n"
+"Tá na heochracha feidhme seo a leanas ar fáil sa mhód \"Téigh Go Comhadlann"
+"\":\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Cabhair: An Litreoir\n"
+"\n"
+" Seiceálann an litreoir an litriú de gach focal sa mhaolán reatha. Nuair a "
+"aimsíonn sé focal anaithnid, aibhseoidh sé é, agus is féidir ionadaí a chur "
+"in eagar. Ansin, beidh an rogha agat gach uile chás den fhocal mílitrithe a "
+"ionadú sa mhaolán reatha, nó, má tá téacs roghnaithe agat leis an marc, gach "
+"uile chás den fhocal sa téacs roghnaithe.\n"
+"\n"
+" Tá na heochracha feidhme seo a leanas ar fáil i mód an Litreora:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Cabhair: Rith Ordú\n"
+"\n"
+" Ceadaíonn an mód seo duit aschur d'ordú blaoisce a ionsá sa mhaolán reatha "
+"(nó i maolán nua sa mhód ilmhaoláin). Má theastaíonn maolán folamh nua uait, "
+"ná hiontráil ordú ar bith.\n"
+"\n"
+" Tá na heochracha feidhme seo a leanas ar fáil sa mhód \"Rith Ordú\":\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Príomhthéacs cabhrach: nano\n"
+"\n"
+" Dearadh nano d'fhonn aithris a dhéanamh ar fheidhmiúlacht agus ar "
+"áisiúlacht eagarthóra téacs UW Pico. Tá ceithre phríomhrannán san "
+"eagarthóir. Taispeántar uimhir an leagain ar an chéad líne in éineacht le "
+"hainm an chomhaid atá in eagar faoi láthair agus teachtaireacht nuair a "
+"athraíonn tú an comhad. Ansin, feicfidh tú an phríomhfhuinneog ina bhfuil "
+"an comhad atá in eagar. Taispeántar teachtaireachtaí tábhachtacha ar an "
+"líne stádais, an tríú líne ó bhun an scáileáin. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Taispeántar na haicearraí is coitianta ar an dá líne dheiridh.\n"
+"\n"
+" Scríobhtar aicearraí mar a leanas: úsáidtear carait (^) le haghaidh "
+"seicheamh rialúcháin, agus is féidir iad a iontráil leis an eochair Ctrl, nó "
+"tríd an eochair Esc a bhrú faoi dhó. Scríobhtar seichimh éalúcháin leis an "
+"tsiombail Meta (M-), agus is féidir iad féin a iontráil le ceann de Esc, "
+"Alt, nó Meta, ag brath ar shocruithe do mhéarchlár. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Má bhrúnn tú Esc faoi dhó agus ansin iontrálann tú uimhir dheachúlach le trí "
+"dhigit, idir 000 agus 255, gheobhaidh tú an beart leis an luach sin. Tá na "
+"heochracha seo a leanas ar fáil i bpríomhfhuinneog an eagarthóra. "
+"Taispeántar eochracha malartacha idir lúibíní:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "(cumasú/díchumasú)"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Eochair neamhcheadaithe sa mhód amhairc"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Scríobhadh an maolán i %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Níor scríobhadh an maolán i %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Níor scríobhadh an maolán: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Tá an fhuinneog róbheag le haghaidh nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Úsáid: nano [ROGHANNA] [[+LÃNE,COLÚN] COMHAD]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Rogha\t\tRogha fhada GNU\t\tMíniú\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Rogha\t\tMíniú\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Taispeáin an teachtaireacht seo"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+LÃNE,COLÚN"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Tosaigh ag líne LÃNE, colún COLÚN"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Cumasaigh eochair bhaile chliste"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Sábháil cúltacaí de chomhaid atá ann cheana"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <comhadlann>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<comhadlann>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Comhadlann a sábhálfar comhaid uathúla chúltaca inti"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Úsáid cló trom in ionad téacs aisiompaithe"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Tiontaigh táib chlóscríofa go spásanna"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Cumasaigh maoláin iomadúla"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Logáil agus léigh stair na dteaghrán cuardaigh"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Ná húsáid comhaid nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Deisigh mearbhall maidir leis an eochaircheap uimhriúil"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Ná cuir carachtair líne nua ag deireadh comhad"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Ná tiontaigh comhaid ó fhormáid Dos/Mac"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Úsáid líne amháin eile le haghaidh eagarthóireachta"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <teaghrán>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<teaghrán>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Teaghrán athfhriotail"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Mód teoranta"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Scrollaigh de réir línte in ionad leathscáileáin"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#colúin>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#colúin>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Socraigh leithead de tháib a bheith #colúin"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Bánaigh an barra stádais go gasta"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Taispeáin eolas faoin leagan agus scoir"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Braith teorainneacha idir focail i slí níos cruinne"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <teaghrán>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<teaghrán>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Sainmhíniú na comhréire le haghaidh dathaithe"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Taispeáin ionad an chúrsóra i gcónaí"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Deisigh mearbhall idir na heochracha \"Backspace\" agus \"Delete\""
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Eangaigh línte nua go huathoibríoch"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Gearr ón chúrsóir go deireadh na líne"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Ná lean naisc shiombalacha; forscríobh"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Cumasaigh úsáid na luiche"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <comhadlann>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<comhadlann>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Socraigh an chomhadlann oibre"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Caomhnaigh eochracha XON (^Q) agus XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#colúin>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#colúin>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Socraigh timfhilleadh ag #colúin colún"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <clár>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<clár>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Cumasaigh litreoir malartach"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Sábháil go huathoibríoch ag am scortha; ná fiafraigh díom"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Mód amhairc (inléite amháin)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Ná timfhill línte fada"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Ná taispeáin an dá líne chabhrach"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Cumasaigh cur ar fionraí"
+
+#: src/nano.c:924
+#, fuzzy
+msgid "Enable soft line wrapping"
+msgstr "Timfhilleadh líne"
+
+# plural flags ignored in my version --kps
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(rinneadh neamhshuim orthu seo - comhoiriúnacht le Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano, leagan %s (tiomsaithe %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " R-phost: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Roghanna tiomsaithe:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Tá brón orm, díchumasaíodh an fheidhm seo"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Sábháil an maolán athraithe (NÓ SCRIOSFAR DO CHUID ATHRUITHE) ? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Fuarthas SIGHUP nó SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Úsáid \"fg\" chun dul ar ais go nano.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "cumasaithe"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "díchumasaithe"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Ordú Anaithnid"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "Rinneadh neamhshuim ar XON :-("
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "Rinneadh neamhshuim ar XOFF :-("
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Is neamhbhailí í méid táib iarrtha \"%s\""
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Is neamhbhailí í méid líonta iarrtha \"%s\""
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Ss"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Uu"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Sábháil"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Uile"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Ná Sábháil"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Earráid i %s ar líne %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Tá \" gan chríoch in argóint '%s'"
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr ""
+"Ní mór carachtar \" a bheith ag tosach agus ag deireadh sloinn ionadaíochta"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Slonn ionadaíochta neamhbhailí \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Ainm comhréire ar iarraidh"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "Comhréir \"none\" in áirithe"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "Ní cheadaítear eisínteachtaí leis an gcomhréir \"default\""
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Ainm eochrach ar iarraidh"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+#, fuzzy
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "ní mór \"^\", \"M\", nó \"F\" a bheith ag tús ceangail eochrach\n"
+
+#: src/rcfile.c:407
+#, fuzzy
+msgid "Must specify function to bind key to"
+msgstr "Ní mór duit feidhm a gceanglófar an eochair léi a thabhairt\n"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+#, fuzzy
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+"Ní mór duit an roghchlár a gceanglófar an eochair leis a thabhairt (nó \"all"
+"\")\n"
+
+#: src/rcfile.c:426
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Níorbh fhéidir ainm \"%s\" a mhapáil go feidhm\n"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Níorbh fhéidir ainm \"%s\" a mhapáil go roghchlár\n"
+
+#: src/rcfile.c:454
+#, fuzzy, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "Tá brón orm, ceangal neamhcheadaithe é keystr \"%s\"\n"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Níor tuigeadh dath \"%s\".\n"
+"Seo iad na dathanna bailí: \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" agus\n"
+"\"black\", leis an réimír roghnach \"bright\"\n"
+"le haghaidh dathanna tulra."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Ní féidir ordú dhatha a chur leis gan ordú comhréire"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Ainm datha ar iarraidh"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Ní cheadaítear do dhath cúlra \"%s\" a bheith geal"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Slonn ionadaíochta ar iarraidh"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "Tá gá le \"end=\" in éineacht le gach \"start=\""
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr ""
+"Ní féidir slonn ionadaíochta don cheanntásc a chur leis gan ordú comhréire"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Earráid mharfach: níl aon eochracha mapáilte le haghaidh feidhm \"%s\""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"à scor. Úsáid nano leis an rogha -I más gá do chuid socruithe nanorc a "
+"athrú\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Ní cheadaítear ordú \"%s\" i gcomhad iniata"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Níl orduithe datha ag an gcomhréir \"%s\""
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Níor tuigeadh ordú \"%s\""
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Bratach ar iarraidh"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Caithfidh tú argóint a thabhairt le rogha \"%s\""
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Níl an rogha ina teaghrán bailí il-bhirt"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Carachtair neamhbhána de dhíth"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Dhá charachtar aoncholúin de dhíth"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Ní féidir bratach \"%s\" a dhíchumasú"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Bratach anaithnid \"%s\""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Ní féidir mo chomhadlann bhaile a aimsiú! Ochón!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%.*s%s\" gan aimsiú"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (le cur in ionad) i roghnúchán"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (le cur in ionad)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Ionadaigh an ceann seo?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Ionadaigh le"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Cuireadh teaghrán nua in ionad %lu uair amháin"
+msgstr[1] "Cuireadh teaghrán nua in ionad %lu uair"
+msgstr[2] "Cuireadh teaghrán nua in ionad %lu huaire"
+msgstr[3] "Cuireadh teaghrán nua in ionad %lu n-uaire"
+msgstr[4] "Cuireadh teaghrán nua in ionad %lu uair"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Iontráil uimhir na líne agus uimhir an cholúin"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Uimhir líne nó uimhir cholúin neamhbhailí"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Ní lúibín é"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Níl lúibín comhoiriúnach ann"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Socraíodh Marc"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Díshocraíodh Marc"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Níl faic le cealú!"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+"Earráid inmheánach: ní féidir líne %d a mheaitseáil. Sábháil do chuid oibre"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "téacs a chur leis"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "téacs a scriosadh"
+
+#: src/text.c:489 src/text.c:628
+#, fuzzy
+msgid "line wrap"
+msgstr "Timfhilleadh líne"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "líne a cheangal"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "téacs a ghearradh"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "téacs a dhíghearradh"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "téacs a ionsá"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "téacs a ionadú"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Earráid inmheánach: cineál anaithnid. Sábháil do chuid oibre"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Cealaíodh gníomh (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Níl faic le hathdhéanamh!"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+"Earráid inmheánach: Theip ar shocrú athdhéanta. Sábháil do chuid oibre"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Athrinneadh gníomh (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Níorbh fhéidir píopa a dhéanamh"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Níorbh fhéidir forc a dhéanamh"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+"Earráid inmheánach: ní féidir díghearradh a shocrú. Sábháil do chuid oibre."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Earráid inmheánach: cineál anaithnid. Sábháil do chuid oibre."
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Drochtheaghrán athfhriotail %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Is féidir DíChomhfhadú anois!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Cuir ionadaí in eagar"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Níorbh fhéidir píopa a chruthú"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Liosta d'fhocail mílitrithe á chruthú; fan go fóill, le do thoil..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Níl aon fháil ar mhéid an mhaoláin píopa"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Earráid agus \"spell\" á thosú"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Earráid agus \"sort -f\" á thosú"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Earráid agus \"uniq\" á thosú"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Chríochnaigh an litreoir"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Earráid agus \"%s\" á thosú"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Theip ar an litreoir: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Theip ar an litreoir: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sFocail: %lu Línte: %ld Carachtair: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "Sa Roghnúchán: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "cuimhne nano ídithe!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Ionchur Unicode"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Athraithe"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Amharc"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "COMHADLANN:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Comhad:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "líne %ld/%ld (%d%%), colún %lu/%lu (%d%%), carachtar %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Eagarthóir téacs nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "leagan"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Scríofa ag:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Táimid fíorbhuíoch de:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "The Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "As ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "agus de gach duine eile a ndearnamar dearmad orthu..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Go raibh maith agat as úsáid nano!"
+
+#~ msgid "line split"
+#~ msgstr "líne a scoilt"
+
+#~ msgid "line cut"
+#~ msgstr "líne a ghearradh"
+
+#~ msgid "Couldnt match current undo line"
+#~ msgstr "Níorbh fhéidir an líne reatha cealaithe a mheaitseáil"
+
+#~ msgid "wtf?"
+#~ msgstr "cad sa diabhal?"
+
+#~ msgid "Can't find previous undo to re-do, argh"
+#~ msgstr "Níl aon oibríocht chealaithe ann le hathdhéanamh, faraor"
+
+#~ msgid "OOPS. Tried to add unknown thing to undo struct, I'd save your work"
+#~ msgstr ""
+#~ "Faraor, baineadh triail as rud anaithnid a chur leis an struchtúr "
+#~ "cealaithe - ba chóir duit do chuid oibre a shábháil"
+
+#~ msgid "Space"
+#~ msgstr "Spás"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Bí réasúnach, le do thoil"
+
+#~ msgid "Indent marked text"
+#~ msgstr "Eangaigh an téacs marcáilte"
+
+#~ msgid "Unindent marked text"
+#~ msgstr "Dí-eangaigh an téacs marcáilte"
+
+#~ msgid "Use more space for editing"
+#~ msgstr "Úsáid níos mó spáis le haghaidh eagarthóireachta"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Timfhill línte ag #colúin"
+
+#~ msgid "No lines selected, nothing to do!"
+#~ msgstr "Níl aon línte roghnaithe, faic le déanamh!"
+
+# FGG04 --kps
+#~ msgid "Refusing zero-length regex match"
+#~ msgstr "Ní mheaitseálfar slonn ionadaíochta nialasfhaid"
+
+#~ msgid "Make the current search/replace case (in)sensitive"
+#~ msgstr "Athraigh cásíogaireacht sa chuardach reatha"
+
+#~ msgid "Make the current search/replace go backwards"
+#~ msgstr "Déan an cuardach reatha ar gcúl"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Réamhcheangail leis an gcomhad reatha"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Déan cúltaca ar an mbunchomhad le linn sábhála"
+
+#~ msgid "Insert into new buffer"
+#~ msgstr "Ionsáigh isteach i maolán nua"
+
+#~ msgid "Requested tab size %s invalid"
+#~ msgstr "Is neamhbhailí í méid táib iarrtha %s"
+
+#~ msgid "Requested fill size %s invalid"
+#~ msgstr "Is neamhbhailí í méid táib iarrtha %s"
+
+#~ msgid "Prepending to %s failed: %s"
+#~ msgstr "Theip ar réamhcheangal le %s: %s"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Tosaigh an roghchlár cabhrach"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Déan cuardach ar théacs san eagarthóir"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Ionadaigh téacs san eagarthóir"
+
+#~ msgid "Find matching bracket"
+#~ msgstr "Aimsigh an lúibín eile"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE,COLUMN] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Úsáid: nano [+LÃNE,COLÚN] [rogha fhada GNU] [rogha] [comhad]\n"
+#~ "\n"
+
+#~ msgid "Duplicate syntax name %s"
+#~ msgstr "Ainm dúblach comhréire %s"
+
+#~ msgid "Could not create temp file: %s"
+#~ msgstr "Níorbh fhéidir comhad sealadach a chruthú: %s"
diff --git a/po/gl.gmo b/po/gl.gmo
new file mode 100644
index 0000000..bd6cef8
--- /dev/null
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
new file mode 100644
index 0000000..da60242
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,2099 @@
+# Galician translation of nano
+# Copyright (C) 2001, 2002, 2003, 2006, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# Jacobo Tarrio <jtarrio@trasno.net>, 2001, 2002, 2003.
+# Francisco Javier Tsao Santin <tsao@enelparaiso.org>, 2006,2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.1.6pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2008-09-23 18:42+0200\n"
+"Last-Translator: Francisco Javier Tsao Santín <tsao@enelparaiso.org>\n"
+"Language-Team: Galician <proxecto@trasno.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!=1;\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Ir ó Directorio"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Cancelado"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Non se pode saír de %s en modo restrinxido"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Erro lendo %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Non se pode ascender por un directorio"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(dir)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(dir pai)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Busca"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Sensible ás Maiúsculas/Minúsculas]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Expreg]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Cara Atrás]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Buscando dende o Principio"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Esta é a única aparición"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Non hai patrón de busca"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Non se pode inserir un ficheiro de fóra de %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Non hai máis ficheiros abertos"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Cambiouse a %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Novo buffer"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Leuse %lu liña (Convertida dos formatos DOS e Mac)"
+msgstr[1] "Léronse %lu liñas (Convertidas dos formatos DOS e Mac)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "Leuse %lu liña (Convertida dos formatos DOS e Mac)"
+msgstr[1] "Léronse %lu liñas (Convertidas dos formatos DOS e Mac)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Leuse %lu liña (Convertida de formato Mac)"
+msgstr[1] "Léronse %lu liñas (Convertidas de formato Mac)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Leuse %lu liña (Convertida de formato Mac)"
+msgstr[1] "Léronse %lu liñas (Convertidas de formato Mac)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Leuse %lu liña (Convertida do formato DOS)"
+msgstr[1] "Léronse %lu liñas (Convertidas do formato DOS)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Leuse %lu liña (Convertida do formato DOS)"
+msgstr[1] "Léronse %lu liñas (Convertidas do formato DOS)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Leuse %lu liña"
+msgstr[1] "Léronse %lu liñas"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Lendo o Ficheiro"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Ficheiro Novo"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "Non se atopou \"%s\""
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" é un directorio"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" é un ficheiro de dispositivo"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Comando a executar nun novo buffer [dende %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Comando a executar [dende %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Ficheiro a inserir nun novo buffer [dende %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Ficheiro a inserir [dende %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Tecla non válida no modo sen multibuffer"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Non se pode escribir fóra de %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"Non se pode engadir ó principio ou ó final a unha ligazón simbólica "
+"establecendo --nofollow"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Erro escribindo %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "¿Demasiados ficheiros de copia de seguridade?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Erro writing %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Erro escribindo ficheiro temporal: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Escribiuse %lu liña"
+msgstr[1] "Escribíronse %lu liñas"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [Formato DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Formato Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [CopiaSeg]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Engadir a Selección ó Ficheiro polo Principio"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Engadir a Selección ó Ficheiro polo Final"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Gravar a Selección no Ficheiro"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Ficheiro ó que Engadir polo Principio"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Ficheiro ó que Engadir polo final"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Ficheiro a Gravar"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "O ficheiro xa existe, ¿SOBREESCRIBIR? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "¿Gravar ficheiro baixo NOME DIFERENTE? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(máis)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Prema Enter para seguir iniciando nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Substituir"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Non Subst"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "SensMa/min"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Cara atrás"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "ExpReg"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "HistPrevia"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "HistSeguin"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Ir a Text"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "U-lo Seguint"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Pri Ficheiro"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Derrad Fich"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "A Ficheiros"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Formato DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Formato Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Engadir ó Final"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Engadir ó Inicio"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Copia Seguridade"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Executar Comando"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Ir ó Directorio"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Obter Axud"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Saír"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "¿U-lo?"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Páxina ant"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Páxina seg"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Prim liña"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Ult liña"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Suspender"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Prin Parág"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Fin Parágr"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "XustComplt"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Recargar"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Inser Fich"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Ir á liña"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Xustifica-lo parágrafo actual"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Cancela-la función actual"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Amosar este texto de axuda"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Pechar o ficheiro cargado actualmente / Saír de nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Saír de nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Grava-lo ficheiro actual no disco"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Inserir outro ficheiro no actual"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Buscar cadea ou experesión regular"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Pasar á pantalla anterior"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Pasar á seguinte pantalla"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Corta-la liña actual e gardala no buffer de cortado"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Desfacer corte do buffer de cortado na liña actual"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Amosa-la posición do cursor"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Chamar ó corrector ortográfico, se hai un"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Substituir unha cadea ou expresión regular"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Ir á liña e columna número"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Marcar texto na posición do cursor"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Repeti-la última busca"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Copia-la liña actual e almacenala no buffer de cortado"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Sangra-la liña actual"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Elimina-la sangría da liña actual"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Desface-la última operación"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Reface-la última operación desfeita"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Avanzar un carácter"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Recuar un carácter"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Avanzar unha verba"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Recuar unha verba"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Pasar á liña previa"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Pasar á seguinte liña"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Pasar ó principio da liña actual"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Pasar ó final da liña actual"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Pasar ó principio do parágrafo, entón ó parágrafo previo"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Pasar xusto alén do parágrafo, entón ó seguinte parágrafo"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Pasar á primeira liña do ficheiro"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Pasar á derradeira liña do ficheiro"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Pasar ó paréntese correspondente"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Desprazar arriba unha liña sen despraza-lo cursor"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Desprazar unha liña abaixo sen despraza-lo cursor"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Cambiar ó anterior ficheiro"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Cambiar ó seguinte ficheiro"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Inseri-la seguinte pulsación literal"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Inserir unha lingüeta na posición do cursor"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Inserir unha nova liña na posición do cursor"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Borra-lo carácter baixo do cursor"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Borra-lo caracter á esquerda do cursor"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Cortar da posición do cursor ó final da liña"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Xustificar todo o ficheiro"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Conta-lo número de verbas, liñas e caracteres"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Actualiza-la pantalla actual"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Suspende-lo editor (se a suspensión está activada)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Selector de sensibilidade a maiúsculas/minúsculas na busca"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Reverti-la dirección da busca"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Selector de uso de expresións regulares"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Recupera-la anterior cadea de busca/sustitución"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Recupera-la seguinte cadea de busca/sustitución"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Ir ó navegador de ficheiros"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Selector de uso do formato DOS"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Selector de uso do formato Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Selector de engadir ó final"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Selector de engadir previo"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Selector de copiado de seguridade do ficheiro orixinal"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Executar comando externo"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Selector de uso dun novo buffer"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Saír do navegador de ficheiros"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Pasar ó primeiro ficheiro da lista"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Pasar ó derradeiro ficheiro da lista"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Pasar ó derradeiro ficheiro da lista"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Pasar ó primeiro ficheiro da lista"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Pasar ó directorio"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Pechar"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Gravar"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Xustificar"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Ler Fich"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "CortarText"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "DeXustif"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "RepórTexto"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "PosicAct"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Ortografía"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Marcar"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Copiar Texto"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Sangrar"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "De-Sangrar"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Desfacer"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Refacer"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Adiante"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Atrás"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Verba Seg"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Verba Ant"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Liña Ant"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Seg Liña"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Inicio"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Fin"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Busca-la parella"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Desprazar Arriba"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Desprazar Abaixo"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Ficheiro Anterior"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Ficheiro Seguinte"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Entrada Literal"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Lingüeta"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Entrar"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Borrar"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Retroceso"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "CortarAtaFin"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Conta Verbas"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Modo de axuda"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Posición do cursor constante"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Uso dunha liña máis para editar"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Desprazar suavemente"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Amosar espacios en branco"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Salientar sintaxe con cor"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Tecla de 'smart home'"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Autosangría"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Cortar ata o final"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Axuste de liñas longas"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Conversión de lingüetas escritas a espacios"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Facer copia de seguridade de ficheiros"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Múltiples ficheiros"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "permitir rato"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Non facer conversión de formato DOS/Mac"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Suspensión"
+
+#: src/global.c:1399
+#, fuzzy
+msgid "Soft line wrapping"
+msgstr "Axuste de liñas longas"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Texto de Axuda do Comando de Busca\n"
+"\n"
+" Introduza as verbas ou caracteres que lle gustaría buscar, e entón prema "
+"Enter. Se hai coincidencia para o texto que introduciu, a pantalla será "
+"actualizada á localización da coincidencia máis preto da cadea de busca.\n"
+"\n"
+" A cadea previa de busca se mostrará entre corchetes despois do indicativo "
+"Busca:. Premendo Intro sen introducir ningún texto executará a busca "
+"previa. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Se vostede seleccionou texto con marca e fixo busca con substitución, só se "
+"substituirán correspondencias no texto seleccionado.\n"
+"\n"
+" As seguintes teclas de función están dispoñibles en modo Busca:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Texto de Axuda de Ir á Liña\n"
+"\n"
+" Introduza o número da liña á que quere ir e prema Intro. Se hai menos liñas "
+"de texto que o número introducido, váiselle levar á derradeira liña do "
+"ficheiro.\n"
+"\n"
+" As seguintes teclas de función están dispoñibles no modo Ir à Liña:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Texto de Axuda de Inserción de Ficheiro\n"
+"\n"
+" Introduza o nome dun ficheiro a inserir no buffer de ficheiro actual na "
+"posición actual do cursor.\n"
+"\n"
+" Se compilou nano con soporte de múltiples buffers de ficheiro, e activa os "
+"buffers múltiples cos modificadores de liña de comando -F ou --multibuffer, "
+"co selector Meta-F ou cun ficheiro nanorc, a inserción dun ficheiro fará que "
+"se cargue nun buffer separado (empregue Meta-< e > para cambiar entre "
+"buffers de ficheiro). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Se vostede precisa doutro buffer baleiro, non introduza un nome de ficheiro, "
+"ou escriba un nome de ficheiro inexistente na entrada do nome de ficheiro a "
+"inserir e prema Intro.\n"
+"\n"
+" As seguintes teclas de función están dispoñibles no modo de Inserción de "
+"Ficheiro:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Texto de Axuda da Escritura de Ficheiro\n"
+"\n"
+" Escriba o nome co que quere garda-lo ficheiro actual e prema Intro para "
+"grava-lo ficheiro.\n"
+"\n"
+" Se seleccionou texto coa marca, preguntaráselle si grava só a parte "
+"seleccionada a un ficheiro separado. Para reduci-la posibilidade de "
+"sobrescribi-lo ficheiro actual con só unha parte del, o nome do ficheiro "
+"actual non é o nome por defecto neste modo.\n"
+"\n"
+" As seguintes teclas de función están dispoñibles no modo de Escritura de "
+"Ficheiro:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Texto de Axuda do Navegador de Ficheiros\n"
+"\n"
+" O navegador de ficheiros emprégase para amosar visualmente a estructura de "
+"directorios para escoller un ficheiro que ler ou escribir. Pode usa-las "
+"teclas das frechas ou AvPáx/RePáx para navegar polos ficheiros, e S ou Intro "
+"para escolle-lo ficheiro seleccionado ou entrar no directorio seleccionado. "
+"Para subir un nivel, escolla o directorio chamado \"..\" na parte de enriba "
+"da lista de ficheiros.\n"
+"\n"
+" As seguintes teclas de función están dispoñibles no navegador de "
+"ficheiros:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Texto de Axuda do Comando Busca do Navegador\n"
+"\n"
+" Introduza as palabras ou caracteres que quere buscar, e prema Intro. Se hai "
+"correspondencia para o texto que introduciu, a pantalla actualizarase na "
+"posición da aparición máis cercana de correspondencia da cadea de busca.\n"
+"\n"
+" Amosarase a cadea de busca anterior entre corchetes despois do indicativo "
+"Busca:. Ó premer Intro sen introducir ningún texto farase a busca anterior.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" As seguintes teclas de función están dispoñibles no modo de Busca do "
+"Navegador:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Texto de Axuda de Ir ó Directorio do Navegador\n"
+"\n"
+" Introduza o nome do directorio ó que quere pasar.\n"
+"\n"
+" Se o completado co tabulador non está desactivado, pode emprega-la tecla "
+"Tab para (tratar de) completar automáticamente o nome do directorio.\n"
+"\n"
+"As seguintes teclas de función están dispoñibles no modo Ir Ó Directorio do "
+"Navegador:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Texto de Axuda do Corrector Ortográfico\n"
+"\n"
+" O corrector ortográfico comproba a ortografía de todo o texto do ficheiro "
+"actual. Cando se atopa unha palabra descoñecida, resáltase e pódese editar "
+"unha que a substitúa. Despois vai preguntar se se cambian tódalas aparicións "
+"da palabra errada no ficheiro actual, ou, se vostede escolleu texto dentro "
+"da marca, no texto escollido.\n"
+"\n"
+" Existen as seguintes funcións no modo Corrector Ortográfico:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Texto de Axuda de Execución de Comandos Externos\n"
+"\n"
+" Este modo permítelle inseri-la saída dun comando executado polo intérprete "
+"de comandos no buffer actual (ou noutro buffer no modo multibuffer). Se "
+"vostede necesita outro buffer baleiro, non introduza ningún comando.\n"
+"\n"
+" As seguintes teclas de función están dispoñibles no modo de Comandos "
+"Externos:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Axuda principal de nano\n"
+"\n"
+" O editor nano está deseñado para emula-la funcionalidade e facilidade de "
+"uso do editor de texto UW Pico. Hai catro seccións principais no editor: a "
+"liña superior amosa a versión do programa, o nome do ficheiro que se está a "
+"editar, e se o ficheiro foi modificado ou non. A seguinte é a fiestra "
+"principal do editor, que amosa o ficheiro que se edita. A liña de estado é a "
+"terceira liña dende o fondo e amosa mensaxes importantes. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"As derradeiras días liñas amosan os atallos de teclado máis usados no "
+"editor.\n"
+"\n"
+" A notación para os atallos de teclado é como sigue: As secuencias coa tecla "
+"de Control son nomeadas cun caret (^) e pode ser introducida usando a tecla "
+"de Control (Ctrl) ou premendo a tecla de Escape (Esc) dúas veces. As "
+"secuencias con tecla de Escape son nomeadas co símbolo Meta (M-) e poden ser "
+"introducidas usando as teclas Esc, Alt ou Meta dependendo da configuración "
+"do seu teclado. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Ademáis, premendo Esc dúas veces e escribindo un decimal de tres díxitos "
+"dende 000 a 255 introducirá o carácter co correspondente valor. As seguintes "
+"entradas están dispoñibles na fiestra do editor principal. As teclas "
+"alternativas son amosadas entre parénteses\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "activar/desactivar"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Tecla non válida en modo ver"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Gravouse o buffer en %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Non se gravou o buffer en %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Non se gravou o buffer: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "A fiestra é pequena de máis para nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Uso: nano [OPCIÓNS] [[+LIÑA, COLUMNA] FICHEIRO]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Opción\t\tOpción longa GNU\t\tSignificado\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Opción\t\tSignificado\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Amosar esta mensaxe"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+LIÑA, COLUMNA"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Empezar na liña LIÑA, columna COLUMNA"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Activar tecla 'smart home'"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Gravar copias de seguridade dos ficheiros existentes"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <dir>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<dir>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Directorio para gravar ficheiros de copia de seguridade únicos"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Usar texto groso na vez de texto de video reverso"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Convertir as lingüetas escritas a espacios"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Admitir varios buffers de ficheiros"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Gravar e le-la historia de cadeas a buscar/substituír"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Non mirar nos ficheiros nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Solucionar problema de confusión de teclado numérico"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Non engadir novas liñas ó final dos ficheiros"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Non converti-los ficheiros do formato DOS/Mac"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Usar un ou máis liñas para editar"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <cad>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<cad>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Cadea de citado"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Modo restrinxido"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Desprazar liña a liña en vez de media pantalla"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#cols>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#cols>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Establece-lo ancho de lingüeta a #cols columnas"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Facer baleirado rápido da barra de estado"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Amosar información sobre a versión e saír"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Detectar contornos das verbas máis axeitadamente"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <cad>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<cad>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Definición de sintaxe a empregar para corear"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Amosa-la posición do cursor constantemente"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Arranxa-lo problema de confusión Retroceso/Borrar"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Sangra-las novas liñas automáticamente"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Cut from cursor to end of line"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Non segui-las ligazóns simbólicas, sobreescribir"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Emprega-lo rato"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <dir>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<dir>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Establece-lo directorio de traballo"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Conserva-las teclas XON (^Q) e XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#cols>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#cols>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Establecer punto de corte na columna #cols"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Usar un corrector ortográfico alternativo"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Gravar ó saíren, sen preguntar"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Modo visualización (só lectura)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Non corta-las liñas longas"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Non amosa-las dúas liñas de axuda"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Permitir suspensión"
+
+#: src/nano.c:924
+#, fuzzy
+msgid "Enable soft line wrapping"
+msgstr "Axuste de liñas longas"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(iñorado, por compatibilidade con Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano versión %s (compilado %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Correo-e: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+"Opcións de compilación"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Sentímolo, desactivouse o soporte desta función"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"¿Grava-lo buffer modificado (SE RESPOSTA \"Non\" PERDERANSE OS CAMBIOS)? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Recibiuse SIGHUP ou SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Empregue \"fg\" para voltar a nano.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "activado"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "desactivado"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Comando Descoñecido"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "Iñórase XON, hmmmm..."
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "Iñórase XOFF, hmmmm..."
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "O tamaño de lingüeta solicitado \"%s\" non é válido"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "O tamaño de recheo solicitado \"%s\" non é válido"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "SsYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "TtAa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Si"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Todo"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Non"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Erro en %s na liña %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "O argumento '%s' ten un \" sen rematar"
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr ""
+"As cadeas de expresión regular deben comezar e rematar cun carácter \" "
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Expresión regular \"%s\" incorrecta: %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Falla o nome da sintaxe"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "A sintaxe \"none\" está reservada"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "A sintaxe \"default\" non debe tomar extensións"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Falla o nome de tecla"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+#, fuzzy
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+"asociacións a combinacións de teclas deben comenzar con \"^\",\"M\", ou \"F"
+"\"\n"
+
+#: src/rcfile.c:407
+#, fuzzy
+msgid "Must specify function to bind key to"
+msgstr "Debe especifica-la función para asociar á tecla\n"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+#, fuzzy
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "Debe especifica-lo menú de asociación de tecla (ou \"all\")\n"
+
+#: src/rcfile.c:426
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Non se puido sinalar o nome \"%s\" para unha función\n"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Non se puido sinalar o nome \"%s\" para un menu\n"
+
+#: src/rcfile.c:454
+#, fuzzy, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "Síntoo, keystr \"%s\" é una asociación ilegal\n"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Non se entende a cor \"%s\".\n"
+"As cores válidas son \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" e\n"
+"\"black\", co prefixo opcional \"bright\".\n"
+"\"para cores de fronte."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr ""
+"Non se pode engadir unha directiva de cor sen unha directiva de sintaxe "
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Falla o nome da cor"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "A cor de fondo \"%s\" non pode ser relucinte"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Perdeuse a cadea de expreg"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" precisa dun \"end=\" correspondente"
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr ""
+"Non se pode engadir unha cabeceira de expresión regular sen unha directiva "
+"de sintaxe"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Erro fatal: non hai teclas sinaladas para a función \"%s\""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Saíndo. Por favor, use nano coa opción -I se precisa axeita-la súa "
+"configuración no nanorc\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "O comando \"%s\" non se permite no ficheiro incluído"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "A sintaxe \"%s\" non ten directiva de cor"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Non se entende o comando \"%s\""
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Falla o indicador"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "A opción \"%s\" precisa dun argumento"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "A opción non é unha cadea multibyte válida"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Se requiren caracteres non baleiros"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Se requiren dous caracteres de columna simple"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Non se pode desactiva-lo indicador \"%s\""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Indicador descoñecido \"%s\""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "¡Non podo atopa-lo meu directorio de inicio! ¡Aaagh!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "non se atopou \"%.*s%s\""
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr "(para substituír) na selección"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr "(para substituír)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "¿Substituír?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Substituír por"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Fíxose %lu substitución"
+msgstr[1] "Fixéronse %lu substitucións"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Introduza liña número, columna número"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Número de liña ou columna non válida"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Non hai delimitador"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Non hai parella do delimitador"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Marca activada"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Marca desactivada"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Buffer para desfacer baleiro"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+"Erro interno: non podo atopar a liña %d. Por favor, grave o seu traballo "
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "engadir texto"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "borrar texto"
+
+#: src/text.c:489 src/text.c:628
+#, fuzzy
+msgid "line wrap"
+msgstr "Axuste de liñas longas"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "unir liña"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "cortar texto"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "repór texto"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "inserir texto"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "substituir texto"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Erro interno: tipo descoñecido. Por favor, grave o seu traballo"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Desfíxose a acción (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Nada para refacer"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+"Erro interno: fallou a configuracion de refacer. Por favor, grave o seu "
+"traballo "
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "A Acción (%s) refíxose"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Non se puido crear unha canle"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Non se puido iniciar outro proceso"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+"Erro interno: non podo arranxa-la reposición de texto. Por favor, grave o "
+"seu traballo."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Erro interno: tipo descoñecido. Por favor, grave o seu traballo"
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Cadea de cita %s incorrecta: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "¡Agora pode De-Xustificar!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Editar unha substitución"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Non se puido crear unha canle"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Creando a lista de palabras mal escritas, por favor, espere..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Non se puido obte-lo tamaño do buffer da canle"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Erro ó chamar \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Erro ó chamar \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Erro ó chamar \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Rematou a corrección ortográfica"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Erro ó chamar \"%s\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Fallou a revisión ortográfica: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Fallou a corrección ortográfica: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sVerbas: %lu Liñas: %ld Caracteres: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "In Selección: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "¡A nano esgotóuselle a memoria!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Entrada Unicode"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Modificado"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Ver"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "DIR:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Ficheiro:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "liña %ld/%ld (%d%%), col %lu/%lu (%d%%), car %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "O editor de texto nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "versión"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Por cortesía de:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Gracias en especial a:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "A Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Por ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "e a todos os que esquencemos..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "¡Gracias por usar nano!"
+
+#~ msgid "line split"
+#~ msgstr "dividir liña"
diff --git a/po/hu.gmo b/po/hu.gmo
new file mode 100644
index 0000000..278074e
--- /dev/null
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 0000000..bfbce8f
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,2120 @@
+# Hungarian translation of nano
+# This file is distributed under the same license as the nano package.
+# Copyright (C) 2001, 2002, 2006, 2008, 2009, 2010 Free Software Foundation, Inc.
+#
+# Szabolcs Horvath <horvaths@fi.inf.elte.hu>, 2001.
+# Gergely Nagy <algernon@debian.org>, 2002.
+# SZERVÃC Attila <sas@321.hu>, 2006.
+# Gabor Kelemen <kelemeng@gnome.hu>, 2006, 2008, 2009, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.2pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-03-03 12:57+0100\n"
+"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
+"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Könyvtárváltás"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Megszakítva"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Korlátozott módban nem léphet ki a következőből: %s"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Hiba %s olvasásakor: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Nem lehet egy könyvtárral feljebb lépni"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(könyvtár)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(szülőkvt)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Keresés"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [kis/Nagy]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Regexp]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Vissza]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "A keresés körbeért"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Ez az egyetlen előfordulás"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Nincs keresési minta"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Nem szúrható be fájl a következőn kívülről: %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Nincs több nyitott fájlpuffer"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Ãtváltva erre: %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Új puffer"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "%lu sor beolvasva (DOS és Mac formátumról átalakítva)"
+msgstr[1] "%lu sor beolvasva (DOS és Mac formátumról átalakítva)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"%lu sor beolvasva (DOS és Mac formátumról átalakítva - Figyelmeztetés: nincs "
+"írásjog)"
+msgstr[1] ""
+"%lu sor beolvasva (DOS és Mac formátumról átalakítva - Figyelmeztetés: nincs "
+"írásjog)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "%lu sor beolvasva (Mac formátumról átalakítva)"
+msgstr[1] "%lu sor beolvasva (Mac formátumról átalakítva)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"%lu sor beolvasva (Mac formátumról átalakítva - Figyelmeztetés: nincs "
+"írásjog)"
+msgstr[1] ""
+"%lu sor beolvasva (Mac formátumról átalakítva - Figyelmeztetés: nincs "
+"írásjog)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "%lu sor beolvasva (DOS formátumról átalakítva)"
+msgstr[1] "%lu sor beolvasva (DOS formátumról átalakítva)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"%lu sor beolvasva (DOS formátumról átalakítva - Figyelmeztetés: nincs "
+"írásjog)"
+msgstr[1] ""
+"%lu sor beolvasva (DOS formátumról átalakítva - Figyelmeztetés: nincs "
+"írásjog)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "%lu sor beolvasva"
+msgstr[1] "%lu sor beolvasva"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "%lu sor beolvasva (Figyelmeztetés: nincs írásjog)"
+msgstr[1] "%lu sor beolvasva (Figyelmeztetés: nincs írásjog)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Fájl beolvasása"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Új fájl"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "„%s†nem található"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "„%s†egy könyvtár"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "A(z) „%s†egy eszközfájl"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Az új pufferben futtatandó parancs [ebből: %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Futtatandó parancs [ebből: %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Az új pufferbe szúrandó fájl [ebből: %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Beszúrandó fájl [ebből: %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "A billentyű illegális nem többpufferes módban"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Nem lehet a következőn kívülre írni: %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"Nem lehet szimbolikus link elé vagy mögé szúrni, ha a --nofollow be van "
+"állítva"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Hiba a biztonságimentés-fájl (%s) írásakor: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Túl sok biztonsági mentés van?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Hiba „%s†írása közben: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Hiba az ideiglenes fájl írásakor: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "%lu sor kiírva"
+msgstr[1] "%lu sor kiírva"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS formátum]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac formátum]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Biztonsági mentés]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "A kiválasztott rész beszúrása a szöveg elé"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "A kiválasztott rész hozzáfűzése a fájlhoz"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "A kiválasztott rész mentése fájlba"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Beszúrás ezen fájl elé"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Hozzáfűzés ehhez a fájlhoz"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Mentés ebbe a fájlba"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "A fájl már létezik, FELÃœLÃRJA? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Menti a fájlt MÃS NÉVEN? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "A fájl módosult, mióta megnyitotta, folytatja a mentést?"
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(tovább)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"A nano indításának folytatásához nyomja le az Enter billentyűt.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Mégsem"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Csere"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Nincs csere"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Kis/Nagy"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Vissza"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Regkif"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "ElőzőElőzm"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "KövElőzm"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Ugrás szövegre"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Következőre"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Első fájl"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Utolsó fájl"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Tallózás"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS formátum"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac formátum"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Hozzáfűz"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Elejére beszúrás"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Bizt. fájlmentés"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Parancs végrehajtása"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Könyvtárba"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Súgó"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Kilépés"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Keresés"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Előző old."
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Köv. old."
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Első sor"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Utolsó sor"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Felfüggesztés"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Bek. kezdete"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Bek. vége"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "Sorkizár"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Frissít"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Fájl beszúrása"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Ugrás sorra"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Aktuális bekezdés sorkizárttá rendezése"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Aktuális művelet megszakítása"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Ezen súgószöveg megjelenítése"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Aktuális fájlpuffer bezárása/Kilépés a nanoból"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Kilépés a nanoból"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Az aktuális fájl lemezre mentése"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Másik fájl beszúrása"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Karakterlánc vagy reguláris kifejezés keresése"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Ugrás az előző oldalra"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Ugrás a következő oldalra"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Aktuális sor kivágása és tárolása a kivágási pufferben"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "A kivágási pufferben lévő sor beillesztése az aktuális sorba"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "A kurzor helyének megjelenítése"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "A helyesírás-ellenőrző indítása, ha elérhető"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Karakterlánc vagy reguláris kifejezés cseréje"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Ugrás megadott pozícióra"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "A kurzornál lévő szöveg kijelölése"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Az utolsó keresés megismétlése"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Aktuális sor másolása és tárolása a kivágási pufferben"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Aktuális sor behúzása"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Aktuális sor behúzásának megszüntetése"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Utolsó művelet visszavonása"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Az utoljára visszavont művelet ismétlése"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Egy karakterrel előre"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Egy karakterrel vissza"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Egy szóval előre"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Egy szóval vissza"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Az előző sorra"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "A következő sorra"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "A sor elejére"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "A sor végére"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "A bekezdés elejére; majd az előző bekezdésére"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "A bekezdés végére; majd a következő bekezdésére"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "A fájl első sorára"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "A fájl utolsó sorára"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Az illeszkedő zárójelre"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Görgetés egy sorral fel a kurzor görgetése nélkül"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Görgetés egy sorral le a kurzor görgetése nélkül"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Váltás az előző fájlpufferre"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Váltás a következő fájlpufferre"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "A következő billentyűleütés szó szerinti beszúrása"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Tabulátor beszúrása a kurzor helyére"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Új sor beszúrása a kurzor helyére"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "A kurzor helyén lévő karakter törlése"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "A kurzor előtt álló karakter törlése"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Kivágás a kurzortól a fájl végéig"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Az egész fájl sorkizárttá rendezése"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "A szavak, sorok és karakterek megszámolása"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "A képernyő frissítése"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "A szerkesztő felfüggesztése (ha engedélyezett)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "A keresés kis- és nagybetűérzékenységének átváltása"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "A keresés irányának megfordítása"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Reguláris kifejezések használatának átváltása"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Az előző kereső- vagy cserekifejezés előhozása"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "A következő kereső- vagy cserekifejezés előhozása"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Tallózás"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "DOS formátum használatának átváltása"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Mac formátum használatának átváltása"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Hozzáfűzés átváltása"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Elejére beszúrás átváltása"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Eredeti fájlról biztonsági másolat készítésének átváltása"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Külső parancs végrehajtása"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Új puffer használatának átváltása"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Kilépés a fájlböngészőből"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Ugrás a lista első fájljára"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Ugrás a lista utolsó fájljára"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "Ugrás a lista következő fájljára"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "Ugrás a lista előző fájljára"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Könyvtárváltás"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Bezárás"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Mentés"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Sorkizárás"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Beolvasás"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Kivágás"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Nem sork."
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Beillesztés"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Pozíció"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Helyes-e?"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Kijelöl"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Szöveg másolása"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Szövegbehúzás"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Szövegbehúzás megsz."
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Vissza"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Újra"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Előre"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Vissza"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Köv. szó"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Előző szó"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Előző sor"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Köv. sor"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Eleje"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Vége"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Másik zárójel megkeresése"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Görgetés fel"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Görgetés le"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Előző fájl"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Következő fájl"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Szó szerinti bevitel"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tabulátor"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Törlés"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Visszalép"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "KivágAVégéig"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Szavak száma"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Súgó mód"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Kurzor pozíciójának állandó mutatása"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Eggyel több sor használata a szerkesztéshez"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Egyenletes görgetés"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Üreshely karakterek megjelenítése"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Színes szintaxiskiemelés"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Intelligens home billentyű"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Automatikus igazítás"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Kivágás a végéig"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Hosszú sorok tördelése"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Bevitt tabulátorok szóközzé alakítása"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Fájlok biztonsági mentése"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Több fájlpuffer"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Egér támogatása"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Ne legyen átalakítás DOS/Mac formátumból"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Felfüggesztés"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "Laza sortördelés"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Keresés parancs súgója\n"
+"\n"
+" Ãrja be a szavakat vagy karaktereket, melyekre keresni szeretne, majd "
+"nyomjon entert. Ha van találat a keresett szövegre, akkor a képernyő a "
+"legközelebbi találatot fogja mutatni.\n"
+"\n"
+" Az előző keresési kifejezés a keresés után zárójelben meg lesz jelenítve. "
+"Új szöveg beírása nélkül Entert ütve az előző keresés lesz megismételve. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Ha a szöveg kijelölővel lett kiválasztva és ezután keres és cserél, csak a "
+"kijelölt szöveg találatai lesznek cserélve.\n"
+"\n"
+" Kereső módban a következő funkcióbillentyűk állnak rendelkezésre:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Sorra ugrás súgója\n"
+"\n"
+" Ãrja be annak a sornak a számát, melyre ugrani kíván, majd nyomjon entert. "
+"Ha a beírt számnál kevesebb sor van, akkor az utolsó sorra fog pozicionálni "
+"a szerkesztő.\n"
+"\n"
+" Sorra ugrás módban a következő funkcióbillentyűk állnak rendelkezésre:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Fájlbeszúrás súgója\n"
+"\n"
+" Ãrja be az aktuális fájlpufferben az aktuális kurzorpozícióba illesztendÅ‘ "
+"fájl nevét.\n"
+"\n"
+" Ha a nano több fájlpuffer támogatásával lett fordítva, és ezt akár a -F, "
+"vagy a --multipuffer parancssori kapcsolók, akár a Meta-F gomb, akár a "
+"nanorcben beállított kapcsoló bekapcsolta, akkor egy fájl beszúrásakor az "
+"külön pufferbe fog betöltődni (melyek között a Meta-< és > gombokkal lehet "
+"navigálni). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Ha egy új, üres pufferre van szüksége, ne adjon meg fájlnevet vagy írja be a "
+"mezőbe egy nem létező fájl nevét és nyomja le az entert.\n"
+"\n"
+" Fájlbeszúrás módban a következő funkcióbillentyűk állnak rendelkezésre:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Fájlmentés súgója\n"
+"\n"
+" Ãrja be a nevet, amelyen el kívánja menteni az aktuális fájlt, majd nyomjon "
+"entert a mentéshez.\n"
+"\n"
+" Ha szöveget jelölt ki a kijelölő mód használatával, akkor a program meg "
+"fogja kérdezni, hogy csak a kijelölt részt akarja-e menteni. Az aktuális "
+"fájl annak csak egy kijelölt részével való felülírásának esélyét "
+"csökkentendő, ebben a módban nem az aktuális fájlnév lesz az "
+"alapértelmezett.\n"
+"\n"
+" Fájlmentés módban a következő funkcióbillentyűk állnak rendelkezésre:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Fájlböngésző súgója\n"
+"\n"
+" A fájlböngésző használható arra, hogy a fájl-struktúrában böngészve "
+"lehessen kiválasztani az egyes fájlokat olvasáshoz, vagy mentéshez. "
+"Mozgáshoz a kurzormozgató gombok, valamint a Page Up/Page Down gombok "
+"használhatók, a fájlt kiválasztani, vagy egy könyvtárba belépni az S vagy "
+"Enter billentyűkkel lehet. Egy szinttel feljebb a „..†könyvtárat választva "
+"lehet jutni.\n"
+"\n"
+" A fájlböngészőben a következő funkcióbillentyűk állnak rendelkezésre:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Keresés parancs súgója\n"
+"\n"
+" Ãrja be a szavakat vagy karaktereket, amelyekre keresni szeretne, majd "
+"nyomjon entert. Ha van találat a keresett szövegre, akkor a képernyő a "
+"keresett szöveg legközelebbi előfordulását fogja mutatni.\n"
+"\n"
+" Az előző keresési kifejezés a keresési prompt után zárójelben lesz\n"
+"megjelenítve. Új szöveg beírása nélkül Entert ütve az előző keresés\n"
+"kerül megismétlésre.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" A következő funkcióbillentyűk állnak rendelkezésre keresés módban:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Könyvtárváltás súgója\n"
+"\n"
+" Ãrja be a megjeleníteni kívánt könyvtár nevét.\n"
+"\n"
+" Ha a tab-kiegészités nincs kikapcsolva, akkor a tabulátor billentyűt "
+"használva megpróbálható a könyvtárnév kiegészítése.\n"
+"\n"
+" A könyvtárváltás módban a következő funkcióbillentyűk állnak "
+"rendelkezésre:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Helyesírás-ellenőrző súgója\n"
+"\n"
+" A helyesírás-ellenőrző ellenőrzi az aktuális fájl teljes szövegének "
+"helyesírását. Amikor ismeretlen szót talál, azt kiemeli, és egy "
+"helyettesítendő szót szerkesztésre kínál fel. Ezután a program felajánlja az "
+"adott elírt szó összes előfordulásának cseréjét az aktuális fájlban, vagy ha "
+"ki van jelölve szöveg, akkor abban.\n"
+"\n"
+" Helyesírás-ellenőrző módban a következő funkcióbillentyűk állnak "
+"rendelkezésre:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Parancsvégrehajtás súgója\n"
+"\n"
+" Ez a mód lehetővé teszi a parancsértelmező által futtatott parancs "
+"kimenetének beszúrását az aktuális pufferbe (vagy többpufferes mód esetén "
+"egy új pufferbe). Ha egy újabb üres pufferre van szüksége, ne adjon meg "
+"parancsot.\n"
+"\n"
+" Parancs-végrehajtási módban a következő billentyűk állnak rendelkezésre:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"A nano fő súgószövege\n"
+"\n"
+" A nano szerkesztő az UW Pico szerkesztő funkcionalitásának és könnyű "
+"kezelhetőségének emulálására lett tervezve. A szerkesztőnek négy nagy része "
+"van: A felső sor mutatja a program verzióját, az éppen szerkesztett fájl "
+"nevét, és hogy a fájl módosítva van-e. A következő a fő szerkesztő-ablak, "
+"amely az épp szerkesztett fájl mutatja. Az állapotsor alulról a harmadik "
+"sor, és fontos üzeneteket jelenít meg. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Az alsó két sor a szerkesztőben leggyakrabban használt gyorsbillentyűket "
+"tartalmazza.\n"
+"\n"
+" A gyorsbillentyűk jelölése a következő: A Control billentyű sorozatait egy "
+"hiányjel (^) jelöli, és vagy a Control (Ctrl) billentyűvel, vagy az Escape "
+"(Esc) billentyű kétszeri megnyomásával vihető be. Az Escape billentyű "
+"sorozatai a Meta (M) szimbólum jelöli és az Esc, Alt vagy Meta billentyűk "
+"egyikével vihető be, a billentyűzet beállításaitól függően. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Ezen kívül az Esc kétszeri megnyomása és egy 000 és 255 közötti háromjegyű "
+"decimális szám beírása a megfelelő értékű karaktert fogja bevinni. A "
+"következő billentyűkombinációk élnek a fő szerkesztőablakban. Az alternatív "
+"billentyűk zárójelben vannak megjelenítve:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "be/kikapcsolása"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "A billentyű illegális megjelenítés módban"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"A puffer a(z) %s fájlba írva\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"A puffer nem lett a(z) %s fájlba írva: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"A puffer nem került mentésre: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Az ablak mérete túl kicsi a nanonak…\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Használat: nano [KAPCSOLÓK] [[+SOR,OSZLOP] FÃJL]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Kapcsoló\t\tGNU hosszú kapcsoló\t\tJelentés\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Kapcsoló\t\tJelentés\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Ezen üzenet kiírása"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+SOR,OSZLOP"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "A SOR. sorban és OSZLOP. oszlopban kezd"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Okos home billentyű engedélyezése"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr ""
+"Meglévő fájlokról biztonsági másolatok\n"
+"\t\t\t\t\t mentése"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <könyvtár>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<könyvtár>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr ""
+"Az egyedi biztonsági mentés fájlok\n"
+"\t\t\t\t\t mentési könyvtára"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr ""
+"Félkövér használata invertált szöveg\n"
+"\t\t\t\t\t helyett"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr ""
+"Beírt tab karakterek átalakítása\n"
+"\t\t\t\t\t szóközökké"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Több fájlpuffer engedélyezése"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr ""
+"Keresés/csere előzményeinek naplózása\n"
+"\t\t\t\t\t és olvasása"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "nanorc fájlok keresésének kihagyása"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr ""
+"A numerikus billentyűzet zavarainak\n"
+"\t\t\t\t\t javítása"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Ne adjon új sorokat a fájlok végéhez"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr ""
+"Ne alakítsa át a fájlokat DOS/Mac\n"
+"\t\t\t\t\t formátumról"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr ""
+"Eggyel több sor használata a\n"
+"\t\t\t\t\t szerkesztéshez"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <szöveg>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<szöveg>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Idézetszöveg"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Korlátozott mód"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Görgetés soronként fél képernyő helyett"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#oszlop>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#oszlop>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr ""
+"A tabulátorszélesség legyen #oszlop\n"
+"\t\t\t\t\t oszlop"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Törölje gyorsan az állapotsort"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Verziószám kiírása és kilépés"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Szóhatárok pontosabb észlelése"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <szöveg>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<szöveg>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr ""
+"A színezéshez használandó\n"
+"\t\t\t\t\t szintaxisleírás"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Kurzor pozíciójának állandó mutatása"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Visszatörlés/törlés zavarainak javítása"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Új sorok automatikus behúzása"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Kivágás a kurzor helyétől a sor végéig"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr ""
+"Szimbolikus linkek követése helyett\n"
+"\t\t\t\t\t felülírás"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Egér használatának engedélyezése"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <könyvtár>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<könyvtár>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Munkakönyvtár beállítása"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr ""
+"XON (^Q) és XOFF (^S) billentyűk\n"
+"\t\t\t\t\t megőrzése"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "Indítási hibák, például rc-fájlhibák csendes mellőzése"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#oszlop>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#oszlop>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Töréspont beállítása a #oszlop oszlopnál"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr ""
+"Alternatív helyesírás-ellenőrző\n"
+"\t\t\t\t\t használata"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Automatikus mentés kilépéskor"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "Ãltalános visszavonás engedélyezése [KÃSÉRLETI]"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Megjelenítés mód (csak olvasható)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Ne tördelje a hosszú sorokat"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "A két súgósor elrejtése"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Felfüggesztés engedélyezése"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "Laza sortördelés engedélyezése"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr ""
+"(A Pico kompatibilitás érdekében\n"
+"\t\t\t\t\t mellőzve)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano %s verzió. (fordítva: %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " E-mail: nano@nano-editor.org\tWeb: http://www.nano-editor.org"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Fordítási kapcsolók:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Elnézést, a funkció támogatása ki van kapcsolva"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"Menti a változtatásokat („NEM†VÃLASZ ESETÉN MINDEN MÓDOSÃTÃS ELVÉSZ)? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "Az stdin nem nyitható újra a billentyűzetről.\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Olvasás stdinről, ^C megszakítja\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "SIGHUP vagy SIGTERM érkezett\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Az „fg†kiadásával visszatérhet a nanohoz.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "engedélyezve"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "kikapcsolva"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Ismeretlen parancs"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON kihagyva, ej-ej"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF kihagyva, ej-ej"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "A kért „%s†tabméret érvénytelen"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "A kért „%s†kitöltésméret érvénytelen"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "IiYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "MmAa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Igen"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Mindet"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Nem"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Hiba a(z) %s %lu. sorában: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "A(z) „%s†argumentum lezáratlan \" jellel rendelkezik"
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "A reguláris kifejezéseknek \" karakterekkel kezdődniük és végződniük"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Hibás regex: „%sâ€: %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Hiányzó szintaxisnév"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "A „nincs†szintaxis fenn van tartva"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "Az „alapértelmezett†szintaxis nem vehet fel kiterjesztéseket"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Hiányzó kulcsnév"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+"a billentyűtársításoknak a „^â€, „Mâ€, vagy „F†egyikével kell kezdÅ‘dniük"
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "Meg kell adnia a funkciót, amelyhez billentyűt kíván kötni"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+"Meg kell adnia a menüt, amelyhez billentyűt kíván kötni (vagy az „all†"
+"értéket)"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "A név („%sâ€) nem képezhetÅ‘ le funkcióra"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "A név („%sâ€) nem képezhetÅ‘ le menüre"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "A billentyű-karakterlánc („%sâ€) nem érvényes kötés"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"A(z) „%s†szín nem értelmezhető.\n"
+"A megengedett színek: „greenâ€, „redâ€, „blueâ€,\n"
+"„whiteâ€, „yellowâ€, „cyanâ€, „magenta†és \n"
+"„blackâ€, opcionális „bright†elÅ‘taggal az elÅ‘térszínekhez."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Nem adható meg színparancs szintaxissor nélkül"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Hiányzik a szín neve"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "A(z) „%s†háttérszín nem lehet világos"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Hiányzó regex karaktersorozat"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "„start=†-hoz kell egy megfelelÅ‘ „end=â€"
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Nem adható meg fejléc regex szintaxisparancs nélkül"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Végzetes hiba: nincsenek billentyűk leképezve a függvényhez („%sâ€)"
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Kilépés. Használja a nanot a -I kapcsolóval, ha módosítani kívánja a nanorc "
+"beállításait\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "A(z) „%s†parancs nem engedélyezett a tartalmazott fájlban"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "A(z) „%s†szintaxis nem rendelkezik színparancsokkal"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "A(z) „%s†parancs nem értelmezhető"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Hiányzik a jelző"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "A(z) „%s†kapcsoló egy paramétert igényel"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "A kapcsoló nem érvényes több bájtos karaktersorozat"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Nem üres karakterek szükségesek"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Két egyoszlopos karakter szükséges"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "A(z) „%s†jelző nem állítható vissza"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Ismeretlen jelzÅ‘: „%sâ€"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Nincs meg a saját könyvtár! Hopp!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "A(z) „%.*s%s†nem található"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (cseréhez) a kijelölésben"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (cseréhez)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Lecseréli ezt a találatot?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Csere ezzel"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "%lu előfordulás cserélve"
+msgstr[1] "%lu előfordulás cserélve"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Kérem a sor, oszlop számát"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Érvénytelen sor- vagy oszlopszám"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Nem zárójel"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Nincs illeszkedő zárójel"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Kijelölés kezdete"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Kijelölés vége"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "A visszavonási puffer üres!"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr "Belső hiba: a(z) %d. sor nem illeszthető. Mentse a munkáját."
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "szöveg hozzáadása"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "szöveg törlése"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "sorok körbefuttatása"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "sorok egyesítése"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "szöveg kivágása"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "kivágás visszavonása"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "sortörés"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "szöveg beszúrása"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "szöveg cseréje"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Belső hiba: ismeretlen típus. Mentse a munkáját."
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Művelet visszavonva (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Nincs mit ismételni."
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr "Belső hiba: a visszavonás beállítása sikertelen. Mentse a munkáját."
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Művelet megismételve (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Nem küldhető tovább"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Nem forkolható"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+"Belső hiba: a kivágás visszavonása nem állítható be. Mentse a munkáját."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Belső hiba: ismeretlen típus. Mentse a munkáját."
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Hibás idézetszöveg: %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Most már lehet nem sorkizárttá tenni!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "A helyettesítő érték módosítása"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Nem hozható létre a cső"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Elgépelt szavak listájának létrehozása, kis türelmet..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Nem kérhető le a csőpuffer mérete"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Hiba a „spell†meghívásakor"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Hiba a „sort -f†meghívásakor"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Hiba a „uniq†meghívásakor"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "A helyesírás-ellenőrzés befejeződött"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Hiba a(z) „%s†meghívásakor"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "A helyesírás-ellenőrzés meghiúsult: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "A helyesírás-ellenőrzés meghiúsult: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sSzavak: %lu Sorok: %ld Karakterek: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "A kiválasztásban: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano: elfogyott a memória!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Unicode bevitel"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Módosítva"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Nézet"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "Könyvtár:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Fájl:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "sor %ld/%ld (%d%%), oszlop %lu/%lu (%d%%), karakter %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "A nano szövegszerkesztő"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "verzió"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Fejlesztők:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Külön köszönet:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "A Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Az ncurses számára:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "és mindenkinek, akit kifelejtettünk volna..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Köszönjük, hogy a nano-t választotta!"
diff --git a/po/id.gmo b/po/id.gmo
new file mode 100644
index 0000000..1c84cd6
--- /dev/null
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
new file mode 100644
index 0000000..8006e27
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,2552 @@
+# nano 1.2.1 (Indonesian)
+# Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Tedi Heriyanto <tedi_h@gmx.net>, 2001, 2002, 2003
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.2.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2003-04-23 09:41+0000\n"
+"Last-Translator: Tedi Heriyanto <tedi_h@gmx.net>\n"
+"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: KBabel 0.9.6\n"
+
+#: src/browser.c:220
+#, fuzzy
+msgid "Go To Directory"
+msgstr "Ke Direktori"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Dibatalkan"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Tidak dapat keluar %s dalam mode terbatas"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, fuzzy, c-format
+msgid "Error reading %s: %s"
+msgstr "Quote string buruk %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Tidak dapat memindahkan direktori"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr ""
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Cari"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Case Sensitive]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Regexp]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Backwards]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Pancarian Di-wrapped"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Hanya ini adanya"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr ""
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Tidak dapat menyisipkan file dari luar %s"
+
+#: src/files.c:234
+#, fuzzy
+msgid "No more open file buffers"
+msgstr "Tidak ada file yang terbuka lagi"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Beralih ke %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Buffer baru"
+
+#: src/files.c:633
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Baca %d baris (Dikonversi dari format Mac)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "Baca %d baris (Dikonversi dari format Mac)"
+
+#: src/files.c:644
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Baca %d baris (Dikonversi dari format Mac)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Baca %d baris (Dikonversi dari format Mac)"
+
+#: src/files.c:654
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Membaca %d baris (Konversi dari format DOS)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Membaca %d baris (Konversi dari format DOS)"
+
+#: src/files.c:664
+#, fuzzy, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Membaca %d baris"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Membaca File"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "File Baru"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" tidak ditemukan"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" adalah sebuah direktori"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, fuzzy, c-format
+msgid "\"%s\" is a device file"
+msgstr "File \"%s\" adalah sebuah file device"
+
+#: src/files.c:817
+#, fuzzy, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "File yang akan disisipkan ke buffer baru [dari %s] "
+
+#: src/files.c:819
+#, fuzzy, c-format
+msgid "Command to execute [from %s] "
+msgstr "Perintah untuk dieksekusi "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "File yang akan disisipkan ke buffer baru [dari %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "File yang akan disisipkan [dari %s] "
+
+#: src/files.c:1077
+#, fuzzy
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Kunci ilegal dalam mode non-multibuffer"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Tidak dapat menulis di luar %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr ""
+
+#: src/files.c:1582 src/nano.c:701
+#, fuzzy
+msgid "Too many backup files?"
+msgstr ""
+"\n"
+"No %s ditulis (terlalu banyak file backup?)\n"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, fuzzy, c-format
+msgid "Error writing %s: %s"
+msgstr "Quote string buruk %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr ""
+
+#: src/files.c:1900
+#, fuzzy, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Menulis %d baris"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS Format]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac Format]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Backup]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Menambahkan Pilihan ke File"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Menambahkan Pilihan ke File"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Menulis Pilihan ke File"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Nama file yang akan ditambah ke"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Nama file yang akan ditambah ke"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Nama File untuk di-Tulis"
+
+#: src/files.c:2153
+#, fuzzy
+msgid "File exists, OVERWRITE ? "
+msgstr "File ada, DITIMPA ?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr ""
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(lagi)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Tekan return untuk lanjut memulai nano\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Batal"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Ganti"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Tiada Replace"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Case Sens"
+
+#: src/global.c:421
+#, fuzzy
+msgid "Backwards"
+msgstr " [Backwards]"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Regexp"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+#, fuzzy
+msgid "PrevHstory"
+msgstr "Sejarah"
+
+#: src/global.c:452
+#, fuzzy
+msgid "NextHstory"
+msgstr "Sejarah"
+
+#: src/global.c:453
+#, fuzzy
+msgid "Go To Text"
+msgstr "Ke baris"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+#, fuzzy
+msgid "WhereIs Next"
+msgstr "Di mana"
+
+#: src/global.c:457
+#, fuzzy
+msgid "First File"
+msgstr "Baris pertama"
+
+#: src/global.c:458
+#, fuzzy
+msgid "Last File"
+msgstr "Baris terakhir"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Ke File"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Format DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Format Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Tambah"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Tambah"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Backup File"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Eksekusi Perintah"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Ke Direktori"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Bantuan"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Keluar"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Di mana"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Hlm sebelumnya"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Hlm berikutnya"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Baris pertama"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Baris terakhir"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Tunda"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr ""
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr ""
+
+#: src/global.c:491
+#, fuzzy
+msgid "FullJstify"
+msgstr "Justifikasi"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Refresh"
+
+#: src/global.c:495
+#, fuzzy
+msgid "Insert File"
+msgstr "File Sesudahnya"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Ke baris"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Justifikasi paragraf saat ini"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Batalkan fungsi ini"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr ""
+
+#: src/global.c:509
+#, fuzzy
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Tutup file yang sedang dimuat/Keluar dari nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Keluar dari nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Tulis file sekarang ke disk"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Sertakan file lain ke file saat ini"
+
+#: src/global.c:519
+#, fuzzy
+msgid "Search for a string or a regular expression"
+msgstr "Gunakan Regular expression"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "Pindah ke layar sebelumnya"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "Pindah ke layar berikutnya"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Hapus baris saat ini dan taruh dalam cutbuffer"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Kembalikan dari cutbuffer ke baris saat ini"
+
+#: src/global.c:527
+#, fuzzy
+msgid "Display the position of the cursor"
+msgstr "Tampilkan posisi kursor"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Panggil spell checker (jika ada)"
+
+#: src/global.c:531
+#, fuzzy
+msgid "Replace a string or a regular expression"
+msgstr "Gunakan Regular expression"
+
+#: src/global.c:532
+#, fuzzy
+msgid "Go to line and column number"
+msgstr "Ke nomor baris tertentu"
+
+#: src/global.c:534
+#, fuzzy
+msgid "Mark text at the cursor position"
+msgstr "Tandai teks pada lokasi kursor saat ini"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr ""
+
+#: src/global.c:537
+#, fuzzy
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Hapus baris saat ini dan taruh dalam cutbuffer"
+
+#: src/global.c:538
+#, fuzzy
+msgid "Indent the current line"
+msgstr "Tambahkan ke file saat ini"
+
+#: src/global.c:539
+#, fuzzy
+msgid "Unindent the current line"
+msgstr "Tambahkan ke file saat ini"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "Pindah satu karakter ke depan"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "Pindah satu karakter ke belakang"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "Ke depan satu kata"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "Ke belakang satu kata"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "Pindah ke layar sebelumnya"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "Turun satu baris"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "Pindah ke awal baris ini"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "Pindah ke akhir baris ini"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr ""
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr ""
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Ke baris terawal file"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Ke baris terakhir file"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "Tidak ada tanda kurung yang cocok"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:572
+#, fuzzy
+msgid "Switch to the previous file buffer"
+msgstr "Pindah ke layar sebelumnya"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr ""
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr ""
+
+#: src/global.c:579
+#, fuzzy
+msgid "Insert a tab at the cursor position"
+msgstr "Sertakan carriage return di posisi kursor"
+
+#: src/global.c:581
+#, fuzzy
+msgid "Insert a newline at the cursor position"
+msgstr "Sertakan carriage return di posisi kursor"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Hapus karakter pada kursor"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Hapus satu karakter di kiri kursor"
+
+#: src/global.c:588
+#, fuzzy
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Kembalikan dari cutbuffer ke baris saat ini"
+
+#: src/global.c:591
+#, fuzzy
+msgid "Justify the entire file"
+msgstr "Justifikasi paragraf saat ini"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr ""
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Refresh (redraw) layar saat ini"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr ""
+
+#: src/global.c:605
+#, fuzzy
+msgid "Reverse the direction of the search"
+msgstr "Tampilkan posisi kursor"
+
+#: src/global.c:609
+#, fuzzy
+msgid "Toggle the use of regular expressions"
+msgstr "Gunakan Regular expression"
+
+#: src/global.c:613
+#, fuzzy
+msgid "Recall the previous search/replace string"
+msgstr "Edit string search/replace sebelumnya"
+
+#: src/global.c:615
+#, fuzzy
+msgid "Recall the next search/replace string"
+msgstr "Edit string search/replace sebelumnya"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Ke browser file"
+
+#: src/global.c:621
+#, fuzzy
+msgid "Toggle the use of DOS format"
+msgstr "Tulis file dalam format DOS"
+
+#: src/global.c:622
+#, fuzzy
+msgid "Toggle the use of Mac format"
+msgstr "Tulis file dalam format Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr ""
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr ""
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr ""
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Eksekusi perintah eksternal"
+
+#: src/global.c:633
+#, fuzzy
+msgid "Toggle the use of a new buffer"
+msgstr "Pilih insert ke buffer baru"
+
+#: src/global.c:636
+#, fuzzy
+msgid "Exit from the file browser"
+msgstr "Ke browser file"
+
+#: src/global.c:638
+#, fuzzy
+msgid "Go to the first file in the list"
+msgstr "Ke baris terawal file"
+
+#: src/global.c:640
+#, fuzzy
+msgid "Go to the last file in the list"
+msgstr "Ke baris terakhir file"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Ke baris terakhir file"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Ke baris terawal file"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Ke Direktori"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Tutup"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Tulis"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Justifikasi"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Baca File"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Ptng Teks"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "UnJustifikasi"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+#, fuzzy
+msgid "UnCut Text"
+msgstr "UnCut Teks"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Pos Kursor"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Mengeja"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Tandai Teks"
+
+#: src/global.c:777
+#, fuzzy
+msgid "Copy Text"
+msgstr "Ptng Teks"
+
+#: src/global.c:780
+#, fuzzy
+msgid "Indent Text"
+msgstr "Ptng Teks"
+
+#: src/global.c:783
+#, fuzzy
+msgid "Unindent Text"
+msgstr "UnCut Teks"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Depan"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Belakang"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Kata Berikut"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Kata Sebelum"
+
+#: src/global.c:824
+#, fuzzy
+msgid "Prev Line"
+msgstr "Hlm sebelumnya"
+
+#: src/global.c:827
+#, fuzzy
+msgid "Next Line"
+msgstr "File Sesudahnya"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Awal"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Akhir"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Cari Kurung Lain"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr ""
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr ""
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "File Sebelumnya"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "File Sesudahnya"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr ""
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Hapus"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Backspace"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr ""
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr ""
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Mode bantuan"
+
+#: src/global.c:1369
+#, fuzzy
+msgid "Constant cursor position display"
+msgstr "Posisi kursor konstan"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr ""
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Scrolling halus"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr ""
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Pewarnaan sintaks"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr ""
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Inden otomatis"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Cut hingga akhir"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr ""
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr ""
+
+#: src/global.c:1389
+#, fuzzy
+msgid "Backup files"
+msgstr "Backup File"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Buffer file multi"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Dukungan mouse"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Tidak ada konversi dari format DOS/Mac"
+
+#: src/global.c:1397
+#, fuzzy
+msgid "Suspension"
+msgstr "Tunda"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr ""
+
+#: src/help.c:236
+#, fuzzy
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Teks Bantuan Perintah Search\n"
+"\n"
+" Masukkan kata atau karakter yang ingin anda cari, lalu tekan enter. Jika "
+"ada teks yang cocok,layar akan diupdate untuk menunjukkan lokasi kecocokan "
+"yang terdekat bagi string yang dicari.\n"
+"\n"
+"String yang dicari sebelumnya akan ditunjukkan dalam tanda kurung setelah "
+"prompt Search:. Penekanan tombol enter tanpa memasukkan sembarang teks akan "
+"melakukan pencarian sebelumnya. \n"
+" Tombol-tombol fungsi berikut tersedia dalam mode Search:\n"
+"\n"
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Teks Bantuan Goto Line\n"
+"\n"
+" Masukkan nomor baris yang ingin anda tuju dan tekan Enter. Jika baris teks "
+"lebih sedikit daripada nomor yang anda masukkan, anda akan dibawa ke baris "
+"terakhir file.\n"
+"\n"
+" Tombol-tombol fungsi berikut tersedia dalam mode Goto Line:\n"
+"\n"
+
+#: src/help.c:260
+#, fuzzy
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Teks Bantuan Insert File\n"
+"\n"
+" Ketikkan nama file yang akan disisipkan ke dalam buffer file saat ini pada "
+"lokasi kursor sekarang.\n"
+"\n"
+" Jika anda mengkompilasi nano dengan dukungan multiple file buffer, dan "
+"menyertakan multiple buffer dengan flag perintah baris -F atau --"
+"multibuffer, toggle Meta-F atau menggunakan file nanorc, penyisipan sebuah "
+"file akan menyebabkan ia dimuat dalam buffer berbeda (gunakan Meta-< dan > "
+"untuk berpindah antar buffer file).\n"
+"\n"
+" Jika anda butuh buffer kosong lainnya, tekan saja Enter di prompt tanpa "
+"memberikan nama file, atau ketikkan nama file yang tidak ada di prompt dan "
+"tekan Enter.\n"
+"\n"
+" Kunci-kunci fungsi berikut tersedia dalam mode Insert File:\n"
+"\n"
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:275
+#, fuzzy
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Teks Bantuan Write File\n"
+"\n"
+" Ketikkan nama file untuk menyimpan file saat ini dan tekan enter untuk "
+"menyimpan file.\n"
+"\n"
+" Jika anda menggunakan kode penanda dengan Ctrl-^ dan telah memilih teks, "
+"anda akan ditanya untuk hanya menyimpan bagian yang terpilih ke file "
+"terpisah. Untuk mengurangi kemungkinan penimpaan file saat ini dengan "
+"bagiannya, nama file saat ini bukanlah bakunya dalam mode ini.\n"
+"\n"
+" Kunci-kunci fungsi berikut tersedia dalam mode Write File:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Teks Bantuan File Browser\n"
+"\n"
+" File browser digunakan untuk membrowse struktur direktori untuk memilih "
+"file untuk dibaca atau ditulis. Anda bisa menggunakan tombol panah atau "
+"Page Up/Down untuk membrowse melalui file-file, dan S atau Enter untuk "
+"memilih file atau memasuki direktori terpilih. Untuk berpindah satu level ke "
+"atas pilih direktori bernama \"..\" yang ada di bagian atas daftar file.\n"
+"\n"
+" Kunci-kunci fungsi berikut tersedia dalam file browser:\n"
+"\n"
+
+#: src/help.c:302
+#, fuzzy
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Teks Bantuan Perintah Search\n"
+"\n"
+" Masukkan kata atau karakter yang ingin anda cari, lalu tekan enter. Jika "
+"ada teks yang cocok,layar akan diupdate untuk menunjukkan lokasi kecocokan "
+"yang terdekat bagi string yang dicari.\n"
+"\n"
+"String yang dicari sebelumnya akan ditunjukkan dalam tanda kurung setelah "
+"prompt Search:. Penekanan tombol enter tanpa memasukkan sembarang teks akan "
+"melakukan pencarian sebelumnya. \n"
+" Tombol-tombol fungsi berikut tersedia dalam mode Search:\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:315
+#, fuzzy
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Teks Bantuan Browser Goto Directory\n"
+"\n"
+" Masukkan nama direktori yang ingin anda browse.\n"
+"\n"
+" Jika pelengkapan tab belum ditiadakan, anda dapat menggunakan kunci TAB "
+"untuk (berusaha) melengkapi nama direktori secara otomatis. \n"
+"\n"
+" Kunci-kunci fungsi berikut tersedia di dalam mode Browser GotoDir :\n"
+"\n"
+
+#: src/help.c:328
+#, fuzzy
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Teks Bantuan Spell Check\n"
+"\n"
+" Spell checker memeriksa ejaan semua teks dalam file saat ini. Ketika "
+"ditemukan sebuah kata tidak dikenal, ia akan disorot dan dapat digantikan. "
+"Ia kemudian akan bertanya untuk mengganti setiap keberadaan kata yang salah "
+"dalam file saat ini.\n"
+"\n"
+" Berikut ini adalah fungsi-fungsi lain yang tersedia dalam mode Spell "
+"Check:\n"
+"\n"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Teks Bantuan Perintah Eksternal\n"
+"\n"
+"Menu ini memungkinkan anda menyisipkan output perintah yang dijalankan oleh "
+"shell ke dalam buffer saat ini (atau buffer baru dalam mode multibuffer).\n"
+"\n"
+" Kunci-kunci berikut tersedia dalam mode ini:\n"
+"\n"
+
+#: src/help.c:356
+#, fuzzy
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+" teks bantuan nano\n"
+"\n"
+" Editor nano dirancang untuk meniru fungsionalitas dan kemudahan teks editor "
+"UW Pico text editor. Terdapat empat bagian utama editor: Baris atas "
+"menunjukkan versi program, nama file yang sedang diedit, dan apakah file "
+"telah dimodifikasi. Selanjutnya adalah jendela editor utama yang "
+"menunjukkan file yang sedang diedit. Baris status adalah baris ketiga dari "
+"bawah dan menunjukkan pesan-pesan penting. Dua baris terbawah menunjukkan "
+"shortcut yang paling umum digunakan dalam editor.\n"
+"\n"
+" Notasi shortcut adalah sebagai berikut : Urutan kunci Control ditunjukkan "
+"oleh simbol caret (^) dan dimasukkan dengan kunci Control (Ctrl). Urutan "
+"kunci Escape ditunjukkan dengan simbol Meta (M) dan dapat dimasukkan dengan "
+"menggunakan tombol Esc, Alt atau Meta tergantung setup keyboard anda. "
+"Kunci-kunci berikut ada dalam jendela utama editor. Kunci tambahan "
+"ditunjukkan dalam tanda kurung:\n"
+"\n"
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "enable/disable"
+
+#: src/nano.c:587
+#, fuzzy
+msgid "Key invalid in view mode"
+msgstr "Kunci ilegal dalam mode VIEW"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Buffer ditulis ke %s\n"
+
+#: src/nano.c:697
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Buffer ditulis ke %s\n"
+
+#: src/nano.c:700
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Buffer ditulis ke %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Ukuran window terlalu kecil bagi nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+
+#: src/nano.c:819
+#, fuzzy, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Opsi\t\tOpsi Panjang\t\tArti\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Opsi\t\tArti\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Tampilkan pesan ini"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr ""
+
+#: src/nano.c:826
+#, fuzzy
+msgid "Start at line LINE, column COLUMN"
+msgstr "Mulai pada nomor baris LINE"
+
+#: src/nano.c:828
+#, fuzzy
+msgid "Enable smart home key"
+msgstr "Aktifkan mouse"
+
+#: src/nano.c:829
+#, fuzzy
+msgid "Save backups of existing files"
+msgstr "Backup file yang ada ketika menyimpan"
+
+#: src/nano.c:830
+#, fuzzy
+msgid "-C <dir>"
+msgstr "-o [dir]"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr ""
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr ""
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr ""
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr ""
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Aktifkan multiple file buffer"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Log dan baca sejarah pencarian/penggantian string"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Jangan lihat file nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr ""
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr ""
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Jangan konversi file dari format DOS/Mac"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr ""
+
+#: src/nano.c:860
+#, fuzzy
+msgid "-Q <str>"
+msgstr "-Q [str]"
+
+#: src/nano.c:860
+#, fuzzy
+msgid "--quotestr=<str>"
+msgstr "--quotestr=[str]"
+
+#: src/nano.c:861
+#, fuzzy
+msgid "Quoting string"
+msgstr "String kuote, default \"> \""
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr ""
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+#, fuzzy
+msgid "-T <#cols>"
+msgstr "-r [#cols]"
+
+#: src/nano.c:868
+#, fuzzy
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=[num]"
+
+#: src/nano.c:869
+#, fuzzy
+msgid "Set width of a tab to #cols columns"
+msgstr "Set lebar tab ke num"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr ""
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Cetak informasi versi dan keluar"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr ""
+
+#: src/nano.c:880
+#, fuzzy
+msgid "-Y <str>"
+msgstr "-Y [str]"
+
+#: src/nano.c:880
+#, fuzzy
+msgid "--syntax=<str>"
+msgstr "--syntax [str]"
+
+#: src/nano.c:881
+#, fuzzy
+msgid "Syntax definition to use for coloring"
+msgstr "Definisi sintaks untuk digunakan"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Menampilkan posisi kursor secara konstan"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr ""
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Inden baris baru secara otomatis"
+
+#: src/nano.c:889
+#, fuzzy
+msgid "Cut from cursor to end of line"
+msgstr "Biarkan ^K memotong dari kursor hingga akhir baris"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Jangan ikuti link simbolik, timpa"
+
+#: src/nano.c:894
+#, fuzzy
+msgid "Enable the use of the mouse"
+msgstr "Aktifkan mouse"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "-o <dir>"
+msgstr "-o [dir]"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=[dir]"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Set direktori operasi"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Preserve kunci XON (^Q) dan XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+#, fuzzy
+msgid "-r <#cols>"
+msgstr "-r [#cols]"
+
+#: src/nano.c:905
+#, fuzzy
+msgid "--fill=<#cols>"
+msgstr "--fill=[#cols]"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr ""
+
+#: src/nano.c:909
+#, fuzzy
+msgid "-s <prog>"
+msgstr "-s [prog]"
+
+#: src/nano.c:909
+#, fuzzy
+msgid "--speller=<prog>"
+msgstr "--speller=[prog]"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Aktifkan speller alternatif"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Auto save saat keluar, jangan tanya"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+#, fuzzy
+msgid "View mode (read-only)"
+msgstr "Mode view (hanya baca)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Jangan wrap baris panjang"
+
+#: src/nano.c:922
+#, fuzzy
+msgid "Don't show the two help lines"
+msgstr "Jangan tampilkan jendela bantuan"
+
+#: src/nano.c:923
+#, fuzzy
+msgid "Enable suspension"
+msgstr "Aktifkan suspend"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr ""
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(abaikan, untuk kompatibilitas dengan Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr "GNU nano versi %s (dikompilasi %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Option kompilasi:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Maaf, dukungan untuk fungsi ini telah ditiadakan"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Simpan buffer termodifikasi (JAWAB \"No\" AKAN MENGHAPUS PERUBAHAN) ?"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Menerima SIGHUP atau SIGTERM\n"
+
+#: src/nano.c:1204
+#, fuzzy, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Gunakan \"fg\" untuk kembali ke nano"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "adakan"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "tiadakan"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr ""
+
+#: src/nano.c:1674
+#, fuzzy
+msgid "XON ignored, mumble mumble"
+msgstr "XON diabaikan, mumble mumble."
+
+#: src/nano.c:1679
+#, fuzzy
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF diabaikan, mumble mumble."
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, fuzzy, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "ukuran tab yang diminta %d tidak valid"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, fuzzy, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "ukuran fill yang diminta %d tidak valid"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Yy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Tt"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Aa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Ya"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Semua"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Tidak"
+
+#: src/rcfile.c:130
+#, fuzzy, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Kesalahan dalam %s pada baris %d: "
+
+#: src/rcfile.c:185
+#, fuzzy, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "argumen %s telah selesai.\""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+#, fuzzy
+msgid "Regex strings must begin and end with a \" character"
+msgstr "String regexp harus dimulai dan diakhiri dengan sebuah karakter \"\n"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Regex jelek \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Nama sintaks tidak ada"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr ""
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr ""
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "Nama sintaks tidak ada"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Tidak dapat membuka %s untuk menulis: %s"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Tidak dapat memanggil \"%s\""
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, fuzzy, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Warna %s tidak dipahami.\n"
+"Warna-warna yang bisa dipakai adalah \"green\", \"red\", \"blue\", \n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" dan \n"
+"\"black\", dengan prefiks opsional \"bright\".\n"
+
+#: src/rcfile.c:647
+#, fuzzy
+msgid "Cannot add a color command without a syntax command"
+msgstr "Tidak dapat menambah direktif warna tanpa baris sintaks"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Nama warna tidak ada"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr ""
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr ""
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" membutuhkan \"end=\" yang sesuai"
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Tidak dapat menambah direktif warna tanpa baris sintaks"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr ""
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr ""
+
+#: src/rcfile.c:966
+#, fuzzy, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Perintah %s tidak dipahami"
+
+#: src/rcfile.c:972
+#, fuzzy
+msgid "Missing flag"
+msgstr "Nama warna tidak ada"
+
+#: src/rcfile.c:994
+#, fuzzy, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "opsi %s membutuhkan sebuah argumen"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr ""
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr ""
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr ""
+
+#: src/rcfile.c:1114
+#, fuzzy, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "unset flag %d!\n"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr ""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Saya tidak dapat menemukan direktori home! Wah!"
+
+#: src/search.c:96
+#, fuzzy, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%s\" tidak ditemukan"
+
+#: src/search.c:205
+#, fuzzy
+msgid " (to replace) in selection"
+msgstr " (ganti)"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (ganti)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Ganti kata ini?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Ganti dengan"
+
+#: src/search.c:1004
+#, fuzzy, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "%d tempat terganti"
+
+#: src/search.c:1034
+#, fuzzy
+msgid "Enter line number, column number"
+msgstr "Masukkan nomor baris"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr ""
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Bukan tanda kurung"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Tidak ada tanda kurung yang cocok"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Set Tanda"
+
+#: src/text.c:58
+#, fuzzy
+msgid "Mark Unset"
+msgstr "Unset Tanda"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "File Sesudahnya"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr ""
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "File Sesudahnya"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr " (ganti)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Tidak dapat mem-pipe"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Tidak dapat mem-fork"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Quote string buruk %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Sekarang dapat melakukan UnJustify"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Edit pengganti"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Tidak dapat membuat pipe"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Membuat daftar kata yang misspelled, silakan tunggu..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Tidak dapat menentukan ukuran buffer pipe"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Gagal memanggil \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Gagal memanggil \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Gagal memanggil \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Selesai memeriksa ejaan"
+
+#: src/text.c:2815
+#, fuzzy, c-format
+msgid "Error invoking \"%s\""
+msgstr "Gagal memanggil \"spell\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Spell checking gagal: %s"
+
+#: src/text.c:2962
+#, fuzzy, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Spell checking gagal: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr ""
+
+#: src/text.c:3031
+#, fuzzy
+msgid "In Selection: "
+msgstr "Menambahkan Pilihan ke File"
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano kehabisan memori!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr ""
+
+#: src/winio.c:2149 src/winio.c:2153
+#, fuzzy
+msgid "Modified"
+msgstr " Dimodifikasi "
+
+#: src/winio.c:2150
+#, fuzzy
+msgid "View"
+msgstr " View "
+
+#: src/winio.c:2164
+#, fuzzy
+msgid "DIR:"
+msgstr " DIR: "
+
+#: src/winio.c:2171
+#, fuzzy
+msgid "File:"
+msgstr "File: "
+
+#: src/winio.c:3360
+#, fuzzy, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "baris %ld/%ld (%d%%), kol %lu/%lu (%d%%), char %lu/%ld (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Nano teks editor"
+
+#: src/winio.c:3493
+#, fuzzy
+msgid "version"
+msgstr "versi "
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Dibuat untuk anda oleh:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Ucapan terima kasih khusus kepada:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "The Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Untuk ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "dan orang lain yang kami lupa...."
+
+#: src/winio.c:3499
+#, fuzzy
+msgid "Thank you for using nano!"
+msgstr "Terima kasih telah menggunakan nano!\n"
+
+#~ msgid "add_to_cutbuffer() called with inptr->data = %s\n"
+#~ msgstr "add_to_cutbuffer() dipanggil dgn inptr->data = %s\n"
+
+#~ msgid "Blew away cutbuffer =)\n"
+#~ msgstr "Hapus cutbuffer =)\n"
+
+#~ msgid "File to insert into new buffer [from ./] "
+#~ msgstr "File untuk disisipkan ke buffer baru [dari ./] "
+
+#~ msgid "File to insert [from ./] "
+#~ msgstr "File untuk disisipkan [dari ./] "
+
+#~ msgid "filename is %s\n"
+#~ msgstr "Namafile adalah %s\n"
+
+#~ msgid "%s: free'd a node, YAY!\n"
+#~ msgstr "%s: bebaskan sebuah node, YAY!\n"
+
+#~ msgid "%s: free'd last node.\n"
+#~ msgstr "%s: bebaskan node terakhir.\n"
+
+#~ msgid "Could not read %s for backup: %s"
+#~ msgstr "Tidak dapat membaca %s untuk backup: %s"
+
+#~ msgid "Couldn't write backup: %s"
+#~ msgstr "Tidak dapat menulis backup: %s"
+
+#~ msgid "Backing up %s to %s\n"
+#~ msgstr "Backup %s ke %s\n"
+
+#~ msgid "Could not set permissions %o on backup %s: %s"
+#~ msgstr "Tidak dapat menset permisi %o pada backup %s: %s"
+
+#~ msgid "Could not set owner %d/group %d on backup %s: %s"
+#~ msgstr "Tidak dapat menset pemilik %d/group %d pada backup %s: %s"
+
+#~ msgid "Could not set access/modification time on backup %s: %s"
+#~ msgstr "Tidak dapat menset waktu akses/modifikasi pada backup %s: %s"
+
+#~ msgid "Could not open file for writing: %s"
+#~ msgstr "Tidak dapat membuka file untuk menulis: %s"
+
+#~ msgid "Wrote >%s\n"
+#~ msgstr "Tulis >%s\n"
+
+#~ msgid "Could not close %s: %s"
+#~ msgstr "Tidak dapat menutup %s: %s"
+
+#~ msgid "Could not reopen %s: %s"
+#~ msgstr "Tidak dapat membuka kembali %s: %s"
+
+#~ msgid "Could not open %s for prepend: %s"
+#~ msgstr "Tidak dapat membuka %s untuk menulis: %s"
+
+#~ msgid "Could not set permissions %o on %s: %s"
+#~ msgstr "Tidak dapat menset permisi %o pada %s: %s"
+
+#~ msgid "Can't open \"%s\": %s"
+#~ msgstr "Tidak dapat membuka \"%s\": %s"
+
+#~ msgid "Goto Cancelled"
+#~ msgstr "Goto Dibatalkan"
+
+#~ msgid "Unable to open ~/.nano_history file, %s"
+#~ msgstr "Tidak dapat membuka file ~/.nano_history, %s"
+
+#~ msgid "Unable to write ~/.nano_history file, %s"
+#~ msgstr "Tidak dapat menulis file ~/.nano_history, %s"
+
+#~ msgid "Writing file in DOS format"
+#~ msgstr "Menulis file dalam format DOS"
+
+#~ msgid "Writing file in Mac format"
+#~ msgstr "Menulis file dalam format Mac"
+
+#~ msgid "Backing up file"
+#~ msgstr "Membackup file"
+
+#~ msgid "Auto wrap"
+#~ msgstr "Wrap otomatis"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Panggil menu bantuan"
+
+#~ msgid "Unjustify after a justify"
+#~ msgstr "Unjustifikasi setelah justifikasi"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Ganti teks dalam editor"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Cari teks dalam editor"
+
+#~ msgid "Move up one line"
+#~ msgstr "Naik satu baris"
+
+#~ msgid "Insert a tab character"
+#~ msgstr "Masukkan karakter tab"
+
+#~ msgid "Make the current search or replace case (in)sensitive"
+#~ msgstr "Jadikan pencarian/penggantian saat ini case (in)sensitive"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Tambahkan ke file saat ini"
+
+#~ msgid "Search backwards"
+#~ msgstr "Pencarian backward"
+
+#~ msgid "Write file out in DOS format"
+#~ msgstr "Tulis file dalam format DOS"
+
+#~ msgid "Write file out in Mac format"
+#~ msgstr "Tulis file dalam format Mac"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Backup file asli ketika menyimpan"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Cari tanda kurung lain"
+
+#~ msgid "Open previously loaded file"
+#~ msgstr "Buka file yang telah dimuat sebelumnya"
+
+#~ msgid "Open next loaded file"
+#~ msgstr "Buka file yang akan dimuat"
+
+#~ msgid "Up"
+#~ msgstr "Naik"
+
+#~ msgid "Down"
+#~ msgstr "Turun"
+
+#~ msgid "Direction"
+#~ msgstr "Arah"
+
+#~ msgid "Space"
+#~ msgstr "Space"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Penggunaan: nano [+LINE] [GNU long option] [option] [file]\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Penggunaan: nano [+LINE] [option] [file]\n"
+#~ "\n"
+
+#~ msgid "+LINE"
+#~ msgstr "+LINE"
+
+#~ msgid "Use alternate keypad routines"
+#~ msgstr "Gunakan rutin keypad alternatif"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "Lakukan pencarian ekspresi reguler"
+
+#~ msgid "-T [num]"
+#~ msgstr "-T [num]"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Set fill cols ke (wrap baris di) #cols"
+
+#~ msgid "current->data now = \"%s\"\n"
+#~ msgstr "current->data sekarang =\"%s\"\n"
+
+#~ msgid "After, data = \"%s\"\n"
+#~ msgstr "Setelah, data= \"%s\"\n"
+
+#~ msgid "Could not create a temporary filename: %s"
+#~ msgstr "Tidak dapat membuat nama file sementara: %s"
+
+#~ msgid "Spell checking failed: unable to write temp file!"
+#~ msgstr "Spell checking gagal: tidak dapat menulis file temp!"
+
+#~ msgid "Cannot resize top win"
+#~ msgstr "Tidak dapat menganti ukuran jendela atas"
+
+#~ msgid "Cannot move top win"
+#~ msgstr "Tidak dapat memindahkan jendela atas"
+
+#~ msgid "Cannot resize edit win"
+#~ msgstr "Tidak dapat mengganti ukuran jendela edit"
+
+#~ msgid "Cannot move edit win"
+#~ msgstr "Tidak dapat memindah jendela edit"
+
+#~ msgid "Cannot resize bottom win"
+#~ msgstr "Tidak dapat mengganti ukuran jendela bawah"
+
+#~ msgid "Cannot move bottom win"
+#~ msgstr "Tidak dapat memindah jendela bawah"
+
+#~ msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
+#~ msgstr ""
+#~ "Glitch pada NumLock terdeteksi. Keypad akan tidak berfungsi dg tombol "
+#~ "NumLock off"
+
+#~ msgid "Tab size is too small for nano...\n"
+#~ msgstr "Ukuran tab terlalu kecil bagi nano...\n"
+
+#~ msgid "Main: set up windows\n"
+#~ msgstr "Main: menset jendela\n"
+
+#~ msgid "Main: bottom win\n"
+#~ msgstr "Main: jendela bawah\n"
+
+#~ msgid "Main: open file\n"
+#~ msgstr "Main: membuka file\n"
+
+#~ msgid "AHA! %c (%d)\n"
+#~ msgstr "AHA! %c (%d)\n"
+
+#~ msgid "I got Alt-O-%c! (%d)\n"
+#~ msgstr "Saya mendapat Alt-O-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-1-%c! (%d)\n"
+#~ msgstr "Saya mendapat Alt-[-1-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-2-%c! (%d)\n"
+#~ msgstr "Saya mendapat Alt-[-2-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-%c! (%d)\n"
+#~ msgstr "Saya mendapat Alt-%c! (%d)\n"
+
+#~ msgid "I got Alt-%c! (%d)\n"
+#~ msgstr "Saya mendapat Alt-%c! (%d)\n"
+
+#~ msgid "I got %c (%d)!\n"
+#~ msgstr "Saya mendapat %c (%d)\n"
+
+#~ msgid "Adding new syntax after 1st\n"
+#~ msgstr "Menambahkan sintaks baru setelah yang pertama\n"
+
+#~ msgid "Starting a new syntax type\n"
+#~ msgstr "Memulai tipe sintaks baru\n"
+
+#~ msgid "Starting a new colorstring for fg %d bg %d\n"
+#~ msgstr "Memulai colorstring baru untuk fg %d bg %d\n"
+
+#~ msgid "Adding new entry for fg %d bg %d\n"
+#~ msgstr "Menambahkan entri baru untuk fg %d bg%d\n"
+
+#~ msgid "%s: Read a comment\n"
+#~ msgstr "%s: Membaca sebuah komentar\n"
+
+#~ msgid "%s: Parsing option %s\n"
+#~ msgstr "%s: Opsi parsing %s\n"
+
+#~ msgid "set flag %d!\n"
+#~ msgstr "set flag %d!\n"
+
+#~ msgid "Errors found in .nanorc file"
+#~ msgstr "Kesalahan ditemukan dalam file .nanorc"
+
+#~ msgid "Unable to open ~/.nanorc file, %s"
+#~ msgstr "Tidak dapat membuka file ~/.nanorc, %s"
+
+#~ msgid "\"%s...\" not found"
+#~ msgstr "\"%s...\" tidak ditemukan"
+
+#~ msgid "Invalid regex \"%s\""
+#~ msgstr "Regex tidak valid \"%s\""
+
+#~ msgid "Search Cancelled"
+#~ msgstr "Pencarian Dibatalkan"
+
+#~ msgid "Replace Cancelled"
+#~ msgstr "Penggantian dibatalkan"
+
+#~ msgid "Replace failed: unknown subexpression!"
+#~ msgstr "Replace gagal: subekspresi tidak dikenal!"
+
+#~ msgid "Aborted"
+#~ msgstr "Dibatalkan"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Ayo, yang masuk akal"
+
+#~ msgid "actual_x for xplus=%d returns %d\n"
+#~ msgstr "actual_x for xplus=%d returns %d\n"
+
+#~ msgid "Aha! '%c' (%d)\n"
+#~ msgstr "Aha! '%c' (%d)\n"
+
+#~ msgid "input '%c' (%d)\n"
+#~ msgstr "input '%c' (%d)\n"
+
+#~ msgid " File: ..."
+#~ msgstr " File: ..."
+
+#~ msgid " DIR: ..."
+#~ msgstr " DIR: ..."
+
+#~ msgid "Refusing 0 length regex match"
+#~ msgstr "Menolak kecocokan regex panjang 0"
+
+#~ msgid "Moved to (%d, %d) in edit buffer\n"
+#~ msgstr "Pindah ke (%d, %d) dalam buffer edit\n"
+
+#~ msgid "I got \"%s\"\n"
+#~ msgstr "Saya dapat \"%s\"\n"
+
+#~ msgid "Dumping file buffer to stderr...\n"
+#~ msgstr "Kirim buffer file ke stderr...\n"
+
+#~ msgid "Dumping cutbuffer to stderr...\n"
+#~ msgstr "Kirim cutbuffer ke stderr...\n"
+
+#~ msgid "Dumping a buffer to stderr...\n"
+#~ msgstr "Kirim buffer ke stderr...\n"
+
+#~ msgid "delete_opennode(): free'd a node, YAY!\n"
+#~ msgstr "delete_node(): bebaskan sebuah node, YAY!\n"
+
+#~ msgid "delete_opennode(): free'd last node.\n"
+#~ msgstr "delete_node(): bebaskan node terakhir.\n"
+
+#~ msgid "Can't visit parent in restricted mode"
+#~ msgstr "Tidak dapat mengunjungi parent dalam mode terbatas"
+
+#~ msgid "-p"
+#~ msgstr "-p"
+
+#~ msgid "--preserve"
+#~ msgstr "--preserve"
+
+#~ msgid ""
+#~ "\n"
+#~ "The -p flag now invokes the Pico \"preserve\" flag. The Pico\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Flag -p sekarang memanggil flag \"preserve\" Pico. Flag\n"
+
+#~ msgid "compatibility flag has been removed as nano is now fully Pico\n"
+#~ msgstr ""
+#~ "kompatibilitas Pico telah dihilangkan karena nano sekarang sangat "
+#~ "kompatibel\n"
+
+#~ msgid ""
+#~ "compatible. Please see the nano FAQ for more info on this change...\n"
+#~ "\n"
+#~ msgstr ""
+#~ "terhadap Pico. Silakan lihat FAQ nano untuk informasi lebih lanjut "
+#~ "tentang perubahan ini...\n"
+#~ "\n"
+
+#~ msgid "Press return to continue\n"
+#~ msgstr "Tekan return untuk lanjut\n"
+
+#~ msgid "Generic error"
+#~ msgstr "Kesalahan generik"
+
+#~ msgid "string val=%s\n"
+#~ msgstr "string val=%s\n"
+
+#~ msgid "For end part, beginning = \"%s\"\n"
+#~ msgstr "Untuk bagian akhir, awal = \"%s\"\n"
+
+#~ msgid "current->data = \"%s\"\n"
+#~ msgstr "current->data = \"%s\"\n"
+
+#~ msgid "do_cursorpos: linepct = %f, bytepct = %f\n"
+#~ msgstr "do_cursorpos: linepct = %f, bytepct = %f\n"
+
+#~ msgid "read_line: not on first line and prev is NULL"
+#~ msgstr "read_line: tidak di baris pertama dan sebelumnya adalah NULL"
+
+#~ msgid "Pico mode"
+#~ msgstr "Mode Pico"
+
+#~ msgid "Emulate Pico as closely as possible"
+#~ msgstr "Emulasikan Pico sebaik mungkin"
+
+#~ msgid "'\")}]>"
+#~ msgstr "'\")}]>"
+
+#~ msgid ".?!"
+#~ msgstr ".?!"
+
+#~ msgid "Replaced 1 occurrence"
+#~ msgstr "Terganti 1 tempat"
+
+#~ msgid "Replace with [%s]"
+#~ msgstr "Ganti dengan [%s]"
+
+#~ msgid "nano: realloc: out of memory!"
+#~ msgstr "nano: realloc: memori habis!"
diff --git a/po/insert-header.sin b/po/insert-header.sin
new file mode 100644
index 0000000..b26de01
--- /dev/null
+++ b/po/insert-header.sin
@@ -0,0 +1,23 @@
+# Sed script that inserts the file called HEADER before the header entry.
+#
+# At each occurrence of a line starting with "msgid ", we execute the following
+# commands. At the first occurrence, insert the file. At the following
+# occurrences, do nothing. The distinction between the first and the following
+# occurrences is achieved by looking at the hold space.
+/^msgid /{
+x
+# Test if the hold space is empty.
+s/m/m/
+ta
+# Yes it was empty. First occurrence. Read the file.
+r HEADER
+# Output the file's contents by reading the next line. But don't lose the
+# current line while doing this.
+g
+N
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/it.gmo b/po/it.gmo
new file mode 100644
index 0000000..f96a5e5
--- /dev/null
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..fa6d980
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,2163 @@
+# Italian messages for nano.
+# Copyright (C) 2001-2006, 2008, 2009, 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# Marco Colombo <m.colombo@ed.ac.uk>, 2001-2010.
+# $Id: it.po,v 1.116 2006/06/09 09:37:06 jordi Exp $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.4pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-04-07 18:30+0100\n"
+"Last-Translator: Marco Colombo <m.colombo@ed.ac.uk>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Vai alla directory"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Annullato"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Impossibile uscire da %s in modalità ristretta"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Errore durante la lettura di %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Impossibile risalire la directory"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(dir)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(dir super)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Ricerca"
+
+# FIXME
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Maiuscole/Minuscole]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Espressione regolare]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [All'indietro]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Ricerca ricominciata"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Questa è l'unica occorrenza"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Nessun pattern di ricerca attivo"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Impossibile inserire il file dall'esterno di %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Nessun altro buffer aperto"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Passato a %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Nuovo buffer"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Letta %lu riga (Convertita dal formato DOS e Mac)"
+msgstr[1] "Lette %lu righe (Convertite dal formato DOS e Mac)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"Letta %lu riga (Convertita dal formato DOS e Mac - Senza permesso di "
+"scrittura)"
+msgstr[1] ""
+"Lette %lu righe (Convertite dal formato DOS e Mac - Senza permesso di "
+"scrittura)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Letta %lu riga (Convertita dal formato Mac)"
+msgstr[1] "Lette %lu righe (Convertite dal formato Mac)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"Letta %lu riga (Convertita dal formato Mac - Senza permesso di scrittura)"
+msgstr[1] ""
+"Lette %lu righe (Convertite dal formato Mac - Senza permesso di scrittura)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Letta %lu riga (Convertita dal formato DOS)"
+msgstr[1] "Lette %lu righe (Convertite dal formato DOS)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"Letta %lu riga (Convertita dal formato DOS - Senza permesso di scrittura)"
+msgstr[1] ""
+"Lette %lu righe (Convertite dal formato DOS - Senza permesso di scrittura)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Letta %lu riga"
+msgstr[1] "Lette %lu righe"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "Letta %lu riga (Attenzione: permessi di scrittura mancanti)"
+msgstr[1] "Lette %lu righe (Attenzione: permessi di scrittura mancanti)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Lettura file"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Nuovo file"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" non trovato"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" è una directory"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" è un file di device"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Comando da eseguire in un nuovo buffer [da %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Comando da eseguire [da %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "File da inserire in un nuovo buffer [da %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "File da inserire [da %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Chiave non valida in modalità non multibuffer"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Impossibile salvare fuori da %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "Impossibile aggiungere in testa/coda a un collegamento con --nofollow"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Errore durante la scrittura del file di backup %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Troppi file di backup?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Errore durante la scrittura di %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Errore durante la scrittura del file temporaneo: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Scritta %lu riga"
+msgstr[1] "Scritte %lu righe"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [Formato DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Formato Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Backup]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Inserisce selezione in testa al file"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Accoda selezione al file"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Salva selezione nel file"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Nome del file in cui inserire in testa"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Nome del file a cui accodare"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Nome del file in cui salvare"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Il file esiste, SOVRASCRIVERE?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Salvare il file con un NOME DIFFERENTE?"
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "Il file è stato modificato dall'apertura. Continuare a salvare? "
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(ancora)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Premere Invio per continuare l'avvio di nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Annulla"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Sostituisci"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Non sost."
+
+# FIXME
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Maius/Minus"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Indietro"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Espr.Reg."
+
+# FIXME
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "Precedente"
+
+# FIXME
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "Successivo"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Vai al testo"
+
+# FIXME
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Successivo"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Primo file"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Ultimo file"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Sfoglia"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Formato DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Formato Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Accoda"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Scrivi in testa"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "File di backup"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Esegui comando"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Vai alla directory"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Guida"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Esci"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Cerca"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Pag Prec."
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Pag Succ."
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Prima riga"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Ultima riga"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Sospendi"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Iniz.Par."
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Fine Par."
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "Giust.File"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Aggiorna"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Inserisci file"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Vai a riga"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Giustifica il paragrafo corrente"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Annulla la funzione corrente"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Mostra questo messaggio di aiuto"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Chiude il file corrente / Esce da nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Esce da nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Salva il file corrente su disco"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Inserisce un altro file nel corrente"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Cerca una stringa o un'espressione regolare"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Va alla schermata precedente"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Va alla schermata successiva"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Taglia la riga corrente e la memorizza nel cutbuffer"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Incolla dal cutbuffer nella riga corrente"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Mostra la posizione del cursore"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Esegue il correttore ortografico, se disponibile"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Sostituisce una stringa o un'espressione regolare"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Va a un numero di riga e di colonna specifico"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Marca testo alla posizione del cursore"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Ripete l'ultima ricerca"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Copia la riga corrente e la memorizza nel cutbuffer"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Applica indentazione alla riga corrente"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Toglie indentazione dalla riga corrente"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Annulla l'ultima operazione"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Ripete l'ultima operazione"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Avanza di un carattere"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Arretra di un carattere"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Avanza di una parola"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Arretra di una parola"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Va alla riga precedente"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Va alla riga successiva"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Va all'inizio della riga corrente"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Va alla fine della riga corrente"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Va all'inizio del paragrafo; poi al paragrafo precedente"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Va alla fine del paragrafo; poi al paragrafo successivo"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Va alla prima riga del file"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Va all'ultima riga del file"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Va alla parentesi corrispondente"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Scorre in alto di una riga senza muovere il cursore"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Scorre in basso di una riga senza muovere il cursore"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Va al buffer precedente"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Va al buffer successivo"
+
+# NdT: di fatto funziona per un solo carattere alla volta.
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Inserisce un carattere letteralmente"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Inserisce una tabulazione alla posizione del cursore"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Inserisce un ritorno a capo alla posizione del cursore"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Elimina il carattere sotto il cursore"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Elimina il carattere a sinistra del cursore"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Taglia dal cursore alla fine del file"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Giustifica l'intero file"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Conta il numero di parole, righe e caratteri"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Aggiorna la schermata corrente"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Sospende l'editor (se la sospensione è abilitata)"
+
+# FIXME
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Considera maiuscole/minuscole nella ricerca"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Inverte la direzione di ricerca"
+
+# FIXME
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Attiva/disattiva uso di espressioni regolari"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Richiama la stringa di ricerca/sostituzione precedente"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Richiama la stringa di ricerca/sostituzione successiva"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Va al browser di file"
+
+# FIXME
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Usa il formato DOS"
+
+# FIXME
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Usa il formato Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Attiva/disattiva scrittura in coda al file"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Attiva/disattiva scrittura in testa al file"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Attiva/disattiva creazione copia di backup del file originale"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Esegue un comando esterno"
+
+# FIXME
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Usa un nuovo buffer"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Esce dal browser di file"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Va al primo file dell'elenco"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Va all'ultimo file dell'elenco"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "Va al prossimo file dell'elenco"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "Va al precedente file dell'elenco"
+
+# NdT: questo messaggio è usato come comando.
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Va alla directory"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Chiudi"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Salva"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Giustifica"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Inserisci"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Taglia"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "DeGiustif."
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Incolla"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Posizione"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Ortografia"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Marca testo"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Copia"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Indenta"
+
+# FIXME
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Deindenta"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Annulla"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Ripeti"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Avanti"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Indietro"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Parola succ."
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Parola prec."
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Riga prec."
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Riga succ."
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Inizio"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Fine"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Trova la parentesi corrispondente"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Scorri su"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Scorri giù"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "File prec."
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "File succ."
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Input letterale"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Invio"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Elimina"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Backspace"
+
+# FIXME
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "TagliaAFine"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Conta parole"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Barra dei comandi"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Mostra sempre la posizione del cursore"
+
+# FIXME
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Usa una riga in più per le modifiche"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Scorrimento continuo"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Mostra spazi bianchi"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Sintassi colorata"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Tasto Inizio intelligente"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Indentazione automatica"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Taglia fino a fine riga"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "A capo automatico"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Conversione delle tabulazioni in spazi"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "File di backup"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "File multipli"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Supporto per il mouse"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Nessuna conversione dai formati DOS/Mac"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Sospensione"
+
+# FIXME
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "A capo morbido"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Guida per il comando Cerca\n"
+"\n"
+" Inserire le parole o i caratteri che si desidera cercare e premere Invio. "
+"Se c'è una corrispondenza con il testo inserito, verrà mostrata la posizione "
+"dell'occorrenza più vicina.\n"
+"\n"
+" La stringa di ricerca precedente verrà mostrata tra parentesi dopo il "
+"prompt di ricerca. Premendo Invio senza inserire nulla, verrà eseguita la "
+"ricerca precedente. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Se è stato selezionato del testo usando le marcature prima di fare una "
+"sostituzione, solo le occorrenze nella selezione verranno sostituite.\n"
+"\n"
+" Le seguenti funzioni sono disponibili in modalità Cerca:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Guida per il comando Vai a Riga\n"
+"\n"
+" Inserire il numero della riga su cui spostarsi e premere Invio. Se ci sono "
+"meno righe di testo del numero inserito, il cursore verrà posizionato "
+"all'ultima riga del file.\n"
+"\n"
+" Le seguenti funzioni sono disponibili in modalità Vai a Riga:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Guida per il comando Inserisci:\n"
+"\n"
+" Scrivere il nome del file da inserire nel corrente all'attuale posizione "
+"del cursore.\n"
+"\n"
+" Se nano è stato compilato con il supporto ai file multipli (abilitato con "
+"le opzioni -F o --multibuffer da linea di comando, attraverso la "
+"combinazione Meta-F o usando il file nanorc), l'inserimento di un file ne "
+"provocherà il caricamento in un buffer separato (usare Meta-< e > per "
+"muoversi tra i buffer). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Se occorre un buffer vuoto, non inserire alcun nome, oppure inserire un nome "
+"non esistente e premere Invio.\n"
+"\n"
+" Le seguenti funzioni sono disponibili in modalità Inserisci:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Guida per il comando Salva\n"
+"\n"
+" Inserire il nome con cui salvare il file corrente e premere Invio per "
+"procedere.\n"
+"\n"
+" Se è stato selezionato del testo con la marcatura, verrà chiesto se salvare "
+"solo la porzione selezionata in un file separato. Per ridurre le probabilità "
+"di sovrascrivere il file corrente con solo una parte di esso, in questo caso "
+"il nome corrente del file non è il nome predefinito.\n"
+"\n"
+" Le seguenti funzioni sono disponibili in modalità Salva:\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Guida sul file browser\n"
+"\n"
+" Il file browser è utilizzato per sfogliare la struttura delle directory per "
+"selezionare un file da leggere o scrivere. E' possibile usare i tasti "
+"freccia o PagSu/PagGiù per muoversi tra i file, e S o Invio per scegliere un "
+"file o entrare in una sottodirectory. Per salire di un livello, selezionare "
+"\"..\" all'inizio della lista.\n"
+"\n"
+" Le seguenti funzioni sono disponibili nel file browser\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Guida per il comando Cerca\n"
+"\n"
+" Inserire le parole o i caratteri che si desidera cercare e premere Invio. "
+"Se c'è una corrispondenza con il testo inserito, verrà mostrata la posizione "
+"dell'occorrenza più vicina.\n"
+"\n"
+" La stringa di ricerca precedente verrà mostrata tra parentesi dopo il "
+"prompt di ricerca. Premendo Invio senza inserire nulla, verrà eseguita la "
+"ricerca precedente.\n"
+"\n"
+
+# FIXME
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+"Le seguenti funzioni sono disponibili in modalità Cerca:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Guida per il comando Vai alla Directory\n"
+"\n"
+" Inserire il nome della directory che si desidera sfogliare.\n"
+"\n"
+" Se il completamento automatico è abilitato, è possibile usare il tasto Tab "
+"per completare automaticamente il nome della directory.\n"
+"\n"
+" Le seguenti funzioni sono disponibili in modalità Vai alla Directory:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Guida per il comando Ortografia\n"
+"\n"
+" Il correttore ortografico verifica l'ortografia del file corrente. Quando "
+"viene trovata una parola non riconosciuta, questa viene evidenziata e una "
+"sostituzione può essere predisposta. Verrà chiesto se rimpiazzare ogni "
+"istanza della parola errata nel file corrente, o, se è stato selezionato del "
+"testo con le marcature, solo nella selezione.\n"
+"\n"
+" Le seguenti funzioni sono disponibili in modalità Ortografia:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Guida per il comando Esegui comando\n"
+"\n"
+" Questo menù permette di inserire l'output di un comando eseguito dalla "
+"shell all'interno del buffer corrente (o di un nuovo buffer se in modalità "
+"multibuffer). Se si desidera un buffer vuoto, non inserire alcun comando.\n"
+"\n"
+" Le seguenti funzioni sono disponibili in modalità Esegui comando:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Guida di nano\n"
+"\n"
+" L'editor di testi nano è disegnato per emulare le funzionalità e la "
+"facilità d'uso di Pico. Ci sono quattro sezioni principali nell'editor. La "
+"riga superiore mostra la versione del programma, il nome del file in uso e "
+"se il file è stato modificato. Più sotto c'è la finestra principale che "
+"mostra il contenuto del file che si sta modificando. La barra di stato è la "
+"terza riga dal basso e mostra importanti messaggi. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Le due righe finali mostrano le abbreviazioni per i comandi usati più "
+"comunemente.\n"
+"\n"
+" La notazione per le abbreviazioni è la seguente. Le sequenze identificate "
+"con il simbolo (^) sono introdotte usando il tasto Control (Ctrl), oppure "
+"premendo il tasto Esc due volte. Le sequenze identificate col simbolo Meta "
+"(M) possono essere inserite usato alternativamente il tasto Esc, Alt o Meta, "
+"a seconda della configurazione della tastiera. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Inoltre, premendo Esc due volte e digitando i numeri da 000 a 255 si possono "
+"inserire i caratteri con il codice ASCII corrispondente. Le seguenti "
+"abbreviazioni sono disponibili nella finestra principale dell'editor. Le "
+"sequenze alternative sono mostrate tra parentesi:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "abilita/disabilita"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Chiave non valida in modalità Visualizza"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Buffer scritto su %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Buffer scritto su %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Buffer scritto: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "La finestra è troppo piccola per nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Uso: nano [OPZIONI] [[+RIGA,COLONNA] FILE]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Opzione\t\tOpzione lunga\t\tSignificato\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Opzione\t\tSignificato\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Mostra questo messaggio"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+RIGA,COLONNA"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Inizia alla riga numero RIGA, colonna numero COLONNA"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Abilita il tasto Inizio intelligente"
+
+# Questo messaggio è stato tradotto come uno simile più in alto.
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Crea una copia di backup dei file esistenti"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <dir>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<dir>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Directory in cui salvare i file di backup"
+
+# FIXME
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Usa grassetto invece di testo inverso"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Converte le tabulazioni in spazi"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Abilita buffer multipli"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Salva le stringhe di ricerca/sostituzione"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Non considera i file nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Risolve il problema di confusione del tastierino numerico"
+
+# FIXME
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Non aggiunge caratteri newline in fondo ai file"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Non converte i file dai formati DOS/Mac"
+
+# FIXME
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Usa una riga in più per le modifiche"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <str>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<str>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Stringa di quoting"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Modalità ristretta"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Scorrimento a ogni riga invece che a ogni metà schermata"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#cols>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#cols>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Imposta la lunghezza della tabulazione a #cols"
+
+# FIXME
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Svuota la barra di stato velocemente"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Stampa informazioni sulla versione ed esce"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Rileva più precisamente i limiti delle parole"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <str>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<str>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Definizione di sintassi da usare per la colorazione"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Mostra sempre la posizione del cursore"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Risolve il problema Backspace/Canc"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Indenta automaticamente le nuove righe"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Taglia dal cursore a fine riga"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Non segue i collegamenti simbolici, sovrascrive"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Abilita l'uso del mouse"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <dir>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<dir>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Imposta la directory operativa"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Rispetta XON (^Q) e XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "Ignora i problemi all'avvio come gli errori nel file rc"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#cols>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#cols>"
+
+# FIXME
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Imposta l'interruzione delle righe a #cols"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Attiva correttore ortografico alternativo"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Salvataggio automatico in uscita senza conferma"
+
+# FIXME
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "Abilita annullamento generico (SPERIMENTALE)"
+
+# "Visualizza" è il nome della modalità. Appare in alto a destra.
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Visualizza (sola lettura)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Non interrompe le righe lunghe"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Non mostra la barra dei comandi"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Abilita sospensione"
+
+# FIXME
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "Abilita interruzione morbida delle righe"
+
+# NdT: Più di un'opzione viene ignorata.
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(ignorate, per compatibilità con Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano versione %s (compilato %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Opzioni di compilazione:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Il supporto per questa funzionalità è stato disabilitato"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"Salvare il buffer modificato? (RISPONDERE \"No\" PER ANNULLARE LE MODIFICHE) "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "Impossibile riaprire stdin da tastiera\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Lettura dallo stdin, ^C per interrompere\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Ricevuto SIGHUP o SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Usare \"fg\" per tornare a nano.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "abilitato"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "disabilitato"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Comando sconosciuto"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON ignorato, mmm..."
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF ignorato, mmm..."
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Lunghezza della tabulazione \"%s\" non valida"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Lunghezza del riempimento \"%s\" non valida"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "SsYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Tt"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Sì"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Tutti"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "No"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Errore in %s alla riga %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "L'argomento \"%s\" ha un \" non terminato"
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "L'espressione regolare deve iniziare e finire con il carattere \""
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Espressione regolare non corretta \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Nome di sintassi mancante"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "La sintassi \"none\" è riservata"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "La sintassi \"default\" non accetta estensioni"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Nome di chiave mancante"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "le chiavi devono cominciare con \"^\", \"M\", o \"F\""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "Occorre specificare una funzione a cui associare la chiave"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "Occorre specificare un menù a cui associare la chiave (oppure \"all\")"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Impossibile associare il nome \"%s\" a una funzione"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Impossibile associare il nome \"%s\" a un menù"
+
+# FIXME
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "La chiave \"%s\" è un binding non consentito"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Colore \"%s\" non riconosciuto.\n"
+"Colori validi sono \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" e\n"
+"\"black\", con il prefisso opzionale \"bright\"\n"
+"per i colori di primo piano."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr ""
+"Impossibile aggiungere una direttiva di colore senza una riga di sintassi"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Nome del colore mancante"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Il colore di sfondo \"%s\" non può essere \"bright\""
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Stringa di espressione regolare mancante"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" richiede un \"end=\" corrispondente"
+
+# FIXME
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr ""
+"Impossibile aggiungere un'intestazione regex senza una riga di sintassi"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Errore fatale: nessuna chiave associata alla funzione \"%s\""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Uscita. Usare nano con l'opzione -I se occorre modificare le impostazioni di "
+"nanorc\n"
+
+# FIXME
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Comando \"%s\" non permesso nel file incluso"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "La sintassi \"%s\" non ha direttive di colore"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Comando \"%s\" non riconosciuto"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Flag mancante"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "L'opzione \"%s\" richiede un argomento"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "L'opzione non è una stringa multibyte valida"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Sono richiesti caratteri non di spaziatura"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Sono richiesti due caratteri a colonna singola"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Impossibile rimuovere il flag \"%s\""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Flag \"%s\" sconosciuto"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Impossibile trovare la directory home."
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%.*s%s\" non trovato"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (sostituisci) nella selezione"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (sostituisci)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Sostituire questa occorrenza?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Sostituire con"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "%lu sostituzione effettuata"
+msgstr[1] "%lu sostituzioni effettuate"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Inserire il numero di riga, numero di colonna"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Numero di riga o di colonna non valido"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Non è una parentesi"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Parentesi corrispondente non trovata"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Marcatura impostata"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Marcatura disattivata"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Buffer di annullamento vuoto."
+
+# FIXME
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+"Errore interno: impossibile trovare la corrispondenza della riga %d. Salvare "
+"il lavoro"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "aggiunta testo"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "rimozione testo"
+
+# FIXME
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "a capo riga"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "unione riga"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "taglio testo"
+
+# FIXME
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "incolla testo"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "interruzione riga"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "inserimento testo"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "sostituzione testo"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Errore interno: tipo sconosciuto. Salvare il lavoro"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Azione annullata (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Niente da ripetere."
+
+# FIXME
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr "Errore interno: ripetizione non riuscita. Salvare il lavoro"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Ripetuta azione (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Impossibile effettuare una pipe"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Impossibile effettuare un fork"
+
+# FIXME
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr "Errore interno: impossibile incollare. Salvare il lavoro."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Errore interno: tipo sconosciuto. Salvare il lavoro."
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Stringa di quoting non corretta %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "È ora possibile togliere la giustificazione."
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Modifica sostituzione"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Impossibile creare la pipe"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Creazione della lista delle parole non corrette, attendere..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Impossibile ottenere la dimensione del buffer della pipe"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Errore nel chiamare \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Errore nel chiamare \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Errore nel chiamare \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Controllo ortografico terminato"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Errore nel chiamare \"%s\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Controllo ortografico non riuscito: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Controllo ortografico non riuscito: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sParole: %lu Righe: %ld Caratteri: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "Nella selezione: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano ha esaurito la memoria."
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Input Unicode"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Modificato"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Visualizza"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "Dir:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "File:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "Riga %ld/%ld (%d%%), colonna %lu/%lu (%d%%), carattere %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "L'editor di testi nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "versione"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Creato per voi da:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Ringraziamenti speciali a:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "La Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Per ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "e chiunque altro abbiamo dimenticato..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Grazie di usare nano!"
+
+#~ msgid "Error writing backup file %s: File owner mismatch"
+#~ msgstr ""
+#~ "Errore scrivendo il file di backup %s: il proprietario non corrisponde"
+
+#~ msgid "line split"
+#~ msgstr "divisione riga"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Configura riempimento colonne (interrompe righe) a #cols"
+
+#~ msgid "No lines selected, nothing to do!"
+#~ msgstr "Nessuna riga selezionata, niente da fare!"
+
+#~ msgid "Refusing zero-length regex match"
+#~ msgstr "Rifiutato il risultato di un'espressione regolare di lunghezza 0"
+
+#~ msgid "Make the current search/replace go backwards"
+#~ msgstr "Ricerca/sostituzione all'indietro"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Scrive in testa al file corrente"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Crea una copia di backup al salvataggio"
+
+#~ msgid "Insert into new buffer"
+#~ msgstr "Inserisce in un nuovo buffer"
+
+#~ msgid "Prepending to %s failed: %s"
+#~ msgstr "Inserimento in testa a %s non riuscito: %s"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Mostra la guida"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Cerca testo all'interno dell'editor"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Sostituisce testo all'interno dell'editor"
+
+#~ msgid "Find matching bracket"
+#~ msgstr "Trova la parentesi corrispondente"
+
+#~ msgid "Duplicate syntax name %s"
+#~ msgstr "Nome della sintassi %s duplicato"
+
+#~ msgid "Could not create temp file: %s"
+#~ msgstr "Impossibile creare file temporaneo: %s"
diff --git a/po/ms.gmo b/po/ms.gmo
new file mode 100644
index 0000000..ef75adf
--- /dev/null
+++ b/po/ms.gmo
Binary files differ
diff --git a/po/ms.po b/po/ms.po
new file mode 100644
index 0000000..c42ed74
--- /dev/null
+++ b/po/ms.po
@@ -0,0 +1,2075 @@
+# Nano Editor Bahasa Melayu (Malay) (ms).
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.1.7pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2009-01-06 00:48+0800\n"
+"Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>\n"
+"Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: KBabel 1.3.1\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Pergi Ke Direktori"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Dibatalkan"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Tidak boleh ke luar dari %s dalam mod terhad"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Ralat membaca %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Tidak dapat pindah naik direktori"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(dir)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(dir induk)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Cari"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Case Sensitif]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Regexp]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Undur]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Pancarian diulangi dari awal"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Hanya inilah sahaja yang dijumpai"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Tiada corak carian semasa"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Tidak dapat memasukkan fail luar daripada %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Tiada lagi buffer fail terbuka"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Ditukar kepada %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Buffer Baru"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "%lu baris dibaca (Ditukar daripada format Mac dan DOS)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "%lu baris dibaca (Ditukar daripada format Mac dan DOS)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "%lu baris dibaca (Ditukar daripada format Mac)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "%lu baris dibaca (Ditukar daripada format Mac)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "%lu baris dibaca (Ditukar daripada format DOS)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "%lu baris dibaca (Ditukar daripada format DOS)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "%lu baris dibaca"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Membaca fail"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Fail Baru"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" tidak dijumpai"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" adalah sebuah direktori"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" adalah sebuah fail peranti"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Arahan untuk dilaksanakan dalam buffer baru [daripada %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Arahan untuk dilaksanakan [dari %s]"
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Fail untuk dimasukkan kedalam buffer baru [daripada %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Fail untuk dimasukkan [daripada %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Kekunci tidak sah dalam mod bukan multibuffer"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Tidak dapat menulis diluar daripada %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "Tidak dapat tambah awal atau tambah ke symlink dengan set --nofollow"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Ralat menulis fail salinan %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Terlalu banyak fail salinan?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Ralat menulis %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Ralat menulis fail sementara: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "%lu baris ditulis"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [Format DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Format Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Salinan]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Tambahan Awalan Pilihan ke Fail"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Tambahan Akhiran Pilihan ke Fail"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Tulis Pilihan ke Fail"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Nama Fail untuk di Tambah Awalan"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Nama Fail untuk di Tambah Akhiran"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Nama Fail untuk di Tulis"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Fail telah wujud, TINDIH ? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Simpan fail dengan NAMA BERLAINAN ? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "Fail telah diubahsuai semenjak anda membukanya, teruskan menyimpan ?"
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(lagi)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Tekan Enter untuk meneruskan memulakan nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Batal"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Ganti"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Jangan Ganti"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Case Sens"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Kebelakang"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Regexp"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "SjrhUndur"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "SjrhMaju"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Ke Teks"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Dimana Seterusnya"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Fail Pertama"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Fail Terakhir"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Ke Fail"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Format DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Format Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Tambah"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Tambahan awalan"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Fail Salinan"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Laksanakan Arahan"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Pergi Ke Dir"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Bantuan"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Keluar"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Di mana"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Terdahulu"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Berikut"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Brs Awal"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Brs Akhir"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Gantung"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Minta untuk Par"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Pengakhir Par"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "JustifiPenuh"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Segarkan"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Selit Fail"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Ke Baris"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Justifikasi perenggan semasa"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Batal fungsi semasa"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Papar teks bantuan ini"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Tutup fail penimbal semasa / Keluar dari nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Keluar dari nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Tulis fail semasa ke cakera"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Masukkan fail lain ke file semasa"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Cari rentetan atau regular expression"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Pergi ke skrin terdahulu"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Pergi ke skrin berikutnya"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Potong baris semasa dan simpan dalam cutbuffer"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Kembalikan dari cutbuffer ke baris semasa"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Papar posisi kursor"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Panggil penyemak ejaan, jika ada"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Ganti rentetan atau regular expression"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Pergi ke nombor baris dan lajur"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Tanda teks pada lokasi kursor"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Ulang carian terakhir"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Salin baris semasa dan simpan dalam cutbuffer"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Inden baris semasa"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Nyahindent baris semasa"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Nyahbuat tindakan terakhir"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Buat semula tindakan nyahbuat terakhir"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Maju ke depan satu aksara"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Undur ke belakang satu aksara"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Maju ke depan satu perkataan"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Undur belakang satu perkataan"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Pergi ke baris terdahulu"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Pergi ke baris berikutnya"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Pergi ke permulaan baris semasa"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Pergi ke penghujung baris semasa"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr ""
+"Pergi hingga ke permulaan perenggan semasa; kemudian ke perenggan sebelumnya"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr ""
+"Pergi hingga ke penghujung perenggan semasa; kemudian ke perenggan seterusnya"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Pergi ke baris pertama fail"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Pergi ke baris terakhir fail"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Pergi ke braket sepadan"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Skrol atas satu baris tanpa skrol kursor"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Skrol bawah satu baris tanpa skrol kursor"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Tukar ke buffer fail terdahulu"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Tukar ke buffer fail berikut"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Selit kekunci seterusnya setiap satu"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Masukkan tab di kedudukan kursor"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Masukkan baris baru di kedudukan kursor"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Padam aksara dibawah kursor"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Padam aksara di kiri kursor"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Potong dari kedudukan kursor hingga ke akhir fail"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Justifi keseluruhan fail"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Kira jumlah perkataan, baris, dan aksara"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Segarkan (lukis semula) skrin semasa"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Gantung penyunting (jika gantung dihidupkan)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Toggle pencarian case sensitif"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Terbalikkan arah carian"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Toggle penggunaan ungkapan nalar"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Panggil semula rentetan cari/ganti terdahulu"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Panggil semula rentetan cari/ganti seterusnya"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Pergi ke pelayar fail"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Toggle penggunaan format DOS"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Toggle penggunaan format Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Toggle tambahan akhiran"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Toggle tambahan awalan"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Toggle salinan fail asal"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Laksanakan arahan luaran"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Toggle kegunaan buffer baru"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Keluar dari pelayar fail"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Pergi ke fail pertama dalam senarai"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Pergi ke fail terakhir dalam senarai"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Pergi ke fail terakhir dalam senarai"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Pergi ke fail pertama dalam senarai"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Pergi ke direktori"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Tutup"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Tulis"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Justifikasi"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Baca Fail"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Kerat Teks"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "UnJustifikasi"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Nyahpotong Teks"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Pos Kursor"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Ke Pengeja"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Tanda Teks"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Salin Teks"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Teks Indent"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Teks Tidak Indent"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Nyahbuat"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Buat semula"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Maju"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Undur"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Perkataan Selepas"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Perkataan Terdahulu"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Baris Terdahulu"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Baris Berikut"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Asal"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Akhir"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Cari Lain-lain Tanda Kurungan"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Skrol Atas"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Skrol Bawah"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Fail Sebelum"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Fail Selepas"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Masukan Verbatim"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Padam"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Backspace"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "PtngHnggAkhr"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Kiraan Perkataan"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Mod bantuan"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Paparan posisi tetap kursor"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Guna satu lagi baris untuk menyunting"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Gulungan lancar"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Papar ruangputih"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Sorotan warna sintaks"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Kekunci Home pintar"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Auto indent"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Potong hingga akhir"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Lilit baris panjang"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Penukaran tab ditaip kepada ruang"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Salinan fail"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Buffer fail berganda"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Sokongan tetikus"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Tiada pertukaran dari format DOS/Mac"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Gantungan"
+
+#: src/global.c:1399
+#, fuzzy
+msgid "Soft line wrapping"
+msgstr "Lilit baris panjang"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Teks Bantuan Arahan Carian\n"
+"\n"
+" Masukkan perkataan atau aksara yang anda hendak cari, kemudian tekan "
+"Enter. Jika terdapat padanan untuk teks yang anda masukkan, skrin akan "
+"dikemaskinikan ke lokasi padanan terhampir rentetan carian tersebut.\n"
+"\n"
+" Rentetan carian terdahulu akan dipaparkan dalam kurungan selepas prom "
+"carian. Menekan Enter tanpa memasukkan sebarang teks akan melaksanakan "
+"carian terdahulu."
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Jika anda telah memilih teks dengan menanda dan kemudian mencari untuk "
+"mengganti, hanya padanan dalam teks dipilih akan diganti.\n"
+"\n"
+" Kekunci fungsi berikut terdapat didalam mod Cari:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Teks Bantuan Pergi Ke Baris\n"
+"\n"
+" Masukkan nombor baris yang anda hendak pergi dan tekan Enter. Jika "
+"terdapat kurang baris teks daripada nombor yang anda masukkan, anda akan "
+"dibawa ke baris akhir fail tersebut.\n"
+"\n"
+" Kekunci fungsi berikut terdapat didalam mod Pergi Ke Baris:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Teks Bantuan Sisipan Fail\n"
+"\n"
+" Taip nama fail yang hendak disisipkan ke dalam buffer fail semasa di "
+"kedudukan kursor semasa.\n"
+"\n"
+" Jika anda telah menghimpun nano dengan sokongan buffer fail berganda, dan "
+"menghidupkan buffer berganda dengan penanda baris arahan -F atau --"
+"multibuffer, Meta-F toggle, atau fail nanorc, menyisipkan fail akan "
+"menyebabkannya dimuatkan ke dalam buffer berlainan (guna Meta-< dan > untuk "
+"menukar diantara buffer fail)."
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Jika anda memerlukan buffer kosong tambahan, jangan masukkan sebarang "
+"namafail, atau taip namafail yang tidak wujud pada prom dan tekan Enter.\n"
+"\n"
+" Kekunci fungsi berikut terdapat didalam mod Sisipan Fail:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Teks Bantuan Menulis Fail\n"
+"\n"
+" Taip nama fail semasa yang anda hendak simpan dan tekan Enter untuk "
+"menyimpan fail tersebut.\n"
+"\n"
+" Jika anda telah memilih teks dengan menanda, anda akan ditanya untuk "
+"menyimpan hanya bahagian dipilih ke dalam fail berasingan. Untuk "
+"mengurangkan risiko menulisganti fail semasa dengan hanya sebahagian "
+"daripadanya, namafail semasa tidak dijadikan pilihan asal dalam mod ini.\n"
+"\n"
+" Kekunci fungsi berikut terdapat didalam mod Menulis Fail:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Teks Bantuan Pelayar Fail\n"
+"\n"
+" Pelayar fail digunakan untuk melihat secara visual struktur direktori untuk "
+"memilih fail untuk membaca dan menulis. Anda boleh menggunakan kekunci "
+"panah atau Page Up/Down untuk melihat fail, dan S atau Enter untuk memilih "
+"fail atau memasuki direktori yang dipilih. Untuk naik ke atas satu tahap, "
+"pilih direktori bernama \"..\" di bahagian atas senarai fail.\n"
+"\n"
+" Kekunci fungsi berikut terdapat didalam pelayar fail:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Teks Bantuan Carian Pelayar\n"
+"\n"
+" Masukkan perkataan atau aksara yang anda hendak cari, kemudian tekan "
+"Enter. Jika terdapat padanan untuk teks yang anda masukkan, skrin akan "
+"dikemaskinikan ke lokasi padanan terhampir untuk rentetan carian tersebut.\n"
+"\n"
+" Rentetan carian terdahulu akan dipaparkan dalam kurungan selepas prom "
+"carian. Menekan Enter tanpa memasukkan sebarang teks akan melaksanakan "
+"carian terdahulu.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Kekunci fungsi berikut terdapat dalam mod Pencarian Pelayar:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Teks Bantuan Pelayar Pergi ke Direktori\n"
+"\n"
+" Masukkan nama direktori yang anda hendak lihat.\n"
+"\n"
+" Jika tab pelengkapan tidak dimatikan, anda boleh menggunakan kekunci Tab "
+"untuk (mencuba untuk) melengkapkan secara automatik nama direktori "
+"tersebut.\n"
+"\n"
+" Kekunci fungsi berikut terdapat didalam mod Pelayar Pergi ke Direktori:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Teks Bantuan Penyemak Ejaan\n"
+"\n"
+" Penyemak ejaan menyemak ejaan semua teks didalam fail semasa. Apabila "
+"perkataan yang tidak diketahui dijumpai, ia akan disorot dan penggantinya "
+"boleh disunting. Ia kemudian akan bertanya untuk menggantikan setiap "
+"jumpaan perkataan salah eja yang diberikan didalam fail semasa, atau, jika "
+"anda telah memilih teks dengan menanda, dalam teks dipilih.\n"
+"\n"
+" Kekunci fungsi berikut terdapat didalam mod Penyemak Ejaan:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Teks Bantuan Arahan Pelaksanaan\n"
+"\n"
+" Mod ini membenarkan anda untuk memasukkan keluaran arahan yang dijalankan "
+"oleh shell ke dalam buffer semasa (atau satu buffer baru dalam mod buffer "
+"pelbagai fail). Jika anda memerlukan buffer kosong lain, jangan masukkan "
+"sebarang arahan.\n"
+"\n"
+" Kekunci fungsi berikut terdapat didalam mod Laksana Arahan:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Teks bantuan nano utama\n"
+"\n"
+" Penyunting nano direka untuk meniru fungsi dan kemudahgunaan penyunting "
+"teks UW Pico. Terdapat empat bahagian utama penyunting. Baris teratas "
+"menunjukkan versi program, namafail semasa yang sedang disunting, dan adakah "
+"fail tersebut telah diubahsuai. Berikutnya adalah tetingkap utama "
+"penyunting yang menunjukkan fail yang sedang disunting. Baris status adalah "
+"baris ketiga dari bawah dan menunjukkan mesej-mesej penting."
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Dua baris terbawah memaparkan pintasan yang biasa digunakan dalam "
+"penyunting.\n"
+"\n"
+" Penandaan untuk pintasan adalah seperti berikut: turutan kekunci Control "
+"ditandakan dengan simbol caret (^) dan boleh dimasukkan dengan kekunci "
+"Control (Ctrl) atau menekan kekunci Escape (Esc) dua kali. Turutan kekunci "
+"Escape ditandakan dengan simbol Meta (M-) dan boleh dimasukkan dengan "
+"menggunakan kekunci Esc, Alt atau Meta bergantung pada tetapan papan kekunci "
+"anda."
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Juga, menekan Esc dua kali dan menaip nombor tiga-digit daripada 000 ke 255 "
+"akan memasukkan aksara dengan nilai yang sepadan. Kekunci-kekunci berikut "
+"terdapat dalam tetingkap utama penyunting. Kekunci alternatif ditunjukkan "
+"dalam kurungan:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "enable/disable"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Kekunci tidak sah dalam mod lihat"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Buffer ditulis ke %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Buffer tidak ditulis ke %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Buffer tidak ditulis: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Saiz tetingkap terlalu kecil bagi nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Penggunaan: nano [PILIHAN] [[+BARIS[,LAJUR]] FAIL]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Pilihan\t\tPilihan panjang GNU\t\tMaksud\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Pilihan\t\tMakna\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Papar mesej ini"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+BARIS,LAJUR"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Mula pada baris BARIS, lajur LAJUR"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Aktifkan kekunci home pintar"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Simpan salinan fail sediawujud"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <dir>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<dir>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Direktori untuk menyimpan fail salinan unik"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Guna tebal berbanding teks video terbalik"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Tukar tab ditaip kepada ruang"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Benarkan beberapa buffer fail"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Tulis & baca sejarah carian/gantian rentetan"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Jangan lihat pada fail nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Betulkan masalah kekeliruan pad kekunci bernombor"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Jangan tambah baris baru pada penghujung fail"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Jangan tukar fail dari format DOS/Mac"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Guna satu lagi baris untuk menyunting"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <str>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<str>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Rentetan petikan"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Mod terhad"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Gulung mengikut baris berbanding separuh skrin"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#cols>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#cols>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Tetapkan lebar tab dalam ke #lajur lajur"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Laksana pengosongan bar status pantas"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Papar maklumat versi dan keluar"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Kesan sempadan perkataan lebih tepat"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <str>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<str>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Takrifan sintaks untuk digunakan bagi mewarna"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Sentiasa papar kedudukan kursor"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Betulkan masalah kekeliruan Backspace/Delete"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Indent baris baru secara automatik"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Potong dari kursor hingga ke akhir baris"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Jangan ikut pautan simbolik, tulisemula"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Aktifkan penggunaan tetikus"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <dir>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<dir>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Tetapkan direktori operasi"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Pelihara kekunci XON (^Q) dan XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#cols>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#cols>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Tetapkan titik gulungan pada lajur #lajur"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Aktifkan pengeja lain"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Auto simpan ketika keluar, jangan maklum"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Mod lihat (baca sahaja)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Jangan lilit baris panjang"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Jangan papar dua baris bantuan"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Aktifkan gantungan"
+
+#: src/nano.c:924
+#, fuzzy
+msgid "Enable soft line wrapping"
+msgstr "Lilit baris panjang"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(diabaikan, untuk kesesuaian Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano versi %s (compiled %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Emel: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Pilihan kompilasi:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Maaf, sokongan untuk fungsi ini telah dimatikan"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"Simpan buffer ubahsuai (JAWAB \"Tidak\" AKAN MENGHILANGKAN PERUBAHAN) ? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "SIGHUP atau SIGTERM diterima\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Guna \"fg\" untuk kembali ke nano.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "dihidupkan"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "dimatikan"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Arahan Tidak Diketahui"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON diabaikan, mumble mumble"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF diabaikan, mumble mumble"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Saiz tab \"%s\" yang diminta tidak sah"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Saiz isian \"%s\" yang diminta tidak sah"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Yy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Tt"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Ss"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Ya"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Semua"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Tidak"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Ralat dalam %s pada baris %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Hujah '%s' tiada pengakhiran \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Rentetan regex mesti bermula dan tamat dengan aksara \""
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Regex tidak sah \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Nama sintaks tiada"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "Sintaks \"none\" adalah dikhaskan"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "Sintaks \"default\" mesti tidak mempunyai sambungan"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Nama kekunci hilang"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+#, fuzzy
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "ikatankekunci mesti bermula dengan \"^\", \"M\", atau \"F\"\n"
+
+#: src/rcfile.c:407
+#, fuzzy
+msgid "Must specify function to bind key to"
+msgstr "Mesti menyatakan fungsi untuk mengikat kekunci ke\n"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+#, fuzzy
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "Mesti menyatakan kekunci ikat ke menu (atau \"semua\")\n"
+
+#: src/rcfile.c:426
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Tidak dapat memetakan nama \"%s\" ke fungsi\n"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Tidak dapat memetakan nama \"%s\" ke menu\n"
+
+#: src/rcfile.c:454
+#, fuzzy, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "Maaf, kekunci \"%s\" adalah ikatan tidak sah\n"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Warna \"%s\" tidak difahami.\n"
+"Warna yang sah adalah \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" dan\n"
+"\"black\", dengan prefiks pilihan \"bright\"\n"
+"untuk warna latar hadapan."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Tidak dapat menambah arahan warna tanpa arahan sintaks"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Nama warna tiada"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Warna latarbelakang \"%s\" tidak boleh terang"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Rentetan regex hilang"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" memerlukan padanan \"end=\""
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Tidak dapat menambah pengepala regex tanpa arahan sintaks"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Ralat maut: tiada kekunci dipetakan untuk fungsi \"%s\""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Keluar. Sila guna nano dengan pilihan -I jika perlu untuk mengubah tetapan "
+"nanorc anda\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Arahan \"%s\" tidak dibenarkan dalam fail diselitkan"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Sintaks \"%s\" tidak mempunyai arahan warna"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Arahan \"%s\" tidak difahami"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Penanda hilang"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Pilihan \"%s\" memerlukan hujah"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Pilihan bukan rentetan pelbagai byte yang sah"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Aksara bukan-kosong diperlukan"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Dua aksara satu-lajur diperlukan"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Tidak dapat nyahtetap penanda \"%s\""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Penanda \"%s\" tidak diketahui"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Saya tidak dapat mencari direktori utama! Wah!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%.*s%s\" tidak dijumpai"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (untuk mengganti) dalam pilihan"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (untuk mengganti)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Ganti dikedudukan ini?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Ganti dengan"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "%lu tempat telah diganti"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Masukkan nombor baris, nombor lajur"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Nombor baris atau lajur tidak sah"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Bukan kurungan"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Tiada padanan kurungan"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Tetapkan Tanda"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Nyahtetap Tanda"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Tiada apa dalam buffer nyahbuat!"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr "Ralat dalaman: tidak dapat memadan baris %d. Sila simpan kerja anda"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "tambah teks"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "padam teks"
+
+#: src/text.c:489 src/text.c:628
+#, fuzzy
+msgid "line wrap"
+msgstr "Lilit baris panjang"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "gabung baris"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "potong teks"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "nyahpotong teks"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "selit teks"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "ganti teks"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Ralat dalaman: jenis tidak diketahui. Sila simpan kerja anda"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Nyahbuat tindakan (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Tiada apa hendak di ulangbuat!"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr "Ralat dalaman: tetapan buat semula gagal. Sila simpan kerja anda"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Ulangbuat tindakan (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Tidak dapat menyalurkan"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Tidak dapat mencabang"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+"Ralat dalaman: tidak dapat menetapkan nyahpotong. Sila simpan kerja anda."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Ralat dalaman: jenis tidak diketahui. Sila simpan kerja anda."
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Petikan rentetan tidak sesuai %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Sekarang boleh UnJustify!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Ubah penggantian"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Tidak dapat mencipta paip"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Menghasilkan senarai perkataan salah eja, sila tunggu..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Tidak dapat memperoleh saiz buffer paip"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Ralat melaksanakan \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Ralat melaksanakan \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Ralat melaksanakan \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Selesai memeriksa ejaan"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Ralat melaksanakan \"%s\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Semakan ejaan gagal: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Semakan ejaan gagal: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sPerkataan: %lu Baris: %ld Aksara: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "Dalam Pilihan:"
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano tidak cukup memori!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Masukan Unicode"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Diubahsuai"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Lihat"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "DIR:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Fail:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "baris %ld/%ld (%d%%), lajur %lu/%lu (%d%%), aksara %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Penyunting teks nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "versi"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Dibawakan kepada anda oleh:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Terima kasih khas kepada:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "The Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Untuk ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "dan sesiapa yang kami lupa...."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Terima kasih kerana menggunakan nano!"
+
+#~ msgid "line split"
+#~ msgstr "pisah baris"
diff --git a/po/nano.pot b/po/nano.pot
new file mode 100644
index 0000000..f8dac69
--- /dev/null
+++ b/po/nano.pot
@@ -0,0 +1,1929 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr ""
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr ""
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr ""
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr ""
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr ""
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr ""
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr ""
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr ""
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr ""
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr ""
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr ""
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr ""
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr ""
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr ""
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr ""
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr ""
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr ""
+
+#: src/files.c:706
+msgid "New File"
+msgstr ""
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr ""
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr ""
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr ""
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr ""
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr ""
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr ""
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr ""
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr ""
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr ""
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr ""
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr ""
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr ""
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr ""
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr ""
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr ""
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr ""
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr ""
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr ""
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr ""
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr ""
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr ""
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr ""
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr ""
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr ""
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr ""
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr ""
+
+#: src/global.c:416
+msgid "Replace"
+msgstr ""
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr ""
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr ""
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr ""
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr ""
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr ""
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr ""
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr ""
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr ""
+
+#: src/global.c:457
+msgid "First File"
+msgstr ""
+
+#: src/global.c:458
+msgid "Last File"
+msgstr ""
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr ""
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr ""
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr ""
+
+#: src/global.c:464
+msgid "Append"
+msgstr ""
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr ""
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr ""
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr ""
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr ""
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr ""
+
+#: src/global.c:481
+msgid "Exit"
+msgstr ""
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr ""
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr ""
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr ""
+
+#: src/global.c:485
+msgid "First Line"
+msgstr ""
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr ""
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr ""
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr ""
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr ""
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr ""
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr ""
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr ""
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr ""
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr ""
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr ""
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr ""
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr ""
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr ""
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr ""
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr ""
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr ""
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr ""
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr ""
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr ""
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr ""
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr ""
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr ""
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr ""
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr ""
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr ""
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr ""
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr ""
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr ""
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr ""
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr ""
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr ""
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr ""
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr ""
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr ""
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr ""
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr ""
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr ""
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr ""
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr ""
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr ""
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr ""
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr ""
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr ""
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr ""
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr ""
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr ""
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr ""
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr ""
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr ""
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr ""
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr ""
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr ""
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr ""
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr ""
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr ""
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr ""
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr ""
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr ""
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr ""
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr ""
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr ""
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr ""
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr ""
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr ""
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr ""
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr ""
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr ""
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr ""
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr ""
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr ""
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr ""
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr ""
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr ""
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr ""
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr ""
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr ""
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr ""
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr ""
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr ""
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr ""
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr ""
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr ""
+
+#: src/global.c:830
+msgid "Home"
+msgstr ""
+
+#: src/global.c:833
+msgid "End"
+msgstr ""
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr ""
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr ""
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr ""
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr ""
+
+#: src/global.c:858
+msgid "Next File"
+msgstr ""
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr ""
+
+#: src/global.c:867
+msgid "Tab"
+msgstr ""
+
+#: src/global.c:870
+msgid "Enter"
+msgstr ""
+
+#: src/global.c:873
+msgid "Delete"
+msgstr ""
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr ""
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr ""
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr ""
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr ""
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr ""
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr ""
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr ""
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr ""
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr ""
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr ""
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr ""
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr ""
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr ""
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr ""
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr ""
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr ""
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr ""
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr ""
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr ""
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr ""
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr ""
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr ""
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr ""
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr ""
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr ""
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr ""
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr ""
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr ""
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr ""
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr ""
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr ""
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr ""
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr ""
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr ""
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr ""
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr ""
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr ""
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr ""
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr ""
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr ""
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr ""
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr ""
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr ""
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr ""
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr ""
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr ""
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr ""
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr ""
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr ""
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr ""
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr ""
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr ""
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr ""
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr ""
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr ""
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr ""
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr ""
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr ""
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr ""
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr ""
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr ""
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr ""
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr ""
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr ""
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr ""
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr ""
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr ""
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr ""
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr ""
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr ""
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr ""
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr ""
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr ""
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr ""
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr ""
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr ""
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr ""
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr ""
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr ""
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr ""
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr ""
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr ""
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr ""
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr ""
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr ""
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr ""
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr ""
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr ""
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr ""
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr ""
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr ""
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr ""
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr ""
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr ""
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr ""
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr ""
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr ""
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr ""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr ""
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr ""
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr ""
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr ""
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr ""
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr ""
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr ""
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr ""
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr ""
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr ""
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr ""
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr ""
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr ""
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr ""
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr ""
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr ""
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr ""
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr ""
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr ""
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr ""
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr ""
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr ""
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr ""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr ""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr ""
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr ""
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr ""
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr ""
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr ""
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr ""
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr ""
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr ""
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr ""
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr ""
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr ""
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr ""
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr ""
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr ""
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr ""
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr ""
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr ""
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr ""
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr ""
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr ""
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr ""
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr ""
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr ""
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr ""
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr ""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr ""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr ""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr ""
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr ""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr ""
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr ""
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr ""
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr ""
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr ""
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr ""
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr ""
+
+#: src/winio.c:2150
+msgid "View"
+msgstr ""
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr ""
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr ""
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr ""
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr ""
+
+#: src/winio.c:3493
+msgid "version"
+msgstr ""
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr ""
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr ""
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr ""
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr ""
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr ""
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr ""
diff --git a/po/nb.gmo b/po/nb.gmo
new file mode 100644
index 0000000..b1b5ffa
--- /dev/null
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
new file mode 100644
index 0000000..9f57f40
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,2175 @@
+# Norwegian bokmål message catalogs for GNU nano.
+# Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+# Eivind Kjørstad <ekj@vestdata.no>, 2001.
+# Stig E Sandø <stig@ii.uib.no>, 2002.
+# Geir Helland <pjallabais@users.sourceforge.net>, 2004
+# $Id: nb.po,v 1.3 2002/01/23 01:06:20 astyanax Exp $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.9.99pre0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2006-10-16 23:09+0200\n"
+"Last-Translator: Geir Helland <pjallabais@users.sourceforge.net>\n"
+"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Gå til katalog"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Avbrutt"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Kan ikke gå utenfor %s i begrenset modus"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Lesefeil på %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Kan ikke bevege seg opp en katalog"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(kat)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(foreldrekatalog)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Søk"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Ta hensyn til store/små bokstaver]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Regulært uttrykk]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Bakover]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Søket gikk rundt"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Dette er eneste forekomst"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Tomt søkemønster"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Kan ikke sette inn fil fra utsiden av %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Ikke flere åpne filbuffer"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Byttet til %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Ny buffer"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Leste %lu linje (Konvertert fra DOS og Mac-format)"
+msgstr[1] "Leste %lu linjer (Konvertert fra DOS og Mac-format)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "Leste %lu linje (Konvertert fra DOS og Mac-format)"
+msgstr[1] "Leste %lu linjer (Konvertert fra DOS og Mac-format)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Leste %lu linje (Konvertert fra Mac-format)"
+msgstr[1] "Leste %lu linjer (Konvertert fra Mac-format)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Leste %lu linje (Konvertert fra Mac-format)"
+msgstr[1] "Leste %lu linjer (Konvertert fra Mac-format)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Leste %lu linje (Konvertert fra DOS-format)"
+msgstr[1] "Leste %lu linjer (Konvertert fra DOS-format)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Leste %lu linje (Konvertert fra DOS-format)"
+msgstr[1] "Leste %lu linjer (Konvertert fra DOS-format)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Leste %lu linje"
+msgstr[1] "Leste %lu linjer"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Leser fil"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Ny fil"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" ikke funnet"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" er en katalog"
+
+# "enhet" = "device", kanskje, men det er litt forvirrande
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" er en enhetsfil (device)"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Kommando som skal kjøres i nytt buffer [fra %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Kommando som skal kjøres [fra %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Fil som skal settes inn [fra %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Fil som skal settes inn [fra %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Tasten er ugyldig utenfor multibuffer-modus"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Kan ikke skrive utenfor %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"Kan ikke prependere eller appendere til en symbolsk lenke med --nofollow satt"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, fuzzy, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Feil ved skriving til midlertidlig fil: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "For mange sikkerhetskopier?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Skrivefeil %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Feil ved skriving til midlertidlig fil: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Skrev %lu linje"
+msgstr[1] "Skrev %lu linjer"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS Format]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " {Mac Format]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Sikkerhetskopi]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Legg til valgt område først i fil"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Legg til valgt område sist i fil"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Skriv valgt område til fil"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Filnavn det skal legges til på slutten av"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Filnavn det skal legges til først i"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Filnavn som skal skrives til"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Filen finnes, SKRIVE OVER ? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Lagre filen under et ANNET NAVN ? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(mer)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Trykk linjeskift for å fortsette oppstarten av nano\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Erstatt"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Ikke erstatt"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Følsomt for store/små bokstavar"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Bakover"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Regulært uttrykk"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "ForrigeHistorie"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "NesteHistorie"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Gå til tekst"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Finn neste"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Første fil"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Siste fil"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Til filer"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS Format"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac Format"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Legg til etter"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Legg til før"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Sikkerhetskopi"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Eksekver kommando"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Gå til katalog"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Hjelp"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Avslutt"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Finn"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Forrige side"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Neste side"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Første linje"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Siste linje"
+
+#: src/global.c:487
+#, fuzzy
+msgid "Suspend"
+msgstr "Legg i bakgrunnen"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Avsn. start"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Avsn. slutt"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "JusterAlt"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Oppfrisk"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Sett inn fil"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Gå til linje"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Juster gjeldende avsnitt"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Avbryt gjeldende funksjon"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Vis denne hjelpeteksten"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Lukk gjeldende filbuffer/ Avslutt nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Avslutt nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Lagre nåværende fil"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Sett inn en annen fil i denne"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Søk etter streng eller regulært uttrykk"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "Gå til forrige skjerm"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "Gå til neste skjerm"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Klipp denne linjen og lagre den i klippebufferet"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Sett inn klippebufferet her"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Vis pekerposisjon"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Start stavesjekk, dersom tilgjengelig"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Erstatt streng eller regulært uttrykk"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Gå til linje- og kolonnenummer"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Marker teksten ved markøren"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Gjenta siste søk"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Kopier gjeldende linje og lagre i utklippstavlen"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Indenter gjeldende linje"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Fjern indentering fra gjeldende linje"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "Ett tegn frem"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "Ett tegn tilbake"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "Til neste ord"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "Til forrige ord"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "Til forrige linje"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "Til neste linje"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "Til begynnelsen av linjen"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "Flytt til slutten av linjen"
+
+#: src/global.c:555
+#, fuzzy
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Til begynnelsen av gjeldende avsnitt"
+
+#: src/global.c:557
+#, fuzzy
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Til slutten av gjeldende avsnitt"
+
+#: src/global.c:560
+#, fuzzy
+msgid "Go to the first line of the file"
+msgstr "Til første linje i filen"
+
+#: src/global.c:562
+#, fuzzy
+msgid "Go to the last line of the file"
+msgstr "Til siste linje i filen"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "Til samsvarende klamme"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Rull opp en linje uten å flytte markøren"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Rull ned en linje uten å flytte markøren"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Bytt til forrige buffer"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Bytt til neste buffer"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Sett inn ett og ett tegn"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Sett inn tabulatortegn ved markøren"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Sett inn et linjeskift ved markøren"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Slett tegnet under peker"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Slett tegnet til venstre for peker"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Kutt fra markøren til slutten av filen"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Juster hele filen"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Tell antall ord, linjer og tegn"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Tegn skjermen på nytt"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Inverter valg for skille mellom små og store bokstaver i søk"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Reverser søkeretning"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Regulære uttrykk av/på"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Hent tilbake forrige søk-/erstatt tekst"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Hent tilbake neste søk-/erstatt tekst"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Gå til fil-leser"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "DOS filformat av/på"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Mac filformat av/på"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Inverter valg for appendering"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Inverter valg for prependering"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Inverter valg for sikkerhetskopi av orginalfil"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Eksekver ekstern kommando"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Bruk nytt buffer av/på"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Gå ut av fil-leser"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Gå til første linje i listen"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Gå til siste linje i listen"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Gå til siste linje i listen"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Gå til første linje i listen"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Gå til katalog"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Lukk"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Lagre"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Juster"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Les fil"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Klipp ut"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Avjuster"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Angre \"klipp ut\""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Posisjon"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Staving"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Marker tekst"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Kopier tekst"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Indenter"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Angre \"indenter\""
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Fremover"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Bakover"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Neste ord"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Forrige ord"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Forrige side"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Siste linje"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Hjem"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Bunn"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Finn den andre klammen"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Rull opp"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Rull ned"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Forrige fil"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Neste fil"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Legg inn ord for ord"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Slett"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Slettetast"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "Kutt Til Slutt"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Antall ord"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Hjelp-modus"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Lås markørposisjon"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Bruk mer plass til editering"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Jevn tekstrulling"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Vis usynlige tegn (mellomrom, tab, linjeskift osv.)"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Fremhev syntaks ved hjelp av farger"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Smart home tast"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Automatisk indentering"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Klipp til slutten"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Automatisk linjeskift"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Konverter tabulator til mellomslag"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Sikkerhetskopier"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Flere filbuffere"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Musestøtte"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Ingen konvertering fra DOS/Mac format"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Legg i bakgrunnen"
+
+#: src/global.c:1399
+#, fuzzy
+msgid "Soft line wrapping"
+msgstr "Automatisk linjeskift"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Søkekommando hjelpetekst\n"
+"\n"
+" Skriv inn ord eller tegn du ønsker å søke etter og trykk linjskift. Dersom "
+"søketeksten forekommer i teksten vil skjermen oppdateres og markøren flyttes "
+"til den første forekomsten.\n"
+"\n"
+"Forrige søketekst vises i braketter etter søkepromptet. Trykk linjeskift "
+"uten å skrive inn ny søketekst for å gjenta forrige søk."
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Dersom du har valgt tekst med merket og så valgt søk og erstatt, så vil kun "
+"treff i den markerte teksten bli erstattet.\n"
+"\n"
+"Følgende funksjonstaster er tilgjengelig i Søkemodus:\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Gå Til Linje hjelpetekst\n"
+"\n"
+"Skriv inn linjenummere du ønsker å gå til og trykk linjeskift. Dersom det er "
+"færre linjer enn nummeret du angav vil du flyttes til den siste linjen i "
+"filen.\n"
+"\n"
+"Følgende funksjonstaster er tilgjengelig i Gå Til Linje modus:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Hjelp til sett inn fil\n"
+"\n"
+"Skriv inn navnet på filen som skal settes inn ved markøren i det gjeldende "
+"bufferet.\n"
+"\n"
+"Dersom du har kompilert nano med støtte for flere filbuffer, og aktivisert "
+"dette med -F eller --multibuffer kommandolinjeflagget, Meta-F av/på bryteren "
+"eller i nanorc filen vil filen som settes inn lastes i et eget buffer. Bruk "
+"Meta-< og > til å bytte mellom buffer."
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Dersom du trenger et nytt blankt buffer må du enten la være å skrive inn noe "
+"filnavn, eller skrive inn navnet på en fil som ikke eksisterer før du "
+"trykker Linjeskift.\n"
+"\n"
+" Følgende funksjonstaster er tilgjengelig i Sett Inn Fil modus.\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Hjelpetekst til Lagre Fil\n"
+"\n"
+"Skriv inn navnet du ønsker å lagre gjeldende fil med, og trykk linjeskift.\n"
+"\n"
+"Dersom du har markert tekst i bufferet vil du få spørsmål om du kun ønsker å "
+"lagre denne delen til en egen til. For å redusere sjansen for å overskrive "
+"filen du arbeider med vil ikke det gamle filnavnet være forvalgt her.\n"
+"\n"
+"Følgende funksjonstaster er tilgjengelig i Lagre Fil modus:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Fil-leser hjelpetekst \n"
+"\n"
+"Med fil-leseren kan du se igjennom katalogstrukturen og velge en fil\n"
+"for lesing eller skriving. Du kan bruke piltastene eller Page Up/Down\n"
+"for å se igjennom filer, og S eller Linjeskift for å velge den angitte\n"
+"filen eller katalogen. For å flytte deg opp et nivå velger du\n"
+"katalogen kalt \\\"..\\\" øverst i fillisten.\n"
+"\n"
+"Følgende funksjonstaster er tilgjengelig i fil-leseren: \n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Søkekommando hjelpetekst\n"
+"\n"
+" Skriv inn ord eller tegn du ønsker å søke etter og trykk linjskift. Dersom "
+"søketeksten forekommer i teksten vil skjermen oppdateres og markøren flyttes "
+"til den første forekomsten.\n"
+"\n"
+"Forrige søketekst vises i braketter etter søkepromptet. Trykk linjeskift "
+"uten å skrive inn ny søketekst for å gjenta forrige søk.\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+"Følgende funksjontaster er tilgjengelig i søkemodus:\\\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Gå til Dir hjelpetekst\n"
+"\n"
+"Skriv inn stien til katalogen du vil se på.\n"
+"\n"
+"Dersom tabulator-komplementasjon ikke er deaktivert kan du bruke tab-tasten\n"
+"til å (forsøke å) automatisk fullføre katalognavnet.\n"
+"\n"
+"Følgende funksjonstaster er definert for Gå til Dir modus:\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Stavekontroll hjelpetekts\n"
+"\n"
+"Stavekontrollen går igjennom all tekst i gjeldende filbuffer. Når den kommer "
+"over et ukjent ord vil dette utheves og en erstattning kan skrives inn. Den "
+"vil så spørre deg om du ønsker å erstatte alle forekomster av det "
+"feilstavede ordet i filen, eller om du har markert et utvalg av teksten, i "
+"den utvalgte teksten.\n"
+"\n"
+"Følgende funksjonstaster er definert for stavekontroll modus:\n"
+"\n"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Hjelpetekst til Ekstern Kommando\n"
+"\n"
+"Denne menyen lar deg sette resultatet (STDOUT) av kommandoer kjørt i "
+"skallet\n"
+"inn i gjeldende filbuffer (eller i et nytt buffer i multibuffer modus). "
+"Dersom du vil ha et nytt buffer skriver du ikke inn noen kommando, bare "
+"trykk linjeskift.\n"
+"\n"
+"Følgende funksjonstaster er definert for Ekstern Kommando modus:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+" Nano hjelpetekst\n"
+"\n"
+" Nano tekstredigeringsprogram er designet for å etterligne funksjonaliteten "
+"og bruksmåten for universitetet i Washington sitt Pico-program. Der er fire "
+"hovedområder i dette programmet: Den øverste linjen viser versjonsnummeret "
+"og navnet på filen som blir redigert. Nedenfor er hovedvinduet som viser "
+"filen som blir endret. Status-linja er den 3. linjen nedenfra og viser "
+"viktige meldinger. De to nederste linjene viser de vanligste snarveiene i "
+"programmet.\n"
+"\n"
+" "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"De to nederste linjene viser de meste brukte kommandosnarveiene i "
+"programmet.\n"
+"\n"
+"Notasjonen for snarveier er: Kontroll-tast sekvenser vises her som Caret (^) "
+"symbolet. Det legges inn enten ved å bruke Kontroll-tasten, eller ved å "
+"trykke Escape (Esc) tasten to ganger. Escape-tast sekvenser vises som Meta "
+"(M) symbolet og kan legges inn med enten Esc, Alt eller Meta tasten, "
+"avhengig av hvordan tastaturoppsettet ditt er."
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"I tillegg kan man legge inn tegn ved å trykke Esc to ganger og så skrive inn "
+"en tretalls desimalkode mellom 000 og 255. Følgende kastetrykk er "
+"tilgjengelig i hovedvinduet. Alternative taster viss i parantes:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "skru på/av"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Tasten er ikke gyldig i visninsmodus"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Buffer lagret til %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Buffer ble ikke lagret til %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Buffer ikkr lagret: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Vinduet er for lite for Nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Bruk: nano [valg] [[+LINJE,KOLONNE] FIL]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Valg\t\tGNU lang brukervalg\t\tBetydning\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Opsjon\t\tBetydning\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Vis denne meldingen"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+LINJE,KOLONNE"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Start på linje nummer LINJE, kolonne KOLONNE"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Aktiver smart home tast"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Ta sikkerhetskopier av eksisterende filer"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <kat>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<kat>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Katalog for lagring av unike sikkerhetskopier"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Bruk fet, ikke invertert tekst"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Konverter skrevne tabulatorer til mellomslag"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Muliggjør flere filbuffere"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Logg og les historie med Søk/Erstatt tekster"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Ikke se på nanorc filer"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Fiks forvirringen rundt numerisk tastatus"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Legg ikke til linjeskift sist i filer"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Ikke konverter filer fra DOS/Mac format"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Bruk en ekstra linje til tekstbehandling"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <tekst>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<tekst>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Kvoteringtekst"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Begrenset modus"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#kolonner>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#kolonner>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Sett bredden på en tab til # kolonner"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Bruk hurtig blanking av statuslinjen"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Skriv versjonsnummeret og avslutt"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Detekter ordskille mer nøyektig"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <tekst>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<tekst>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Syntaksdefinisjon for fargekoding"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Vis alltid markørposisjonen"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Fiks forvirringen rundt Backspace/Delete"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Indenter nye linjer automatisk"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Kutt fra markøren til slutten av linjen"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Ikke følg symbolske linkar, skriv over"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Aktiver musstøtte"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <kat>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatiingdir=<kat>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Sett gjeldende katalog"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Behold XON (^Q) og XOFF (^S) tegn"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#kolonner>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#kolonner>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Sett linjebryting på kolonne # kolonner"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Bruk alternativt program for stavekontroll"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Autolagre ved avslutning uten spørsmål"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Visninsgmodus (kun lesetilgang)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Ikke bryt lange linjer"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Ikke vis hjelpelinjene"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Tillat suspendering"
+
+#: src/nano.c:924
+#, fuzzy
+msgid "Enable soft line wrapping"
+msgstr "Automatisk linjeskift"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(ignorert, for kompatibilitet med Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr "GNU nano versjon %s (kompilert %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr "Epost: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Kompilerte opsjoner:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Beklager, støtte for denne funksjonen er deaktivert"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Lagre endret buffer (\"No\" VIL MISTE ENDRINGENE) ? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Mottok SIGHUP eller SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Bruk \"fg\" for å returnere til nano\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "på"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "av"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Ukjent kommando"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON ignorert, mumle mumle."
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF ignorert, mumle mumle."
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Angitt tabulatorstørrels \"%s\" er ugyldig"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Foreslått fyllbredden \"%s\" er ugyldig"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "JjYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Aa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Ja"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Alle"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Nei"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Feil i %s på linje %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Atrument '%s' har uterminert \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Strenger med reguttrykk må begynne med et \" tegn"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Ugyldig reguttrykk \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Mangler syntaksnavn"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "Syntaksen \"none\" (ingen) er reservert"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "Syntaksen \"default\" (forvalgt) kan ikke ta utvidelser"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "Mangler syntaksnavn"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr ""
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Kunne ikke starte \"%s\""
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Farge %s forstås ikke.\n"
+"Gyldige farger er \"green\" (grønn), \"red\" (rød),\n"
+"\"blue\" (blå), \"white\" (hvit), \"yellow\" (gul),\n"
+"\"cyan\" (turkis), \"magenta\" (fiolett) og \"black\"\n"
+"(sort), med valgfritt prefiks \"bright\" (lys)\n"
+"på forgrunnsfarver."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Kan ikke legge til et fargedirektiv uten en syntakskommando"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Mangler farvenavn"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Bakgrunnsfargen %s kan ikke være lys"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Regulært uttrykk mangler"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start= forutsetter et korresponderende \"end=\""
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Kan ikke legge til et fargedirektiv uten en syntakskommando"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Kommandoen \"%s\" tillates ikke i inkludert fil"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Syntaksen \"%s\" har ingen farvekommandoer"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "kommando \"%s\" ikke forstått"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Mangler flagg"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Valg \"%s\" krever et argument"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Brukervalget er ikke gyldig for flerbyte strenger"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Må ha tegn som ikke er tabulator eller mellomslag"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "To enkelt-tegn kreves"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Kan ikke skru av flagget \"%s\""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Ukjent flagg \"%s\""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Finner ikke hjemmekatalogen! Buhu!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%.*s%s\" ikke funnet"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (å erstatte) i seksjon"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (å erstatte)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Erstatt dette tilfellet?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Erstatt med"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Erstattet %lu tilfelle"
+msgstr[1] "Erstattet %lu tilfeller"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Skriv linjenummer, kolonnenummer"
+
+#: src/search.c:1061
+#, fuzzy
+msgid "Invalid line or column number"
+msgstr "Skriv linjenummer, kolonnenummer"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Ikke en klamme"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Ingen matchende klamme"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Merke satt"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Fjern merke"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "Neste fil"
+
+#: src/text.c:489 src/text.c:628
+#, fuzzy
+msgid "line wrap"
+msgstr "Automatisk linjeskift"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "Siste linje"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr " (å erstatte)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Kunne ikke pipe"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Kunne ikke forke"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Ugyldig kvoteringstekst %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Du kan nå avjustere!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Rediger erstatning"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Kunne ikke opprette pipe"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Oppretter ordliste for feilstavelser, vennligst vent..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Kunne ikke finne størrelse på pipe buffer"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Feil ved start av \"ispell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Feil ved start av \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Feil ved start av \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Stavekontroll fullført"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Feil ved start av \"%s\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Stavekontroll feilet: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Stavekontroll feilet: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sOrd: %lu Linjer: %ld Tegn: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "I seksjon: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano er tom for minne!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Unikode inndata"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Endret"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Vis"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "KAT: "
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Fil:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "linje %ld/%ld (%d%%), kolonne %lu/%lu (%d%%), tegn %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Tekstbehandleren nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "versjon"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Brakt til deg av:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Mange takk til:"
+
+# Oversette dette ?
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "The Free Sofware Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "For ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "og alle de andre vi glemte..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Takk for at du bruker nano!"
+
+#~ msgid "Space"
+#~ msgstr "Mellomrom"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Kom igjen, vær litt samarbeidsvillig"
+
+#~ msgid "Direction"
+#~ msgstr "Retning"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Vis hjelpemenyen"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Søk etter tekst"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Erstatt tekst i editoren"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Finn andre klamme"
+
+#~ msgid "Make the current search/replace case (in)sensitive"
+#~ msgstr "Gjør gjeldande søk uten å ta hensyn til store/små bokstavar"
+
+#~ msgid "Make the current search/replace go backwards"
+#~ msgstr "Gjør gjeldande søk mot begynnelsen av teksten"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Legg til først i nåværende fil"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Ta sikkerhetskopi av orginalfil ved lagring"
+
+#~ msgid "Insert into new buffer"
+#~ msgstr "Sett in i nytt buffer"
+
+#~ msgid ""
+#~ "\n"
+#~ "Buffer not written to %s (too many backup files?)\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Buffer ikke lagret til %s (for mange sikkerhetskopier?)\n"
+
+#~ msgid "Up"
+#~ msgstr "Opp"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Bruk: nano [+LINJE] [GNU lange opsjoner] [opsjoner] [fil]\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Bruk: nano [+LINJE] [opsjon] [fil]\n"
+#~ "\n"
+
+#~ msgid "+LINE"
+#~ msgstr "+LINJE"
+
+#~ msgid "Use more space for editing"
+#~ msgstr "Bruk mer plass til redigering"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "Tillat regulære uttrykk i søk"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Bryt linjer ved posisjon #cols"
+
+#~ msgid "Verbatim input"
+#~ msgstr "Legg inn ord for ord"
+
+#~ msgid "Could not create temp file: %s"
+#~ msgstr "Kunne ikke oprette midlertidig fil: %s"
+
+#~ msgid "Refusing zero-length regex match"
+#~ msgstr "Nekter null-lengde regex treff"
diff --git a/po/nl.gmo b/po/nl.gmo
new file mode 100644
index 0000000..8067d6f
--- /dev/null
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000..5ac381e
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,2099 @@
+# Dutch translations for nano.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+#
+# Guus Sliepen <guus@sliepen.eu.org>, 2003.
+# Reinout van Schouwen <reinout@cs.vu.nl>, 2005.
+# Erwin Poeze <erwin.poeze@gmail.com>, 2009.
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2008, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: nano-2.2.4pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-04-09 20:25+0200\n"
+"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.0\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Naar map"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Geannuleerd"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Kan in beperkte modus niet buiten %s gaan"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Fout tijdens lezen van %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Kan niet naar bovenliggende map gaan"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(map)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(oudermap)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Zoeken"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Hoofdlettergevoelig]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Reg.exp.]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Achterwaarts]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Rondgelopen"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Dit is de enige overeenkomst"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Nog geen zoekpatroon bekend"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Kan bestand van buiten %s niet invoegen"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Geen andere open buffers"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Overgeschakeld naar %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Nieuwe buffer"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "%lu regel gelezen (omgezet uit DOS- en Mac-indeling)"
+msgstr[1] "%lu regels gelezen (omgezet uit DOS- en Mac-indeling)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"%lu regel gelezen (omgezet uit DOS- en Mac-indeling - waarschuwing: geen "
+"schrijfrechten)"
+msgstr[1] ""
+"%lu regels gelezen (omgezet uit DOS- en Mac-indeling - waarschuwing: geen "
+"schrijfrechten)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "%lu regel gelezen (omgezet uit Mac-indeling)"
+msgstr[1] "%lu regels gelezen (omgezet uit Mac-indeling)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"%lu regel gelezen (omgezet uit Mac-indeling - waarschuwing: geen "
+"schrijfrechten)"
+msgstr[1] ""
+"%lu regels gelezen (omgezet uit Mac-indeling - waarschuwing: geen "
+"schrijfrechten)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "%lu regel gelezen (omgezet uit DOS-indeling)"
+msgstr[1] "%lu regels gelezen (omgezet uit DOS-indeling)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"%lu regel gelezen (omgezet uit DOS-indeling - waarschuwing: geen "
+"schrijfrechten)"
+msgstr[1] ""
+"%lu regels gelezen (omgezet uit DOS-indeling - waarschuwing: geen "
+"schrijfrechten)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "%lu regel gelezen"
+msgstr[1] "%lu regels gelezen"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "%lu regel ingelezen (waarschuwing: geen schrijfrechten)"
+msgstr[1] "%lu regels ingelezen (waarschuwing: geen schrijfrechten)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Inlezen van bestand"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Nieuw bestand"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "'%s' is niet gevonden"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "'%s' is een map"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "'%s' is een apparaat"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "In nieuwe buffer uit te voeren opdracht [vanuit %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Uit te voeren opdracht [vanuit %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "In nieuwe buffer in te voegen bestand [vanuit %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "In te voegen bestand [vanuit %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "In Kijkmodus is deze toets alleen geldig in multibuffermodus"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Kan buiten %s niets opslaan"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "Kan met '--nofollow' niet aan een symbolische koppeling toevoegen"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Fout tijdens schrijven van tijdelijk bestand %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Te veel reservekopieën?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Fout tijdens schrijven van %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Fout tijdens schrijven van tijdelijk bestand: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "%lu regel geschreven"
+msgstr[1] "%lu regels geschreven"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS-indeling]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac-indeling]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Kopie maken]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Selectie toevoegen vooraan bestand"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Selectie toevoegen achteraan bestand"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Selectie opslaan in bestand"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Vooraan toevoegen aan bestand"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Achteraan toevoegen aan bestand"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Opslaan in bestand"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Bestand bestaat al; OVERSCHRIJVEN? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Bestand opslaan onder een ANDERE NAAM? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "Bestand is gewijzigd na opening; doorgaan met opslaan? "
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(meer)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Druk op Enter om verder te gaan met het starten van nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Vervangen"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Zoeken"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Hfdlgevoelig"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Achterwaarts"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Reg.exp."
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "Vorige"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "Volgende"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Zoeken"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Verderzoeken"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Naar top"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Naar eind"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Bestandenlijst"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS-indeling"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac-indeling"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Achtertoevoegen"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Voortoevoegen"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Reservekopie"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Opdracht uitvoeren"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Naar map..."
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Hulp"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Afsluiten"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Zoeken"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Blad terug"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Blad verder"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Naar top"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Naar eind"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Pauzeren"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Beg.v.alinea"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Eind v.alinea"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "VolUitvullen"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Verversen"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Bestand invoegen"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Naar regel..."
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Huidige alinea uitvullen"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Huidige functie annuleren"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Deze hulptekst tonen"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Huidige buffer sluiten / Nano afsluiten"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Nano afsluiten"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Huidige buffer op schijf opslaan"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Een ander bestand in het huidige invoegen"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Tekst zoeken"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Een schermvol terugscrollen"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Een schermvol verderscrollen"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Huidige regel knippen en bewaren in knipbuffer"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Plakken vanuit knipbuffer naar de huidige regel"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Huidige cursorpositie tonen"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Spellingscontrole oproepen (indien beschikbaar)"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Tekst vervangen"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Naar op te geven regelnummer en kolomnummer gaan"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Tekst markeren vanaf huidige cursorpositie"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Laatste zoekactie herhalen"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Huidige regel kopiëren naar knipbuffer"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Huidige regel laten inspringen"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Huidige regel laten terugspringen"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "De laatste bewerking ongedaan maken"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "De laatst ongedaangemaakte bewerking herdoen"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Eén teken vooruit"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Eén teken achteruit"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Eén woord vooruit"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Eén woord achteruit"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Naar de voorgaande regel"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Naar de volgende regel"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Naar het begin van de huidige regel"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Naar het eind van de huidige regel"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Naar het begin van huidige alinea; daarna naar vorige"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Naar het eind van huidige alinea; daarna naar volgende"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Naar de eerste regel (top) van het bestand"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Naar de laatste regel (eind) van het bestand"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Naar bijbehorend haakje gaan"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Eén regel terugscrollen (cursor niet verplaatsen)"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Eén regel vooruitscrollen (cursor niet verplaatsen)"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Naar voorgaande bestandsbuffer schakelen"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Naar volgende bestandsbuffer schakelen"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Eerstvolgende toetsaanslag verbatim invoegen"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Een tab invoegen op de cursorpositie"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Een regeleinde invoegen op de cursorpositie"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Het teken onder de cursor verwijderen"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Het teken links van de cursor verwijderen"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "De hele rest van het bestand knippen (vanaf de cursor)"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Het gehele bestand uitvullen"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Aantal woorden, regels en tekens in het bestand tellen"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Het scherm verversen (opnieuw tekenen)"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "De editor laten pauzeren (indien ingeschakeld)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Hoofdlettergevoeligheid aan-/uitzetten"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "De zoekrichting omdraaien"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Gebruik van reguliere expressies aan-/uitzetten"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Vorige zoek-/vervangtekst oproepen"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Volgende zoek-/vervangtekst oproepen"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Bestandenlijst oproepen"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "DOS-indeling aan-/uitzetten"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Mac-indeling aan-/uitzetten"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Achteraantoevoegen aan-/uitzetten"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Vooraantoevoegen aan-/uitzetten"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Maken van reservekopieën aan-/uitzetten"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Externe opdracht uitvoeren"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Gebruik van een nieuwe buffer aan-/uitzetten"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Bestandenlijst verlaten"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Naar het eerste bestand in de lijst gaan"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Naar het laatste bestand in de lijst gaan"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "Naar het volgende bestand in de lijst gaan"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "Naar het vorige bestand in de lijst gaan"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Naar een op te geven map gaan"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Sluiten"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Opslaan"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Uitvullen"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Inlezen"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Knippen"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "onUitvullen"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Plakken"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Positie"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Spelling"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Markeren"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Kopiëren"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Inspringen"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Terugspringen"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Ongedaan maken"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Herdoen"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Vooruit"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Terug"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Woord verder"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Woord terug"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Regel terug"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Regel verder"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Begin"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Eind"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Naar bijbehorend haakje"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Omhoog scrollen"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Omlaag scrollen"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Vorig bestand"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Volgend bestand"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Verbatim invoer"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Verwijderen"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Backspace"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "RestKnippen"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Woordentelling"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Hulpregels"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Voortdurende cursorpositieweergave"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Extra regel voor bewerkingsvenster"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Per regel scrollen"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Weergave van witruimte"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Syntaxaanduiding met kleuren"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Slimme Home-toets"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Automatisch inspringen"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Knippen vanaf cursor"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Terugloop van lange regels"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Omzetting van getypte tabs naar spaties"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Reservekopieën maken"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Meerdere bestandsbuffers"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Muisondersteuning"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Geen omzetting uit DOS/Mac-indeling"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Proces-pauzering"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "Zachte terugloop van lange regels"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"'Zoeken/vervangen'-hulptekst\n"
+"\n"
+" Voer de woorden of tekens in waar u naar wilt zoeken, en druk op Enter. "
+"Als er een overeenkomst is voor de ingevoerde tekst, springt de cursor naar "
+"de plaats van de eerstvolgende overeenkomst.\n"
+"\n"
+" Een eventuele vorige zoektekst wordt tussen rechte haken na de zoekprompt "
+"getoond: op Enter drukken zonder tekst in te voeren herhaalt deze vorige "
+"zoekopdracht. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Als u via markering tekst hebt geselecteerd en dan een zoek- en vervangactie "
+"doet, worden alleen de overeenkomsten in de geselecteerde tekst vervangen.\n"
+"\n"
+" De volgende toetsen zijn beschikbaar in 'Zoek/vervang'-modus:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"'Naar regel'-hulptekst\n"
+"\n"
+" Voer het regelnummer in waar u naar toe wilt gaan, en druk op Enter. Als "
+"er minder regels tekst zijn dan het ingevoerde getal, wordt u naar het einde "
+"van de tekst gebracht.\n"
+"\n"
+" De volgende toetsen zijn beschikbaar in 'Naar regel'-modus:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"'Bestand invoegen'-hulptekst\n"
+"\n"
+" Voer de naam in van een bestand dat ingevoegd moet worden op de plek van de "
+"cursor in het huidige bestand.\n"
+"\n"
+" Als nano gecompileerd is met ondersteuning voor meerdere bestandsbuffers en "
+"u deze ingeschakeld hebt (met de optie -F of --multibuffer, of met de Meta-F "
+"toets of via een nanorc-bestand), dan wordt het in te voegen bestand in een "
+"aparte buffer geladen. Gebruik dan Meta-< en > om tussen bestandsbuffers te "
+"schakelen. "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Als u een lege buffer nodig hebt, voer dan geen bestandsnaam in, of typ een "
+"niet-bestaande bestandsnaam, en druk op Enter.\n"
+"\n"
+" De volgende toetsen zijn beschikbaar in 'Bestand invoegen'-modus:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"'Bestand opslaan'-hulptekst\n"
+"\n"
+" Voer de naam in waaronder u de huidige bestandsbuffer op wilt slaan, en "
+"druk op Enter om het weg te schrijven.\n"
+"\n"
+" Als u tekst hebt gemarkeerd, dan wordt aangegeven dat alleen het "
+"geselecteerde deel opgeslagen wordt. Om de kans te verkleinen dat u het "
+"huidige bestand op schijf overschrijft met slechts een deel ervan, is in "
+"deze modus de huidige bestandsnaam niet de standaardnaam.\n"
+"\n"
+" De volgende toetsen zijn beschikbaar in 'Bestand opslaan'-modus:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"'Bestandenlijst'-hulptekst\n"
+"\n"
+" De bestandenlijst kan worden gebruikt om op een visuele manier door de "
+"beschikbare mappen te bladeren en een bestand te selecteren. U kunt de "
+"pijltjestoetsen of PageUp/PageDown gebruiken om door de bestanden te lopen, "
+"en S of Enter om het aangewezen bestand te kiezen of de aangewezen map "
+"binnen te gaan. Kies de map \"..\" bovenaan de bestandenlijst om een niveau "
+"omhoog te gaan.\n"
+"\n"
+" De volgende toetsen zijn beschikbaar in 'Bestandenlijst'-modus:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"'Bestand zoeken'-hulptekst\n"
+"\n"
+" Voer het woord of de tekens in waar u naar wilt zoeken, en druk op Enter. "
+"Als er een overeenkomst is voor de ingevoerde tekst, springt de cursor naar "
+"de plaats van de eerstvolgende overeenkomst.\n"
+"\n"
+" Een eventuele vorige zoektekst wordt tussen rechte haken na de zoekprompt "
+"getoond: op Enter drukken zonder tekst in te voeren herhaalt deze vorige "
+"zoekopdracht.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" De volgende toetsen zijn beschikbaar in 'Bestand zoeken'-modus:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"'Naar map'-hulptekst\n"
+"\n"
+" Voer de naam in van de map waar u naar toe wilt gaan.\n"
+"\n"
+" Als Tab-aanvulling niet uitgeschakeld is, kunt u de Tab-toets gebruiken om "
+"(te proberen) de mapnaam automatisch aan te laten vullen.\n"
+"\n"
+" De volgende toetsen zijn beschikbaar in 'Naar map'-modus:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"'Spellingscontrole'-hulptekst\n"
+"\n"
+" Het spellingscontroleprogramma controleert de spelling van alle woorden in "
+"het huidige bestand. Wanneer een onbekend woord wordt opgemerkt, zal het "
+"duidelijk aangegeven worden en kan een vervangend woord ingevoerd worden. "
+"Daarna zal er gevraagd worden of elk voorkomen van het verkeerd gespelde "
+"woord vervangen moeten worden (in het hele huidige bestand, of alleen in de "
+"geselecteerde tekst als u tekst hebt gemarkeerd).\n"
+"\n"
+" De volgende toetsen zijn beschikbaar in 'Spellingscontrole'-modus:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"'Externe opdracht'-hulptekst\n"
+"\n"
+" Voer de shell-opdracht in waarvan de uitvoer in het huidige bestand (of in "
+"een nieuwe buffer) ingevoegd moet worden. Als u slechts een lege buffer "
+"nodig hebt, kies dan 'Nieuwe buffer' en voer geen opdracht in.\n"
+"\n"
+" De volgende toetsen zijn beschikbaar in 'Externe opdracht'-modus:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Algemene Nano-hulptekst\n"
+"\n"
+" De Nano-editor is ontworpen om de functionaliteit en het gebruiksgemak van "
+"de Pico-editor te emuleren. Het editorscherm bestaat uit vier onderdelen. "
+"De bovenste regel toont links nano's naam en versienummer, in het midden de "
+"naam van het huidige bestand, en rechts of dit bestand gewijzigd is. "
+"Daaronder begint het eigenlijke editvenster waarin het bestand getoond "
+"wordt. De derde regel van onderen is de statusregel en toont belangrijke "
+"berichten. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"De onderste twee regels tonen de meest gebruikte sneltoetsen.\n"
+"\n"
+" De notatie voor de sneltoetsen is als volgt: Control-toetscombinaties "
+"worden genoteerd met een dakje (^) en kunnen worden ingevoerd ofwel door de "
+"Control-toets te gebruiken ofwel door twee keer op Escape te drukken. "
+"Escape-toetscombinaties worden genoteerd met het Meta-symbool (M-) en kunnen "
+"worden ingevoerd met Esc of Alt of Meta, afhankelijk van uw "
+"toetsenbordinstelling. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Verder zal het tweemaal op Escape drukken gevolgd door een decimaal getal "
+"van drie cijfers (van 000 tot 255) het teken met die waarde invoegen.\n"
+"\n"
+" De onderstaande toetscombinaties zijn beschikbaar in het hoofdvenster "
+"(alternatieve toetscombinaties staan tussen haakjes):\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "aan-/uitzetten"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Toets is ongeldig in Kijkmodus"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Buffer is geschreven naar %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Buffer is niet geschreven naar %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Buffer is niet geschreven: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Schermformaat is te klein voor nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Gebruik: nano [OPTIES] [[+REGEL[,KOLOM]] BESTAND]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Optie\t\tLange optie\t\t Betekenis\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Optie\t\t Betekenis\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "deze hulptekst tonen en stoppen"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+REGEL[,KOLOM]"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "op deze regel (en deze kolom) beginnen"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "slimme Home-toets inschakelen"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "van bestaand bestand reservekopie maken"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <map>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<map>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "map voor opslaan van reservekopieën"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "vet in plaats van invers gebruiken"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "getypte tabs omzetten naar spaties"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "meerdere bestandsbuffers aanzetten"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "zoek/vervangteksten bewaren en gebruiken"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "eventuele nanorc-bestanden negeren"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "toetsverwarring numeriek bordje oplossen"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "geen regeleindeteken toevoegen aan slot"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "bestand niet omzetten uit DOS/Mac-opmaak"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "bewerkingsvenster een beetje vergroten"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <tekens>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<tekens>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "te herkennen aanhaaltekens"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "beperkte modus"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "per regel scrollen i.p.v. half scherm"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#kolommen>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#kolommen>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "te gebruiken tabbreedte"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "de statusregel snel wissen"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "programmaversie tonen en stoppen"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "woordgrenzen nauwkeuriger bepalen"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <naam>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<naam>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "te gebruiken syntax (voor kleuring)"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "cursorpositie voortdurend tonen"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Backspace/Delete-verwarring oplossen"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "automatisch inspringen van nieuwe regels"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "^K knipt vanaf cursor i.p.v. hele regel"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "symbolische koppelingen overschrijven"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "gebruik van de muis mogelijk maken"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <map>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<map>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "deze werkmap gebruiken"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "XON- en XOFF-toetsen behouden (^Q en ^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "opstartproblemen zoals rc-fouten negeren"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#kolommen>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#kolommen>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "te gebruiken afbreek-/uitvulbreedte"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <programma>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<programma>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "deze spellingscontroleur gebruiken"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "automatisch opslaan bij afsluiten"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "ongedaanmaken toestaan (EXPERIMENTEEL)"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "kijkmodus (alleen lezen, geen bewerking)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "lange regels niet afbreken"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "niet de twee hulpregels tonen"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "pauzeren van editor toestaan"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "rest van lange regels tonen op volgende"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(genegeerd, maar herkend wegens Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano versie %s (gecompileerd %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr ""
+" E-mail: <nano@nano-editor.org> Website: http://www.nano-editor.org/\n"
+" Meld fouten in de vertaling aan <vertaling@vrijschrift.org>."
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Compilatie-opties:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Ondersteuning voor deze functie is uitgeschakeld"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"Gewijzigde buffer opslaan? (bij \"Nee\" gaan ALLE WIJZIGINGEN VERLOREN) "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "Kan standaardinvoer vanaf toetsenbord niet heropenen\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Lezen van standaardinvoer; ^C om af te breken\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "SIGHUP of SIGTERM ontvangen\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Gebruik 'fg' om terug te keren naar nano.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "is aangezet"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "is uitgezet"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Onbekend commando"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON genegeerd; mmm-mmm"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF genegeerd; mmm-mmm"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Gevraagde tabgrootte '%s' is ongeldig"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Gevraagde uitvulbreedte '%s' is ongeldig"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "JjYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "NnNn"
+
+# Accepteert ook de "O" van "Overal":
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "AaOo"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Ja"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Alle"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Nee"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Fout in %s op regel %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Argument '%s' heeft een ongepaarde \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Reg.exp.-reeksen moeten beginnen en eindigen met een \"-teken"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Onjuiste reguliere expressie '%s': %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Ontbrekende syntaxnaam"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "Het woordje 'none' is gereserveerd"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "Bij het woordje 'default' horen geen extensies"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Ontbrekende toetsnaam"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "Toetsbindingen moeten beginnen met \"^\", \"M\", of \"F\""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "Functie waaraan de toets gebonden moet worden ontbreekt"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+"Menu waarin de toets moet worden gebonden moet worden opgegeven (of \"all\")"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Kan in naam '%s' geen functie herkennen"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Kan in naam '%s' geen menu herkennen"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "Toets '%s' mag niet herbonden worden"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Kleur '%s' is onbekend.\n"
+"Geldige kleuren zijn: 'red', 'green', 'blue',\n"
+"'magenta', 'yellow', 'cyan', 'black' en 'white',\n"
+"met voor voorgrondkleuren het optionele voorvoegsel 'bright'."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Kan geen 'color'-commando verwerken zonder een 'syntax'-commando"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Ontbrekende kleurnaam"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Achtergrondkleur '%s' kan niet 'bright' zijn"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Ontbrekende reg.exp.-tekenreeks"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "'start=' vereist een bijbehorende 'end='"
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Kan geen topregel-expressie verwerken zonder een 'syntax'-commando"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Fatale fout: aan functie '%s' is geen toets gebonden"
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Gestopt. Start eventueel nano met optie -I om uw nanorc te corrigeren.\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Commando '%s' is niet toegestaan in 'include'-bestand"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Bij syntax '%s' ontbreken 'color'-commando's"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Commando '%s' is onbekend"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Ontbrekende vlag"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Optie '%s' vereist een argument"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Optie is geen geldige multibyte-tekenreeks"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Niet-blanco tekens vereist"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Twee enkelkoloms-tekens vereist"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Kan vlag '%s' niet uitzetten"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Onbekende vlag '%s'"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Kan de thuismap niet vinden! Boehoe!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "'%.*s%s' niet gevonden"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (om te vervangen) in selectie"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (om te vervangen)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Deze overeenkomst vervangen?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Vervangen door"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "%lu overeenkomst vervangen"
+msgstr[1] "%lu overeenkomsten vervangen"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Geef regelnummer, kolomnummer"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Ongeldig regel- of kolomnummer"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Is geen haakje"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Geen overeenkomend haakje"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Markering is aangezet"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Uitgezet"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Er is niets om ongedaan te maken"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr "*Interne fout*: kan regel %d niet vinden. Sla uw werk op."
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "teksttoevoeging"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "tekstverwijdering"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "regelterugloop"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "regelsamenvoeging"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "tekstwegneming"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "tekstterugplaatsing"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "regeleinde"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "tekstinvoeging"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "tekstvervanging"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "*Interne fout*: onbekend type. Sla uw werk op."
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Bewerking (%s) is ongedaan gemaakt"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Er is niets om opnieuw te doen"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr "*Interne fout*: kan herdoening niet voorbereiden. Sla uw werk op."
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Bewerking (%s) is opnieuw gedaan"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Kan niet doorsluizen"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Kan geen nieuw proces starten"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr "*Interne fout*: kan terugplaatsing niet voorbereiden. Sla uw werk op."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "*Interne fout*: onbekend type. Sla uw werk op."
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Ongeldige aanhaaltekens-tekenreeks '%s': %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Kan nu ON^Uitvullen!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Vervanging bewerken"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Kan geen pijp aanmaken"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Aanmaken van lijst van verkeerd gespelde woorden, even geduld..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Kan grootte van doorsluisbuffer niet bepalen"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Fout tijdens aanroepen van 'spell'"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Fout tijdens aanroepen van 'sort -f'"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Fout tijdens aanroepen van 'uniq'"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Spellingscontrole is voltooid"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Fout tijdens aanroepen van '%s'"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Spellingscontrole is mislukt: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Spellingscontrole is mislukt: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%swoorden: %lu regels: %ld tekens: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "In de selectie: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "Onvoldoende geheugen beschikbaar voor nano!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Invoer van Unicode"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Gewijzigd"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Kijken"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "Map:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Bestand:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "regel %ld/%ld (%d%%), kolom %lu/%lu (%d%%), teken %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "De nano-teksteditor"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "versie"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "U bezorgd door:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Met speciale dank aan:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "de Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Voor ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "en iedereen die we vergeten zijn..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Dank u voor het gebruiken van nano!"
+
+#~ msgid "Error writing backup file %s: File owner mismatch"
+#~ msgstr ""
+#~ "Fout tijdens schrijven van reservekopiebestand %s: een ander is eigenaar"
+
+#~ msgid "line split"
+#~ msgstr "regelsplitsing"
+
+#~ msgid "line cut"
+#~ msgstr "regelwegneming"
diff --git a/po/nn.gmo b/po/nn.gmo
new file mode 100644
index 0000000..ba1708b
--- /dev/null
+++ b/po/nn.gmo
Binary files differ
diff --git a/po/nn.po b/po/nn.po
new file mode 100644
index 0000000..157d4a7
--- /dev/null
+++ b/po/nn.po
@@ -0,0 +1,2520 @@
+# nano - Norwegian translation
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# Eivind Kjørstad <ekj@vestdata.no>, 2001.
+# Svein O. Bennæs <svein@norge.no>, 2002.
+# Kjetil Torgrim Homme <kjetilho@linpro.no>, 2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.1.7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2002-03-22 20:34+0100\n"
+"Last-Translator: Kjetil Torgrim Homme <kjetilho@linpro.no>\n"
+"Language-Team: Norwegian nynorsk <i18n-nn@lister.ping.uio.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/browser.c:220
+#, fuzzy
+msgid "Go To Directory"
+msgstr "Gå til katalog"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Avbrote"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Kan ikkje gå utanfor %s i avgrensa modus"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr ""
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Kan ikkje skifta til foreldrekatalogen"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr ""
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Søk"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Skil store/små]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Reguttrykk]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Bakover]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Søket gjekk rundt"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Dette er einaste forekomst"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr ""
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Kan ikkje setja inn fil frå utanfor %s"
+
+#: src/files.c:234
+#, fuzzy
+msgid "No more open file buffers"
+msgstr "Ingen fleire opne filer"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Bytta til %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Ny buffer"
+
+#: src/files.c:633
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Leste %d linjer (på Mac-format)"
+msgstr[1] "Leste %d linjer (på Mac-format)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "Leste %d linjer (på Mac-format)"
+msgstr[1] "Leste %d linjer (på Mac-format)"
+
+#: src/files.c:644
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Leste %d linjer (på Mac-format)"
+msgstr[1] "Leste %d linjer (på Mac-format)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Leste %d linjer (på Mac-format)"
+msgstr[1] "Leste %d linjer (på Mac-format)"
+
+#: src/files.c:654
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Leste %d linjer (på DOS-format)"
+msgstr[1] "Leste %d linjer (på DOS-format)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Leste %d linjer (på DOS-format)"
+msgstr[1] "Leste %d linjer (på DOS-format)"
+
+#: src/files.c:664
+#, fuzzy, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Leste %d linjer"
+msgstr[1] "Leste %d linjer"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Les fil"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Ny fil"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "«%s» ikkje funne"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, fuzzy, c-format
+msgid "\"%s\" is a directory"
+msgstr "Fila «%s» er ein katalog"
+
+# "enhet" = "device", kanskje, men det er litt forvirrande
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, fuzzy, c-format
+msgid "\"%s\" is a device file"
+msgstr "Fila «%s» er ikkje ei vanleg fil"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr ""
+
+#: src/files.c:819
+#, fuzzy, c-format
+msgid "Command to execute [from %s] "
+msgstr "Fila som skal setjast inn [frå %s] "
+
+#: src/files.c:825
+#, fuzzy, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Fila som skal setjast inn [frå %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Fila som skal setjast inn [frå %s] "
+
+#: src/files.c:1077
+#, fuzzy
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Tasten er ugyldig utan fleire buffer"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Kan ikkje skriva utanfor %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr ""
+
+#: src/files.c:1582 src/nano.c:701
+#, fuzzy
+msgid "Too many backup files?"
+msgstr ""
+"\n"
+"%s vart ikkje lagra (for mange sikringskopiar?)\n"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr ""
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr ""
+
+#: src/files.c:1900
+#, fuzzy, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Skreiv %d linjer"
+msgstr[1] "Skreiv %d linjer"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS-format]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac-format]"
+
+#: src/files.c:2007
+#, fuzzy
+msgid " [Backup]"
+msgstr " [Bakover]"
+
+#: src/files.c:2015
+#, fuzzy
+msgid "Prepend Selection to File"
+msgstr "Legg til valt område på slutten av fil"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Legg til valt område på slutten av fil"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Lagra valt område til fil"
+
+#: src/files.c:2020
+#, fuzzy
+msgid "File Name to Prepend to"
+msgstr "Namn på fil som skal leggjast til"
+
+#: src/files.c:2021
+#, fuzzy
+msgid "File Name to Append to"
+msgstr "Namn på fil som skal leggjast til"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Namn på fila som skal lagrast"
+
+#: src/files.c:2153
+#, fuzzy
+msgid "File exists, OVERWRITE ? "
+msgstr "Fila eksisterer, SKRIV OVER?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr ""
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(meir)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Trykk Enter for å halda fram lastinga av nano\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Erstatt"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Inga erstatting"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Store/små"
+
+#: src/global.c:421
+#, fuzzy
+msgid "Backwards"
+msgstr " [Bakover]"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Reguttrykk"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr ""
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr ""
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr ""
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+#, fuzzy
+msgid "WhereIs Next"
+msgstr "Finn"
+
+#: src/global.c:457
+#, fuzzy
+msgid "First File"
+msgstr "Første linje"
+
+#: src/global.c:458
+#, fuzzy
+msgid "Last File"
+msgstr "Siste linje"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Til filer"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS-format"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac-format"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Legg til"
+
+#: src/global.c:465
+#, fuzzy
+msgid "Prepend"
+msgstr "Legg til"
+
+#: src/global.c:466
+#, fuzzy
+msgid "Backup File"
+msgstr "Les fil"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr ""
+
+#: src/global.c:471
+#, fuzzy
+msgid "Go To Dir"
+msgstr "Gå til katalog"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Hjelp"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Avslutt"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Finn"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Førre side"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Neste side"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Første linje"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Siste linje"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Legg i bakgrunnen"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr ""
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr ""
+
+#: src/global.c:491
+#, fuzzy
+msgid "FullJstify"
+msgstr "Brekk om"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Frisk opp"
+
+#: src/global.c:495
+#, fuzzy
+msgid "Insert File"
+msgstr "Neste fil"
+
+#: src/global.c:497
+#, fuzzy
+msgid "Go To Line"
+msgstr "Gå til linje"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Brekk om avsnittet"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Avbryt gjeldande funksjon"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr ""
+
+#: src/global.c:509
+#, fuzzy
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Lukk gjeldande fil/Avslutt nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Avslutt nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Lagra gjeldande fil"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Sett inn ei anna fil i denne"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr ""
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "Gå til førre skjerm"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "Gå til neste skjerm"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Klipp ut denne linja og lagra ho i utklippsbufferet"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Set inn utklippsbufferet her"
+
+#: src/global.c:527
+#, fuzzy
+msgid "Display the position of the cursor"
+msgstr "Vis markørposisjonen"
+
+#: src/global.c:529
+#, fuzzy
+msgid "Invoke the spell checker, if available"
+msgstr "Start stavekontroll (om tilgjengeleg)"
+
+#: src/global.c:531
+#, fuzzy
+msgid "Replace a string or a regular expression"
+msgstr "Erstatt feila: ukjent deluttrykk!"
+
+#: src/global.c:532
+#, fuzzy
+msgid "Go to line and column number"
+msgstr "Hopp til eit linjenummer"
+
+#: src/global.c:534
+#, fuzzy
+msgid "Mark text at the cursor position"
+msgstr "Marker teksten ved markøren"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr ""
+
+#: src/global.c:537
+#, fuzzy
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Klipp ut denne linja og lagra ho i utklippsbufferet"
+
+#: src/global.c:538
+#, fuzzy
+msgid "Indent the current line"
+msgstr "Legg til noverande fil"
+
+#: src/global.c:539
+#, fuzzy
+msgid "Unindent the current line"
+msgstr "Legg til noverande fil"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "Gå ein bokstav fram"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "Gå ein bokstav attende"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "Gå ein bokstav fram"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "Gå ein bokstav attende"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "Gå til førre skjerm"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "Gå ei linje ned"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "Gå til starten av linja"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "Gå til slutten av linja"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr ""
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr ""
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Gå til første linje i fila"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Gå til siste linje i fila"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "Inga motsvarande klamme"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:572
+#, fuzzy
+msgid "Switch to the previous file buffer"
+msgstr "Gå til førre skjerm"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr ""
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr ""
+
+#: src/global.c:579
+#, fuzzy
+msgid "Insert a tab at the cursor position"
+msgstr "Sett inn eit linjeskift"
+
+#: src/global.c:581
+#, fuzzy
+msgid "Insert a newline at the cursor position"
+msgstr "Sett inn eit linjeskift"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Slett bokstaven under markøren"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Slett bokstaven til venstre for markøren"
+
+#: src/global.c:588
+#, fuzzy
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Set inn utklippsbufferet her"
+
+#: src/global.c:591
+#, fuzzy
+msgid "Justify the entire file"
+msgstr "Brekk om avsnittet"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr ""
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Teikn skjermen på nytt"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+#, fuzzy
+msgid "Toggle the case sensitivity of the search"
+msgstr "Søk (skil mellom store og små bokstavar)"
+
+#: src/global.c:605
+#, fuzzy
+msgid "Reverse the direction of the search"
+msgstr "Vis markørposisjonen"
+
+#: src/global.c:609
+#, fuzzy
+msgid "Toggle the use of regular expressions"
+msgstr "Bruk regulære uttrykk"
+
+#: src/global.c:613
+#, fuzzy
+msgid "Recall the previous search/replace string"
+msgstr "Gå til førre skjerm"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr ""
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Gå til fillesar"
+
+#: src/global.c:621
+#, fuzzy
+msgid "Toggle the use of DOS format"
+msgstr "Skriv fila på DOS-format"
+
+#: src/global.c:622
+#, fuzzy
+msgid "Toggle the use of Mac format"
+msgstr "Skriv fila på Mac-format"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr ""
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr ""
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr ""
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr ""
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr ""
+
+#: src/global.c:636
+#, fuzzy
+msgid "Exit from the file browser"
+msgstr "Gå til fillesar"
+
+#: src/global.c:638
+#, fuzzy
+msgid "Go to the first file in the list"
+msgstr "Gå til første linje i fila"
+
+#: src/global.c:640
+#, fuzzy
+msgid "Go to the last file in the list"
+msgstr "Gå til siste linje i fila"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Gå til siste linje i fila"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Gå til første linje i fila"
+
+#: src/global.c:643
+#, fuzzy
+msgid "Go to directory"
+msgstr "Gå til katalog"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Lukk"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Lagra"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Brekk om"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Les fil"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Klipp"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "U-ombrekk"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+#, fuzzy
+msgid "UnCut Text"
+msgstr "U-klipp"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Posisjon"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Staving"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Merk tekst"
+
+#: src/global.c:777
+#, fuzzy
+msgid "Copy Text"
+msgstr "Klipp"
+
+#: src/global.c:780
+#, fuzzy
+msgid "Indent Text"
+msgstr "Klipp"
+
+#: src/global.c:783
+#, fuzzy
+msgid "Unindent Text"
+msgstr "U-klipp"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Framover"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Bakover"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr ""
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr ""
+
+#: src/global.c:824
+#, fuzzy
+msgid "Prev Line"
+msgstr "Førre side"
+
+#: src/global.c:827
+#, fuzzy
+msgid "Next Line"
+msgstr "Neste fil"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Home"
+
+#: src/global.c:833
+msgid "End"
+msgstr "End"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Finn den andre klamma"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr ""
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr ""
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Førre fil"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Neste fil"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr ""
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Delete"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Backspace"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr ""
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr ""
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Hjelpetekst"
+
+#: src/global.c:1369
+#, fuzzy
+msgid "Constant cursor position display"
+msgstr "Fast markørposisjon"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr ""
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Jamn linjerulling"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr ""
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr ""
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr ""
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Automatisk innrykk"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Klipp til slutten"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr ""
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr ""
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr ""
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Mange filbuffer"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Musestøtte"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Inga omsetjing frå DOS/Mac-format"
+
+#: src/global.c:1397
+#, fuzzy
+msgid "Suspension"
+msgstr "Legg i bakgrunnen"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr ""
+
+#: src/help.c:236
+#, fuzzy
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Hjelpetekst for søkjekommandoen\n"
+"\n"
+" Tast inn orda eller teikna du vil søkja etter, og trykk Enter. Dersom "
+"teksten du tasta inn finnest, vil skjermen verta oppdatert til å visa fram "
+"nærmaste treff.\n"
+"\n"
+" Dersom du er i Pico-modus (vha. opsjonane -p eller --pico, brytaren Meta-P "
+"eller ei nanorc-fil), vil førre søkjestreng visast i klammer etter «Søk». "
+"Trykkjer du Enter vil førre søket verta gjenteke, viss ikkje vil den førre "
+"strengen verte plassert framfor markøren, og kan endrast eller slettast før "
+"du trykkjer Enter.\n"
+"\n"
+" Følgjande funksjonstastar er tilgjengelege i søkjemodus:\n"
+"\n"
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:251
+#, fuzzy
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Hjelpetekst for Gå til linje\n"
+"\n"
+" Skriv inn linjenummeret du vil gå til og trykk Enter. Dersom der er færre "
+"linjer med tekst enn talet du oppgav, vil du hamne på siste linje i "
+"bufferet.\n"
+"\n"
+" Følgjande funksjonstastar er tilgjengelege i Gå til linje-modus:\n"
+"\n"
+
+#: src/help.c:260
+#, fuzzy
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Hjelpetekst for Set inn fil\n"
+"\n"
+" Tast inn namnet på fila som skal setjast inn i bufferet der markøren står.\n"
+"\n"
+" Dersom din nano har støtte for fleire buffer, og du har skrudd på dette "
+"(vha. opsjonen -F eller --multibuffer, eller brytaren Meta-F, eller i ei "
+"nanorc-fil), vil fila i staden setjast inn i ein eigen buffer. Bruk Meta-< "
+"og Meta-> for å skifte mellom filbuffer.\n"
+"\n"
+" Viss du treng ein ny tom buffer, kan du trykkja Enter utan å taste inn eit "
+"filnamn eller oppgje namnet til ei fil som ikkje finnest.\n"
+"\n"
+" Følgjande funksjonstastar er tilgjengelege i Set inn fil-modus:\n"
+"\n"
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:275
+#, fuzzy
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Hjelpetekst for Lagre fil\n"
+"\n"
+" Tast inn namnet du ønskjer og trykk Enter for å lagra bufferet med dette "
+"namnet.\n"
+"\n"
+" Viss du brukar merkekoden med Ctrl-^ og har merka tekst, vil berre den "
+"merka teksten lagrast. For å redusera sjansen for å overskriva fila med "
+"berre ein del av ho, vil filnamnet verte endra i denne modusen.\n"
+"\n"
+" Følgjande funksjonstastar er tilgjengelege i Lagre fil-modus:\n"
+"\n"
+
+#: src/help.c:289
+#, fuzzy
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Hjelpetekst for filutforskaren\n"
+"\n"
+" Filutforskaren vert brukt til å bla gjennom katalogane når ein skal velja "
+"ei fil for lesing eller skriving. Du kan bruka piltastane eller Page Up/"
+"Down for å bla, og S eller Enter for å velja den markerte fila eller for å "
+"gå inn i den valte katalogen. For å gå eit hakk opp, vel katalogen «..» på "
+"toppen av fillista.\n"
+"\n"
+" Følgjande funksjonstastar er tilgjengelege i filutforskaren:\n"
+"\n"
+
+#: src/help.c:302
+#, fuzzy
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Hjelpetekst for søkjekommandoen\n"
+"\n"
+" Tast inn orda eller teikna du vil søkja etter, og trykk Enter. Dersom "
+"teksten du tasta inn finnest, vil skjermen verta oppdatert til å visa fram "
+"nærmaste treff.\n"
+"\n"
+" Dersom du er i Pico-modus (vha. opsjonane -p eller --pico, brytaren Meta-P "
+"eller ei nanorc-fil), vil førre søkjestreng visast i klammer etter «Søk». "
+"Trykkjer du Enter vil førre søket verta gjenteke, viss ikkje vil den førre "
+"strengen verte plassert framfor markøren, og kan endrast eller slettast før "
+"du trykkjer Enter.\n"
+"\n"
+" Følgjande funksjonstastar er tilgjengelege i søkjemodus:\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:315
+#, fuzzy
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Hjelpetekst for Gå til katalog\n"
+"\n"
+" Tast inn namnet på katalogen du vil utforske.\n"
+"\n"
+" Du kan (med mindre det er slått av) bruke Tab-tasten for å prøve å fullføre "
+"katalognamnet.\n"
+"\n"
+" Følgjande funksjonstastar er tilgjengelege i Gå til katalog-modus:\n"
+"\n"
+
+#: src/help.c:328
+#, fuzzy
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Hjelpetekst for stavesjekking\n"
+"\n"
+" Stavesjekkinga kontrollerer all teksten i bufferet. Når eit ukjent ord "
+"vert funne, vert det framheva og ein endre det. Du vil så verte spurt om du "
+"vil endre alle andre forekomstar i bufferet av det feilstava ordet.\n"
+"\n"
+" Følgjande andre funksjonar er tilgjengelege i stavesjekkingsmodus:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:356
+#, fuzzy
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Hjelpetekst for nano\n"
+"\n"
+" Teksteditoren nano prøver å etterlikna bruksmåten og funksjonaliteten til "
+"UW Pico. Der er fire hovudområde i dette programmet: Den øvste linja viser "
+"versjonsnummeret til Nano, namnet på fila og korvidt bufferet er endra. "
+"Nedanfor er hovedvindauget som viser fila som vert redigert. Status-linja er "
+"den 3. linja nedanfrå og viser viktige meldingar. Dei to nedste linjene "
+"viser dei vanlegaste snarvegane i programmet.\n"
+"\n"
+"Snarvegane brukar denne notasjonen: Tastesekvensar markert med symbolet «^» "
+"vert skrivne med Control-tasten (evt. Ctrl). Sekvensar markert med meta-"
+"symbolet (M) kan skrivast anten med Esc, Alt eller Meta-tasten avhengig av "
+"tastaturoppsettet ditt. Dei følgjande tastetrykkja er tilgjengelege i "
+"hovudvindauget. Valfrie tastar er vist i parentes:\n"
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:407 src/help.c:483
+#, fuzzy
+msgid "enable/disable"
+msgstr "%s skru på/av"
+
+#: src/nano.c:587
+#, fuzzy
+msgid "Key invalid in view mode"
+msgstr "Tasten er ulovleg i VIS-modus"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Buffer lagra til %s\n"
+
+#: src/nano.c:697
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Buffer lagra til %s\n"
+
+#: src/nano.c:700
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Buffer lagra til %s\n"
+
+#: src/nano.c:723
+#, fuzzy
+msgid "Window size is too small for nano...\n"
+msgstr "Vindauget er for lite for Nano..."
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+
+#: src/nano.c:819
+#, fuzzy, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Opsjon\t\tLang opsjon\t\tTyding\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Opsjon\t\tTyding\n"
+
+#: src/nano.c:824
+#, fuzzy
+msgid "Show this message"
+msgstr " -h \t\tVis denne meldinga\n"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr ""
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr ""
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr ""
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr ""
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr ""
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr ""
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr ""
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr ""
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr ""
+
+#: src/nano.c:840
+#, fuzzy
+msgid "Enable multiple file buffers"
+msgstr " -F \t\tSkru på fleire filbuffer\n"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr ""
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr ""
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr ""
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr ""
+
+#: src/nano.c:856
+#, fuzzy
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Inga omsetjing frå DOS/Mac-format"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr ""
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr ""
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr ""
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr ""
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr ""
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr ""
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr ""
+
+#: src/nano.c:869
+#, fuzzy
+msgid "Set width of a tab to #cols columns"
+msgstr " -T [TAL]\tSet breidda på tabulator til TAL\n"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr ""
+
+#: src/nano.c:874
+#, fuzzy
+msgid "Print version information and exit"
+msgstr " -V \t\tSkriv ut versjonsnummer og avslutt\n"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr ""
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr ""
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr ""
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr ""
+
+#: src/nano.c:883
+#, fuzzy
+msgid "Constantly show cursor position"
+msgstr " -c \t\tFast markørposisjon\n"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr ""
+
+#: src/nano.c:888
+#, fuzzy
+msgid "Automatically indent new lines"
+msgstr " -i \t\tAutomatisk linjeinnrykk\n"
+
+#: src/nano.c:889
+#, fuzzy
+msgid "Cut from cursor to end of line"
+msgstr " -k \t\tLat ^K klippe frå markøren og ut linja\n"
+
+#: src/nano.c:892
+#, fuzzy
+msgid "Don't follow symbolic links, overwrite"
+msgstr " -l \t\tFølg ikkje symbolske lenker, skriv over\n"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr ""
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr ""
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr ""
+
+#: src/nano.c:898
+#, fuzzy
+msgid "Set operating directory"
+msgstr " -o [kat] \tSet aktiv filkatalog\n"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr ""
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr ""
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr ""
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr ""
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr ""
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr ""
+
+#: src/nano.c:910
+#, fuzzy
+msgid "Enable alternate speller"
+msgstr " -s [PROG] \tBruk PROG til stavesjekk\n"
+
+#: src/nano.c:913
+#, fuzzy
+msgid "Auto save on exit, don't prompt"
+msgstr " -t \t\tLagra utan å spørja ved avslutning\n"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+#, fuzzy
+msgid "View mode (read-only)"
+msgstr " -v \t\tVis-modus (berre lesing)\n"
+
+#: src/nano.c:920
+#, fuzzy
+msgid "Don't wrap long lines"
+msgstr " -w \t\tIkkje bryt lange linjer\n"
+
+#: src/nano.c:922
+#, fuzzy
+msgid "Don't show the two help lines"
+msgstr " -x \t\tIkkje vis hjelpevindu\n"
+
+#: src/nano.c:923
+#, fuzzy
+msgid "Enable suspension"
+msgstr " -z \t\tTillat å leggja programmet i bakgrunnen\n"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr ""
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr ""
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr "GNU nano versjon %s (kompilert %s, %s)\n"
+
+#: src/nano.c:943
+#, fuzzy, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr "Epost: nano@nano-editor.org\tVev: http://www.nano-editor.org"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Kompilerte tillegg:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr ""
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Lagra endra buffer (\"No\" VIL MISSA ENDRINGANE)? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+#, fuzzy
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Mottok SIGHUP"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr ""
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "på"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "av"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr ""
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr ""
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr ""
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, fuzzy, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "tab-breidda du foreslo (%d) er for smal"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, fuzzy, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "fyllbreidda du foreslo (%d) er for smal"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "JjYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Aa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Ja"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Alle"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Nei"
+
+#: src/rcfile.c:130
+#, fuzzy, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Feil i %s på linje %d: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr ""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+#, fuzzy
+msgid "Regex strings must begin and end with a \" character"
+msgstr "reguttrykk må starte og slutte med eit \"-teikn\n"
+
+#: src/rcfile.c:238 src/search.c:62
+#, fuzzy, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Kan ikkje opna «%s»: %s"
+
+#: src/rcfile.c:258
+#, fuzzy
+msgid "Missing syntax name"
+msgstr "Fargenamnet manglar"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr ""
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr ""
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "Fargenamnet manglar"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Kunne ikkje opna %s for skriving: %s"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr ""
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, fuzzy, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"fargen %s er ukjend.\n"
+"Gyldige fargar er «green» (grøn), «red» (raud), «blue» (blå), \n"
+"«white» (kvit), «yellow» (gul), «cyan» (lysblå), «magenta» (fiolett) og\n"
+"«black» (svart), med den valfrie nemninga «bright» (lys) først.\n"
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr ""
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Fargenamnet manglar"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr ""
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr ""
+
+#: src/rcfile.c:762
+#, fuzzy
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr ""
+"\n"
+"\tfor kvar «start=» må der vera ein «end=»"
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr ""
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr ""
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr ""
+
+#: src/rcfile.c:966
+#, fuzzy, c-format
+msgid "Command \"%s\" not understood"
+msgstr "kommandoen %s er ikkje forståeleg"
+
+#: src/rcfile.c:972
+#, fuzzy
+msgid "Missing flag"
+msgstr "Fargenamnet manglar"
+
+#: src/rcfile.c:994
+#, fuzzy, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "opsjonen %s krev eit argument"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr ""
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr ""
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr ""
+
+#: src/rcfile.c:1114
+#, fuzzy, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "skru av flagget %d!\n"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr ""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr ""
+
+#: src/search.c:96
+#, fuzzy, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "«%s» ikkje funne"
+
+#: src/search.c:205
+#, fuzzy
+msgid " (to replace) in selection"
+msgstr " (å erstatta)"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (å erstatta)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Erstatta dette tilfellet?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Erstatt med"
+
+#: src/search.c:1004
+#, fuzzy, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Erstatta %d tilfelle"
+msgstr[1] "Erstatta %d tilfelle"
+
+#: src/search.c:1034
+#, fuzzy
+msgid "Enter line number, column number"
+msgstr "Skriv linjenummer"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr ""
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Ikkje ei klamme"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Inga motsvarande klamme"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Merke sett"
+
+#: src/text.c:58
+#, fuzzy
+msgid "Mark Unset"
+msgstr "Merke fjerna"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "Neste fil"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr ""
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "Neste fil"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr " (å erstatta)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+#, fuzzy
+msgid "Could not pipe"
+msgstr "Kunne ikkje lukka %s: %s"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+#, fuzzy
+msgid "Could not fork"
+msgstr "Kunne ikkje lukka %s: %s"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr ""
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Du kan no gjera om ombrekkinga!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Rediger erstatning"
+
+#: src/text.c:2548
+#, fuzzy
+msgid "Could not create pipe"
+msgstr "Kunne ikkje oppretta mellombels fil: %s"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr ""
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr ""
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr ""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr ""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr ""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Stavekontroll fullført"
+
+#: src/text.c:2815
+#, fuzzy, c-format
+msgid "Error invoking \"%s\""
+msgstr "Feil i %s på linje %d: "
+
+#: src/text.c:2960
+#, fuzzy, c-format
+msgid "Spell checking failed: %s"
+msgstr "Stavekontroll feila"
+
+#: src/text.c:2962
+#, fuzzy, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Stavekontroll feila"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr ""
+
+#: src/text.c:3031
+#, fuzzy
+msgid "In Selection: "
+msgstr "Legg til valt område på slutten av fil"
+
+#: src/utils.c:405 src/utils.c:417
+#, fuzzy
+msgid "nano is out of memory!"
+msgstr "nano: malloc: tom for minne!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr ""
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Endra"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr ""
+
+#: src/winio.c:2164
+#, fuzzy
+msgid "DIR:"
+msgstr " KAT: "
+
+#: src/winio.c:2171
+#, fuzzy
+msgid "File:"
+msgstr "Fil: "
+
+#: src/winio.c:3360
+#, fuzzy, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "linje %d/%d (%.0f%%), kol %ld/%ld (%.0f%%), teikn %ld/%ld (%.0f%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Teksteditoren nano"
+
+#: src/winio.c:3493
+#, fuzzy
+msgid "version"
+msgstr "versjon "
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Gjeve til deg av:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Spesiell takk til:"
+
+# Oversette dette ?
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "Free Sofware Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr ""
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "og alle dei andre vi gløymde..."
+
+#: src/winio.c:3499
+#, fuzzy
+msgid "Thank you for using nano!"
+msgstr "Takk for at du brukar nano!\n"
+
+#~ msgid "add_to_cutbuffer called with inptr->data = %s\n"
+#~ msgstr "add_to_cutbuffer vart kalla med inptr->data = %s\n"
+
+#~ msgid "Blew away cutbuffer =)\n"
+#~ msgstr "Tømte utklippsbufferet\n"
+
+#~ msgid "read_line: not on first line and prev is NULL"
+#~ msgstr "read_line: ikkje på første linje, og prev er NULL"
+
+#~ msgid "File to insert [from ./] "
+#~ msgstr "Fila som skal setjast inn [frå ./] "
+
+#~ msgid "filename is %s"
+#~ msgstr "filnamnet er %s"
+
+#~ msgid "Could not open file for writing: %s"
+#~ msgstr "Kunne ikkje opna fila for skriving: %s"
+
+#~ msgid "Wrote >%s\n"
+#~ msgstr "Skreiv >%s\n"
+
+#~ msgid "Could not set permissions %o on %s: %s"
+#~ msgstr "Kunne ikkje setja tilgangsnivå %o på %s: %s"
+
+#~ msgid "Can't visit parent in restricted mode"
+#~ msgstr "Kan ikkje gå til foreldrekatalogen i avgrensa modus"
+
+#~ msgid "Goto Cancelled"
+#~ msgstr "Gå til-funksjonen avbroten"
+
+#~ msgid "Pico mode"
+#~ msgstr "Pico-modus"
+
+#~ msgid "Backwards search"
+#~ msgstr "Søk bakover"
+
+#~ msgid "Regular expression search"
+#~ msgstr "Søk etter regulært uttrykk"
+
+#~ msgid "Writing file in DOS format"
+#~ msgstr "Skriv fil på DOS-format"
+
+#~ msgid "Writing file in Mac format"
+#~ msgstr "Skriv fil på Mac-format"
+
+#~ msgid "Auto wrap"
+#~ msgstr "Automatisk linjebrekking"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Vis hjelpemenyen"
+
+#~ msgid "Unjustify after a justify"
+#~ msgstr "Gjer om ombrekking"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Erstatt tekst"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Søk etter tekst"
+
+#~ msgid "Move up one line"
+#~ msgstr "Gå ei linje opp"
+
+#~ msgid "Insert a tab character"
+#~ msgstr "Sett inn eit tab-teikn"
+
+#~ msgid "Make the current search or replace case (in)sensitive"
+#~ msgstr "Gjer gjeldande søk utan å skilje mellom store/små bokstavar"
+
+#~ msgid "Search backwards"
+#~ msgstr "Søk bakover"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Finn den andre klamma"
+
+#~ msgid "Open previously loaded file"
+#~ msgstr "Opna tidlegare lest fil"
+
+#~ msgid "Open next loaded file"
+#~ msgstr "Opna neste leste fil"
+
+#~ msgid "Up"
+#~ msgstr "Opp"
+
+#~ msgid "Down"
+#~ msgstr "Ned"
+
+#~ msgid "Direction"
+#~ msgstr "Retning"
+
+#~ msgid "Goto"
+#~ msgstr "Gå til"
+
+#~ msgid "delete_node(): free'd a node, YAY!\n"
+#~ msgstr "delete_node(): frigjorde ein node, HURRA!\n"
+
+#~ msgid "delete_node(): free'd last node.\n"
+#~ msgstr "delete_node(): frigjorde siste node.\n"
+
+#~ msgid ""
+#~ "Usage: nano [GNU long option] [option] +LINE <file>\n"
+#~ "\n"
+#~ msgstr "Bruk: nano [GNU lange opsjonar] [opsjonar] +LINJE <fil>\n"
+
+#~ msgid " -D \t\t--dos\t\t\tWrite file in DOS format\n"
+#~ msgstr " -D \t\t--dos\t\t\tLagra fil på DOS-format\n"
+
+#~ msgid " -F \t\t--multibuffer\t\tEnable multiple file buffers\n"
+#~ msgstr " -F \t\t--multibuffer\t\tSkru på fleire filbuffer\n"
+
+#~ msgid " -K \t\t--keypad\t\tUse alternate keypad routines\n"
+#~ msgstr " -K \t\t--keypad\t\tBruk alternativ tastaturrutine\n"
+
+#~ msgid " -M \t\t--mac\t\t\tWrite file in Mac format\n"
+#~ msgstr " -M \t\t--mac\t\t\tLagra fil på Mac-format\n"
+
+#~ msgid " -N \t\t--noconvert\t\tDon't convert files from DOS/Mac format\n"
+#~ msgstr " -N \t\t--noconvert\t\tIkkje omset filer frå DOS/Mac-format\n"
+
+#~ msgid " -Q [str]\t--quotestr [str]\tQuoting string, default \"> \"\n"
+#~ msgstr " -Q [str]\t--quotestr [str]\tSitatinnrykk, \"> \" er forvalt\n"
+
+#~ msgid " -S\t\t--smooth\t\tSmooth scrolling\n"
+#~ msgstr " -S\t\t--smooth\t\tJamn linjerulling\n"
+
+#~ msgid " -T [num]\t--tabsize=[num]\t\tSet width of a tab to num\n"
+#~ msgstr " -T [TAL]\t--tabsize=[TAL]\tSet breidda på tabulator til TAL\n"
+
+#~ msgid " -V \t\t--version\t\tPrint version information and exit\n"
+#~ msgstr " -V \t\t--version\t\tSkriv ut versjonsnummer og avslutt\n"
+
+#~ msgid " -c \t\t--const\t\t\tConstantly show cursor position\n"
+#~ msgstr " -c \t\t--const\t\t\tFast markørposisjon\n"
+
+#~ msgid " -h \t\t--help\t\t\tShow this message\n"
+#~ msgstr " -h \t\t--help\t\t\tVis denne meldinga\n"
+
+#~ msgid " -i \t\t--autoindent\t\tAutomatically indent new lines\n"
+#~ msgstr " -i \t\t--autoindent\t\tAutomatisk linjeinnrykk\n"
+
+#~ msgid " -k \t\t--cut\t\t\tLet ^K cut from cursor to end of line\n"
+#~ msgstr " -k \t\t--cut\t\t\tLat ^K klippe frå markøren og ut linja\n"
+
+#~ msgid " -l \t\t--nofollow\t\tDon't follow symbolic links, overwrite\n"
+#~ msgstr " -l \t\t--nofollow\t\tFølg ikkje symbolske lenker, skriv over\n"
+
+#~ msgid " -m \t\t--mouse\t\t\tEnable mouse\n"
+#~ msgstr " -m \t\t--mouse\t\t\tSkru på musestøtte\n"
+
+#~ msgid " -o [dir] \t--operatingdir=[dir]\tSet operating directory\n"
+#~ msgstr " -o [kat] \t--operatingdir=[kat]\tSet aktiv filkatalog\n"
+
+#~ msgid " -p \t\t--pico\t\t\tEmulate Pico as closely as possible\n"
+#~ msgstr " -p \t\t--pico\t\t\tEtterlikna Pico så nøye som mogleg\n"
+
+#~ msgid ""
+#~ " -r [#cols] \t--fill=[#cols]\t\tSet fill cols to (wrap lines at) #cols\n"
+#~ msgstr " -r [KOL] \t--fill=[KOL]\t\tBryt linjer [på kolonne KOL]\n"
+
+#~ msgid " -s [prog] \t--speller=[prog]\tEnable alternate speller\n"
+#~ msgstr " -s [PROG] \t--speller=[PROG]\tBruk PROG til stavesjekk\n"
+
+#~ msgid " -t \t\t--tempfile\t\tAuto save on exit, don't prompt\n"
+#~ msgstr " -t \t\t--tempfile\t\tLagra utan å spørja ved avslutning\n"
+
+#~ msgid " -v \t\t--view\t\t\tView (read only) mode\n"
+#~ msgstr " -v \t\t--view\t\t\tVis-modus (berre lesing)\n"
+
+#~ msgid " -w \t\t--nowrap\t\tDon't wrap long lines\n"
+#~ msgstr " -w \t\t--nowrap\t\tIkkje bryt lange linjer\n"
+
+#~ msgid " -x \t\t--nohelp\t\tDon't show help window\n"
+#~ msgstr " -x \t\t--nohelp\t\tIkkje vis hjelpevindu\n"
+
+# Kva i alle dagar er "suspend" på norsk?
+#~ msgid " -z \t\t--suspend\t\tEnable suspend\n"
+#~ msgstr " -z \t\t--suspend\t\tTillat å leggja programmet i bakgrunnen\n"
+
+#~ msgid " +LINE\t\t\t\t\tStart at line number LINE\n"
+#~ msgstr " +LINJE\t\t\t\t\tStart på linje LINJE\n"
+
+#~ msgid ""
+#~ "Usage: nano [option] +LINE <file>\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Bruk: nano [opsjon] +LINJE <fil>\n"
+#~ "\n"
+
+#~ msgid " -D \t\tWrite file in DOS format\n"
+#~ msgstr " -D \t\tLagra fil på DOS-format\n"
+
+#~ msgid " -K\t\tUse alternate keypad routines\n"
+#~ msgstr " -K\t\tBruk alternativ tastaturrutine\n"
+
+#~ msgid " -M \t\tWrite file in Mac format\n"
+#~ msgstr " -M \t\tLagra fil på Mac-format\n"
+
+#~ msgid " -Q [str] \tQuoting string, default \"> \"\n"
+#~ msgstr " -Q [str] \tSitatinnrykk, \"> \" er forvalt\n"
+
+#~ msgid " -R\t\tUse regular expressions for search\n"
+#~ msgstr " -R\t\tBruk regulære uttrykk i søk\n"
+
+#~ msgid " -S\t\tSmooth scrolling\n"
+#~ msgstr " -S\t\tJamn linjerulling\n"
+
+#~ msgid " -m \t\tEnable mouse\n"
+#~ msgstr " -m \t\tSkru på musestøtte\n"
+
+#~ msgid " -p \t\tEmulate Pico as closely as possible\n"
+#~ msgstr " -p \t\tEtterlikna Pico så nøye som mogleg\n"
+
+#~ msgid " -r [#cols] \tSet fill cols to (wrap lines at) #cols\n"
+#~ msgstr " -r [KOL] \tBryt linjer [på kolonne KOL]\n"
+
+#~ msgid " +LINE\t\tStart at line number LINE\n"
+#~ msgstr " +LINJE\t\tStart på linje nummer LINJE\n"
+
+#~ msgid "check_wrap called with inptr->data=\"%s\"\n"
+#~ msgstr "check_wrap kalla med inptr->data=\"%s\"\n"
+
+#~ msgid "current->data now = \"%s\"\n"
+#~ msgstr "current->data no = \"%s\"\n"
+
+#~ msgid "After, data = \"%s\"\n"
+#~ msgstr "Etter, data = \"%s\"\n"
+
+#~ msgid "Spell checking failed: unable to write temp file!"
+#~ msgstr "Stavekontroll feila: kunne ikkje laga mellombels fil!"
+
+#~ msgid "Cannot resize top win"
+#~ msgstr "Kan ikkje endra storleik på toppvindauget"
+
+#~ msgid "Cannot move top win"
+#~ msgstr "Kan ikke flytta toppvindauget"
+
+#~ msgid "Cannot resize edit win"
+#~ msgstr "Kan ikkje endra storleik på redigeringsvindauget"
+
+#~ msgid "Cannot move edit win"
+#~ msgstr "Kan ikkje flytta redigeringsvindauget"
+
+#~ msgid "Cannot resize bottom win"
+#~ msgstr "Kan ikkje endra storleik på bunnvindauget"
+
+#~ msgid "Cannot move bottom win"
+#~ msgstr "Kan ikkje flytta botnvindauget"
+
+#~ msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
+#~ msgstr ""
+#~ "NumLock-feil oppdaga. Nummer-tastane vil fungere feil med NumLock av"
+
+#~ msgid "Main: set up windows\n"
+#~ msgstr "Hovud: Vindauge sett opp\n"
+
+#~ msgid "Main: bottom win\n"
+#~ msgstr "Hovud: botnvindauge\n"
+
+#~ msgid "Main: open file\n"
+#~ msgstr "Hovud: opna fil\n"
+
+#~ msgid "I got Alt-O-%c! (%d)\n"
+#~ msgstr "Eg fekk Alt-O-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-1-%c! (%d)\n"
+#~ msgstr "Eg fekk Alt-[-1-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-2-%c! (%d)\n"
+#~ msgstr "Eg fekk Alt-[-2-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-%c! (%d)\n"
+#~ msgstr "Eg fekk Alt-[-%c! (%d)\n"
+
+#~ msgid "I got Alt-%c! (%d)\n"
+#~ msgstr "Eg fekk Alt-%c (%d)\n"
+
+#~ msgid "parse_rcfile: Read a comment\n"
+#~ msgstr "parse_rcfile: Las ein kommentar\n"
+
+#~ msgid "parse_rcfile: Parsing option %s\n"
+#~ msgstr "parse_rcfile: Les inn opsjon %s\n"
+
+#~ msgid "set flag %d!\n"
+#~ msgstr "sett flagget %d!\n"
+
+#~ msgid "Errors found in .nanorc file"
+#~ msgstr "Feil funne i .nanorc fila"
+
+#~ msgid "Unable to open ~/.nanorc file, %s"
+#~ msgstr "Kan ikkje opna ~/.nanorc, %s"
+
+#~ msgid "Search Cancelled"
+#~ msgstr "Søk avbrote"
+
+#~ msgid "\"%s...\" not found"
+#~ msgstr "«%s...» ikkje funne"
+
+#~ msgid "Replaced 1 occurrence"
+#~ msgstr "Erstatta 1 tilfelle"
+
+#~ msgid "Replace Cancelled"
+#~ msgstr "Erstatt avbrote"
+
+#~ msgid "Replace with [%s]"
+#~ msgstr "Erstatt med [%s]"
+
+#~ msgid "Aborted"
+#~ msgstr "Avbrote"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Kom igjen, samarbeid litt"
+
+#~ msgid "nano: calloc: out of memory!"
+#~ msgstr "nano: calloc: tom for minne!"
+
+#~ msgid "nano: realloc: out of memory!"
+#~ msgstr "nano: realloc: tom for minne!"
+
+#~ msgid "actual_x_from_start for xplus=%d returned %d\n"
+#~ msgstr "actual_x_from_start for xplus=%d returnerte %d\n"
+
+#~ msgid "Aha! '%c' (%d)\n"
+#~ msgstr "Aha! '%c' (%d)\n"
+
+#~ msgid "input '%c' (%d)\n"
+#~ msgstr "input '%c' (%d)\n"
+
+#~ msgid " File: ..."
+#~ msgstr " Fil: ..."
+
+#~ msgid " DIR: ..."
+#~ msgstr " KAT: ..."
+
+#~ msgid "Moved to (%d, %d) in edit buffer\n"
+#~ msgstr "Flytta til (%d, %d) i redigeringsbuffer\n"
+
+#~ msgid "current->data = \"%s\"\n"
+#~ msgstr "current->data = \"%s\"\n"
+
+#~ msgid "I got \"%s\"\n"
+#~ msgstr "Eg fekk \"%s\"\n"
+
+#~ msgid "do_cursorpos: linepct = %f, bytepct = %f\n"
+#~ msgstr "do_cursorpos: linepct = %f, bytepct = %f\n"
+
+#~ msgid "Dumping file buffer to stderr...\n"
+#~ msgstr "Dumpar fil-bufferet til stderr...\n"
+
+#~ msgid "Dumping cutbuffer to stderr...\n"
+#~ msgstr "Dumpar utklippsbufferet til stderr...\n"
+
+#~ msgid "Dumping a buffer to stderr...\n"
+#~ msgstr "Dumpar eit buffer til stderr...\n"
+
+#~ msgid "Pavel Curtis, Zeyd Ben-Halim and Eric S. Raymond for ncurses"
+#~ msgstr "Pavel Curtis, Zeyd Ben-Halim og Eric S. Raymond for ncurses"
diff --git a/po/pl.gmo b/po/pl.gmo
new file mode 100644
index 0000000..9f8b38f
--- /dev/null
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..85a1103
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,2108 @@
+# Polish translations for the nano editor messages
+# This file is distributed under the same license as the nano package.
+# Copyright (C) 2010 Free Software Foundation, Inc.
+#
+# Sergey Poznyakoff <gray@gnu.org>, 2010
+# Wojciech Kotwica <wkotwica@post.pl>, 2002
+# based on uncompleted translation nano_1.0.6 by
+# Cezary Sliwa <sliwa@cft.edu.pl>, 2001.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.4pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-04-21 19:16+0300\n"
+"Last-Translator: Sergey Poznyakoff <gray@gnu.org>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Przejd¼ do katalogu"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Anulowano"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "W trybie ograniczonym nie mo¿na wyj¶æ poza %s"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "B³±d odczytu %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Nie mo¿na przej¶æ katalog wy¿ej"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(kat)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(kat nad)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Szukaj"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Uwzgl.wielk.liter]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Wyr.reg.]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Wstecz]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Wyszukiwanie minê³o granicê pliku - kontynuowane od pocz±tku (koñca)"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "To jedyne wyst±pienie"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Brak wzorca wyszukiwania"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Nie mo¿na wstawiæ pliku spoza %s "
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Nie ma wiêcej otwartych buforów"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Prze³±czono na %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Nowy bufor"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Wczytano %lu liniê (przekonwertowana z formatu DOS i Mac)"
+msgstr[1] "Wczytano %lu linie (przekonwertowane z formatu DOS i Mac)"
+msgstr[2] "Wczytano %lu linii (przekonwertowane z formatu DOS i Mac)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"Wczytano %lu liniê (przekonwertowana z formatu DOS i Mac - Ostrze¿enie: brak "
+"pozwolenia na zapis)"
+msgstr[1] ""
+"Wczytano %lu linie (przekonwertowane z formatu DOS i Mac - Ostrze¿enie: brak "
+"pozwolenia na zapis)"
+msgstr[2] ""
+"Wczytano %lu linii (przekonwertowane z formatu DOS i Mac - Ostrze¿enie: brak "
+"pozwolenia na zapis)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Wczytano %lu liniê (przekonwertowana z formatu Mac)"
+msgstr[1] "Wczytano %lu linie (przekonwertowane z formatu Mac)"
+msgstr[2] "Wczytano %lu linii (przekonwertowane z formatu Mac)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"Wczytano %lu liniê (przekonwertowana z formatu Mac - Ostrze¿enie: brak "
+"pozwolenia na zapis)"
+msgstr[1] ""
+"Wczytano %lu linie (przekonwertowane z formatu Mac - Ostrze¿enie: brak "
+"pozwolenia na zapis)"
+msgstr[2] ""
+"Wczytano %lu linii (przekonwertowane z formatu Mac - Ostrze¿enie: brak "
+"pozwolenia na zapis)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Wczytano %lu liniê (przekonwertowana z formatu DOS)"
+msgstr[1] "Wczytano %lu linie (przekonwertowane z formatu DOS)"
+msgstr[2] "Wczytano %lu linii (przekonwertowane z formatu DOS)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"Wczytano %lu liniê (przekonwertowana z formatu DOS - Ostrze¿enie: brak "
+"pozwolenia na zapis)"
+msgstr[1] ""
+"Wczytano %lu linie (przekonwertowane z formatu DOS - Ostrze¿enie: brak "
+"pozwolenia na zapis)"
+msgstr[2] ""
+"Wczytano %lu linii (przekonwertowane z formatu DOS - Ostrze¿enie: brak "
+"pozwolenia na zapis)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Wczytano %lu liniê"
+msgstr[1] "Wczytano %lu linie"
+msgstr[2] "Wczytano %lu linii"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "Wczytano %lu liniê (Ostrze¿enie: brak pozwolenia na zapis)"
+msgstr[1] "Wczytano %lu linie (Ostrze¿enie: brak pozwolenia na zapis)"
+msgstr[2] "Wczytano %lu linii (Ostrze¿enie: brak pozwolenia na zapis)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Wczytywanie pliku"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Nowy plik"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "Nie znaleziono \"%s\""
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" jest katalogiem"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" jest plikiem urz±dzenia"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Polecenie do wykonania w nowym buforze [z %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Polecenie do wykonania [z %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Plik do wstawienia do nowego bufora [z %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Plik do wstawienia [z %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Klawisz niedozwolony w trybie innym ni¿ wielu buforów"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Nie mo¿na zapisaæ poza %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"Nie mo¿na dopisywaæ do ³±cza symbolicznego przy w³±czonej opcji --nofollow"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "B³±d zapisu kopii zapasowej %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Za wiele kopii zapasowych?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "B³±d zapisu %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "B³±d zapisu pliku tymczasowego: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Zapisano %lu liniê"
+msgstr[1] "Zapisano %lu linie"
+msgstr[2] "Zapisano %lu linii"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [format DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [format Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Kopia zap.]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Wpisz wybór na pocz±tek pliku"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Dopisz wybór do pliku"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Zapisz wybór do pliku"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Nazwa pliku do wpisania"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Nazwa pliku do dopisania"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Nazwa pliku do zapisu"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Plik istnieje, ZAMAZAÆ ? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Zapisaæ plik pod INN¡ NAZW¡ ? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "Plik zosta³ zmodyfikowany po otworzeniu, kontynuowaæ zapis ? "
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(wiêcej)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Naci¶nij return aby kontynuowaæ rozruch nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Zast±p"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Nie zast."
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Wielk.liter"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Wstecz"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Wyr.reg."
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "Poprz.Hist"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "Nast.Hist"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Przejd¼ do tekstu"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Szukaj Znów"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Pierw.Plik"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Ost.Plik"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Pliki"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Format DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Format Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Dopisz"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Wpisz"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Kopia zapas."
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Wywo³aj polecenie"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Przejd¼ do katalogu"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Pomoc"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Wyjd¼"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Wyszukaj"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Poprz.str."
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Nast.str."
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Pierw.lin."
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Ost.lin."
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Zawie¶"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "PoczAkapit"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "KonAkapit"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "Wyjustuj"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Od¶wie¿"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Wstaw plik"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Przejd¼ do linii"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Wyjustuj bie¿±cy akapit"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Anuluj bie¿±c± funkcjê"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Wy¶wietla ten tekst pomocy"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Zamknij bie¿±cy bufor / Wyjd¼ z nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Wyjd¼ z nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Zapisz bie¿±cy plik na dysku"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Wstaw do bie¿±cego pliku zawarto¶æ innego pliku"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Szukaj ³añcucha lub wyra¿enia regularnego"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Przejd¼ do poprzedniego ekranu"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Przejd¼ do nastêpnego ekranu"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Wytnij bie¿±c± liniê i przechowaj w buforze wycinania"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Wklej zawarto¶æ bufora wycinania w bie¿±cej linii"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Poka¿ informacjê o pozycji kursora"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Wywo³aj sprawdzanie pisowni, je¶li dostêpne"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Zamieñ ³añcuch lub wyra¿enie regularne"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Przejd¼ do linii i kolumny"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Ustaw znacznik w bie¿±cym po³o¿eniu kursora"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Powtórz ostatnie wyszukiwanie"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Wytnij bie¿±c± liniê i przechowaj w buforze wycinania"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Wyrównaj bie¿±c± liniê"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Usuñ wciêcia z bie¿±cej linii"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Odwo³aj ostatni± operacjê"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Odtwórz ostatni± operacjê"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Przejd¼ o znak do przodu"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Przejd¼ o znak wstecz"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Przejd¼ o s³owo do przodu"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Przejd¼ o s³owo wstecz"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Przejd¼ do poprzedniej linii"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Przejd¼ do nastêpnej linii"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Przejd¼ na pocz±tek bie¿±cej linii"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Przejd¼ na koniec bie¿±cej linii"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Przejd¼ na pocz±tek akapitu; potem na pocz±tek poprzedniego akapitu"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Przejd¼ w koniec akapitu; potem w koniec nastêpnego akapitu"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Przejd¼ do pierwszej linii pliku"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Przejd¼ do ostatniej linii pliku"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Przejd¼ do parzystego nawiasu"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Przewiñ na jedn± liniê w górê bez przesuniêcia kursora"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Przewiñ na jedn± liniê w dó³ bez przesuniêcia kursora"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Przejd¼ do poprzedniego bufora"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Przejd¼ do nastêpnego bufora"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Wstaw nastêpne naci¶niêcie klawisza dos³ownie"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Wstaw znak tabulacji na pozycji kursora"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Wstaw znak nowej linii na pozycji kursora"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Usuñ znak na pozycji kursora"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Usuñ znak na lewo od kursora"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Wytnij wszystko z pozycji kursora po koniec pliku"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Wyjustuj ca³y plik"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Policz ilo¶æ s³ów, linii i znaków"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Od¶wie¿ (ponownie wy¶wietl) bie¿±cy ekran"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Zawie¶ edytor (je¿eli zawieszenie jest w³±czone)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Prze³±cz uwzglêdnienie rozmiaru znaków pod czas wyszukiwania"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Odwróæ kierunek wyszukiwania"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Prze³±cz u¿ycie wyra¿eñ regularnych"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Przywróæ poprzednie ³añcuchy wyszukiwania/zamiany"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Przywróæ nastêpne ³añcuchy wyszukiwania/zamiany"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Poka¿ przegl±darkê plików"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Prze³±cz u¿ycie formatu DOS"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Prze³±cz u¿ycie formatu Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Prze³±cz dopisywanie w koniec"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Prze³±cz dopisywanie na pocz±tek"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Prze³±cz utworzenie kopii zapasowych oryginalnego pliku"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Wywo³aj polecenie zewnêtrzne"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Prze³±cz u¿ycie nowego bufora"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Wyjd¼ z przegl±darki plików"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Przejd¼ do pierwszego pliku na li¶cie"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Przejd¼ do ostatniego pliku na li¶cie"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "Przejd¼ do nastêpnego pliku na li¶cie"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "Przejd¼ do poprzedniego pliku na li¶cie"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Przejd¼ do katalogu"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Zamknij"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Zapisz"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Wyjustuj"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Wczyt.plik"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Wytnij"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Cofnij just."
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Wklej"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Bie¿.poz."
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Pisownia"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Zaznacz"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Kopiuj"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Wciêcie"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Usuñ Wciêcia"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Odwo³aj"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Odtwórz"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "W przód"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Wstecz"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Nast.s³owo"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Poprz.s³owo"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Poprz.lin."
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Nast. lin."
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Pocz±tek"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Koniec"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Znajd¼ nawias do pary"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Przewiñ w górê"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Przewiñ w dó³"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Poprzedni plik"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Nastêpny plik"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "wprowadzanie dos³owne"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Usuñ"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Backspace"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "WytnDoKonc"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Ilo¶æ s³ów"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Tryb pomocy"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Sta³e po³o¿enie kursora"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "U¿ycie dodatkowej linii do redagowania"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "P³ynne przewijanie"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Wy¶wietlanie bia³ych znaków"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Kolorowanie sk³adni"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Rozumny klawisz \"w pocz±tek\""
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Auto wciêcia"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Wytnij do koñca"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Zawijanie d³ugich linii"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Przetworzenie tabulacji na spacji"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Kopie zapasowe"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Wiele buforów plikowych"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Obs³uga myszy"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Bez konwersji z formatu DOS/Mac"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Zawie¶"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "Miêkkie zawijanie linii"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Tekst pomocy polecenia szukania\n"
+"\n"
+" Wprowad¼ s³owa lub znaki, których chcesz szukaæ, nastêpnie naci¶nij Enter. "
+"Je¶li istnieje fragment tekstu do nich pasuj±cy, ekran zostanie od¶wie¿ony "
+"pokazuj±c po³o¿enie najbli¿szego dopasowania.\n"
+"\n"
+" Po zachêcie 'Szukaj:' w nawiasach kwadratowych zostanie pokazany poprzednio "
+"szukany ³añcuch. Naci¶niêcie Enter bez wprowadzania tekstu spowoduje "
+"wykonanie poprzedniego szukania. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Je¿eli zaznaczy³e¶ fragment tekstu, i wybra³e¶ szukanie z zast±pieniem, "
+"tylko wyst±pienia w zaznaczonej czê¶ci zostan± zast±pione.\n"
+"\n"
+" W trybie szukania dostêpne s± nastêpuj±ce klawisze funkcyjne:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Tekst pomocy polecenia przej¶cia do zadanej linii\n"
+" Wprowad¼ numer linii, do której chcesz przej¶æ i naci¶nij Enter. Je¿eli w "
+"pliku jest mniej linii ni¿ liczba, któr± wprowadzi³e¶, zostaniesz "
+"przeniesiony do ostatniej linii pliku.\n"
+"\n"
+" W trybie przej¶cia do zadanej linii dostêpne s± nastêpuj±ce klawisze "
+"funkcyjne:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Tekst pomocy polecenia wstawienia pliku\n"
+"\n"
+" Wpisz nazwê pliku, którego zawarto¶æ ma zostaæ wstawiona do bufora "
+"bie¿±cego pliku w bie¿±cym po³o¿eniu kursora.\n"
+"\n"
+" Je¶li skompilowa³e¶ nano z obs³ug± wielu buforów plikowych i w³±czy³e¶ j± "
+"opcj± wiersza poleceñ -F lub --multibuffer, kombinacj± Meta-F albo za pomoc± "
+"pliku nanorc, wstawianie pliku spowoduje wczytanie go do oddzielnego bufora "
+"(u¿yj Meta-< i > do prze³±czania siê miêdzy buforami plikowymi. "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Je¶li potrzebujesz kolejnego pustego bufora, nie wpisuj nazwy lub wpisz "
+"nazwê nieistniej±cego jeszcze pliku i naci¶nij Enter.\n"
+"\n"
+"W trybie wstawiania pliku dostêpne s± nastêpuj±ce klawisze funkcyjne:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Tekst pomocy polecenia zapisu pliku\n"
+"\n"
+" Wpisz nazwê, pod jak± chcesz zapisaæ bie¿±cy plik i naci¶nij Enter.\n"
+"\n"
+" Je¶li zaznaczy³e¶ fragment tekstu, zostanie ci zaproponowany zapis tylko "
+"zaznaczonej czê¶ci do osobnego pliku. Aby zmniejszyæ ryzyko nadpisania "
+"bie¿±cego pliku jego czê¶ci±, w tym trybie nazwa bie¿±cego pliku nie jest "
+"nazw± domy¶ln±.\n"
+"\n"
+" W trybie zapisu pliku dostêpne s± nastêpuj±ce klawisze funkcyjne:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Tekst pomocy przegl±darki plików\n"
+"\n"
+" Przegl±darka plików s³u¿y do wizualnego przegl±dania katalogu w celu "
+"wybrania pliku do odczytu lub zapisu. Do przemieszczania siê po plikach w "
+"katalogu u¿yj klawiszy strza³ek oraz Page Up/Down, za¶ do wyboru pliku lub "
+"wej¶cia do zaznaczonego katalogu klawiszy S i Enter. Aby przej¶æ o jeden "
+"katalog wy¿ej wybierz katalog o nazwie \"..\" znajduj±cy siê na samej górze "
+"listy plików.\n"
+"\n"
+" W przegl±darce plików dostêpne s± nastêpuj±ce klawisze funkcyjne:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Tekst pomocy polecenia szukania\n"
+"\n"
+" Wprowad¼ s³owa lub znaki, których chcesz szukaæ, nastêpnie naci¶nij Enter. "
+"Je¶li istnieje fragment tekstu do nich pasuj±cy, ekran zostanie od¶wie¿ony "
+"pokazuj±c po³o¿enie najbli¿szego dopasowania.\n"
+"\n"
+" Po zachêcie 'Szukaj:' w nawiasach kwadratowych zostanie pokazany poprzednio "
+"szukany ³añcuch. Naci¶niêcie Enter bez wprowadzania tekstu spowoduje "
+"wykonanie poprzedniego szukania.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" W trybie wyszukiwania dostêpne s± nastêpuj±ce klawisze funkcyjne:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Tekst pomocy polecenia przej¶cia do katalogu w przegl±darce\n"
+"\n"
+" Wprowad¼ nazwê katalogu, jaki chcesz przegl±dn±æ.\n"
+"\n"
+" Je¶li dope³nianie za pomoc± tabulacji nie zosta³o wy³±czone, mo¿esz "
+"skorzystaæ z klawisza TAB, co automatycznie dope³ni (je¶li to mo¿liwe) nazwê "
+"wpisywanego katalogu.\n"
+"\n"
+" W trybie przej¶cia do katalogu w przegl±darce dostêpne s± nastêpuj±ce "
+"klawisze funkcyjne:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Tekst pomocy sprawdzania pisowni\n"
+"\n"
+" Program do sprawdzania pisowni sprawdza pisowniê ca³o¶ci tekstu bie¿±cego "
+"pliku. Gdy zostanie napotkane nieznane s³owo, jest ono pod¶wietlane i mo¿na "
+"poprawiæ wersjê, która je zast±pi. Nastêpnie pojawia siê propozycja "
+"zast±pienia w bie¿±cym pliku, lub, je¿eli zaznaczy³e¶ fragment tekstu, w tym "
+"fragmencie wszystkich wyst±pieñ danego niepoprawnie napisanego s³owa.\n"
+"\n"
+" W trybie sprawdzania pisowni dostêpne s± nastêpuj±ce klawisze funkcyjne:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Tekst pomocy wywo³ania polecenia zewnêtrznego\n"
+"\n"
+" Ten tryb umo¿liwia wstawienie do bie¿±cego bufora (lub, w trybie wielu "
+"buforów, do nowego bufora) wyj¶cia otrzymanego z polecenia uruchomionego "
+"przez pow³okê. Je¿eli potrzebujesz nowego pustego bufora, nie podawaj "
+"¿adnego polecenia.\n"
+"\n"
+" W tym trybie dostêpne s± nastêpuj±ce klawisze:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Podstawowy tekst pomocy nano\n"
+"\n"
+" Edytor nano zosta³ zaprojektowany z my¶l± o emulacji mo¿liwo¶ci i prostoty "
+"obs³ugi edytora tekstowego UW Pico. Ekran edycji mo¿na podzieliæ na cztery "
+"czê¶ci: górna linia pokazuje wersjê programu i nazwê w³a¶nie edytowanego "
+"pliku oraz mówi, czy plik zosta³ zmieniony. Dalej, g³ówne okno edytora "
+"zawiera edytowany tekst. Trzecia linia od do³u, czyli linia stanu, s³u¿y do "
+"wy¶wietlania wa¿nych komunikatów. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Dwie najni¿sze linie przypominaj± najczê¶ciej u¿ywane kombinacje klawiszy.\n"
+"\n"
+" Kombinacje klawiszy zosta³y opisane w nastêpuj±cy sposób: sekwencje "
+"steruj±ce wprowadzane klawiszem Control (Ctrl) lub podwójnym naci¶niêciem "
+"klawisza Escape s± oznaczone daszkiem (^). Sekwencje Escape, wprowadzane "
+"zale¿nie od uk³adu klawiatury jednym z klawiszy Esc, Alt lub Meta, s± "
+"oznaczone Meta (M-). "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Aby wprowadziæ dowolny znak, nale¿y dwukrotnie nacisn±æ Esc i wprowadziæ "
+"dziesiêtny kod tego znaku (w zakresie 000 - 255).\n"
+"\n"
+" W g³ównym oknie edytora dostêpne s± wymienione poni¿ej kombinacje klawiszy. "
+"Klawisze alternatywne ujêto w nawiasy:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "w³±cz/wy³±cz"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Klawisz niedozwolony w trybie przegl±dania"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Bufor zapisany w %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Bufor nie zosta³ zapisany w %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Bufor nie zosta³ zapisany w %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Rozmiar okna za ma³y dla nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr "Sk³adnia: nano [OPCJE] [[+LINIA,KOLUMNA] PLIK]...\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Opcja\t\tD³uga opcja GNU\t\tZnaczenie\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Opcja\t\tZnaczenie\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Pokazanie tej informacji"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+LINIA,KOLUMNA"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Rozpoczêcie w linii i kolumnie o podanych numerach"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "W³±cza rozumny przycisk \"w pocz±tek\""
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Tworzenie kopii zapasowych istniej±cych plików"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <katalog>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<katalog>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Katalog przechowywania unikatowych kopii zapasowych"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "U¿ywa tekstu pogrubionego zamiast negacji obrazu"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Przetwarza tabulacje na spacje"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "W³±czenie wielu buforów plikowych"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Rejestrowanie i odczyt historii wyszukiwania/zamiany ³añcuchów"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Bez korzystania z plików nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Naprawia problem pomylenia klawiszy klawiatury numerycznej"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Wy³±cza dodanie znaku nowej linii na koñcu pliku"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Bez konwersji z formatu DOS/Mac"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "U¿ycie dodatkowej linii do redagowania"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <³añcuch>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<³añcuch>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Znacznik cytowania"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Tryb zastrze¿ony"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Przewija po liniach zamiast po pó³-ekranu"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#kol>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#kol>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Ustawienie szeroko¶ci tabulacji na podan± ilo¶æ kolumn"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Szybkie oczyszczenie linii stanu"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Wypisanie wersji i zakoñczenie pracy"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "U¶ci¶la okre¶lenie granic s³ów"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <³añc>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<³añc>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "U¿ycie zadanej definicji sk³adni do pod¶wietlania"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Sta³e pokazywanie po³o¿enia kursora"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Naprawia problem pomylenia klawiszy Backspace/Delete"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Automatyczne wciêcia nowych linii"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Wycina od kursora do koñca linii"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Bez pod±¿ania za dowi±zaniami symbolicznymi, nadpisywanie"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "W³±czenie myszy"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <kat>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<kat>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Ustawienie katalogu pracy"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Zachowanie dzia³ania klawiszy XON (^Q) i XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "Ignoruje b³êdy podczas rozruchu, jak np. b³êdy w pliku rc"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#kol>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#kol>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Ustawia granice przewijania w podanej kolumnie"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Alternatywny program sprawdzania pisowni"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Automatyczny zapis przy koñczeniu pracy, bez pytania"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "W³±cza odwo³anie ogólne [EKSPERYMENTALNE]"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Tryb przegl±dania (tylko odczyt)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Bez ³amania d³ugich linii"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Bez pokazywania linii pomocy"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "W³±czenie zawieszania"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "W³±cza miêkkie przewijanie linii"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(ignorowane, dla zgodno¶ci z Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano wersja %s (skompilowana %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " E-mail: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Skompilowane opcje:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Przepraszamy, obs³uga tej funkcji zosta³a wy³±czona"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Zapisaæ zmieniony bufor (ODPOWIED¬ \"Nie\" SPOWODUJE UTRATÊ ZMIAN) ? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+"Nie uda³o siê ponownie otworzyæ wej¶cie standardowe z klawiatury, "
+"przepraszamy\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Odczyt z wej¶cia standardowego. Aby przerwaæ, naci¶nij ^C\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Otrzymano SIGHUP lub SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Aby powróciæ do nano, u¿yj \"fg\".\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "w³±czony(e)"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "wy³±czony(e)"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Nieznane polecenie"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "Zignorowano XON, hmm, hmm."
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "Zignorowano XOFF, hmm, hmm."
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "¯±dana wielko¶æ tabulacji \"%s\" nie jest poprawna"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "¯±dana pozycja ³amania linii \"%s\" nie jest poprawna"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Tt"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Ww"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Tak"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Wszystko"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Nie"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "B³±d w %s w linii %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Argument %s ma niedomkniêty \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Wyra¿enia regularne musz± zaczynaæ siê i koñczyæ znakiem \""
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "B³êdne wyra¿enie regularne \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Brak nazwy sk³adni"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "Sk³adnia \"none\" jest zarezerwowana"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "Sk³adnia \"default\" nie przyjmuje rozszerzeñ"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Brak nazwy klawisza"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "przypisania klawiszy musz± zaczynaæ siê z \"^\", \"M\", lub \"F\""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "Podaj funkcje do jakiej przypisuje siê klawisz"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "Podaj menu do jakiego przypisuje siê klawisz (lub \"all\")"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Nie mo¿na odwzorowaæ \"%s\" na funkcje"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Nie mo¿na odwzorowaæ \"%s\" na menu"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "Przepraszam, \"%s\" nie jest prawid³owym przypisaniem"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Nieznany kolor \"%s\".\n"
+"Dozwolone kolory to \"green\", \"red\", \"blue\", \n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" i \n"
+"\"black\", z opcjonalnym przedrostkiem \"bright\"\n"
+"dla kolorów pierwszoplanowych."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Nie mo¿na dodaæ polecenia koloru bez polecenia sk³adni"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Brak nazwy koloru"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Kolor t³a \"%s\" nie mo¿e byæ jaskrawy"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Brak wyra¿enia regularnego"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" wymaga odpowiadaj±cego mu \"end=\""
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Nie mo¿na dodaæ regularnego wyra¿enia nag³ówka bez polecenia sk³adni"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "B³±d krytyczny: brak przypisanego klawisza dla funkcji \"%s\""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr "Zakoñczenie. Uruchom nano z opcj± -I aby dopasowaæ ustawienia\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Poliecenie \"%s\" nie jest dozwolone w pliku do³±czonym"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Sk³adnia \"%s\" nie ma ustawieñ kolorów"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Niezrozumia³e polecenie \"%s\""
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Brak znacznika"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Opcja \"%s\" wymaga argumentu"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Opcja nie jest poprawnym ³añcuchem wielobajtowym"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Wymagane s± nie-bia³e znaki"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Wymagane s± dwa jednobajtowych znaki"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Nie mo¿na zerowaæ znacznika \"%s\""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Nieznany znacznik \"%s\""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Nie mogê znale¼æ swojego katalogu domowego! Aj!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "Nie znaleziono \"%.*s%s\""
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (i zast±p) w zaznaczeniu"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (i zast±p)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Czy zast±piæ to wyst±pienie?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Zast±p przez"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Zast±piono %lu wyst±pienie"
+msgstr[1] "Zast±piono %lu wyst±pienia"
+msgstr[2] "Zast±piono %lu wyst±pieñ"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Wprowad¼ numer linii, numer kolumny"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Niepoprawny numer linii lub kolumny"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "To nie nawias"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Brak nawiasu do pary"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Znacznik ustawiony"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Znacznik skasowany"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Nie ma nic w buforze odwo³ania"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+"B³±d wewnêtrzny: nie mo¿na dopasowaæ linii %d. Proszê zapisaæ swoj± pracê"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "tekst dodany"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "tekst usuniêty"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "przewijanie linii"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "po³±czenie linii"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "wyciêcie tekstu"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "wklejanie tekstu"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "³amanie linii"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "tekst wprowadzony"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "tekst zamieniony"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "B³±d wewnêtrzny: nieznany typ. Proszê zapisaæ swoj± pracê"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Odwo³ano operacjê (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Nic do powtórzenia!"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+"B³±d wewnêtrzny: Ustawianie powtórzenia nie powiod³o siê. Proszê zapisaæ "
+"swoj± pracê"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Powtórzono operacjê (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Nie mo¿na utworzyæ potoku"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Nie mo¿na rozwidliæ procesu"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+"B³±d wewnêtrzny: ustawianie wklejania nie powiod³o siê. Proszê zapisaæ swoj± "
+"pracê."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "B³±d wewnêtrzny: nieznany typ. Proszê zapisaæ swoj± pracê."
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Nieprawid³owy znacznik cytowania %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Mo¿na teraz cofn±æ justowanie!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Edytuj zast±pienie"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Nie mo¿na utworzyæ potoku"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Tworzenie listy b³êdnie napisanych s³ów, proszê czekaæ..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Nie mo¿na uzyskaæ wielko¶ci bufora potoku"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "B³±d podczas wywo³ywania \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "B³±d podczas wywo³ywania \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "B³±d podczas wywo³ywania \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Zakoñczono sprawdzanie pisowni"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "B³±d podczas wywo³ywania \"%s\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Niepowodzenie sprawdzania pisowni: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Niepowodzenie sprawdzania pisowni: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sS³owa: %lu Linii: %ld Znaki: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "W zaznaczeniu: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano brak³o pamiêci!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Wej¶cie Unicode"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Zmieniony "
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Przegl."
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "KAT:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Plik:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "lin.%ld/%ld (%d%%), kol.%lu/%lu (%d%%), zn.%lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Edytor tekstu nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "wersja"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Stworzony przez:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Specjalne podziêkowania otrzymuj±:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "Free Software Foundation (Fundacja Wolnego Oprogramowania)"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Za ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "oraz wszyscy pozostali, o których zapomnieli¶my..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Dziêkujemy za korzystanie z nano!"
+
+#~ msgid "Error writing backup file %s: File owner mismatch"
+#~ msgstr "B³±d zapisu kopii zapasowej %s: niezgodno¶æ w³a¶ciciela pliku"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
new file mode 100644
index 0000000..6ea63c9
--- /dev/null
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..b1ecc80
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,2113 @@
+# Portugueses Translation for the nano textual domain
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# João Victor Duarte Martins <jvdm@sdf.lonestar.org>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.4pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-04-07 10:02-0300\n"
+"Last-Translator: João Victor Duarte Martins <jvdm@sdf.lonestar.org>\n"
+"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Ir para o Diretório"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Cancelado"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Impossível mover-se fora de %s no modo restrito"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Erro na leitura %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Impossível mover um diretório"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(dir)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(dir acima)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Busca"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr "[Sensibilidade de Caixa]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr "[Expressão Regular]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr "[Retroceder]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Busca Ajustada"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Está é única ocorrência"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Nenhum padrão de busca atualmente"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Impossível inserir a linha de fora do %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Não há mais nenhum buffer de arquivos aberto"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Alternado para %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Novo Buffer"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "%lu linha lida (Convertida do formato DOS e Mac)"
+msgstr[1] "%lu linhas lidas (Convertidas do formato DOS e Mac)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"%lu linha lida (Convertida do formato DOS e Mac - Atenção: Sem permissão de "
+"escrita)"
+msgstr[1] ""
+"%lu linhas lidas (Convertidas do formato DOS e Mac - Atenção: Sem permissão "
+"de escrita)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "%lu linha lida (Convertida do formato Mac)"
+msgstr[1] "%lu linhas lidas (Convertidas do formato Mac)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"%lu linha lida (Convertida do formato Mac - Atenção: Sem permissão de "
+"escrita)"
+msgstr[1] ""
+"%lu linhas lidas (Convertidas do formato Mac - Atenção: Sem permissão de "
+"escrita)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "%lu linha lida (Convertida do formato DOS)"
+msgstr[1] "%lu linhas lidas (Convertidas do formato DOS)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"%lu linha lida (Convertida do formato DOS - Atenção: Sem permissão de "
+"escrita)"
+msgstr[1] ""
+"%lu linhas lidas (Convertidas do formato DOS - Atenção: Sem permissão de "
+"escrita)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "%lu linha lida"
+msgstr[1] "%lu linhas lidas"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "%lu linha lida ( Atenção: Sem permissão de escrita)"
+msgstr[1] "%lu linhas lidas ( Atenção: sem permissão de escrita)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Lendo o arquivo"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Novo Arquivo"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" não encontrado"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" é um diretório"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" é um arquivo dispositivo"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Comando para execução no novo buffer [de %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Comando para execução [de %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Arquivo para inserção no novo buffer [de %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Arquivo para inserção [de %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Tecla ilegal em modo não-multibuffer"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Impossível escrever fora de %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "Impossível acrecentar uma ligação simbólica com a opção --nofollow"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Erro ao escrever o arquivo reserva %s : %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Muitos arquivos reserva?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Erro ao escrever %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Erro ao escrever o arquivo temporário: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Escrito %lu linha"
+msgstr[1] "Escrito %lu linhas"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [Formato DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Formato Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Arq Reserva]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Pre-Adicionar seleção para o Arquivo"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Adicionar seleção para o Arquivo"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Escrever a Seleção para o Arquivo"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Nome Arquivo para Pré-Adicionar"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Arquivo para Adicionar ao"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Nome do Arquivo para Gravar"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Arquivo já existe, SOBRESCREVER ?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Salvar o Arquivo com um NOME DIFERENTE ?"
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+"O arquivo foi modificado desde a última vez que você abriu, continuar "
+"salvando ? "
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(mais)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Pressione Enter para continuar a inicialização do nano\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Substituir"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Sem Substituição"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Sens de Caixa"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "[Contrário]"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Expressão Regular"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "RegisAnt"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "PróxRegis"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Ir para o Próximo"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "OndeTá o Próx."
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Primeira Linha"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Última Linha"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Para Arquivos"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Formato DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Formato Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Anexar"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Pre-anexar"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Arquivo Reserva"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Executar Comando"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Ir P/ o Dir"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Ajuda"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Sair"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Onde está?"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Pág Anter"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Próx Pág"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Prim Linha"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Últ Linha"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Suspender"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Ini de Par"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Fim de Par"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "JstifiCmpl"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Atualiz"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Inserir Arq"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Ir P/ Linha"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Justificar o parágrafo atual"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Cancelar a função atual"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Abrir texto de ajuda"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Fechar o buffer do arquivo atual / Sair do nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Sair do nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Escrever o arquivo atual no disco"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Inserir outro arquivo no atual"
+
+# 'string' precisa de um referência direta no português
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Procurar por uma string ou um expressão regular"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Ir para a tela anterior"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Ir para a próxima tela"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Recortar a linha atual e guardá-la no buffer-de-transferência"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Colar do buffer-de-transferência para a linha atual"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Mostrar a posição do cursor"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Chamar pelo verificador ortográfico, se disponível"
+
+# 'string' precisa de um referência direta no português
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Substituir uma string ou expressão regular"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Ir para linha e coluna número"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Marcar o texto na posicação do cursor"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Repetir a última busca"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Copiar a linha atual e guardá-la no buffer-de-transferência"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Avançar o recuo da linha atual"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Recuar a linha atual"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Desfazer a última operação"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Refazer a última operação desfeita"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Avançar em um caractere"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Voltar em um caractere"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Avançar em uma palavra"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Retroceder em uma palavra"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Ir para a última linha"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Ir para a próxima linha"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Ir para o início da linha atual"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Ir para o fim da linha atual"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Ir para o início do parágrafo; depois para o parágrafo anterior"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Ir para o fim do parágrafo; depois para o próximo parágrafo"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Ir para a primeira linha do arquivo"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Ir para a última linha do arquivo"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Ir para o fechamento do parenteses/colchetes/chaves"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Rolar uma linha acima sem o cursor"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Rolar uma linha abaixo sem o cursor"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Trocar para o buffer de arquivo anterior"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Trocar para o próximo buffer de arquivo"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Inserir caractere(s) literalmente"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Inserir um caractere tabular na posição do cursor"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Inserir quebra de linha na posição do cursor"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Apagar o caractere sob o cursor"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Apagar o caractere a esquerda do cursor"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Recortar do cursor até o fim da linha"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Justificar o arquivo inteiro"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Contar o número de palavras, linhas e caracteres"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Atualizar (re-desenhar) a tela atual"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Suspender o editor (se a suspensão estiver habilitada)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Ativar sensibilidade de caixa na busca"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Inverter a direção da busca"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Ativar o uso de expressões regulares"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Lembrar a última string de busca/substituição"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Lembrar a ultima string de busca/substituição"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Ir para o navegador de arquivo"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Ativar o uso do formato DOS"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Ativar o uso do formato Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Ativar ajutamento"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Ativar pré-ajuntamento"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Ativar cópia de segurança do arquivo original"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Executar um comando externo"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Ativar o uso de um novo buffer"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Sair do navegador de arquivos"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Ir para o primeiro arquivo na lista"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Ir para o último arquivo na lista"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "Ir para o próximo arquivo na lista"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "Ir para o prévio arquivo na lista"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Ir para o diretório"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Fechar"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Gravar"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Justificar"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Ler o Arq"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Recort Txt"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "DesJustifi"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Colar Txt"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Pos Atual"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Para Spell"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Marcar Txt"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Copiar Txt"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Alinhar Txt"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Desalinhar Txt"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Desfazer"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Refazer"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Avançar"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Voltar"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Prx Palvr"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Palvr Ant"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Linha Ant"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Prox Linha"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Local"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Fim"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Encontrar Outro Parenteses"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Rolar para cima"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Rolar para baixo"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Próximo Arquivo"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Arquivo Anterior"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Entrada Literal"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Excluir"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Tecla BACKSPACE"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "RecortarAtéOFim"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Contagem de palavras"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Modo Ajuda"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Mostra da posição do cursor constante"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Uso de mais de uma linha para edição"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Rolagem Macia"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Mostrar espaços-vazios"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Marcação Colorida de Sintaxe"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Tecla HOME inteligente"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Indentação Automática"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Recortar até o fim"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Ajuste de linhas longas"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Conversão de tabulações para espaços"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Reservar os Arquivos"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Múltiplos buffers de arquivos"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Suporte ao Rato"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Sem conversões do formato DOS/Mac"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Suspenção"
+
+# Soft line wrapping?
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "Ajuste de linhas longas"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Texto de Ajuda do Comando de Busca\n"
+"\n"
+" Entre com as palavras ou caracteres que você gostaria de procurar, e\n"
+"então pressione <Enter>. Se existir combinações para o texto que você\n"
+"inseriu a tela irá se atualizar para a localização da combinação mais\n"
+"próxima.\n"
+"\n"
+" A string de busca anterior irá aparecer em parenteses depois da entrada de "
+"busca. Pressionando Enter sem inserir nenhum texto irá fazer a busca "
+"anterior. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Se você selecionou texto com o marcador e então fez uma busca para "
+"substituição somente ocorrências do texto marcado serão substituídas.\n"
+"\n"
+"As seguintes teclas de função vão estar disponíveis no modo de Busca:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Texto de Ajuda do Ir Para Linha\n"
+"\n"
+" Entre com o número da linha que você quer ir e pressione <Enter>. Se não\n"
+"existem linhas de texto para o número que você inseriu então você será\n"
+"enviado para a última linha do arquivo.\n"
+"\n"
+" As seguintes teclas de funções estão disponíveis no modo Ir Para Linha:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Texto de Ajuda do Inserir Arquivo\n"
+"\n"
+" Digite o nome de um arquivo que será inserido no buffer de arquivo atual na "
+"posição do cursor.\n"
+"\n"
+" Se você compilou o nano com suporte a múltiplos buffers de arquivo e o "
+"habilitou com o sinalizador de comando -F ou --multibuffer, ou com a tecla "
+"de alternância Meta-F, ou com um arquivo nanorc, a inserção de um arquivo "
+"irá ocorrer em um buffer separado (utilize Meta-< e > para alternar entre os "
+"bufferes de arquivo). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Se você precisa de um outro buffer vazio basta não indicar nenhum arquivo ou "
+"indicar o nome de um arquivo que não existe e precione Enter.\n"
+"\n"
+" As seguintes teclas de funções estão disponíveis no modo de Inserção de "
+"Arquivo:\n"
+"\n"
+
+# Talvez a tradução de 'prompted' não está correta.
+# Foi notificado na lista do ldp-br.
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Texto de Ajuda do Escrever Arquivo\n"
+"\n"
+" Digite o nome pelo qual você gostaria de salvar o arquivo atual e precione\n"
+"<Enter> para salvá-lo.\n"
+"\n"
+" Se você selecionou texto com a marcação, você será questionado para salvar\n"
+"somente a porção selecionada para um arquivo separado. Para reduzir as\n"
+"chances de sobrescrever o arquivo atual com a parte selecionada dele o nome\n"
+"padrão não é o do arquivo atual nesse modo.\n"
+"\n"
+" As seguintes teclas de funções estão disponíveis no modo Escrever "
+"Arquivo:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Texto de Ajuda do Navegador de Arquivos\n"
+"\n"
+" O Navegador de arquvivos é utilizado para visualmente buscar a estrutura "
+"do\n"
+"diretório para selecionar um arquivo para leitura ou gravação. Você pode\n"
+"utilizar as teclas de setas ou <Page Up/Down> para navegar através dos \n"
+"arquivos, e S ou <Enter> para escolher um arquivo, ou entrar em um "
+"diretório,\n"
+"selecionado. Para subir um nível, selecione o diretório chamado \"..\" no\n"
+"topo da lista de arquivos.\n"
+"\n"
+" As seguintes teclas de funções estão disponíveis no Navegador de Arquivos:\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Texto de Ajuda do Comando de Busca\n"
+"\n"
+" Insira as palavras ou caracteres que você gostaria de procurar e\n"
+"então pressione <Enter>. Se existir combinações para o texto que você\n"
+"inseriu a tela irá se atualizar para a localização da combinação mais\n"
+"próxima.\n"
+"\n"
+" A string da busca anterior irá aparecer em parenteses depois do prompt\n"
+"de busca. Pressionar <Enter> sem inserir nenhum texto irá fazer uma busca\n"
+"com esta string anterior.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" As seguintes teclas de função estão disponíveis no modo de Navegação de "
+"Busca:\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Texto de Ajuda do Navegador de Ida à Diretórios\n"
+"\n"
+" Insira o nome do diretório que você gostaria de navegar.\n"
+"\n"
+" Se a complentação <TAB> não foi desabilitada, você pode utilizar a\n"
+"a tecla <TAB> para (tentar) completar automaticamente o nome do\n"
+"diretório.\n"
+"\n"
+" As seguinte teclas de funções estão disponíveis no modo\n"
+"Navegador de Ida à Diretórios:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Texto de Ajuda do Teste de Ortografia\n"
+"\n"
+" O verificador ortografico verifica todo o texto no arquivo\n"
+"atual. Quando uma palavra desconhecida é encontrada ela é marcada e \n"
+"pode ser substituida por outra. Então será feita a pergunta se a\n"
+"palavra deve ser substituída por todo o texto, ou, se você selecionou\n"
+"texto com a marcação, no texto marcado.\n"
+"\n"
+"As seguinte teclas de funções estão disponíveis no modo Teste de \n"
+"Ortografia:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Testo de ajuda da Execução de Comando\n"
+"\n"
+" Este modo permite que você insira a saída de um comando executado pela "
+"cápsula (shell) dentro do buffer atual (ou em um novo buffer no modo de "
+"multiplos buffers). Se você precisa de uma outra janela, embranco, insira "
+"nenhum comando.\n"
+"\n"
+" As seguintes teclas de funções estão disponíveis neste modo:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Texto principal de ajuda do nano\n"
+"\n"
+" O editor nano foi projetado para simular as funcionalidades e a facilidade "
+"de uso do editor de texto UW Pico. O editor possui quatro seções "
+"principais. A linha superior mostra a versão do programa, o arquivo sendo "
+"editado no momento e se este foi modificado ou não. Depois está a janela "
+"principal de edição exibindo o arquivo que está sendo editado. A linha de "
+"estado é a terceira, mostrando mensagens importantes. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"As duas linhas de baixo mostram os atalhos mais comuns do editor.\n"
+"\n"
+" A notação para os atalhos é a seguinte: Sequências com teclas Ctrl são "
+"apresentadas com um circunflexo (^) e podem ser executadas tanto com a tecla "
+"Controle (Ctrl) ou pressionando a tecla Escape (Esc) duas vezes. Sequências "
+"com teclas de Escape são apresentadas com o símbolo Meta (M-) e podem ser "
+"executadas com as teclas Esc, Alt ou Meta, dependendo da sua configuração de "
+"teclado. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Pressionar Esc duas vezes e digitando um número com três digitos decimais de "
+"000 até 255 irá inserir o caractere com o valor conrespondente. As "
+"seguintes sequências estão disponíveis na janela de edição principal. "
+"Teclas alternativas são mostradas em parenteses:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "habilitado/desabilitado"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Tecla ilegal no modo de visualização"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Buffer escrito em %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Buffer não foi escrito em %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Buffer não foi escrito: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Tamanho da tela muito pequeno para o nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Uso: nano [OPÇÕES] [[+LINHA, COLUNA] ARQUIVO]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Opção\t\tOpção Longa GNU\t\tSignificado\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Opção\t\tSignificado\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Mostrar essa mensagem"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+LINHA,COLUNA"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Começar na linha numero LINHA, coluna COLUNA"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Habilitar tecla <HOME> inteligente"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Salvar cópias reserva de arquivos que existem"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-E <dir>"
+
+# uma alternativa melhor para backup aqui?
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<dir>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Diretório para salvar arquivos únicos de reserva"
+
+# É necessário melhorar aqui.
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Usa negrito ao invés de texto em video inverso"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Converte tabulações digitadas em espaços"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Permitir múltiplos buffers de arquivos"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Gravar e ler histórico das strings de busca/substituição"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Não olhar o arquivo nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Corrigir a confusão com o teclado numérico"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Não adicionar retorno de carro nos finais das linhas"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Não converter arquivos do formato DOS/Mac"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Utiliza um ou duas linhas para edição"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <str>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<str>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Citando strings"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Modo restrito"
+
+# revisar: meia tela
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Rolar linhas ao invés de meia tela"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#cols>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#cols>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Modificar o tamanho da tabulação para #cols"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Remoção rápida da barra de estado"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Imprime informação de versão e fecha"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Detecção mais precisa dos limites das palavras"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <str>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax <str>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Definição de sintaxe para inserção de cores"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Mostrar a posição do cursos constantemente"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Corrige o problema de confusão entre a tecla Backspace/Delete"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Indentar automaticamente nova linhas"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Recortar do cursor até o fim da linha"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Não seguir atalhos simbólicos, sobrescrever"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Habilitar o uso do mouse"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <dir>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<dir>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Indicar o diretório de trabalho"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Preservar as teclas XON (^Q) e XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+"Ignorar silenciosamente problemas na inicialização como erros no arquivo rc"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#colun>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#colun>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Modificar o ponto de agrupamento na coluna #cols"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Habilitar um verificador ortográfico alternativo"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Salvar automaticamente ao sair, não perguntar"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "Permitir desfazer genérico [EXPERIMENTAL]"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Modo Visualização (somente leitura)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Não ajuste linhas compridas"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Não as duas linhas de ajuda"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Permitir suspenção"
+
+# Soft line wrapping?
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "Habilita ajuste de linhas longas"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(ignorado, para compatibilidade com o Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr "GNU nano versão %s (compilado %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Opções de compilação:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Desculpe, suporte para essa função foi desabilitado"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"Salvar o buffer modificado (RESPONDER \"Não\" IRà DESTRUIR MODIFICAÇÕES) ?"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "Não foi possível reabrir a stdin do teclado, desculpe\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Lendo de stdin, ^C para abortar\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Recebi SIGHUP ou SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Utilize \"fg\" para retornar ao nano\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "habilitado"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "desabilitado"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Comando desconhecido"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON ignorado, mumble mumble."
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF ignorado, mumble mumble"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Tamanho \"%s\" de tabulação é inválido"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Pedido de tamanho \"%s\" inválido"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Ss"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Tt"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Sim"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Todos"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Não"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Erro no %s na linha %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Argumento '%s' possui inderterminado \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Expressão regular deve começar e terminar com um caractere \""
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Expressão regular errônea \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Falta o nome da sintaxe"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "A sintaxe \"none\" é reservada"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "A sintaxe padrão não deve conter extensões"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Falta o nome da chave"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "vínculos de teclas devem começar com \"^\", \"M\" ou \"F\""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "É preciso especificar uma função para o vínculo da tecla"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "É preciso especificar um menu para o vínculo da tecla (ou \"all\")"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Não foi possível mapear o nome \"%s\" com uma função"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Não foi possível mapear o nome \"%s\" com um menu"
+
+# TODO keystr pode ser traduzido?
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "Desculpe, keystr \"%s\" é um vínculo ilegal"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Cor %s não foi entendida.\n"
+"Cores válidas são \"green\" (verde), \"red\" (vermelho), \n"
+"\"blue\" (azul), \"yellow\" (amarelo), \"cyan\" (ciano), \n"
+"\"magente\" (maguenta) e \"black\" (preto), com o prefixo \n"
+"opcional \"bright\" (claro) para cores de fundo."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Impossível adicionar um diretiva de cor sem um diretiva de sintaxe"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Falta o nome da cor"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Cor do fundo \"%s\" não pode ser clara"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Falta a expressão regular"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\\\"start=\\\" precisa de um correspondende \\\"end=\\\""
+
+# TODO analisar no programa se isso faz sentido
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Impossível adicionar um cabeçalho regex sem um comando de sintaxe"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Erro fatal: nenhuma tecla mapeada para a função \"%s\""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Saindo. Por favor utilize o nano com a opção -I se for preciso para\n"
+"ajustar as configurações do seu nanorc\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Não é permitido o comando \"%s\" em arquivo incluido"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Sintaxe \"%s\" não possui comandos de cor"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Comando \"%s\" desconhecido"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Falta sinalizador"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Opção \"%s\" precisa de um argumento"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Opção não é uma string multibyte válida"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Caracteres imprimíveis são necessário"
+
+# Tradução para single-column?
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "É necessário dois caracteres single-column"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Impossível desativar sinalizador \"%s\""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Sinalizador \"%s\" desconhecido"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Impossível encontrar o meu diretório pessoal! Putz!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\\\"%.*s%s\\\" não foi encontrado"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (para subtituir) na seleção"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (para substituir) na seleção"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Substituir esse termo?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Subtituir por"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Substituiu-se %lu ocorrência"
+msgstr[1] "Substituiu-se %lu ocorrências"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Insira o número da linha, número da coluna"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Linha ou número de coluna inválido"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Não é um parenteses"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Nenhum parenteses encontrado"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Marcação feita"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Marcação desativada"
+
+# revisão: como traduzir undo buffer? 'desfazer' como um adjetivo?
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Não há nada para desfazer!"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+"Erro interno: não consegui casar a linha %d: Por favor salve o seu trabalho"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "adic txt"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "remover txt"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "quebra de linha"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "juntar linha"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "recortar txt"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "colar txt"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "quebra de linha"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "inserir txt"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "substituir txt"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Erro interno: tipo desconhecido. Por favor salve o seu trabalho"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Ação desfeita (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Nada para refazer!"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+"Erro interno: Falha na configuração de restauração. Por favor salve o seu "
+"trabalho"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Ação repetida (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Impossível fazer o duto"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Impossível bifurcar"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+"Erro interno: não consegui configurar colagem. Por favor salve o seu "
+"trabalho"
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Erro interno: tipo desconhecido. Por favor salve o seu trabalho"
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "String de citação ruim: %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "É possível DesJustificar!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Editar uma substituição"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Impossível criar o duto"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Criando a lista de palavra com erros ortográficos, por favor espere..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Impossível descobrir o tamanho do buffer do duto"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Erro ao clamar o \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Erro ao clamar o \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Erro ao clamar o \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Checagem ortográfica finalizada"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Erro ao clamar o \"%s\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Falha na checagem ortográfica: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Falha na checagem ortográfica: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sPalav: %lu Linhs: %ld Carac: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "Na seleção: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano está sem memória!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Entrada Unicode"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Modificado"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Olhar"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "DIR:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Arquivo:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "lin %ld/%ld (%d%%), col %lu/%lu (%d%%), carac %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "O editor de texto nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "versão"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Trazido para você por:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Agradecimentos especiais para:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "A Fundação Software Livre"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Para o ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "e qualquer outro que nós esquecemos..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Obrigado por usar o nano!"
+
+#~ msgid "Error writing backup file %s: File owner mismatch"
+#~ msgstr "Erro ao escrever o arquivo reserva %s : Dono do arquivo não casou"
diff --git a/po/quot.sed b/po/quot.sed
new file mode 100644
index 0000000..0122c46
--- /dev/null
+++ b/po/quot.sed
@@ -0,0 +1,6 @@
+s/"\([^"]*\)"/“\1â€/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“â€/""/g
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
new file mode 100644
index 0000000..2436c49
--- /dev/null
+++ b/po/remove-potcdate.sin
@@ -0,0 +1,19 @@
+# Sed script that remove the POT-Creation-Date line in the header entry
+# from a POT file.
+#
+# The distinction between the first and the following occurrences of the
+# pattern is achieved by looking at the hold space.
+/^"POT-Creation-Date: .*"$/{
+x
+# Test if the hold space is empty.
+s/P/P/
+ta
+# Yes it was empty. First occurrence. Remove the line.
+g
+d
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/ro.gmo b/po/ro.gmo
new file mode 100644
index 0000000..de04c8a
--- /dev/null
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 0000000..8328c16
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,2256 @@
+# Mesajele în limba românã pentru nano.
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+# Acest fiºier este distribuit sub aceeaºi licenþã ca ºi pachetul nano.
+# Laurentiu Buzdugan <lbuz@rolix.org>, 2003, 2004, 2005.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.3.7\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2005-04-18 07:00-0500\n"
+"Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Mergi la Director"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Am renunþat"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Nu pot merge în afara %s în modul restricþionat"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Eroare citind %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Nu pot schimba în sus un director"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(dir)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr ""
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Cautã"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Case Sensitive]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Regexp]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Înapoi]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Cãutare de la început"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Aceasta este singura apariþie"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Nici un pattern de cãutare curent"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Nu pot insera fiºier din afara lui %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Nici un alt bufere deschis"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Am schimbat la %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Bufer nou"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Am citit %lu linie (convertitã din formatul DOS ºi Mac)"
+msgstr[1] "Am citit %lu linii (convertite din formatul DOS ºi Mac)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "Am citit %lu linie (convertitã din formatul DOS ºi Mac)"
+msgstr[1] "Am citit %lu linii (convertite din formatul DOS ºi Mac)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Am citit %lu linie (convertitã din formatul Mac)"
+msgstr[1] "Am citit %lu linii (convertite din formatul Mac)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Am citit %lu linie (convertitã din formatul Mac)"
+msgstr[1] "Am citit %lu linii (convertite din formatul Mac)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Am citit %lu linie (convertitã din formatul DOS)"
+msgstr[1] "Am citit %lu linii (convertite din formatul DOS)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Am citit %lu linie (convertitã din formatul DOS)"
+msgstr[1] "Am citit %lu linii (convertite din formatul DOS)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Am citit %lu linie"
+msgstr[1] "Am citit %lu linii"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Citesc Fiºier"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Fiºier nou"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" nu a fost gãsit"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" este un director"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, fuzzy, c-format
+msgid "\"%s\" is a device file"
+msgstr "Fiºierul \"%s\" este un fiºier dispozitiv (device)"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Comandã de executat în bufer nou [din %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Comandã de executat [din %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Fiºier de inserat în bufer nou [din %s]"
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Fiºier de inserat [din %s]"
+
+#: src/files.c:1077
+#, fuzzy
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Tastã ilegalã în modul non-multibufer"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Nu pot scrie în afarã de %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "Nu pot pre-adãugã sau adãuga la un symlink cu setarea --nofollow"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, fuzzy, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Eroare la scrierea fiºierului temporar: %s"
+
+#: src/files.c:1582 src/nano.c:701
+#, fuzzy
+msgid "Too many backup files?"
+msgstr "Fiºiere copie de siguranþã (backup)"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Eroare scriind %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Eroare la scrierea fiºierului temporar: %s"
+
+#: src/files.c:1900
+#, fuzzy, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Am scris %u linie"
+msgstr[1] "Am scris %u linii"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [Format DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Format Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Copie de siguranþã (backup)]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Pre-adaugã Selecþie la fiºier"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Adaugã Selecþie la fiºier"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Scrie Selecþie în fiºier"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Nume de pre-adãugat la"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Nume de adãugat la"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Nume de scris"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Fiºierul existã, SUPRASCRIE ? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Salveazã fiºierul sun UN NUME DIFERIT ? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(suplimentar)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Apãsaþi Return/Enter pentru a continua lansarea nano\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Renunþã"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Înlocuieºte"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Nici o înlocuire"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Cu majuscule semnificative"
+
+#: src/global.c:421
+#, fuzzy
+msgid "Backwards"
+msgstr " [Înapoi]"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Regexp"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+#, fuzzy
+msgid "PrevHstory"
+msgstr "Istorie"
+
+#: src/global.c:452
+#, fuzzy
+msgid "NextHstory"
+msgstr "Istorie"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Du-te la text"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+#, fuzzy
+msgid "WhereIs Next"
+msgstr "Unde este Urmãtor"
+
+#: src/global.c:457
+#, fuzzy
+msgid "First File"
+msgstr "Prima linie"
+
+#: src/global.c:458
+#, fuzzy
+msgid "Last File"
+msgstr "Ultima linie"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "În fiºiere"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Format DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Format Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Adaugã"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Pre-adaugã"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Fiºier copie de siguranþã (backup)"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Executã comandã"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Du-te la Director"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Cere ajutor"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Terminã"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Unde este"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Pagina precedentã"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Pagina urmãtoare"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Prima linie"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Ultima linie"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Suspendã"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Început Par"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Sfârºit Par"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "AliniazãTotal"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Împrospãteazã"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Insereazã fiºier"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Du-te la linia"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Aliniazã paragraful curent"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Anuleazã funcþia curentã"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr ""
+
+#: src/global.c:509
+#, fuzzy
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Închide fiºierul încãrcat curent/Ieºi din nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Ieºire din nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Scrie fiºierul curent pe disc"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Insereazã alt fiºier în fiºierul curent"
+
+#: src/global.c:519
+#, fuzzy
+msgid "Search for a string or a regular expression"
+msgstr "Foloseºte expresii regulare (regular expressions)"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "Du-te la ecranul precedent"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "Du-te la ecraul urmãtor"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Taie linia curentã ºi pãstreazã-o în cutbufer"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Copiazã din cutbufer în linia curentã"
+
+#: src/global.c:527
+#, fuzzy
+msgid "Display the position of the cursor"
+msgstr "Aratã poziþia cursorului"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Invocã corectorul ortografic, dacã e disponibil"
+
+#: src/global.c:531
+#, fuzzy
+msgid "Replace a string or a regular expression"
+msgstr "Foloseºte expresii regulare (regular expressions)"
+
+#: src/global.c:532
+#, fuzzy
+msgid "Go to line and column number"
+msgstr "Du-te la o anumitã linie"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Marcheazã textul la poziþia curentã a cursorului"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Repetã ultima cãutare"
+
+#: src/global.c:537
+#, fuzzy
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Taie linia curentã ºi pãstreazã-o în cutbufer"
+
+#: src/global.c:538
+#, fuzzy
+msgid "Indent the current line"
+msgstr "Adaugã la fiºierul curent"
+
+#: src/global.c:539
+#, fuzzy
+msgid "Unindent the current line"
+msgstr "Adaugã la fiºierul curent"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "Du-te înainte un caracter"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "Du-te înapoi un caracter"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "Du-te înainte un cuvânt"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "Du-te înapoi un cuvânt"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "Du-te la linia precedentã"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "Du-te la linia urmãtoare"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "Du-te la începutul liniei"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "Du-te la sfârºitul liniei"
+
+#: src/global.c:555
+#, fuzzy
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Du-te la începutul paragrafului curent"
+
+#: src/global.c:557
+#, fuzzy
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Du-te la sfârºitul paragrafului curent"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Du-te la prima linie din fiºier"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Du-te la ultima linie din fiºier"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "Nici o parantezã pereche"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Du-te la buferul de fiºier precedent"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Schimbã la urmãtorul bufer de fiºier"
+
+#: src/global.c:577
+#, fuzzy
+msgid "Insert the next keystroke verbatim"
+msgstr "Insereazã caracter(e) identic"
+
+#: src/global.c:579
+#, fuzzy
+msgid "Insert a tab at the cursor position"
+msgstr "Insereazã un caracter tab la poziþia curentã a cursorului"
+
+#: src/global.c:581
+#, fuzzy
+msgid "Insert a newline at the cursor position"
+msgstr ""
+"Insereazã un caracter \"carriage return\" la poziþia curentã a cursorului"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "ªterge caracterul de sub cursor"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "ªterge caracterul de la stânga cursorului"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Taie de la cursor pânã la sfârºitul fiºierului"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Aliniazã întregul fiºier"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr ""
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Reîmprospãteazã zona de ecran curentã"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr ""
+
+#: src/global.c:605
+#, fuzzy
+msgid "Reverse the direction of the search"
+msgstr "Aratã poziþia cursorului"
+
+#: src/global.c:609
+#, fuzzy
+msgid "Toggle the use of regular expressions"
+msgstr "Foloseºte expresii regulare (regular expressions)"
+
+#: src/global.c:613
+#, fuzzy
+msgid "Recall the previous search/replace string"
+msgstr "Editeazã ºirurile precedente de cãutare/înlocuire"
+
+#: src/global.c:615
+#, fuzzy
+msgid "Recall the next search/replace string"
+msgstr "Editeazã ºirurile precedente de cãutare/înlocuire"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Du-te la navigatorul de fiºiere"
+
+#: src/global.c:621
+#, fuzzy
+msgid "Toggle the use of DOS format"
+msgstr "Scrie fiºierul ieºire în format DOS"
+
+#: src/global.c:622
+#, fuzzy
+msgid "Toggle the use of Mac format"
+msgstr "Scrie fiºierul ieºire în format Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr ""
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr ""
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr ""
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Executã comandã externã"
+
+#: src/global.c:633
+#, fuzzy
+msgid "Toggle the use of a new buffer"
+msgstr "Nu am putut obþine dimensiune bufer pentru pipe"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Ieºi din navigatorul de fiºiere"
+
+#: src/global.c:638
+#, fuzzy
+msgid "Go to the first file in the list"
+msgstr "Du-te la prima linie din fiºier"
+
+#: src/global.c:640
+#, fuzzy
+msgid "Go to the last file in the list"
+msgstr "Du-te la ultima linie din fiºier"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Du-te la linia urmãtoare"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Du-te la linia precedentã"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Du-te la director"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Închide"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Scrie ieºire"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Aliniazã"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Citeºte fiºier"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Taie text"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "De-aliniazã"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+#, fuzzy
+msgid "UnCut Text"
+msgstr "Anuleazã tãiere text"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Poz. Crt."
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "De ortografiat"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Marcheazã text"
+
+#: src/global.c:777
+#, fuzzy
+msgid "Copy Text"
+msgstr "Taie text"
+
+#: src/global.c:780
+#, fuzzy
+msgid "Indent Text"
+msgstr "Taie text"
+
+#: src/global.c:783
+#, fuzzy
+msgid "Unindent Text"
+msgstr "Anuleazã tãiere text"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Înainte"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Înapoi"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Cuvânt urmãtor"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Cuvânt precedent"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Linia precedentã"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Linia urmãtoare"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Acasã"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Sfârºit"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Gãseºte cealaltã parantezã"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr ""
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr ""
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Fiºier precedent"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Fiºier urmãtor"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Intrare identicã"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "ªterge"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "ªterge înapoi (backspace)"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "TaiePânãLaSfârºit"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr ""
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Mod Ajutor"
+
+#: src/global.c:1369
+#, fuzzy
+msgid "Constant cursor position display"
+msgstr "Poziþie cursor neschimbatã"
+
+#: src/global.c:1371
+#, fuzzy
+msgid "Use of one more line for editing"
+msgstr "Foloseºte mai mult spaþiu pentru editare"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Rulare (scrolling) finã"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Afiºeazã spaþiu-alb"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Evidenþiere sintaxã color"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Tastã acasã inteligentã"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Auto paragraf"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Taie pânã la sfârºit"
+
+#: src/global.c:1385
+#, fuzzy
+msgid "Long line wrapping"
+msgstr "Trecere automatã (wrap) la linie nouã"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr ""
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Fiºiere copie de siguranþã (backup)"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Multiple bufere fiºiere"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Suport maus"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Nici o conversie de format DOS/Mac"
+
+#: src/global.c:1397
+#, fuzzy
+msgid "Suspension"
+msgstr "Suspendã"
+
+#: src/global.c:1399
+#, fuzzy
+msgid "Soft line wrapping"
+msgstr "Trecere automatã (wrap) la linie nouã"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Text de ajutor pentru comanda \"Cautã\"\n"
+"\n"
+" Introduceþi cuvintele sau caracterele pe care aþi dori sã le cãutaþi, apoi "
+"apãsaþi Enter. Dacã existã vreo potrivire pentru textul cãutat, ecranul va "
+"fi actualizat la locaþia cea mai apropiatã de locul unde aceastã potrivire a "
+"avut loc.\n"
+"\n"
+" ªirul cãutat anterior va fi arãtat în paranteze dupã prompt-ul de cãutare. "
+"Apãsând Enter fãrã a introduce vreun text va executa cãutarea anterioarã. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Dacã aþi selectat text cu marcajul ºi apoi cãutaþi pentru a înlocui, numai "
+"potrivirile din textul selectat vor fi înlocuite.\n"
+"\n"
+"Urmãtoarele taste de funcþii sunt disponibile în modul \"Cautã\":\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Textul de ajutor pentru comanda \"Du-te la linia\"\n"
+"\n"
+" Introduceþi numãrul liniei unde doriþi sã mergeþi ºi apãsaþi Enter. Dacã "
+"existã mai puþine linii de text decât numãrul introdus veþi ajunge la ultima "
+"linie a fiºierului.\n"
+"\n"
+" Urmãtoarele taste de funcþii sunt disponibile în modul \"Du-te la linia\":\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Textul de ajutor pentru comanda \"Insereazã fiºier\"\n"
+"\n"
+" Tastaþi numele unui fiºier de introdus în buferul fiºierului curent la "
+"poziþia curentã a cursorului.\n"
+"\n"
+" Dacã aþi compilat nano cu suport pentru multiple bufere ºi aþi activat "
+"acestã opþiune cu indicatorii de linie de comandã -F sau --multibufer, "
+"comutatorul Meta-F, sau un fiºier nanorc, inserând un fiºier va face ca "
+"acesta sã fie încãrcat într-un alt bufer (folosiþi Meta-< ºi > pentru a "
+"comuta între bufere). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Dacã aveþi nevoie de un alt bufer gol, nu introduceþi nici un nume sau "
+"introduceþi un nume de fiºier ce nu existã ºi apãsaþi Enter.\n"
+"\n"
+" Urmãtoarele taste de funcþii sunt disponibile în modul \"Insereazã fiºier"
+"\":\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Textul de ajutor pentru comanda \"Scrie fiºier\"\n"
+"\n"
+" Tastaþi numele sub care doriþi sã salvaþi fiºierul curent ºi apãsaþi Enter "
+"pentru a salva fiºierul.\n"
+"\n"
+" Dacã aþi selectat text cu marcajul, veþi fi interpolat sã salvaþi numai "
+"porþiunea selectatã într-un fiºier separat. Pentru a reduce ºansa de a "
+"suprascrie fiºierul curent cu doar o porþiune a sa, numele fiºierului curent "
+"nu este implicit în acest mod.\n"
+"\n"
+" Urmãtoarele taste de funcþii sunt disponibile în modul \"Scrie fiºier\"\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Textul de ajutor pentru \"Navigator fiºiere\"\n"
+"\n"
+" Navigatorul de fiºiere este folosit pentru a naviga vizual structura de "
+"directoare ºi a selecta un fiºier pentru citire sau scriere. Puteþi folosi "
+"tastele cu sãgeþi sau Page Up/Down pentru a naviga prin fiºiere, ºi S sau "
+"Enter pentru a alege fiºierul selectat sau a intra într-un director "
+"selectat. Pentru a vã muta în sus un nivel, selectaþi directorul numit \".."
+"\" din capãtul de sus a listei de fiºiere.\n"
+"\n"
+" Urmãtoarele taste de funcþii sunt disponibile în \"Navigator fiºiere\":\n"
+"\n"
+
+#: src/help.c:302
+#, fuzzy
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Text de ajutor pentru comanda \"Cautã\"\n"
+"\n"
+" Introduceþi cuvintele sau caracterele pe care aþi dori sã le cãutaþi, apoi "
+"apãsaþi Enter. Dacã existã vreo potrivire pentru textul cãutat, ecranul va "
+"fi actualizat la locaþia cea mai apropiatã de locul unde aceastã potrivire a "
+"avut loc.\n"
+"\n"
+" ªirul cãutat anterior va fi arãtat în paranteze dupã prompt-ul de cãutare. "
+"Apãsând Enter fãrã a introduce vreun text va executa cãutarea anterioarã. "
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Text de ajutor pentru comanda \"Navigator Du-te la Directorul\"\n"
+"\n"
+" Introduceþi numele directorului pe care aþi dori sã-l navigaþi.\n"
+"\n"
+" Dacã completarea cu tab nu a fost deactivatã, puteþi folosi tasta TAB "
+"pentru a încerca sã completaþi automat numele directorului.\n"
+"\n"
+" Urmãtoarele taste de funcþii sunt disponibile în modul \"Navigator Du-te la "
+"Directorul\":\n"
+"\n"
+
+#: src/help.c:328
+#, fuzzy
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Text de ajutor pentru \"Corector ortografic\"\n"
+"\n"
+" Corectorul ortografic verificã ortografierea întregului text din fiºierul "
+"curent. Când este întâlnit un cuvânt necunoscut, acesta este evidenþiat ºi "
+"poate fi introdus/editat un înlocuitor. Corectorul vã va întreba dacã "
+"doriþi sã înlocuiþi toate apariþiile cu aceeaºi greºealã în fiºierul curent, "
+"sau, dacã aþi selectat text cu marcajul, în textul selectat.\n"
+"\n"
+" Urmãtoarele alte funcþii sunt disponibile în modul \"Corector ortografic"
+"\":\n"
+"\n"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Text de ajutor \"Comandã externã\"\n"
+"\n"
+" Acest meniu vã permite sã inseraþi ieºirea unei comenzi executate de shell "
+"în buferul curent (sau într-un nou bufer în modul multibufer). Dacã doriþi "
+"un alt bufer gol, nu introduceþi nici o comandã.\n"
+"\n"
+" Urmãtoarele taste sunt disponibile în acest mod:\n"
+"\n"
+
+#: src/help.c:356
+#, fuzzy
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+" text ajutor pentru nano\n"
+"\n"
+" Editotul nano este proiectat sa emuleze funþionalitatea ºi uºurinþa de "
+"folosire a editorului de texte UW Pico. Existã patru secþiuni principale "
+"ale editorului: Linia de sus aratã versiunea programului, numele fiºierului "
+"curent ce este editat ºi dacã fiºierul a fost sau nu modificat. Urmãtoarea "
+"secþiune principalã este fereastra de editare ce aratã fiºierul ce este "
+"editat. Linia de stare este a treia linie de jos ºi aratã mesaje "
+"importante. Ultimele douã linii aratã cele mai frecvente scurtãturi "
+"folosite în editor.\n"
+"\n"
+" "
+
+#: src/help.c:366
+#, fuzzy
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Notaþia pentru scurtãturi este dupã cum urmeazã: secvenþe Control-tastã sunt "
+"notate cu un simbol (^) ºi sunt introduse cu tasta Control (Ctrl) sau "
+"apãsând tasta Esc de douã ori. Secvenþele Escape-tastã sunt notate cu "
+"simbolul Meta (M) ºi pot fi introduse folosind oricare din tastele Esc, Alt "
+"sau Meta, în funcþie de setarea tastaturii d-voastrã. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"De asemenea, apãsând tasta Esc de douã ori apoi tastând un numãr din trei "
+"cifre de la 000 la 255 va introduce caracterul cu codul ASCII "
+"corespunzãtor. Urmãtoarele combinaþii de taste sunt disponibile în "
+"fereastra de editare principalã. Tastele alternative sunt arãtate în "
+"paranteze:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "activeazã/deactiveazã"
+
+#: src/nano.c:587
+#, fuzzy
+msgid "Key invalid in view mode"
+msgstr "Tastã ilegalã în modul VIZUALIZARE"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Bufer scris în %s\n"
+
+#: src/nano.c:697
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Bufer scris în %s\n"
+
+#: src/nano.c:700
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Bufer scris în %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Dimensiunea ferestrei prea micã pentru nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+
+#: src/nano.c:819
+#, fuzzy, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Opþiune\t\tOpþiune lungã\t\tÎnþeles\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Opþiune\t\tÎnþeles\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Aratã acest mesaj"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr ""
+
+#: src/nano.c:826
+#, fuzzy
+msgid "Start at line LINE, column COLUMN"
+msgstr "Începe la linia cu numãrul LINIE"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Permite tasta acasã inteligentã"
+
+#: src/nano.c:829
+#, fuzzy
+msgid "Save backups of existing files"
+msgstr "Creazã copii de siguranþã (backup) la salvare"
+
+#: src/nano.c:830
+#, fuzzy
+msgid "-C <dir>"
+msgstr "-E [dir]"
+
+#: src/nano.c:830
+#, fuzzy
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=[dir]"
+
+#: src/nano.c:831
+#, fuzzy
+msgid "Directory for saving unique backup files"
+msgstr "Director pentru scrierea fiºierelor copie-de-siguranþã (backup)"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr ""
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr ""
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Activeazã bufere fiºier multiple"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Scrie în jurnal ºi citeºte istoria ºirurilor de cãutare/înlocuire"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Nu te uita la fiºierele nanorc"
+
+#: src/nano.c:851
+#, fuzzy
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Reparã confuzia cu tastele Backspace/Delete"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr ""
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Nu converti fiºierele din formatul DOS/Mac"
+
+#: src/nano.c:858
+#, fuzzy
+msgid "Use one more line for editing"
+msgstr "Foloseºte mai mult spaþiu pentru editare"
+
+#: src/nano.c:860
+#, fuzzy
+msgid "-Q <str>"
+msgstr "-Q [sir]"
+
+#: src/nano.c:860
+#, fuzzy
+msgid "--quotestr=<str>"
+msgstr "--quotestr=[ºir]"
+
+#: src/nano.c:861
+#, fuzzy
+msgid "Quoting string"
+msgstr "ªir citate. implicit \"> \""
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Mod restricþionat"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+#, fuzzy
+msgid "-T <#cols>"
+msgstr "-T [#coloane]"
+
+#: src/nano.c:868
+#, fuzzy
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=[#coloane]"
+
+#: src/nano.c:869
+#, fuzzy
+msgid "Set width of a tab to #cols columns"
+msgstr "Seteazã lãþimea unui tab în coloane ca #coloane"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr ""
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Afiºeazã informaþii despre versiune ºi terminã"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr ""
+
+#: src/nano.c:880
+#, fuzzy
+msgid "-Y <str>"
+msgstr "-Y [ºir]"
+
+#: src/nano.c:880
+#, fuzzy
+msgid "--syntax=<str>"
+msgstr "--syntax=[ºir]"
+
+#: src/nano.c:881
+#, fuzzy
+msgid "Syntax definition to use for coloring"
+msgstr "Definiþie sintaxã de folosit"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Aratã continuu poziþia cursorului"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Reparã confuzia cu tastele Backspace/Delete"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Indent-eazã automatic liniile noi"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Taie de la cursor la sfârºitul liniei"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Nu urma link-urile simbolice, scrie peste"
+
+#: src/nano.c:894
+#, fuzzy
+msgid "Enable the use of the mouse"
+msgstr "Permite maus"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "-o <dir>"
+msgstr "-o [dir]"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=[dir]"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Seteazã directorul de operare"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Conservã tastele XON (^Q) ºi XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+#, fuzzy
+msgid "-r <#cols>"
+msgstr "-r [#coloane]"
+
+#: src/nano.c:905
+#, fuzzy
+msgid "--fill=<#cols>"
+msgstr "--fill=[#coloane]"
+
+#: src/nano.c:906
+#, fuzzy
+msgid "Set wrapping point at column #cols"
+msgstr "Seteazã lãþimea unui tab în coloane ca #coloane"
+
+#: src/nano.c:909
+#, fuzzy
+msgid "-s <prog>"
+msgstr "-s [prog]"
+
+#: src/nano.c:909
+#, fuzzy
+msgid "--speller=<prog>"
+msgstr "--speller=[prog]"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Permite corector ortografic alternativ"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Salveazã automat la ieºire, nu întreba"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+#, fuzzy
+msgid "View mode (read-only)"
+msgstr "Mod vedere (numai citire)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Nu sparge (wrap) liniile lungi"
+
+#: src/nano.c:922
+#, fuzzy
+msgid "Don't show the two help lines"
+msgstr "Nu arãta fereastra de ajutor"
+
+#: src/nano.c:923
+#, fuzzy
+msgid "Enable suspension"
+msgstr "Permite suspendarea"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr ""
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(ignorat, pentru compatibilitate cu Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano versiunea %s (compilat %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Opþiuni compilare:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Ne pare rãu, suportul pentru aceastã funcþie a fost deactivat"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Salvez buferul modificat (RÃSPUNSUL \"Nu\" VA DISTRUGE SCHIMBÃRILE) ?"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Am recepþionat SIGHUP sau SIGTERM\n"
+
+#: src/nano.c:1204
+#, fuzzy, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Folosiþi \"fg\" pentru a vã întoarce la nano"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "activat"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "deactivat"
+
+#: src/nano.c:1548 src/winio.c:1256
+#, fuzzy
+msgid "Unknown Command"
+msgstr "Indicator (flag) necunoscut %s"
+
+#: src/nano.c:1674
+#, fuzzy
+msgid "XON ignored, mumble mumble"
+msgstr "XON ignorat, murmur, murmur."
+
+#: src/nano.c:1679
+#, fuzzy
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF ignorat, murmur, murmur."
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, fuzzy, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Dimensiune tab cerutã %s invalidã"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, fuzzy, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Dimensiune umplere cerutã %s invalidã"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Yy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Aa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Da"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Tot"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Nu"
+
+#: src/rcfile.c:130
+#, fuzzy, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Eroare în %s pe linia %d: "
+
+#: src/rcfile.c:185
+#, fuzzy, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Argumentul %s are \" neterminat"
+
+#
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "ªirurile regex trebuie sã înceapã ºi sfârºeascã cu un caracter \""
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Regex incorect \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Lipseºte nume sintaxã"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr ""
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr ""
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "Lipseºte nume sintaxã"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr ""
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Nu am putut invoca \"%s\""
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, fuzzy, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Culoare %s incorectã.\n"
+"Culori valide sunt \"green\"(verde), \"red\"(roºu), \"blue\"(albastru), \n"
+"\"white\"(alb), \"yellow\"(galben), \"cyan\", \"magenta\"(purpuriu) ºi \n"
+"\"black\"(negru), cu prefixul opþional \"bright\"(strãlucitor) \n"
+"pentru culorile de scriere."
+
+#: src/rcfile.c:647
+#, fuzzy
+msgid "Cannot add a color command without a syntax command"
+msgstr "Nu pot adãuga o directivã de culoare fãrã o linie de sintaxã"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Lipseºte nume culoare"
+
+#: src/rcfile.c:672
+#, fuzzy, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Culoarea de fundal %s nu poate fi strãlucitoare"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr ""
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" necesitã un \"end=\" corespunzãtor"
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Nu pot adãuga o directivã de culoare fãrã o linie de sintaxã"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr ""
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr ""
+
+#: src/rcfile.c:966
+#, fuzzy, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Comanda %s nu a fost înþeleasã"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Lipseºte indicator (flag)"
+
+#: src/rcfile.c:994
+#, fuzzy, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Opþiunea %s necesitã un argument"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr ""
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+#, fuzzy
+msgid "Non-blank characters required"
+msgstr "Sunt necesare douã caractere non-tab ºi non-spaþiu"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Sunt necesare douã caractere de o singurã coloanã"
+
+#: src/rcfile.c:1114
+#, fuzzy, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Nu pot de-seta indicatorul (flag) %s"
+
+#: src/rcfile.c:1123
+#, fuzzy, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Indicator (flag) necunoscut %s"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Nu pot gãsi directorul meu home! Uãu!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%.*s%s\" nu a fost gãsit"
+
+#
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (de înlocuit) în selecþie"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (de înlocuit)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Înlocuieºte în acest caz?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Înlocuieºte cu"
+
+#: src/search.c:1004
+#, fuzzy, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Am înlocuit în %ld loc"
+msgstr[1] "Am înlocuit în %ld locuri"
+
+#: src/search.c:1034
+#, fuzzy
+msgid "Enter line number, column number"
+msgstr "Introduceþi numãrul liniei"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr ""
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Nu este o parantezã"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Nici o parantezã pereche"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Marcaj Setare"
+
+#: src/text.c:58
+#, fuzzy
+msgid "Mark Unset"
+msgstr "Marcaj DEsetare"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "Fiºier urmãtor"
+
+#: src/text.c:489 src/text.c:628
+#, fuzzy
+msgid "line wrap"
+msgstr "Trecere automatã (wrap) la linie nouã"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "Linia urmãtoare"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr " (de înlocuit)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Nu am putut pipe"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Nu am putut fork"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "ªir greºit pentru ghilimele %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Nu pot De-Alinia!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Editeazã o înlocuire"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Nu am putut crea pipe"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Creez listã cuvinte ortografiate greºit, vã rog aºteptaþi..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Nu am putut obþine dimensiune bufer pentru pipe"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Eroare invocare \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Eroare invocare \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Eroare invocare \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Am terminat verificarea ortografiei"
+
+#: src/text.c:2815
+#, fuzzy, c-format
+msgid "Error invoking \"%s\""
+msgstr "Eroare invocare \"spell\""
+
+#: src/text.c:2960
+#, fuzzy, c-format
+msgid "Spell checking failed: %s"
+msgstr "Verificarea ortografiei a eºuat: %s: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Verificarea ortografiei a eºuat: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr ""
+
+#: src/text.c:3031
+#, fuzzy
+msgid "In Selection: "
+msgstr "Adaugã Selecþie la fiºier"
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano a epuizat memoria!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr ""
+
+#
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Modificat"
+
+#
+#: src/winio.c:2150
+msgid "View"
+msgstr "Vedere"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "DIR:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Fiºier:"
+
+#: src/winio.c:3360
+#, fuzzy, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr ""
+"linia %ld/%ld (%d%%), coloana %lu/%lu (%d%%), caracterul %lu/%ld (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Editorul de texte nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "versiune"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Adus pentru d-voastrã de:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Mulþumiri speciale lui:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "The Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Pentru ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "ºi oricine altcineva a fost uitat..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Vã mulþumim cã folosiþi nano!"
+
+#~ msgid "Direction"
+#~ msgstr "Direcþie"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Invocã meniul de ajutor"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Cautã un anumit text în editor"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Înlocuieºte textul din editor"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Gãseºte cealaltã parantezã"
+
+#~ msgid "Make the current search/replace case (in)sensitive"
+#~ msgstr ""
+#~ "Executã cãutarea/înlocuirea curentã indiferentã/senzitivã la mãrimea "
+#~ "literelor"
+
+#~ msgid "Make the current search/replace go backwards"
+#~ msgstr "Executã cãutarea/înlocuirea curentã spre înapoi"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Pre-adaugã la fiºierul curent"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr ""
+#~ "Creazã copie de siguranþã (backup) pentru fiºierul original la salvare"
+
+#~ msgid "Insert into new buffer"
+#~ msgstr "Insereazã în bufer nou"
+
+#~ msgid ""
+#~ "\n"
+#~ "Buffer not written to %s (too many backup files?)\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Buferul nu a fost scris în %s (prea multe fiºiere copii de siguranþã "
+#~ "<backup>?)\n"
+
+#~ msgid "Up"
+#~ msgstr "Sus"
+
+#~ msgid "Space"
+#~ msgstr "Spaþiu"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Folosire: nano [+LINIE] [opþiune GNU lungã] [opþiune] [fiºier]\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Folosire: nano [+LINIE] [opþiune] [fiºier]\n"
+#~ "\n"
+
+#~ msgid "+LINE"
+#~ msgstr "+LINIE"
+
+#~ msgid "Use more space for editing"
+#~ msgstr "Foloseºte mai mult spaþiu pentru editare"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "Executã cãutãri cu expresii regulare"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Seteazã coloane de umplere (sparge/wrap linii la) #coloane"
+
+#~ msgid "Verbatim input"
+#~ msgstr "Intrare identicã"
+
+#~ msgid "Could not create temp file: %s"
+#~ msgstr "Nu am putut crea fiºier temporar: %s"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Haideþi, fiþi rezonabil"
+
+#~ msgid "Refusing zero-length regex match"
+#~ msgstr "Refuz potrivire regex de lungime 0"
+
+#~ msgid "Can't open \"%s\": %s"
+#~ msgstr "Nu pot deschide \"%s\": %s"
diff --git a/po/ru.gmo b/po/ru.gmo
new file mode 100644
index 0000000..de92535
--- /dev/null
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000..9ff51f7
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,2108 @@
+# Translation of nano to Russian
+# Copyright (C) 2001, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+#
+# Sergey A. Ribalchenko <fisher@obu.ck.ua>, 2001.
+# Dimitriy Ryazantcev <DJm00n@mail.ru>, 2006-2007, 2008.
+# Serge A. Ribalchenko <serge.fisher@gmail.com>, 2007, 2008.
+# Pavel Maryanov <acid@jack.kiev.ua>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-11-08 13:17+0200\n"
+"Last-Translator: Pavel Maryanov <acid@jack.kiev.ua>\n"
+"Language-Team: Russian <gnu@mx.ru>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "К каталогу"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Отменено"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Ðе удаётÑÑ Ð²Ñ‹Ð¹Ñ‚Ð¸ за границы %s в ограниченном режиме"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Ðе удаётÑÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÑтить каталог"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(каталог)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(вверх)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "ПоиÑк"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [С учётом региÑтра]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [РегВыр]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Ðазад]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "ПоиÑк завёрнут"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Это единÑтвенное Ñовпадение"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Ðечего иÑкать"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Ðе удаётÑÑ Ð²Ñтавить файл Ñнаружи %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Ðет больше открытых файловых буферов"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Переключено в %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Ðовый буфер"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Прочитана %lu Ñтрока (преобразовано из формата Mac и DOS)"
+msgstr[1] "Прочитано %lu Ñтроки (преобразовано из формата Mac и DOS)"
+msgstr[2] "Прочитано %lu Ñтрок (преобразовано из формата Mac и DOS)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"Прочитана %lu Ñтрока (преобразовано из формата Mac и DOS; предупреждение: "
+"нет доÑтупа на запиÑÑŒ)"
+msgstr[1] ""
+"Прочитано %lu Ñтроки (преобразовано из формата Mac и DOS; предупреждение: "
+"нет доÑтупа на запиÑÑŒ)"
+msgstr[2] ""
+"Прочитано %lu Ñтрок (преобразовано из формата Mac и DOS; предупреждение: нет "
+"доÑтупа на запиÑÑŒ)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Прочитана %lu Ñтрока (преобразовано из формата Mac)"
+msgstr[1] "Прочитано %lu Ñтроки (преобразовано из формата Mac)"
+msgstr[2] "Прочитано %lu Ñтрок (преобразовано из формата Mac)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"Прочитана %lu Ñтрока (преобразовано из формата Mac; предупреждение: нет "
+"доÑтупа на запиÑÑŒ)"
+msgstr[1] ""
+"Прочитано %lu Ñтроки (преобразовано из формата Mac; предупреждение: нет "
+"доÑтупа на запиÑÑŒ)"
+msgstr[2] ""
+"Прочитано %lu Ñтрок (преобразовано из формата Mac; предупреждение: нет "
+"доÑтупа на запиÑÑŒ)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Прочитана %lu Ñтрока (преобразовано из формата DOS)"
+msgstr[1] "Прочитано %lu Ñтроки (преобразовано из формата DOS)"
+msgstr[2] "Прочитано %lu Ñтрок (преобразовано из формата DOS)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"Прочитана %lu Ñтрока (преобразовано из формата DOS; предупреждение: нет "
+"доÑтупа на запиÑÑŒ)"
+msgstr[1] ""
+"Прочитано %lu Ñтроки (преобразовано из формата DOS; предупреждение: нет "
+"доÑтупа на запиÑÑŒ)"
+msgstr[2] ""
+"Прочитано %lu Ñтрок (преобразовано из формата DOS; предупреждение: нет "
+"доÑтупа на запиÑÑŒ)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Прочитана %lu Ñтрока"
+msgstr[1] "Прочитано %lu Ñтроки"
+msgstr[2] "Прочитано %lu Ñтрок"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "Прочитана %lu Ñтрока (предупреждение: нет доÑтупа на запиÑÑŒ)"
+msgstr[1] "Прочитаны %lu Ñтроки (предупреждение: нет доÑтупа на запиÑÑŒ)"
+msgstr[2] "Прочитано %lu Ñтрок (предупреждение: нет доÑтупа на запиÑÑŒ)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Чтение файла"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Ðовый файл"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "Файл «%s» не найден"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "Файл «%s» ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "Файл «%s» ÑвлÑетÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ уÑтройÑтва"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Команда Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð² новом буфере [от %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Команда Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ [от %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Файл Ð´Ð»Ñ Ð²Ñтавки в новый буфер [от %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Файл Ð´Ð»Ñ Ð²Ñтавки [от %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ° в немногобуферном режиме"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Ðе удаётÑÑ Ð·Ð°Ð¿Ð¸Ñать за пределами %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "Ðе удаётÑÑ Ð´Ð¾Ð¿Ð¸Ñать в начале или в конце Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ --nofollow"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Ошибка запиÑи файла резервной копии %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Слишком много резервных файлов?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Ошибка запиÑи %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Ошибка запиÑи временного файла: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "ЗапиÑана %lu Ñтрока"
+msgstr[1] "ЗапиÑано %lu Ñтроки"
+msgstr[2] "ЗапиÑано %lu Ñтрок"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [формат DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [формат Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [КопиÑ]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Добавить выделенное в начало файла"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Добавить выделенное в конец файла"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "ЗапиÑать выделенное в файл"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ (в конец)"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ (в начало)"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Файл ÑущеÑтвует. ПЕРЕЗÐПИСÐТЬ? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "ЗапиÑать файл под ДРУГИМ ИМЕÐЕМ?"
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "Файл был изменён поÑле открытиÑ. Продолжить Ñохранение?"
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(ещё)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Ðажмите ВВОД Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑƒÑка nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Отмена"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Замена"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Ðе заменÑÑ‚ÑŒ"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Уч.региÑÑ‚Ñ€"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Ðазад"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Рег.выраж."
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "ПредИÑтор"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "СледИÑтор"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "К Ñтроке"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Ðайти далее"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "ПервыйФайл"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "ПоÑледнФайл"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "К файлам"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Формат DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Формат Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Доп. в начало"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Доп. в конец"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Резерв. копиÑ"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Выполнить команду"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Перейти к"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Помощь"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Выход"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "ПоиÑк"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "ПредCтр"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "СледCтр"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "ПервСтрока"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "ПоÑлСтрока"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "ПриоÑтановка"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "ÐачПар"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "КонПар"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "ВыровнÑÑ‚ÑŒ"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Обновить"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Ð’Ñтавить файл"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "К Ñтроке"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "ВыровнÑÑ‚ÑŒ текущий абзац"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Отменить текущую функцию"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Показать Ñту Ñправку"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Закрыть текущий буфер / Выйти из nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Выход из nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "ЗапиÑать текущий файл на диÑк"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Ð’Ñтавить другой файл в текущий"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "ИÑкать текÑÑ‚ или регулÑрное выражение"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "Перейти на предыдущий Ñкран"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Перейти на Ñледующий Ñкран"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Вырезать текущую Ñтроку и Ñохранить её в буфере обмена"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Ð’Ñтавить Ñодержимое буфера обмена в текущую Ñтроку"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Показать положение курÑора"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Проверить орфографию, еÑли доÑтупно"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Заменить текÑÑ‚ или регулÑрное выражение"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Перейти на указанный номер Ñтроки и Ñтолбца"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Отметить текÑÑ‚ в текущей позиции курÑора"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Повторить поÑледний поиÑк"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Копировать текущую Ñтроку и Ñохранить ее в буфере обмена"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Увеличить отÑтуп Ñтроки"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Уменьшить отÑтуп Ñтроки"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Отменить поÑледнее дейÑтвие"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Повторить поÑледнее отменённое дейÑтвие"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Вперёд на один Ñимвол"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Ðазад на один Ñимвол"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Вперёд на одно Ñлово"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Ðазад на одно Ñлово"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "Ðа предыдущую Ñтроку"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Ðа Ñледующую Ñтроку"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "Ðа начало текущей Ñтроки"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Ð’ конец текущей Ñтроки"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Ðа начало текущего абзаца; потом Ñледующего абзаца"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Ð’ конец текущего абзаца; потом Ñледующего абзаца"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Ðа первую Ñтроку файла"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Ðа поÑледнюю Ñтроку файла"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Ðа ÑоответÑтвующую Ñкобку"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Прокрутить одну Ñтроку вверх, не Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°Ñ ÐºÑƒÑ€Ñор"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Прокрутить одну Ñтроку вниз, не Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°Ñ ÐºÑƒÑ€Ñор"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Перейти в предыдущий буфер"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Перейти в Ñледующий буфер"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Ð’Ñтавить Ñледующую комбинацию клавиш как еÑÑ‚ÑŒ"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Ð’Ñтавить табулÑцию в позиции курÑора"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Ð’Ñтавить Ñтроку в позиции курÑора"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Удалить Ñимвол под курÑором"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Удалить Ñимвол Ñлева от курÑора"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Вырезать от позиции курÑора до конца файла"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "ВыровнÑÑ‚ÑŒ по ширине текущий абзац"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "ПодÑчитать количеÑтво Ñлов, Ñтрок и Ñимволов"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Обновить текущий Ñкран"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "ПриоÑтановить редактор (еÑли включено)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "ИÑкать Ñ ÑƒÑ‡Ñ‘Ñ‚Ð¾Ð¼ региÑтра"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Изменить направление поиÑка"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "ИÑпользовать регулÑрные выражениÑ"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "СброÑить предыдущую Ñтроку поиÑка/замены"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "СброÑить Ñледующую Ñтроку поиÑка/замены"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Перейти в файловый браузер"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "ИÑпользовать формат DOS"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "ИÑпользовать формат Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "ДобавлÑÑ‚ÑŒ в конец"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "ДобавлÑÑ‚ÑŒ в начало"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Делать резервные копии оригинала"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Выполнить внешнюю команду"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "ИÑпользовать новый буфер"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Выйти из файлового браузера"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Перейти к первому файлу в ÑпиÑке"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Перейти к поÑледнему файлу в ÑпиÑке"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "Перейти к Ñледующему файлу в ÑпиÑке"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "Перейти к предыдущему файлу в ÑпиÑке"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Перейти к каталогу"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Закрыть"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "ЗапиÑать"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "ВыровнÑÑ‚ÑŒ"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "ЧитФайл"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Вырезать"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "ОтмВыравн"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "ОтмВырезк"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "ТекПозиц"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Словарь"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Отметить"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Копировать"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "ОтÑтуп"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "ОтмОтÑтупа"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Отмена"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Повтор"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Вперёд"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Ðазад"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "След. Ñлово"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Пред. Ñлово"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Пред. Ñтрока"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "След. Ñтрока"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Ðачало"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Конец"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Ðайти другую Ñкобку"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Прокрутить вверх"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Прокрутить вниз"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Предыдущий файл"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Следующий файл"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Ввод «как еÑть»"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "ТабулÑциÑ"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Ввод"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Удалить"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Возврат каретки"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "Обрез. до конца"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Счётчик Ñлов"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Режим Ñправки"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Отображение поÑтоÑнного Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÐºÑƒÑ€Ñора"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "ИÑпользование дополнительной Ñтроки Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "ÐŸÐ»Ð°Ð²Ð½Ð°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ°"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Отображение пробелов"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "ПодÑветка ÑинтакÑиÑа"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Ð£Ð¼Ð½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ° HOME"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "ÐвтоотÑтупы"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Вырезать до конца"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "ÐŸÐµÑ€ÐµÐ½Ð¾Ñ Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ñтрок"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "ÐšÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸Ñ Ñ‚Ð°Ð±ÑƒÐ»Ñций в пробелы"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Резервные файлы"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "ÐеÑколько файловых буферов"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Поддержка мыши"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Без Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· формата DOS/Mac"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "ПриоÑтановка"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "ÐœÑгкий Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ñтрок"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Справка по команде поиÑка\n"
+"\n"
+" Введите иÑкомые Ñлова или Ñимволы и нажмите клавишу ВВОД. ЕÑли будет "
+"найдено Ñовпадение, в окне будет показано положение поблизоÑти от найденного "
+"текÑта.\n"
+"\n"
+" Ð’ Ñкобках поÑле Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Â«ÐŸÐ¾Ð¸Ñк:» будет показана Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñтрока "
+"поиÑка. ЕÑли нажать клаишу ВВОД без Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑта, будет продолжен "
+"предыдущий поиÑк. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"ЕÑли вы выделили текÑÑ‚ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ пометить, а затем иÑпользовали поиÑк Ð´Ð»Ñ "
+"замены, то только ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¸Ð· выделенного текÑта будут заменены.\n"
+"\n"
+" Следующие функциональные клавиши доÑтупны в режиме поиÑка:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"ТекÑÑ‚ помощи режима Перейти к Ñтроке\n"
+"\n"
+" Введите номер Ñтроки к которой вы желаете перейти и нажмите Ввод. ЕÑли в "
+"файле чиÑло Ñтрок меньше чем введённое чиÑло, то окажетеÑÑŒ на поÑледней "
+"Ñтроке файла.\n"
+"\n"
+" Следующие функциональные клавиши доÑтупны в режиме Перейти к Ñтроке:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"ТекÑÑ‚ помощи режима Ð’Ñтавить файл\n"
+"\n"
+" Ðаберите Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð²Ñтавки в текущий файловый буфер в текущей позиции "
+"курÑора.\n"
+"\n"
+" ЕÑли ваш nano Ñкомпилирован Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ неÑкольких файловых буферов, и "
+"иÑпользовалиÑÑŒ опции -F или --multibuffer, или комбинацией клавиш Meta-F, "
+"или при помощи файла nanorc, то вÑтавка файла приведет к загрузке Ñтого "
+"файла в отдельный буфер (иÑпользуйте Meta-< and > Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ "
+"файловыми буферами). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"ЕÑли вам требуетÑÑ Ð´Ñ€ÑƒÐ³Ð¾Ð¹ пуÑтой буфер, не вводите Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° или тип в "
+"приглашении и нажмите Ввод.\n"
+"\n"
+" Следующие функциональные клавиши доÑтупны в режиме Ð’Ñтавка файла:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"ТекÑÑ‚ помощи режима ЗапиÑÑŒ файла\n"
+"\n"
+" Ðаберите Ð¸Ð¼Ñ Ð¿Ð¾Ð´ которым вы хотите Ñохранить текущий файл и нажмите Ввод.\n"
+"\n"
+" ЕÑли вы отметили текÑÑ‚ при помощи Ctrl-^, вам предложат запиÑать только "
+"выделенную чаÑÑ‚ÑŒ в отдельный файл. Чтобы понизить шанÑÑ‹ перепиÑÑ‹Ð²Ð°Ð½Ð¸Ñ "
+"текущего файла чаÑтью Ñтого файла, текущее Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° не будет именем по "
+"умолчанию в Ñтом режиме.\n"
+"\n"
+" Следующие клавиши доÑтупны в режиме запиÑи файла:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"ТекÑÑ‚ помощи проÑмотрщика файлов\n"
+"\n"
+" ПроÑмотрщик файлов иÑпользуетÑÑ Ð´Ð»Ñ Ð²Ð¸Ð·ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ проÑмотра Ñодержимого "
+"каталога, Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° файла из Ñтой каталога Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹ ввода-вывода. "
+"ПользуйтеÑÑŒ клавишами Ñо Ñтрелками или PageUp/PageDown Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° по "
+"Ñодержимому каталога, и клавишами S или ВВОД Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° нужного файла или "
+"входа в выбранный каталог. Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð²Ð²ÐµÑ€Ñ… на одну директорию, "
+"выберите директорию, названную \"..\" в Ñамом верху ÑпиÑка файлов.\n"
+"\n"
+" Следующие функциональные клавиши доÑтупны в проÑмотрщике файлов:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"ТекÑÑ‚ помощи команды поиÑка\n"
+"\n"
+" Введите Ñлова или Ñимволы, которые вы ÑобираетеÑÑŒ иÑкать, затем нажмите "
+"Ввод. ЕÑли Ð´Ð»Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð¾Ð³Ð¾ Вами найдетÑÑ Ñовпадение, Ñкран перемеÑтитÑÑ Ð² "
+"положение поблизоÑти от найденного ÑовпадениÑ.\n"
+"\n"
+" ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñтрока поиÑка будет показана в Ñкобках поÑле Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ "
+"'ПоиÑк:'. Ðажатие Ввод без Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑта продолжит предыдущий "
+"поиÑк.\n"
+"\n"
+" Следующие функциональные клавиши доÑтупны в режиме поиÑка:\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Следующие функциональные клавиши доÑтупны в режиме ПоиÑк проÑмотрщика :\n"
+":\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"ТекÑÑ‚ помощи режима Перейти к директории проÑмотрщика\n"
+"\n"
+" Введите Ð¸Ð¼Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸, которую Ð’Ñ‹ хотите проÑмотреть.\n"
+"\n"
+" ЕÑли tab-дополнение не было запрещено, Ð’Ñ‹ можете иÑпользовать клавишу TAB "
+"Ð´Ð»Ñ [попытки] автоматичеÑкого Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ директории.\n"
+"\n"
+" Следующие функциональные клавиши доÑтупны в режиме Перейти к директории "
+"ПроÑмотрщика:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"ТекÑÑ‚ помощи проверки правопиÑаниÑ\n"
+"\n"
+" Программа проверки правопиÑÐ°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€Ñет орфографию вÑего текÑта текущего "
+"файла. ЕÑли найдено неизвеÑтное Ñлово, оно подÑвечиваетÑÑ Ð¸ поÑвлÑетÑÑ "
+"Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÐµÐ¼Ð°Ñ Ð·Ð°Ð¼ÐµÐ½Ð° Ñтому Ñлову. Затем будет поÑвлÑÑ‚ÑŒÑÑ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ Ð´Ð»Ñ "
+"замены каждого Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ошибочно напиÑанного Ñлова в текущем "
+"файле.\n"
+"\n"
+" Следующие функциональные клавиши доÑтупны в режиме проверки правопиÑаниÑ:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"ТекÑÑ‚ помощи режима ВнешнÑÑ ÐšÐ¾Ð¼Ð°Ð½Ð´Ð°\n"
+"\n"
+" Это меню позволÑет вам вÑтавить вывод команды, выполненной в командном "
+"интерпретаторе, в текущий файловый буфер (или в новый буфер в мультибуферном "
+"режиме). ЕÑли вам необходим другой пуÑтой буфер, не вводите никакой команды "
+"вообще.\n"
+"\n"
+" Следующие функциональные клавиши доÑтупны в режиме ВнешнÑÑ ÐšÐ¾Ð¼Ð°Ð½Ð´Ð°:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+" ТекÑÑ‚ помощи nano\n"
+"\n"
+" Редактор nano разработан Ð´Ð»Ñ ÑмулÑции функциональноÑти и проÑтоты "
+"иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ редактора UW Pico. Редактор разбит на 4 оÑновные "
+"чаÑти: верхнÑÑ Ñтрока Ñодержит верÑию программы, текущее Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°, который "
+"редактируетÑÑ, и были ли внеÑены Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² текущий файл. Ð’Ñ‚Ð¾Ñ€Ð°Ñ Ñ‡Ð°ÑÑ‚ÑŒ - "
+"Ñто главное окно редактированиÑ, в котором отображен редактируемый файл. "
+"Строка ÑоÑтоÑÐ½Ð¸Ñ - 3 Ñтрока Ñнизу - показывает разные важные ÑообщениÑ. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Две Ñтроки внизу показывают наиболее чаÑто иÑпользуемые комбинации клавиш.\n"
+"\n"
+" СиÑтема обозначений комбинаций клавиш ÑледующаÑ: Комбинации Ñ Control "
+"обозначены Ñимволом (^) и вводÑÑ‚ÑÑ Ð¿Ñ€Ð¸ помощи нажатой кнопки (Ctrl) или "
+"двойном нажатии Escape (Esc); Комбинации Ñ Esc обозначены Ñимволом Meta (M) "
+"и могут быть введены при помощи кнопок Esc, Alt или Meta, в завиÑимоÑти от "
+"иÑпользуемой клавиатуры. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Также нажатие Esc дважды, затем ввод трёхзначного чиÑла от 000 до 255 "
+"вÑтавит Ñимвол Ñ ÑоответÑтвующим кодом. Следующие комбинации клавиш доÑтупны "
+"в главном окне редактора. Ðльтернативные комбинации показаны по "
+"возраÑтанию:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "разрешить/запретить"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ° в режиме проÑмотра"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Буфер запиÑан в %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Буфер не запиÑан в %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Буфер не запиÑан в %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Размер окна Ñлишком мал Ð´Ð»Ñ Nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"ИÑпользование: nano [ОПЦИИ] [[+СТРОКÐ,СТОЛБЕЦ] ФÐЙЛ]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "ОпциÑ\t\tÐ”Ð»Ð¸Ð½Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð°\t\tЗначение\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "ОпциÑ\t\tЗначение\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Показывать Ñто Ñообщение"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+СТРОКÐ,СТОЛБЕЦ"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Ðачать Ñо Ñтроки СТРОКÐ, Ñтолбца СТОЛБЕЦ"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Включить умную клавишу home"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Делать резервные копии ÑущеÑтвующих файлов при Ñохранении"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <дир>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<дир>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Каталог Ð´Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… резервных файлов"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "ИÑпользовать жирный шрифт вмеÑто обычного"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Конвертировать табулÑции в пробелы"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Разрешить неÑколько файловых буферов"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "СохранÑÑ‚ÑŒ и читать иÑторию поиÑка/замены Ñтрок"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Ðе иÑпользовать на файлы nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Решить проблему завиÑÐ°Ð½Ð¸Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¾Ð¹ клавиатуры"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Ðе добавлÑÑ‚ÑŒ пуÑтые Ñтроки в конце файла"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Ðе преобразовывать из DOS/Mac формата"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "ИÑпользование дополнительной Ñтроки Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <ÑÑ‚Ñ€>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<ÑÑ‚Ñ€>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Строка цитированиÑ"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Запрещенный режим"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "ПоÑÑ‚Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ° вмеÑто полу-Ñкранной"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#чиÑ>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#чиÑ>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "УÑтановить ширину табулÑции в #Ñ‡Ð¸Ñ Ñтолбцов"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Делать быÑтрую очиÑтку Ñтроки ÑоÑтоÑниÑ"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Показать верÑию и выйти"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "ОпределÑÑ‚ÑŒ границы Ñлов более точно"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <ÑÑ‚Ñ€>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<ÑÑ‚Ñ€>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "ИÑпользовать опиÑание ÑинтакÑиÑа Ð´Ð»Ñ Ð¿Ð¾Ð´Ñветки"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "ПоÑтоÑнно показывать позицию курÑора"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Решить проблему Backspace/Delete"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "ÐвтоматичеÑкий отÑтуп на новых Ñтроках"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Вырезать от курÑора до конца Ñтроки"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Ðе Ñледовать по Ñимвольным ÑÑылкам, перепиÑывать"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Разрешить иÑпользование мыши"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <дир>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<дир>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "УÑтановить рабочий каталог"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Зарезервировать кнопки XON (^Q) и XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "Молча игнорировать ошибки запуÑка, например rc-файла"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#Ñтолбцы>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#Ñтолбцы>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "УÑтановить точку переноÑа Ñтроки на #Ñтолбцы"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <программа>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<программа>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "ИÑпользовать альтернативную программу проверки орфографии"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "ÐвтозапиÑÑŒ при выходе, без лишних вопроÑов"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "Разрешить функцию отмены дейÑтвий [ЭКСПЕРИМЕÐТÐЛЬÐÐЯ]"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Режим проÑмотра (только чтение)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Ðе переноÑить длинные Ñтроки"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Ðе показывать две Ñтроки помощи внизу"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Разрешить приоÑтановку"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "Включить мÑгкий Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ñтрок"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(игнорируетÑÑ, Ð´Ð»Ñ ÑовмеÑтимоÑти Ñ Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano верÑÐ¸Ñ %s (Ñобрано %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Эл. почта: nano@nano-editor.org\tСайт: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Параметры Ñборки:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Поддержка Ñтой функции была отключена"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Сохранить изменённый буфер? (ИÐÐЧЕ ВСЕ ИЗМЕÐЕÐИЯ БУДУТ ПОТЕРЯÐЫ)"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "Ðе удалоÑÑŒ повторно открыть Ñтандартный ввод Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ñ‹\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Чтение из Ñтандартного ввода. ^C Ð´Ð»Ñ Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Получен SIGHUP или SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "ИÑпользуйте «fg» Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° в nano\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "включено"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "отключено"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON проигнорирован, мр-бр-бр"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF проигнорирован, мр-бр-бр"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Запрошенный размер табулÑции «%s» не подходит"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Запрошенный размер Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Â«%s» не подходит"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "YyДд"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "NnÐн"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "AaВв"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Да"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Ð’Ñе"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Ðет"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Ошибка в позиции %s Ñтроки %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Ðргумент %s имеет незакрытую \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr ""
+"Строки регулÑрных выражений должны начинатьÑÑ Ð¸ заканчиватьÑÑ Ñимволом \""
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Плохое регулÑрное выражение «%s»: %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "ОтÑутÑтвует название ÑинтакÑиÑа"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "СинтакÑÐ¸Ñ Â«none» зарезервирован"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "СинтакÑÐ¸Ñ Â«default» не должен иметь раÑширений"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "ОтÑутÑтвует название клавиши"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "привÑзки клавиш должны начинатьÑÑ Ñ Â«^», «M» или «F»"
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "Укажите функцию, которой назначаетÑÑ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ°"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "Укажите меню, которому назначаетÑÑ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ° (или «all»)"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Ðе удалоÑÑŒ ÑопоÑтавить Ð¸Ð¼Ñ Â«%s» функции"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Ðе удалоÑÑŒ ÑопоÑтавить Ð¸Ð¼Ñ Â«%s» меню"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "ПривÑзка «%s» не ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимой"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Цвет «%s» не ÑовÑем понÑтен.\n"
+"Разрешены цвета - «green», «red», «blue», \n"
+"«white», «yellow», «cyan», «magenta» и \n"
+"«black», Ñ Ð½ÐµÐ¾Ð±Ñзательным префикÑом «bright»\n"
+"Ð´Ð»Ñ Ñ†Ð²ÐµÑ‚Ð° фона."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Ðе удаётÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ команду цвета без команды ÑинтакÑиÑа"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "ОтÑутÑтвует название цвета"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Цвет фона \"%s\" не может быть Ñветлым"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "ОтÑутÑтвует регулÑрное выражение"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" требует ÑоответÑтвующего \"end=\""
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Ðе удаётÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ рег. выражение заголовка без команды ÑинтакÑиÑа"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "КритичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ \"%s\" не назначены клавиши"
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Выхожу. ИÑпользуйте nano Ñ Ð¾Ð¿Ñ†Ð¸ÐµÐ¹ -I еÑли требуетÑÑ Ð¿Ð¾Ð´Ñтроить параметры "
+"вашего nanorc\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Команда \"%s\" не разрешена во включенном файле"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "СинтакÑÐ¸Ñ \"%s\" не имеет цветовых команд"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Ðе понÑÑ‚Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° \"%s\""
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "ОтÑутÑтвует опциÑ"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "ÐžÐ¿Ñ†Ð¸Ñ \"%s\" требует аргумент"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "ÐžÐ¿Ñ†Ð¸Ñ Ð½Ðµ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð°Ñ Ñтрока"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "ТребуетÑÑ Ð½Ðµ пуÑтой Ñимвол"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "ТребуетÑÑ Ð´Ð²Ð° одноÑтрочных Ñимвола"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Ðе удаётÑÑ ÑнÑÑ‚ÑŒ флаг \"%s\""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "ÐеизвеÑтный флаг \"%s\""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Ðе могу найти ÑобÑтвенную домашнюю директорию! Йой!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%.*s%s\" не найден"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (что менÑÑ‚ÑŒ) в выделении"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (что менÑÑ‚ÑŒ)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Заменить Ñто вхождение?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Заменить на"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Замененное %lu вхождение"
+msgstr[1] "Замененные %lu вхождениÑ"
+msgstr[2] "Заменено %lu вхождений"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Введите номер Ñтроки и Ñтолбца"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Ðеправильный номер Ñтроки или Ñтолбца"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Ðе Ñкобка"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Ðет ÑоответÑтвующей Ñкобки"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Метка уÑтановлена"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Метка ÑнÑта"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Буфер отмены дейÑтвий пуÑÑ‚!"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+"ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: не удаётÑÑ ÑопоÑтавить Ñтроку %d. Сохраните Ñвою работу"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "добавление текÑта"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "удаление текÑта"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ñтроки"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "объединение Ñтрок"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "обрезка текÑта"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "отмена обрезки текÑта"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "Ð½Ð¾Ð²Ð°Ñ Ñтрока"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "вÑтавка текÑта"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "замена текÑта"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неизвеÑтный тип. Сохраните Ñвою работу"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Отменённое дейÑтвие (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Ðечего повторÑÑ‚ÑŒ!"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ошибка наÑтройки повтора. Сохраните Ñвою работу"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Повторённое дейÑтвие (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Ðе удалоÑÑŒ перенаправить в конвейер"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Ðе удалоÑÑŒ Ñоздать дочерний процеÑÑ"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+"ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ошибка наÑтройки отмены образки. Сохраните Ñвою работу"
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неизвеÑтный тип. Сохраните Ñвою работу"
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ñтрока Ñ†Ð¸Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ отменить выравнивание!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Редактировать замену"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Ðе удалоÑÑŒ Ñоздать конвейер"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Идёт Ñоздание ÑпиÑка ошибочных Ñлов. Подождите..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Ðе удалоÑÑŒ получить размер буфера конвейера"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Проверка правопиÑÐ°Ð½Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð°"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ \"%s\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Проверка правопиÑÐ°Ð½Ð¸Ñ Ð½Ðµ удалаÑÑŒ: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Проверка правопиÑÐ°Ð½Ð¸Ñ Ð½Ðµ удалаÑÑŒ: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sСлов: %lu Строк: %ld Символов: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "В выделении: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "ÐедоÑтаточно памÑти Ð´Ð»Ñ nano!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Юникод код"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Изменён"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Смотр"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "Дир:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Файл:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "Ñтрока %ld/%ld (%d%%), Ñтолбец %lu/%lu (%d%%), Ñимвол %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "ТекÑтовый редактор nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "верÑиÑ"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "ПредоÑтавлен вам:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "ОÑÐ¾Ð±Ð°Ñ Ð±Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€Ð½Ð¾ÑÑ‚ÑŒ:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr ""
+"The Free Software Foundation (фонд Ñвободного программного обеÑпечениÑ)"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Ð”Ð»Ñ ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr ""
+"Дмитрию РÑзанцеву за помощь в переводе и вÑем оÑтальным, кого мы забыли "
+"упомÑнуть..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "СпаÑибо за то, что выбрали nano!"
diff --git a/po/rw.gmo b/po/rw.gmo
new file mode 100644
index 0000000..9ca4657
--- /dev/null
+++ b/po/rw.gmo
Binary files differ
diff --git a/po/rw.po b/po/rw.po
new file mode 100644
index 0000000..0e7bfc2
--- /dev/null
+++ b/po/rw.po
@@ -0,0 +1,2454 @@
+# translation of nano to Kinyarwanda.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# Steve Murphy <murf@e-tools.com>, 2005
+# Steve performed initial rough translation from compendium built from translations provided by the following translators:
+# Philibert Ndandali <ndandali@yahoo.fr>, 2005.
+# Viateur MUGENZI <muvia1@yahoo.fr>, 2005.
+# Noëlla Mupole <s24211045@tuks.co.za>, 2005.
+# Carole Karema <karemacarole@hotmail.com>, 2005.
+# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005.
+# Augustin KIBERWA <akiberwa@yahoo.co.uk>, 2005.
+# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005.
+# Antoine Bigirimana <antoine@e-tools.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.3.6\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2005-04-03 10:55-0700\n"
+"Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
+"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr ""
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Kureka"
+
+#: src/browser.c:266 src/browser.c:314
+#, fuzzy, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Gyayo Hanze Bya in Nta gukoresha bisesuye Ubwoko"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr ""
+
+#: src/browser.c:303
+#, fuzzy
+msgid "Can't move up a directory"
+msgstr "Kwimura Hejuru a bushyinguro"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr ""
+
+# #-#-#-#-# offmgr.pot (PACKAGE VERSION) #-#-#-#-#
+# offmgr/source\offapp\dialog\inetdlg.src:RID_OFADLG_INTERNET.1.RID_SVXPAGE_INET_SEARCH.text
+# #-#-#-#-# offmgr.pot (PACKAGE VERSION) #-#-#-#-#
+# offmgr/source\offapp\dialog\treeopt.src:RID_OFADLG_OPTIONS_TREE_PAGES.SID_INET_DLG.3.text
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Gushaka"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr ""
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr ""
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr ""
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr ""
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+#, fuzzy
+msgid "This is the only occurrence"
+msgstr "ni i ukugaragara"
+
+#: src/browser.c:1042 src/search.c:583
+#, fuzzy
+msgid "No current search pattern"
+msgstr "KIGEZWEHO Gushaka Ishusho"
+
+#: src/files.c:125
+#, fuzzy, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Kongeramo IDOSIYE Bivuye Hanze Bya"
+
+#: src/files.c:234
+#, fuzzy
+msgid "No more open file buffers"
+msgstr "Birenzeho Gufungura IDOSIYE"
+
+#: src/files.c:250
+#, fuzzy, c-format
+msgid "Switched to %s"
+msgstr "Kuri"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr ""
+
+#: src/files.c:633
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Umurongo Bivuye Na Imiterere"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "Umurongo Bivuye Na Imiterere"
+
+#: src/files.c:644
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Umurongo Bivuye Imiterere"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Umurongo Bivuye Imiterere"
+
+#: src/files.c:654
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Umurongo Bivuye Imiterere"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Umurongo Bivuye Imiterere"
+
+#: src/files.c:664
+#, fuzzy, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Umurongo"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:700 src/files.c:736
+#, fuzzy
+msgid "Reading File"
+msgstr "Idosiye"
+
+#: src/files.c:706
+#, fuzzy
+msgid "New File"
+msgstr "Idosiye"
+
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\dochdl\dochdl.src:STR_NOGLOS2.text
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\uiview\view.src:STR_NOGLOS2.text
+#: src/files.c:709
+#, fuzzy, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\"ntibyabonetse"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, fuzzy, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\"ni a bushyinguro"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, fuzzy, c-format
+msgid "\"%s\" is a device file"
+msgstr "Idosiye ni a APAREYE IDOSIYE"
+
+#: src/files.c:817
+#, fuzzy, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Kuri Gukora in Gishya Bivuye"
+
+#: src/files.c:819
+#, fuzzy, c-format
+msgid "Command to execute [from %s] "
+msgstr "Kuri Gukora Bivuye"
+
+#: src/files.c:825
+#, fuzzy, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Idosiye Kuri Kongeramo Gishya Bivuye"
+
+#: src/files.c:827
+#, fuzzy, c-format
+msgid "File to insert [from %s] "
+msgstr "Idosiye Kuri Kongeramo Bivuye"
+
+#: src/files.c:1077
+#, fuzzy
+msgid "Key invalid in non-multibuffer mode"
+msgstr "in Ubwoko"
+
+#: src/files.c:1486
+#, fuzzy, c-format
+msgid "Can't write outside of %s"
+msgstr "Kwandika Hanze Bya"
+
+#: src/files.c:1501
+#, fuzzy
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "Cyangwa Kongeraho... Kuri a Na: Gushyiraho"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, fuzzy, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "IDOSIYE"
+
+#: src/files.c:1582 src/nano.c:701
+#, fuzzy
+msgid "Too many backup files?"
+msgstr "Idosiye"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr ""
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, fuzzy, c-format
+msgid "Error writing temp file: %s"
+msgstr "IDOSIYE"
+
+#: src/files.c:1900
+#, fuzzy, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Umurongo"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr ""
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr ""
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr ""
+
+#: src/files.c:2015
+#, fuzzy
+msgid "Prepend Selection to File"
+msgstr "Kuri Idosiye"
+
+#: src/files.c:2016
+#, fuzzy
+msgid "Append Selection to File"
+msgstr "Kuri Idosiye"
+
+#: src/files.c:2017
+#, fuzzy
+msgid "Write Selection to File"
+msgstr "Kuri Idosiye"
+
+#: src/files.c:2020
+#, fuzzy
+msgid "File Name to Prepend to"
+msgstr "Idosiye Kuri Kuri"
+
+#: src/files.c:2021
+#, fuzzy
+msgid "File Name to Append to"
+msgstr "Idosiye Kuri Kuri"
+
+#: src/files.c:2022
+#, fuzzy
+msgid "File Name to Write"
+msgstr "Idosiye Kuri"
+
+#: src/files.c:2153
+#, fuzzy
+msgid "File exists, OVERWRITE ? "
+msgstr "Idosiye"
+
+#: src/files.c:2162
+#, fuzzy
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Kubika IDOSIYE"
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+#, fuzzy
+msgid "(more)"
+msgstr "(Birenzeho"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr "Kuri urifuzagukomeza"
+
+# crashrep/source\all\crashrep.lng:%CANCEL_BUTTON%.text
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Kureka"
+
+# offmgr/source\offapp\dialog\autocdlg.src:RID_OFA_AUTOCORR_DLG.1.RID_OFAPAGE_AUTOCORR_REPLACE.text
+#: src/global.c:416
+msgid "Replace"
+msgstr "Gusimbura"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr ""
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr ""
+
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_AXIS.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_X_AXIS.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_Y_AXIS.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_Z_AXIS.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_GRID.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_LINE.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib.src:TAB_TITLE.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib.src:TAB_LEGEND.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib.src:TAB_DATA_LINE.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib.src:TAB_DATA_POINT.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib3.src:TAB_DIAGRAM_FLOOR.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib3.src:TAB_DIAGRAM_AREA.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib4.src:TAB_DIAGRAM_STOCK_LOSS.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib4.src:TAB_DIAGRAM_STOCK_PLUS.1.text
+#: src/global.c:421
+#, fuzzy
+msgid "Backwards"
+msgstr "Inyuma"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr ""
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+#, fuzzy
+msgid "PrevHstory"
+msgstr "Urutonde"
+
+#: src/global.c:452
+#, fuzzy
+msgid "NextHstory"
+msgstr "Urutonde"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr ""
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr ""
+
+# svx/source\dialog\paragrph.src:RID_SVXPAGE_STD_PARAGRAPH.FT_FLINEINDENT.text
+#: src/global.c:457
+#, fuzzy
+msgid "First File"
+msgstr "Umurongo ubanza"
+
+# svx/source\dialog\paragrph.src:RID_SVXPAGE_ALIGN_PARAGRAPH.FT_LASTLINE.text
+#: src/global.c:458
+#, fuzzy
+msgid "Last File"
+msgstr "Umurongo wa nyuma"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr ""
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr ""
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr ""
+
+# 214
+#: src/global.c:464
+msgid "Append"
+msgstr "kugereka"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr ""
+
+# 503
+#: src/global.c:466
+#, fuzzy
+msgid "Backup File"
+msgstr "inyibutsabubiko"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr ""
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr ""
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr ""
+
+# #-#-#-#-# setup2.pot (PACKAGE VERSION) #-#-#-#-#
+# setup2/source\ui\app.src:STR_RESTART_BTN_NO.text
+# #-#-#-#-# setup2.pot (PACKAGE VERSION) #-#-#-#-#
+# setup2/source\ui\pages\phavefun.src:RESID_PAGE_PAGEHAVEFUN.STR_LOGOUT_BTN_NO.text
+#: src/global.c:481
+msgid "Exit"
+msgstr "Gusohoka"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr ""
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr ""
+
+# sc/sdi\scslots.src:SID_PREVIEW_NEXT.text
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Ipaji ikurikira"
+
+# svx/source\dialog\paragrph.src:RID_SVXPAGE_STD_PARAGRAPH.FT_FLINEINDENT.text
+#: src/global.c:485
+#, fuzzy
+msgid "First Line"
+msgstr "Umurongo ubanza"
+
+# svx/source\dialog\paragrph.src:RID_SVXPAGE_ALIGN_PARAGRAPH.FT_LASTLINE.text
+#: src/global.c:486
+#, fuzzy
+msgid "Last Line"
+msgstr "Umurongo wa nyuma"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr ""
+
+#: src/global.c:489
+#, fuzzy
+msgid "Beg of Par"
+msgstr "Bya"
+
+#: src/global.c:490
+#, fuzzy
+msgid "End of Par"
+msgstr "Impera Bya"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr ""
+
+# dbaccess/source/ui/inc/toolbox.hrc:MID_SBA_QRY_REFRESH.text
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Kugira gishya"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Kongeramo Idosiye"
+
+#: src/global.c:497
+#, fuzzy
+msgid "Go To Line"
+msgstr "Gya kumurongo"
+
+#: src/global.c:500
+#, fuzzy
+msgid "Justify the current paragraph"
+msgstr "i KIGEZWEHO Igika"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+#, fuzzy
+msgid "Cancel the current function"
+msgstr "i KIGEZWEHO Umumaro"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr ""
+
+#: src/global.c:509
+#, fuzzy
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Funga IDOSIYE Bivuye"
+
+#: src/global.c:511
+#, fuzzy
+msgid "Exit from nano"
+msgstr "Bivuye"
+
+#: src/global.c:515
+#, fuzzy
+msgid "Write the current file to disk"
+msgstr "i KIGEZWEHO IDOSIYE Kuri"
+
+#: src/global.c:517
+#, fuzzy
+msgid "Insert another file into the current one"
+msgstr "IDOSIYE i KIGEZWEHO"
+
+#: src/global.c:519
+#, fuzzy
+msgid "Search for a string or a regular expression"
+msgstr "Ibisanzwe"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "Kuri i Ibanjirije Mugaragaza"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "Kuri i Komeza>> Mugaragaza"
+
+#: src/global.c:523
+#, fuzzy
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "i KIGEZWEHO Umurongo Na in i"
+
+#: src/global.c:525
+#, fuzzy
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Bivuye i i KIGEZWEHO Umurongo"
+
+#: src/global.c:527
+#, fuzzy
+msgid "Display the position of the cursor"
+msgstr "i Ibirindiro Bya i indanga"
+
+#: src/global.c:529
+#, fuzzy
+msgid "Invoke the spell checker, if available"
+msgstr "i Genzuranyuguti NIBA Bihari"
+
+#: src/global.c:531
+#, fuzzy
+msgid "Replace a string or a regular expression"
+msgstr "Ibisanzwe"
+
+#: src/global.c:532
+#, fuzzy
+msgid "Go to line and column number"
+msgstr "Kuri a Umurongo Umubare"
+
+#: src/global.c:534
+#, fuzzy
+msgid "Mark text at the cursor position"
+msgstr "Umwandiko ku i indanga Ibirindiro"
+
+#: src/global.c:535
+#, fuzzy
+msgid "Repeat last search"
+msgstr "Iheruka Gushaka"
+
+#: src/global.c:537
+#, fuzzy
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "i KIGEZWEHO Umurongo Na in i"
+
+#: src/global.c:538
+#, fuzzy
+msgid "Indent the current line"
+msgstr "Kuri i KIGEZWEHO IDOSIYE"
+
+#: src/global.c:539
+#, fuzzy
+msgid "Unindent the current line"
+msgstr "Kuri i KIGEZWEHO IDOSIYE"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "Imbere Inyuguti"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "Inyuma Inyuguti"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "Imbere ijambo"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "subira inyuma ijambo"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "Kuri i Ibanjirije Umurongo"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "Kuri i Komeza>> Umurongo"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "Kuri i Itangiriro Bya i KIGEZWEHO Umurongo"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "Kuri i Impera Bya i KIGEZWEHO Umurongo"
+
+#: src/global.c:555
+#, fuzzy
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Kuri i Itangiriro Bya i KIGEZWEHO Igika"
+
+#: src/global.c:557
+#, fuzzy
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Kuri i Impera Bya i KIGEZWEHO Igika"
+
+#: src/global.c:560
+#, fuzzy
+msgid "Go to the first line of the file"
+msgstr "Kuri i Itangira Umurongo Bya i IDOSIYE"
+
+#: src/global.c:562
+#, fuzzy
+msgid "Go to the last line of the file"
+msgstr "Kuri i Iheruka Umurongo Bya i IDOSIYE"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "a"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:572
+#, fuzzy
+msgid "Switch to the previous file buffer"
+msgstr "Kuri i Ibanjirije IDOSIYE"
+
+#: src/global.c:574
+#, fuzzy
+msgid "Switch to the next file buffer"
+msgstr "Kuri i Komeza>> IDOSIYE"
+
+#: src/global.c:577
+#, fuzzy
+msgid "Insert the next keystroke verbatim"
+msgstr "Inyuguti S"
+
+#: src/global.c:579
+#, fuzzy
+msgid "Insert a tab at the cursor position"
+msgstr "a Isunika Inyuguti ku i indanga Ibirindiro"
+
+#: src/global.c:581
+#, fuzzy
+msgid "Insert a newline at the cursor position"
+msgstr "a Garuka ku i indanga Ibirindiro"
+
+#: src/global.c:583
+#, fuzzy
+msgid "Delete the character under the cursor"
+msgstr "i Inyuguti i indanga"
+
+#: src/global.c:585
+#, fuzzy
+msgid "Delete the character to the left of the cursor"
+msgstr "i Inyuguti Kuri i Ibumoso: Bya i indanga"
+
+#: src/global.c:588
+#, fuzzy
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Bivuye i indanga Ibirindiro Kuri i Impera Bya i IDOSIYE"
+
+#: src/global.c:591
+#, fuzzy
+msgid "Justify the entire file"
+msgstr "i IDOSIYE"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr ""
+
+#: src/global.c:598
+#, fuzzy
+msgid "Refresh (redraw) the current screen"
+msgstr "Kongera Gushushanya i KIGEZWEHO Mugaragaza"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr ""
+
+#: src/global.c:605
+#, fuzzy
+msgid "Reverse the direction of the search"
+msgstr "i Ibirindiro Bya i indanga"
+
+#: src/global.c:609
+#, fuzzy
+msgid "Toggle the use of regular expressions"
+msgstr "Ibisanzwe"
+
+#: src/global.c:613
+#, fuzzy
+msgid "Recall the previous search/replace string"
+msgstr "i Ibanjirije Gushaka Gusimbura Ikurikiranyanyuguti"
+
+#: src/global.c:615
+#, fuzzy
+msgid "Recall the next search/replace string"
+msgstr "i Ibanjirije Gushaka Gusimbura Ikurikiranyanyuguti"
+
+#: src/global.c:618
+#, fuzzy
+msgid "Go to file browser"
+msgstr "Kuri IDOSIYE Mucukumbuzi"
+
+#: src/global.c:621
+#, fuzzy
+msgid "Toggle the use of DOS format"
+msgstr "IDOSIYE Inyuma in Imiterere"
+
+#: src/global.c:622
+#, fuzzy
+msgid "Toggle the use of Mac format"
+msgstr "IDOSIYE Inyuma in Imiterere"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr ""
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr ""
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr ""
+
+#: src/global.c:629
+#, fuzzy
+msgid "Execute external command"
+msgstr "external Komandi:"
+
+#: src/global.c:633
+#, fuzzy
+msgid "Toggle the use of a new buffer"
+msgstr "OYA Kubona Ingano Bya"
+
+#: src/global.c:636
+#, fuzzy
+msgid "Exit from the file browser"
+msgstr "Bivuye i IDOSIYE Mucukumbuzi"
+
+#: src/global.c:638
+#, fuzzy
+msgid "Go to the first file in the list"
+msgstr "Kuri i Itangira Umurongo Bya i IDOSIYE"
+
+#: src/global.c:640
+#, fuzzy
+msgid "Go to the last file in the list"
+msgstr "Kuri i Iheruka Umurongo Bya i IDOSIYE"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Kuri i Komeza>> Umurongo"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Kuri i Ibanjirije Umurongo"
+
+#: src/global.c:643
+#, fuzzy
+msgid "Go to directory"
+msgstr "Kuri bushyinguro"
+
+# #-#-#-#-# basctl.pot (PACKAGE VERSION) #-#-#-#-#
+# basctl/source\basicide\macrodlg.src:RID_MACROCHOOSER.RID_PB_CLOSE.text
+# #-#-#-#-# basctl.pot (PACKAGE VERSION) #-#-#-#-#
+# basctl/source\basicide\macrodlg.src:RID_STR_CLOSE.text
+# #-#-#-#-# basctl.pot (PACKAGE VERSION) #-#-#-#-#
+# basctl/source\basicide\moduldlg.src:RID_TP_MODULS.RID_PB_CLOSE.text
+# #-#-#-#-# basctl.pot (PACKAGE VERSION) #-#-#-#-#
+# basctl/source\basicide\moduldlg.src:RID_TP_LIBS.RID_PB_CLOSE.text
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Gufunga"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr ""
+
+# sc/source\ui\src\scstring.src:SCSTR_HOR_JUSTIFY_BLOCK.text
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Gukwiza umurongo wose"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+#, fuzzy
+msgid "Read File"
+msgstr "Idosiye"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr ""
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr ""
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr ""
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr ""
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr ""
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+# sch/sdi\schslots.src:SID_ROW_MOREFRONT.text
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Imbere"
+
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_AXIS.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_X_AXIS.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_Y_AXIS.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_Z_AXIS.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_GRID.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_LINE.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib.src:TAB_TITLE.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib.src:TAB_LEGEND.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib.src:TAB_DATA_LINE.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib.src:TAB_DATA_POINT.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib3.src:TAB_DIAGRAM_FLOOR.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib3.src:TAB_DIAGRAM_AREA.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib4.src:TAB_DIAGRAM_STOCK_LOSS.1.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib4.src:TAB_DIAGRAM_STOCK_PLUS.1.text
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Inyuma"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr ""
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr ""
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr ""
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr ""
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Home"
+
+# officecfg/registry\schema\org\openoffice\Office\DataAccess.xcs:....FormSearchOptions.SearchPosition..end-of-field.text
+#: src/global.c:833
+msgid "End"
+msgstr "Impera"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr ""
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr ""
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr ""
+
+#: src/global.c:856
+#, fuzzy
+msgid "Previous File"
+msgstr "Idosiye"
+
+#: src/global.c:858
+#, fuzzy
+msgid "Next File"
+msgstr "Idosiye"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr ""
+
+# sc/source\ui\src\textdlgs.src:RID_SCDLG_PARAGRAPH.1.RID_SVXPAGE_TABULATOR.text
+#: src/global.c:867
+msgid "Tab"
+msgstr "Isimbuka"
+
+# LOCALIZATION NOTE : BLOCK end GLYPHS
+# Enter, backspace, and Tab might have both glyphs and text
+# if the keyboards usually have a glyph,
+# if there is a meaningful translation,
+# or if keyboards are localized
+# then translate them or insert the appropriate glyph
+# otherwise you should probably just translate the glyph regions
+# LOCALIZATION NOTE : BLOCK maybe GLYPHS
+#: src/global.c:870
+msgid "Enter"
+msgstr "Injiza"
+
+# #-#-#-#-# basctl.pot (PACKAGE VERSION) #-#-#-#-#
+# basctl/source\basicide\basidesh.src:RID_POPUP_TABBAR.SID_BASICIDE_DELETECURRENT.text
+# #-#-#-#-# basctl.pot (PACKAGE VERSION) #-#-#-#-#
+# basctl/source\basicide\brkdlg.src:RID_BASICIDE_BREAKPOINTDLG.RID_PB_DEL.text
+#: src/global.c:873
+msgid "Delete"
+msgstr "Gusiba"
+
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/sdi\swslots.src:FN_BACKSPACE.text
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/sdi\swslots.src:FN_SHIFT_BACKSPACE.text
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Gusiba usubira inyuma"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr ""
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr ""
+
+#: src/global.c:1367
+#, fuzzy
+msgid "Help mode"
+msgstr "Ubwoko"
+
+#: src/global.c:1369
+#, fuzzy
+msgid "Constant cursor position display"
+msgstr "indanga Ibirindiro"
+
+#: src/global.c:1371
+#, fuzzy
+msgid "Use of one more line for editing"
+msgstr "Bya Birenzeho Umwanya kugirango"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr ""
+
+#: src/global.c:1375
+#, fuzzy
+msgid "Whitespace display"
+msgstr "Kugaragaza"
+
+#: src/global.c:1377
+#, fuzzy
+msgid "Color syntax highlighting"
+msgstr "Igaragaza cyane"
+
+#: src/global.c:1379
+#, fuzzy
+msgid "Smart home key"
+msgstr "Ku Ntangiriro Urufunguzo"
+
+#: src/global.c:1381
+#, fuzzy
+msgid "Auto indent"
+msgstr "Ikurura"
+
+#: src/global.c:1383
+#, fuzzy
+msgid "Cut to end"
+msgstr "Kuri Impera"
+
+#: src/global.c:1385
+#, fuzzy
+msgid "Long line wrapping"
+msgstr "Umurongo Gufunika"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr ""
+
+#: src/global.c:1389
+#, fuzzy
+msgid "Backup files"
+msgstr "Idosiye"
+
+#: src/global.c:1391
+#, fuzzy
+msgid "Multiple file buffers"
+msgstr "IDOSIYE"
+
+#: src/global.c:1393
+#, fuzzy
+msgid "Mouse support"
+msgstr "Gushigikira"
+
+#: src/global.c:1395
+#, fuzzy
+msgid "No conversion from DOS/Mac format"
+msgstr "Ihindurangero Bivuye Imiterere"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr ""
+
+#: src/global.c:1399
+#, fuzzy
+msgid "Soft line wrapping"
+msgstr "Umurongo Gufunika"
+
+#: src/help.c:236
+#, fuzzy
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"i Amagambo Cyangwa Inyuguti nka Kuri Gushaka kugirango Hanyuma kanda ni a "
+"BIHUYE kugirango i Umwandiko i Mugaragaza Kuri i Ahantu Bya i BIHUYE "
+"kugirango i Gushaka Ikurikiranyanyuguti Ibanjirije Gushaka "
+"Ikurikiranyanyuguti in Udusodeko Nyuma i Gushaka Urwinjiriro Umwandiko i "
+"Ibanjirije Gushaka Byahiswemo Umwandiko Na: i Ikimenyetso Na Hanyuma Gushaka "
+"Kuri Gusimbura in i Byahiswemo Umwandiko Umumaro Utubuto Bihari in Ubwoko"
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:251
+#, fuzzy
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"i Umurongo Umubare Kuri Gyayo Kuri Na kanda Bike Imirongo Bya Umwandiko i "
+"Umubare Kuri i Iheruka Umurongo Bya i IDOSIYE Umumaro Utubuto Bihari in "
+"Ubwoko"
+
+#: src/help.c:260
+#, fuzzy
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Idosiye in i Izina: Bya a IDOSIYE Kuri Byinjijwemo i KIGEZWEHO IDOSIYE ku i "
+"KIGEZWEHO indanga Ahantu Na: Igikubo IDOSIYE Gushigikira Na Gushoboza "
+"Igikubo Na: i Cyangwa Komandi: Umurongo Amabendera i Mukomatanya Cyangwa a "
+"IDOSIYE a IDOSIYE Kuri a Gukoresha Na Kuri Hindura hagati IDOSIYE "
+"Ahatanditseho OYA Injiza Izina ry'idosiye: Cyangwa Ubwoko in a Izina "
+"ry'idosiye: ku i Urwinjiriro Na Kanda Umumaro Utubuto Bihari in Idosiye "
+"Ubwoko"
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:275
+#, fuzzy
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Idosiye i Izina: Kuri Kubika i KIGEZWEHO IDOSIYE Nka Na kanda Kuri Kubika i "
+"IDOSIYE Byahiswemo Umwandiko Na: i Ikimenyetso Kuri Kubika i Byahiswemo Kuri "
+"a IDOSIYE i Bya i KIGEZWEHO IDOSIYE Na: a Bya i KIGEZWEHO Izina ry'idosiye: "
+"ni OYA i Mburabuzi in iyi Ubwoko Umumaro Utubuto Bihari in Idosiye Ubwoko"
+
+#: src/help.c:289
+#, fuzzy
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/help.c:302
+#, fuzzy
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"i Amagambo Cyangwa Inyuguti nka Kuri Gushaka kugirango Hanyuma kanda ni a "
+"BIHUYE kugirango i Umwandiko i Mugaragaza Kuri i Ahantu Bya i BIHUYE "
+"kugirango i Gushaka Ikurikiranyanyuguti Ibanjirije Gushaka "
+"Ikurikiranyanyuguti in Udusodeko Nyuma i Gushaka Urwinjiriro Umwandiko i "
+"Ibanjirije Gushaka Byahiswemo Umwandiko Na: i Ikimenyetso Na Hanyuma Gushaka "
+"Kuri Gusimbura in i Byahiswemo Umwandiko Umumaro Utubuto Bihari in Ubwoko"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:315
+#, fuzzy
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"i Izina: Bya i bushyinguro nka Kuri Gushakisha... Kuri Isunika OYA "
+"Yahagaritswe Gukoresha i Urufunguzo Kuri Kuri ku buryo bwikora Byuzuye i "
+"bushyinguro Izina: Umumaro Utubuto Bihari in Ubwoko"
+
+#: src/help.c:328
+#, fuzzy
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Genzuranyuguti i Ivuganyuguti Bya Byose Umwandiko in i KIGEZWEHO IDOSIYE "
+"Kitazwi ijambo ni ni Na a Hanyuma Urwinjiriro Kuri Gusimbura buri Urugero "
+"Bya i ijambo in i KIGEZWEHO IDOSIYE Cyangwa NIBA Byahiswemo Umwandiko Na: i "
+"Ikimenyetso in i Byahiswemo Umwandiko Ikindi Imimaro Bihari in Ubwoko"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Ibikubiyemo Kuri Kongeramo i Ibisohoka Bya a Komandi: Gukoresha ku i "
+"Igikonoshwa i KIGEZWEHO Cyangwa a Gishya in Ubwoko Ahatanditseho OYA Injiza "
+"Komandi: Utubuto Bihari in iyi Ubwoko"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:407 src/help.c:483
+#, fuzzy
+msgid "enable/disable"
+msgstr "Gushoboza"
+
+#: src/nano.c:587
+#, fuzzy
+msgid "Key invalid in view mode"
+msgstr "in Ubwoko"
+
+#: src/nano.c:695
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr "Kuri"
+
+#: src/nano.c:697
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr "Kuri"
+
+#: src/nano.c:700
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr "Kuri"
+
+#: src/nano.c:723
+#, fuzzy
+msgid "Window size is too small for nano...\n"
+msgstr "Ingano ni Gitoya kugirango"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr ""
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr ""
+
+#: src/nano.c:824
+#, fuzzy
+msgid "Show this message"
+msgstr "iyi Ubutumwa"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr ""
+
+#: src/nano.c:826
+#, fuzzy
+msgid "Start at line LINE, column COLUMN"
+msgstr "Gutangira ku Umurongo Umubare"
+
+#: src/nano.c:828
+#, fuzzy
+msgid "Enable smart home key"
+msgstr "Cyiza Ku Ntangiriro Urufunguzo"
+
+#: src/nano.c:829
+#, fuzzy
+msgid "Save backups of existing files"
+msgstr "Idosiye ku Kubika"
+
+#: src/nano.c:830
+#, fuzzy
+msgid "-C <dir>"
+msgstr "-E"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr ""
+
+#: src/nano.c:831
+#, fuzzy
+msgid "Directory for saving unique backup files"
+msgstr "kugirango Inyibutsa Idosiye"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr ""
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr ""
+
+#: src/nano.c:840
+#, fuzzy
+msgid "Enable multiple file buffers"
+msgstr "Igikubo IDOSIYE"
+
+#: src/nano.c:845
+#, fuzzy
+msgid "Log & read search/replace string history"
+msgstr "Gusoma Gushaka Gusimbura Ikurikiranyanyuguti Urutonde"
+
+#: src/nano.c:848
+#, fuzzy
+msgid "Don't look at nanorc files"
+msgstr "ku Idosiye"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr ""
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr ""
+
+#: src/nano.c:856
+#, fuzzy
+msgid "Don't convert files from DOS/Mac format"
+msgstr "GUHINDURA Idosiye Bivuye Imiterere"
+
+#: src/nano.c:858
+#, fuzzy
+msgid "Use one more line for editing"
+msgstr "Bya Birenzeho Umwanya kugirango"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr ""
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr ""
+
+#: src/nano.c:861
+#, fuzzy
+msgid "Quoting string"
+msgstr "Ikurikiranyanyuguti Mburabuzi"
+
+#: src/nano.c:863
+#, fuzzy
+msgid "Restricted mode"
+msgstr "Ubwoko"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+#, fuzzy
+msgid "-T <#cols>"
+msgstr "-R"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr ""
+
+#: src/nano.c:869
+#, fuzzy
+msgid "Set width of a tab to #cols columns"
+msgstr "Ubugari Bya a Isunika in Kuri"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr ""
+
+#: src/nano.c:874
+#, fuzzy
+msgid "Print version information and exit"
+msgstr "Verisiyo Ibisobanuro Na Gusohoka"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr ""
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr ""
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr ""
+
+#: src/nano.c:881
+#, fuzzy
+msgid "Syntax definition to use for coloring"
+msgstr "Insobanuro Kuri Gukoresha"
+
+#: src/nano.c:883
+#, fuzzy
+msgid "Constantly show cursor position"
+msgstr "Garagaza indanga Ibirindiro"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr ""
+
+#: src/nano.c:888
+#, fuzzy
+msgid "Automatically indent new lines"
+msgstr "Ikurura Gishya Imirongo"
+
+#: src/nano.c:889
+#, fuzzy
+msgid "Cut from cursor to end of line"
+msgstr "Bivuye indanga Kuri Impera Bya Umurongo"
+
+#: src/nano.c:892
+#, fuzzy
+msgid "Don't follow symbolic links, overwrite"
+msgstr "amahuza Guhindura"
+
+#: src/nano.c:894
+#, fuzzy
+msgid "Enable the use of the mouse"
+msgstr "Imbeba"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "-o <dir>"
+msgstr "-o"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "--operatingdir=<dir>"
+msgstr "bushyinguro"
+
+#: src/nano.c:898
+#, fuzzy
+msgid "Set operating directory"
+msgstr "bushyinguro"
+
+#: src/nano.c:901
+#, fuzzy
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Na Utubuto"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+#, fuzzy
+msgid "-r <#cols>"
+msgstr "-R"
+
+#: src/nano.c:905
+#, fuzzy
+msgid "--fill=<#cols>"
+msgstr "--Kuzuza"
+
+#: src/nano.c:906
+#, fuzzy
+msgid "Set wrapping point at column #cols"
+msgstr "Ubugari Bya a Isunika in Kuri"
+
+#: src/nano.c:909
+#, fuzzy
+msgid "-s <prog>"
+msgstr "-S"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr ""
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr ""
+
+#: src/nano.c:913
+#, fuzzy
+msgid "Auto save on exit, don't prompt"
+msgstr "Kubika ku Gusohoka Urwinjiriro"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+#, fuzzy
+msgid "View mode (read-only)"
+msgstr "Gusoma Ubwoko"
+
+#: src/nano.c:920
+#, fuzzy
+msgid "Don't wrap long lines"
+msgstr "Gufunika Imirongo"
+
+#: src/nano.c:922
+#, fuzzy
+msgid "Don't show the two help lines"
+msgstr "Garagaza Ifashayobora Idirishya"
+
+#: src/nano.c:923
+#, fuzzy
+msgid "Enable suspension"
+msgstr "Imbeba"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr ""
+
+#: src/nano.c:928
+#, fuzzy
+msgid "(ignored, for Pico compatibility)"
+msgstr "(kugirango Bihuye neza"
+
+#: src/nano.c:938
+#, fuzzy, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr "Verisiyo"
+
+#: src/nano.c:943
+#, fuzzy, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr "Muhinduzi HTTP www Muhinduzi org"
+
+#: src/nano.c:944
+#, fuzzy, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr "Amahitamo"
+
+#: src/nano.c:1022
+#, fuzzy
+msgid "Sorry, support for this function has been disabled"
+msgstr "Gushigikira kugirango iyi Umumaro Yahagaritswe"
+
+#: src/nano.c:1044
+#, fuzzy
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Kubika Byahinduwe"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+#, fuzzy
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Cyangwa"
+
+#: src/nano.c:1204
+#, fuzzy, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Kuri Garuka Kuri"
+
+#: src/nano.c:1386
+#, fuzzy
+msgid "enabled"
+msgstr "Bikora"
+
+#: src/nano.c:1387
+#, fuzzy
+msgid "disabled"
+msgstr "Yahagaritswe"
+
+#: src/nano.c:1548 src/winio.c:1256
+#, fuzzy
+msgid "Unknown Command"
+msgstr "Ibendera"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr ""
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr ""
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, fuzzy, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Isunika Ingano Sibyo"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, fuzzy, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Kuzuza Ingano Sibyo"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr ""
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr ""
+
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Insert.Caption.WriterObject.Table.Settings.Numbering..10.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Insert.Caption.WriterObject.Frame.Settings.Numbering..10.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Insert.Caption.WriterObject.Graphic.Settings.Numbering..10.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Insert.Caption.OfficeObject.Calc.Settings.Numbering..10.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Insert.Caption.OfficeObject.Draw.Settings.Numbering..10.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Insert.Caption.OfficeObject.Chart.Settings.Numbering..10.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Insert.Caption.OfficeObject.Image.Settings.Numbering..10.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Insert.Caption.OfficeObject.Formula.Settings.Numbering..10.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Insert.Caption.OfficeObject.Impress.Settings.Numbering..10.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Insert.Caption.OfficeObject.OLEMisc.Settings.Numbering..10.text
+#: src/prompt.c:1261
+#, fuzzy
+msgid "Aa"
+msgstr "aa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Yego"
+
+# basctl/source\basicide\basidesh.src:RID_STR_ALL.text
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Byose"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Oya"
+
+#: src/rcfile.c:130
+#, fuzzy, c-format
+msgid "Error in %s on line %lu: "
+msgstr "in ku Umurongo"
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr ""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+#, fuzzy
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Ikurikiranyanyuguti Na Impera Na: a Inyuguti"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr ""
+
+#: src/rcfile.c:258
+#, fuzzy
+msgid "Missing syntax name"
+msgstr "Izina:"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr ""
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr ""
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "Izina:"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr ""
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "OYA"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, fuzzy, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"OYA Amabara Icyatsi Umutuku Ubururu Umweru Umuhondo Ubururu bukeye Umutuku "
+"werurutse umukara Na: i Bitari ngombwa Imbanziriza Bibonerana kugirango "
+"Amabara"
+
+#: src/rcfile.c:647
+#, fuzzy
+msgid "Cannot add a color command without a syntax command"
+msgstr "Kongeramo a Ibara a Umurongo"
+
+#: src/rcfile.c:652
+#, fuzzy
+msgid "Missing color name"
+msgstr "Ibara Izina:"
+
+#: src/rcfile.c:672
+#, fuzzy, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Ibara Bibonerana"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr ""
+
+#: src/rcfile.c:762
+#, fuzzy
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"Gutangira a Impera"
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Kongeramo a Ibara a Umurongo"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr ""
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr ""
+
+#: src/rcfile.c:966
+#, fuzzy, c-format
+msgid "Command \"%s\" not understood"
+msgstr "OYA"
+
+#: src/rcfile.c:972
+#, fuzzy
+msgid "Missing flag"
+msgstr "Ibendera"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr ""
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr ""
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+#, fuzzy
+msgid "Non-blank characters required"
+msgstr "Isunika Na Umwanya Inyuguti Bya ngombwa"
+
+#: src/rcfile.c:1048
+#, fuzzy
+msgid "Two single-column characters required"
+msgstr "UMWE Inkingi Inyuguti Bya ngombwa"
+
+#: src/rcfile.c:1114
+#, fuzzy, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Ibendera"
+
+#: src/rcfile.c:1123
+#, fuzzy, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Ibendera"
+
+#: src/rcfile.c:1182
+#, fuzzy
+msgid "I can't find my home directory! Wah!"
+msgstr "Gushaka Ku Ntangiriro bushyinguro"
+
+#: src/search.c:96
+#, fuzzy, c-format
+msgid "\"%.*s%s\" not found"
+msgstr ""
+"\"%.*Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/search.c:205
+#, fuzzy
+msgid " (to replace) in selection"
+msgstr "(Kuri Gusimbura in Ihitamo"
+
+#: src/search.c:207
+#, fuzzy
+msgid " (to replace)"
+msgstr "(Kuri Gusimbura"
+
+#: src/search.c:784
+#, fuzzy
+msgid "Replace this instance?"
+msgstr "iyi Urugero"
+
+# offmgr/source\offapp\dialog\fontsubs.src:RID_SVX_FONT_SUBSTITUTION.STR_HEADER4.text
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Gusimbuza na"
+
+#: src/search.c:1004
+#, fuzzy, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "ukugaragara"
+
+#: src/search.c:1034
+#, fuzzy
+msgid "Enter line number, column number"
+msgstr "Injiza inomero y'umurongo"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr ""
+
+#: src/search.c:1214
+#, fuzzy
+msgid "Not a bracket"
+msgstr "a"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr ""
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr ""
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr ""
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "Idosiye"
+
+#: src/text.c:489 src/text.c:628
+#, fuzzy
+msgid "line wrap"
+msgstr "Umurongo Gufunika"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "Idosiye"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr "(Kuri Gusimbura"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+#, fuzzy
+msgid "Could not pipe"
+msgstr "OYA"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+#, fuzzy
+msgid "Could not fork"
+msgstr "OYA"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, fuzzy, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Gushyiraho akugarizo Ikurikiranyanyuguti"
+
+#: src/text.c:2267
+#, fuzzy
+msgid "Can now UnJustify!"
+msgstr "NONEAHA"
+
+#: src/text.c:2462
+#, fuzzy
+msgid "Edit a replacement"
+msgstr "a"
+
+#: src/text.c:2548
+#, fuzzy
+msgid "Could not create pipe"
+msgstr "OYA Kurema"
+
+#: src/text.c:2550
+#, fuzzy
+msgid "Creating misspelled word list, please wait..."
+msgstr "ijambo Urutonde Tegereza"
+
+#: src/text.c:2642
+#, fuzzy
+msgid "Could not get size of pipe buffer"
+msgstr "OYA Kubona Ingano Bya"
+
+#: src/text.c:2693
+#, fuzzy
+msgid "Error invoking \"spell\""
+msgstr "Genzuranyuguti"
+
+#: src/text.c:2696
+#, fuzzy
+msgid "Error invoking \"sort -f\""
+msgstr "Ishungura F"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr ""
+
+#: src/text.c:2756 src/text.c:2965
+#, fuzzy
+msgid "Finished checking spelling"
+msgstr "Ivuganyuguti"
+
+#: src/text.c:2815
+#, fuzzy, c-format
+msgid "Error invoking \"%s\""
+msgstr "Genzuranyuguti"
+
+#: src/text.c:2960
+#, fuzzy, c-format
+msgid "Spell checking failed: %s"
+msgstr "Byanze"
+
+#: src/text.c:2962
+#, fuzzy, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Byanze"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr ""
+
+#: src/text.c:3031
+#, fuzzy
+msgid "In Selection: "
+msgstr "Kuri Idosiye"
+
+#: src/utils.c:405 src/utils.c:417
+#, fuzzy
+msgid "nano is out of memory!"
+msgstr "ni Inyuma Bya Ububiko"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr ""
+
+# sc/source\ui\src\globstr.src:RID_GLOBSTR.STR_DOC_MODIFIED.text
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Byahinduwe"
+
+# #-#-#-#-# offmgr.pot (PACKAGE VERSION) #-#-#-#-#
+# offmgr/source\offapp\dialog\treeopt.src:RID_OFADLG_OPTIONS_TREE_PAGES.SID_GENERAL_OPTIONS.5.text
+# #-#-#-#-# offmgr.pot (PACKAGE VERSION) #-#-#-#-#
+# offmgr/source\offapp\dialog\treeopt.src:RID_OFADLG_OPTIONS_TREE_PAGES.SID_SW_EDITOPTIONS.3.text
+# #-#-#-#-# offmgr.pot (PACKAGE VERSION) #-#-#-#-#
+# offmgr/source\offapp\dialog\treeopt.src:RID_OFADLG_OPTIONS_TREE_PAGES.SID_SW_ONLINEOPTIONS.2.text
+# #-#-#-#-# offmgr.pot (PACKAGE VERSION) #-#-#-#-#
+# offmgr/source\offapp\dialog\treeopt.src:RID_OFADLG_OPTIONS_TREE_PAGES.SID_SC_EDITOPTIONS.3.text
+# #-#-#-#-# offmgr.pot (PACKAGE VERSION) #-#-#-#-#
+# offmgr/source\offapp\dialog\treeopt.src:RID_OFADLG_OPTIONS_TREE_PAGES.SID_SD_EDITOPTIONS.3.text
+# #-#-#-#-# offmgr.pot (PACKAGE VERSION) #-#-#-#-#
+# offmgr/source\offapp\dialog\treeopt.src:RID_OFADLG_OPTIONS_TREE_PAGES.SID_SD_GRAPHIC_OPTIONS.3.text
+#: src/winio.c:2150
+msgid "View"
+msgstr "Igaragaza"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr ""
+
+# sc/source\ui\src\globstr.src:RID_GLOBSTR.STR_LINKERRORFILE.text
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Idosiye:"
+
+#: src/winio.c:3360
+#, fuzzy, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "Umurongo Col INYUGUTI"
+
+#: src/winio.c:3492
+#, fuzzy
+msgid "The nano text editor"
+msgstr "Umwandiko Muhinduzi"
+
+# goodies/source\filter.vcl\eps\dlgeps.src:DLG_EXPORT_EPS.GRP_VERSION.text
+#: src/winio.c:3493
+#, fuzzy
+msgid "version"
+msgstr "Verisiyo"
+
+#: src/winio.c:3494
+#, fuzzy
+msgid "Brought to you by:"
+msgstr "Kuri ku"
+
+#: src/winio.c:3495
+#, fuzzy
+msgid "Special thanks to:"
+msgstr "Kuri"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr ""
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr ""
+
+#: src/winio.c:3498
+#, fuzzy
+msgid "and anyone else we forgot..."
+msgstr "Na Ikindi Twebwe"
+
+#: src/winio.c:3499
+#, fuzzy
+msgid "Thank you for using nano!"
+msgstr "kugirango ikoresha"
+
+# #-#-#-#-# sc.pot (PACKAGE VERSION) #-#-#-#-#
+# sc/source\ui\src\miscdlgs.src:RID_SCDLG_FILLSERIES.FL_DIRECTION.text
+# #-#-#-#-# sc.pot (PACKAGE VERSION) #-#-#-#-#
+# sc/source\ui\src\sortdlg.src:RID_SCPAGE_SORT_OPTIONS.FL_DIRECTION.text
+#~ msgid "Direction"
+#~ msgstr "Icyerekezo"
+
+#, fuzzy
+#~ msgid "Invoke the help menu"
+#~ msgstr "i Ifashayobora Ibikubiyemo"
+
+#, fuzzy
+#~ msgid "Search for text within the editor"
+#~ msgstr "kugirango Umwandiko muri i Muhinduzi"
+
+#, fuzzy
+#~ msgid "Replace text within the editor"
+#~ msgstr "Umwandiko muri i Muhinduzi"
+
+#, fuzzy
+#~ msgid "Find other bracket"
+#~ msgstr "Ikindi"
+
+#, fuzzy
+#~ msgid "Make the current search/replace case (in)sensitive"
+#~ msgstr "i KIGEZWEHO Gushaka Gusimbura in"
+
+#, fuzzy
+#~ msgid "Make the current search/replace go backwards"
+#~ msgstr "i KIGEZWEHO Gushaka Gusimbura Gyayo Inyuma"
+
+#, fuzzy
+#~ msgid "Prepend to the current file"
+#~ msgstr "Kuri i KIGEZWEHO IDOSIYE"
+
+#, fuzzy
+#~ msgid "Back up original file when saving"
+#~ msgstr "Hejuru Umwimerere IDOSIYE Ryari: Mu kubika"
+
+#, fuzzy
+#~ msgid "Insert into new buffer"
+#~ msgstr "Gishya"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Buffer not written to %s (too many backup files?)\n"
+#~ msgstr "OYA Kuri Inyibutsa Idosiye"
+
+#, fuzzy
+#~ msgid ""
+#~ " nano help text\n"
+#~ "\n"
+#~ " The nano editor is designed to emulate the functionality and ease-of-use "
+#~ "of the UW Pico text editor. There are four main sections of the editor. "
+#~ "The top line shows the program version, the current filename being "
+#~ "edited, and whether or not the file has been modified. Next is the main "
+#~ "editor window showing the file being edited. The status line is the "
+#~ "third line from the bottom and shows important messages. The bottom two "
+#~ "lines show the most commonly used shortcuts in the editor.\n"
+#~ "\n"
+#~ " The notation for shortcuts is as follows: Control-key sequences are "
+#~ "notated with a caret (^) symbol and can be entered either by using the "
+#~ "Control (Ctrl) key or pressing the Esc key twice. Escape-key sequences "
+#~ "are notated with the Meta (M) symbol and can be entered using either the "
+#~ "Esc, Alt or Meta key depending on your keyboard setup. Also, pressing "
+#~ "Esc twice and then typing a three-digit decimal number from 000 to 255 "
+#~ "will enter the character with the corresponding value. The following "
+#~ "keystrokes are available in the main editor window. Alternative keys are "
+#~ "shown in parentheses:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Ifashayobora Muhinduzi ni Kuri i Na Bya Gukoresha Bya i Umwandiko "
+#~ "Muhinduzi Ibyatoranyijwe Bya i Muhinduzi Hejuru: Umurongo i Porogaramu "
+#~ "Verisiyo i KIGEZWEHO Izina ry'idosiye: Na Cyangwa OYA i IDOSIYE "
+#~ "Byahinduwe ni i Muhinduzi Idirishya i IDOSIYE Imimerere Umurongo ni i "
+#~ "Umurongo Bivuye i Hasi: Na By'ingirakamaro Ubutumwa Hasi: Imirongo "
+#~ "Garagaza i in i Muhinduzi kugirango ni Nka Urufunguzo Na: a IKIMENYETSO "
+#~ "Na ku ikoresha i Urufunguzo Cyangwa i Urufunguzo Urufunguzo Na: i "
+#~ "IKIMENYETSO Na ikoresha i Cyangwa Urufunguzo ku Mwandikisho Imikorere Na "
+#~ "Hanyuma Kwandika: a NYACUMI Umubare Bivuye 000 Kuri Injiza i Inyuguti Na: "
+#~ "i Agaciro Bihari in i Muhinduzi Idirishya Utubuto in"
+
+# sc/source\ui\src\optdlg.src:RID_SCPAGE_LAYOUT.LB_ALIGN.3.text
+#~ msgid "Up"
+#~ msgstr "Hejuru"
+
+# svx/source\dialog\sdstring.src:RID_SVXSTR_BMP5.text
+#~ msgid "Space"
+#~ msgstr "Umwanya"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: nano [+LINE] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr "Ihitamo Ihitamo IDOSIYE"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: nano [+LINE] [option] [file]\n"
+#~ "\n"
+#~ msgstr "Ihitamo IDOSIYE"
+
+#, fuzzy
+#~ msgid "Use more space for editing"
+#~ msgstr "Birenzeho Umwanya kugirango"
+
+#, fuzzy
+#~ msgid "Do regular expression searches"
+#~ msgstr "Ibisanzwe imvugo"
+
+#, fuzzy
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Kuzuza Kuri Gufunika Imirongo ku"
+
+#, fuzzy
+#~ msgid "Verbatim input"
+#~ msgstr "Iyinjiza"
+
+#, fuzzy
+#~ msgid "Could not create temp file: %s"
+#~ msgstr "OYA Kurema IDOSIYE"
+
+#, fuzzy
+#~ msgid "Come on, be reasonable"
+#~ msgstr "ku"
+
+#, fuzzy
+#~ msgid "Refusing zero-length regex match"
+#~ msgstr "Zeru Uburebure BIHUYE"
diff --git a/po/sr.gmo b/po/sr.gmo
new file mode 100644
index 0000000..c9fd43b
--- /dev/null
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
new file mode 100644
index 0000000..0943f9b
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,2397 @@
+# Serbian translation of nano
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# Danilo Segan <dsegan@gmx.net>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.2.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2003-11-05 22:27+0100\n"
+"Last-Translator: Danilo Segan <dsegan@gmx.net>\n"
+"Language-Team: Serbian <sr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : (n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: src/browser.c:220
+#, fuzzy
+msgid "Go To Directory"
+msgstr "Иди у директоријум"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Отказано"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Ðе могох да одем ван %s у ограниченом режиму"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, fuzzy, c-format
+msgid "Error reading %s: %s"
+msgstr "Лоша ниÑка за цитирање %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Ðе могох да уђем у наддиректоријум"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr ""
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Тражи"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr "[разл. Ñлова по величини]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr "[рег. израз]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr "[уназад]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Претрага у круг"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Ово је једина појава"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr ""
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Ðе могох да уметнем датотеку изван %s"
+
+#: src/files.c:234
+#, fuzzy
+msgid "No more open file buffers"
+msgstr "Ðема више отворених датотека"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Пребацих Ñе на %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Ðови бафер"
+
+#: src/files.c:633
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Учитах %d ред (претворен из Мекинтош запиÑа)"
+msgstr[1] "Учитах %d реда (претворених из Мекинтош запиÑа)"
+msgstr[2] "Учитах %d редова (претворених из Мекинтош запиÑа)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "Учитах %d ред (претворен из Мекинтош запиÑа)"
+msgstr[1] "Учитах %d реда (претворених из Мекинтош запиÑа)"
+msgstr[2] "Учитах %d редова (претворених из Мекинтош запиÑа)"
+
+#: src/files.c:644
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Учитах %d ред (претворен из Мекинтош запиÑа)"
+msgstr[1] "Учитах %d реда (претворених из Мекинтош запиÑа)"
+msgstr[2] "Учитах %d редова (претворених из Мекинтош запиÑа)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Учитах %d ред (претворен из Мекинтош запиÑа)"
+msgstr[1] "Учитах %d реда (претворених из Мекинтош запиÑа)"
+msgstr[2] "Учитах %d редова (претворених из Мекинтош запиÑа)"
+
+#: src/files.c:654
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Учитах %d ред (претворен из ДОС запиÑа)"
+msgstr[1] "Учитах %d реда (претворених из ДОС запиÑа)"
+msgstr[2] "Учитах %d редова (претворених из ДОС запиÑа)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Учитах %d ред (претворен из ДОС запиÑа)"
+msgstr[1] "Учитах %d реда (претворених из ДОС запиÑа)"
+msgstr[2] "Учитах %d редова (претворених из ДОС запиÑа)"
+
+#: src/files.c:664
+#, fuzzy, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Учитах %d ред"
+msgstr[1] "Учитах %d реда"
+msgstr[2] "Учитах %d редова"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Учитавам датотеку"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Ðова датотека"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "Ðе нађох „%s“"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "„%s“ је директоријум"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, fuzzy, c-format
+msgid "\"%s\" is a device file"
+msgstr "Датотека „%s“ чини датотеку уређаја"
+
+#: src/files.c:817
+#, fuzzy, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Датотека коју уметнути у нови бафер [из %s] "
+
+#: src/files.c:819
+#, fuzzy, c-format
+msgid "Command to execute [from %s] "
+msgstr "Ðаредба за извршавање"
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Датотека коју уметнути у нови бафер [из %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Датотека коју уметнути [из %s] "
+
+#: src/files.c:1077
+#, fuzzy
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Ðедозвољен таÑтер у не-вишебаферÑком режиму"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Ðе могох да упишем изван %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr ""
+
+#: src/files.c:1582 src/nano.c:701
+#, fuzzy
+msgid "Too many backup files?"
+msgstr ""
+"\n"
+"Ðе упиÑах %s (превише резервних датотека?)\n"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, fuzzy, c-format
+msgid "Error writing %s: %s"
+msgstr "Лоша ниÑка за цитирање %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr ""
+
+#: src/files.c:1900
+#, fuzzy, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "УпиÑах %d ред"
+msgstr[1] "УпиÑах %d реда"
+msgstr[2] "УпиÑах %d редова"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr "[ДОС запиÑ]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr "[Мек запиÑ]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr "[Резерва]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Додај избор на почетак датотеке"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Додај избор на крај датотеке"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Упиши избор у датотеку"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "У коју датотеку додати"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "У коју датотеку додати"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "У коју датотеку упиÑати"
+
+#: src/files.c:2153
+#, fuzzy
+msgid "File exists, OVERWRITE ? "
+msgstr "Датотека поÑтоји, да ПРЕСÐИМИМ?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr ""
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(више)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"ПритиÑните ентер за наÑтавак покретања нана\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Откажи"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Замени"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Без замене"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Вел. Ñлова"
+
+#: src/global.c:421
+#, fuzzy
+msgid "Backwards"
+msgstr "[уназад]"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Рег. израз"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+#, fuzzy
+msgid "PrevHstory"
+msgstr "ИÑторијат"
+
+#: src/global.c:452
+#, fuzzy
+msgid "NextHstory"
+msgstr "ИÑторијат"
+
+#: src/global.c:453
+#, fuzzy
+msgid "Go To Text"
+msgstr "Иди у ред"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+#, fuzzy
+msgid "WhereIs Next"
+msgstr "Где је"
+
+#: src/global.c:457
+#, fuzzy
+msgid "First File"
+msgstr "Први ред"
+
+#: src/global.c:458
+#, fuzzy
+msgid "Last File"
+msgstr "ПоÑледњи ред"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "У датотеке"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "ДОС запиÑ"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Мекинтош запиÑ"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Ðадодај"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Додај на почетак"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Сачини резерву датотеке"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Изврши наредбу"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Иди у директоријум"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Добијте помоћ"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Изађи"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Где је"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Претходна Ñтрана"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Следећа Ñтрана"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Први ред"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "ПоÑледњи ред"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "СуÑпендуј"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr ""
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr ""
+
+#: src/global.c:491
+#, fuzzy
+msgid "FullJstify"
+msgstr "Пораванај"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "ОÑвежи"
+
+#: src/global.c:495
+#, fuzzy
+msgid "Insert File"
+msgstr "Следећа датотека"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Иди у ред"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Поравнај текући паÑуÑ"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Откажи текућу операцију"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr ""
+
+#: src/global.c:509
+#, fuzzy
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Затвори тренутно учитану датотеку/изађи из нана"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Изађи из нана"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Упиши текућу датотеку на диÑк"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Уметни другу датотеку у текућу"
+
+#: src/global.c:519
+#, fuzzy
+msgid "Search for a string or a regular expression"
+msgstr "КориÑти регуларне изразе"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "Пребаци Ñе на претходни екран"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "Пребаци Ñе на Ñледећи екран"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "ИÑеци текући ред и ÑмеÑти га у иÑечке"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Убаци иÑечак у текући ред"
+
+#: src/global.c:527
+#, fuzzy
+msgid "Display the position of the cursor"
+msgstr "Прикажи положај курзора"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Покрени правопиÑну проверу, ако је доÑтупна"
+
+#: src/global.c:531
+#, fuzzy
+msgid "Replace a string or a regular expression"
+msgstr "КориÑти регуларне изразе"
+
+#: src/global.c:532
+#, fuzzy
+msgid "Go to line and column number"
+msgstr "Иди на одређени ред"
+
+#: src/global.c:534
+#, fuzzy
+msgid "Mark text at the cursor position"
+msgstr "Означи текÑÑ‚ на текућем положају курзора"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr ""
+
+#: src/global.c:537
+#, fuzzy
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "ИÑеци текући ред и ÑмеÑти га у иÑечке"
+
+#: src/global.c:538
+#, fuzzy
+msgid "Indent the current line"
+msgstr "Додај на текућу датотеку"
+
+#: src/global.c:539
+#, fuzzy
+msgid "Unindent the current line"
+msgstr "Додај на текућу датотеку"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "Иди један знак напред"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "Иди један знак назад"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "Иди једну реч унапред"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "Иди једну реч уназад"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "Пребаци Ñе на претходни екран"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "Иди један ред иÑпод"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "Иди на почетак текућег реда"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "Иди на крај текућег реда"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr ""
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr ""
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Иди у први ред датотеке"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Иди у поÑледњи ред датотеке"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "Ðема одговарајуће заграде"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:572
+#, fuzzy
+msgid "Switch to the previous file buffer"
+msgstr "Пребаци Ñе на претходни екран"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr ""
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr ""
+
+#: src/global.c:579
+#, fuzzy
+msgid "Insert a tab at the cursor position"
+msgstr "Уметни прелом реда на текућем положају"
+
+#: src/global.c:581
+#, fuzzy
+msgid "Insert a newline at the cursor position"
+msgstr "Уметни прелом реда на текућем положају"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Обриши знак под курзором"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Обриши знак лево од курзора"
+
+#: src/global.c:588
+#, fuzzy
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Убаци иÑечак у текући ред"
+
+#: src/global.c:591
+#, fuzzy
+msgid "Justify the entire file"
+msgstr "Поравнај текући паÑуÑ"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr ""
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "ОÑвежи (понов иÑцртај) текући екран"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr ""
+
+#: src/global.c:605
+#, fuzzy
+msgid "Reverse the direction of the search"
+msgstr "Прикажи положај курзора"
+
+#: src/global.c:609
+#, fuzzy
+msgid "Toggle the use of regular expressions"
+msgstr "КориÑти регуларне изразе"
+
+#: src/global.c:613
+#, fuzzy
+msgid "Recall the previous search/replace string"
+msgstr "Уреди ниÑке претходних претрага и замена"
+
+#: src/global.c:615
+#, fuzzy
+msgid "Recall the next search/replace string"
+msgstr "Уреди ниÑке претходних претрага и замена"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Иди у прегледач датотека"
+
+#: src/global.c:621
+#, fuzzy
+msgid "Toggle the use of DOS format"
+msgstr "Упишите датотеку у ДОС облику"
+
+#: src/global.c:622
+#, fuzzy
+msgid "Toggle the use of Mac format"
+msgstr "Упишите датотеку у Мек облику"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr ""
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr ""
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr ""
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Изврши Ñпољну наредбу"
+
+#: src/global.c:633
+#, fuzzy
+msgid "Toggle the use of a new buffer"
+msgstr "Измена убацивања у нови бафер"
+
+#: src/global.c:636
+#, fuzzy
+msgid "Exit from the file browser"
+msgstr "Иди у прегледач датотека"
+
+#: src/global.c:638
+#, fuzzy
+msgid "Go to the first file in the list"
+msgstr "Иди у први ред датотеке"
+
+#: src/global.c:640
+#, fuzzy
+msgid "Go to the last file in the list"
+msgstr "Иди у поÑледњи ред датотеке"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Иди у поÑледњи ред датотеке"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Иди у први ред датотеке"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Иди у директоријум"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Затвори"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "ИÑпиши"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Пораванај"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Прочитај датотеку"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "ИÑеци текÑÑ‚"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Одравнај"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+#, fuzzy
+msgid "UnCut Text"
+msgstr "Убаци текÑÑ‚"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Пол. курз."
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "У проверу правопиÑа"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Означи текÑÑ‚"
+
+#: src/global.c:777
+#, fuzzy
+msgid "Copy Text"
+msgstr "ИÑеци текÑÑ‚"
+
+#: src/global.c:780
+#, fuzzy
+msgid "Indent Text"
+msgstr "ИÑеци текÑÑ‚"
+
+#: src/global.c:783
+#, fuzzy
+msgid "Unindent Text"
+msgstr "Убаци текÑÑ‚"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Ðапред"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Ðазад"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Следећа реч"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Претходна реч"
+
+#: src/global.c:824
+#, fuzzy
+msgid "Prev Line"
+msgstr "Претходна Ñтрана"
+
+#: src/global.c:827
+#, fuzzy
+msgid "Next Line"
+msgstr "Следећа датотека"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Почетак"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Крај"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Ðађи другу заграду"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr ""
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr ""
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Претходна датотека"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Следећа датотека"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr ""
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Табулатор"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "УноÑ"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Обриши"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "БриÑање"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr ""
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr ""
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Режим помоћи"
+
+#: src/global.c:1369
+#, fuzzy
+msgid "Constant cursor position display"
+msgstr "КонÑтантан положај курзора"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr ""
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Глатко клизање"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr ""
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "ИÑтицање ÑинтакÑе у боји"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr ""
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Самоувлачење"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "ИÑеци до краја"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr ""
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr ""
+
+#: src/global.c:1389
+#, fuzzy
+msgid "Backup files"
+msgstr "Сачини резерву датотеке"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Бафери више датотека"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Подршка за миша"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Без претварања из Мекинтош/ДОС запиÑа"
+
+#: src/global.c:1397
+#, fuzzy
+msgid "Suspension"
+msgstr "СуÑпендуј"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr ""
+
+# bug: there's "enter" and "Enter"
+#: src/help.c:236
+#, fuzzy
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Помоћ за наредбу претраге\n"
+"\n"
+" УнеÑите речи или знаке које желите да нађете, и притиÑните Ентер. Уколико "
+"Ñе тражени текÑÑ‚ пронађе, на екрану ће Ñе приказати положај најближег "
+"резултата претраге.\n"
+"\n"
+" Претходна ниÑка претраге ће Ñе приказати у углаÑтим заградама након "
+"„Тражи:“. ПритиÑком на Ентер умеÑто уноÑа новог текÑта ће извеÑти претходну "
+"претрагу.\n"
+"\n"
+" Ðаредни таÑтери обављају неки поÑао у режиму претраге:\n"
+"\n"
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Помоћ за одлазак у ред\n"
+"\n"
+" УнеÑите број реда у који желите да одете и притиÑните Ентер. Уколико има "
+"мање редова текÑта од броја који Ñте унели, поÑтавићу Ð²Ð°Ñ Ð½Ð° поÑледњи ред "
+"датотеке.\n"
+"\n"
+" Ðаредни таÑтери обављају неки поÑао у режиму одлаÑка у ред:\n"
+"\n"
+
+#: src/help.c:260
+#, fuzzy
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Помоћ за уметање датотеке\n"
+"\n"
+" УнеÑите име датотеке коју желите да уметнете у текући бафер на текућем "
+"положају курзора.\n"
+"\n"
+" Уколико Ñте изградили нана Ñа подршком за вишедатотечне бафере, и укључили "
+"више бафера Ñа опцијама „-F“ или „--multibuffer“, Мета-F изменом, или nanorc "
+"датотеком, уметање датотеке ће је учитати у одвојеном баферу (кориÑтите Мета-"
+"< и > за пребацивање између бафера).\n"
+"\n"
+" Уколико вам треба још један празан бафер, не уноÑите име датотеке, или "
+"укуцајте име непоÑтојеће датотеке и притиÑните Ентер.\n"
+"\n"
+" Ðаредни таÑтери обављају неки поÑао у режиму уметања датотеке:\n"
+"\n"
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:275
+#, fuzzy
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Помоћ за ÑƒÐ¿Ð¸Ñ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ\n"
+"\n"
+" УнеÑите име датотеке у коју желите да упишете текући бафер и притиÑните "
+"Ентер да Ñнимите.\n"
+"\n"
+" Уколико Ñте изабрали текÑÑ‚ помоћу Ctrl-^, бићете упитани да ли желите да "
+"Ñачувате изабрани део у одвојену датотеку. Да умањите шанÑе преÑнимавања "
+"поÑтојеће датотеке једним њеним делом, име текуће датотеке Ñе не подразумева "
+"у овом режиму.\n"
+"\n"
+" Ðаредни таÑтери обављају неки поÑао у режиму упиÑа датотеке:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Помоћ за прегледач датотека\n"
+"\n"
+" Прегледач датотека Ñе кориÑти за визуелно разгледање директоријума за избор "
+"датотеке ради читања или упиÑа. Можете кориÑтити Ñтрелице или PageUp/Down "
+"таÑтере за разгледање датотека, а S или Ентер да изаберете означену датотеку "
+"или да уђете у означени директоријум. Да одете један ниво изнад, изаберите "
+"директоријум Ñа називом „..“ у врху ÑпиÑка датотека.\n"
+"\n"
+" Ðаредни таÑтери обављају неки поÑао у режиму прегледача датотека:\n"
+"\n"
+
+# bug: there's "enter" and "Enter"
+#: src/help.c:302
+#, fuzzy
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Помоћ за наредбу претраге\n"
+"\n"
+" УнеÑите речи или знаке које желите да нађете, и притиÑните Ентер. Уколико "
+"Ñе тражени текÑÑ‚ пронађе, на екрану ће Ñе приказати положај најближег "
+"резултата претраге.\n"
+"\n"
+" Претходна ниÑка претраге ће Ñе приказати у углаÑтим заградама након "
+"„Тражи:“. ПритиÑком на Ентер умеÑто уноÑа новог текÑта ће извеÑти претходну "
+"претрагу.\n"
+"\n"
+" Ðаредни таÑтери обављају неки поÑао у режиму претраге:\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:315
+#, fuzzy
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Помоћ за одлазак у директоријум\n"
+"\n"
+" УнеÑите име директоријума у који желите да одете.\n"
+"\n"
+" Уколико није иÑкључено допуњавање табулатором, можете кориÑтити TAB таÑтер "
+"да (покушате да) Ñамодопуните име директоријума.\n"
+"\n"
+" Ðаредни таÑтери обављају неки поÑао у режиму одлаÑка у директоријум:\n"
+"\n"
+
+#: src/help.c:328
+#, fuzzy
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Помоћ за проверу правопиÑа\n"
+"\n"
+" Провера правопиÑа ради на Ñвом текÑту текуће датотеке. Када Ñе наиђе на "
+"непознату реч, она Ñе иÑтиче и замена Ñе може уредити. Тада ћете бити "
+"упитани да замените Ñваку појаву дате погрешно унете речи у текућој "
+"датотеци.\n"
+"\n"
+" Ðаредни таÑтери обављају неки поÑао у режиму провере правопиÑа:\n"
+"\n"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Помоћ за Ñпољну наредбу\n"
+"\n"
+" Овај мени вам омогућава да уметнете излаз наредбе коју покреће љуÑка у "
+"текући бафер (или у нови бафер у вишебаферÑком режиму).\n"
+"\n"
+" Ðаредни таÑтери обављају неки поÑао у овом режиму:\n"
+"\n"
+
+#: src/help.c:356
+#, fuzzy
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+" Помоћ за нана\n"
+"\n"
+" Уређивач нано је израђен да опонаша могућноÑти и лакоћу употребе уређивача "
+"Пико Ñа Универзитета у Вашингтону. ПоÑтоји четири главна одељка уређивача: "
+"горњи ред приказује издање програма, име датотеке која Ñе управо уређује, и "
+"да ли је датотека измењена или не. Следећи део је главни уређивач који "
+"приказује датотеку која Ñе уређује. Ред Ñа Ñтањем је трећи ред одоздо и "
+"приказује важне поруке. Два доња реда приказују најчешће коришћене пречице у "
+"уређивачу.\n"
+"\n"
+" Ð—Ð°Ð¿Ð¸Ñ Ð¿Ñ€ÐµÑ‡Ð¸Ñ†Ð° је овакав: Пречице уз Control таÑтер Ñу означени помоћу "
+"Ñимбола капице (^) и уноÑе Ñе уз таÑтер Control (Ctrl). Пречице уз Escape "
+"таÑтер Ñу означене помоћу Мета (Ðœ) Ñимбола и уноÑе Ñе помоћу неког од Esc, "
+"Alt или Meta таÑтера у завиÑноÑти од подешавања ваше таÑтатуре. Ðаредни "
+"таÑтери обављају неки поÑао у прозору главног уређивача. ДопунÑки таÑтери Ñу "
+"приказани у заградама:\n"
+"\n"
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "укључи/иÑкључи"
+
+#: src/nano.c:587
+#, fuzzy
+msgid "Key invalid in view mode"
+msgstr "ТаÑтер недозвољен у прегледачком режиму"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Бафер упиÑан у %s\n"
+
+#: src/nano.c:697
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Бафер упиÑан у %s\n"
+
+#: src/nano.c:700
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Бафер упиÑан у %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Величина прозора је премала за нана...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+
+#: src/nano.c:819
+#, fuzzy, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Опција\t\tДуга опција\t\tЗначење\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Опција\t\tЗначење\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Прикажи ову поруку"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr ""
+
+#: src/nano.c:826
+#, fuzzy
+msgid "Start at line LINE, column COLUMN"
+msgstr "Почни у реду број РЕД"
+
+#: src/nano.c:828
+#, fuzzy
+msgid "Enable smart home key"
+msgstr "Укључи миша"
+
+#: src/nano.c:829
+#, fuzzy
+msgid "Save backups of existing files"
+msgstr "Ðаправи резерву поÑтојећих датотека при Ñнимању"
+
+#: src/nano.c:830
+#, fuzzy
+msgid "-C <dir>"
+msgstr "-o [дир]"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr ""
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr ""
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr ""
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr ""
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Омогући бафере Ñа више датотека"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Дневник и читање претходних претрага/замена"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Ðе гледај у датотеке nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr ""
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr ""
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Ðе претварај датотеке из ДОС/Мекинтош облика"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr ""
+
+#: src/nano.c:860
+#, fuzzy
+msgid "-Q <str>"
+msgstr "-Q [ниÑка]"
+
+#: src/nano.c:860
+#, fuzzy
+msgid "--quotestr=<str>"
+msgstr "--quotestr=[ниÑка]"
+
+#: src/nano.c:861
+#, fuzzy
+msgid "Quoting string"
+msgstr "ÐиÑка за цитирање, подразумевано „> “"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr ""
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+#, fuzzy
+msgid "-T <#cols>"
+msgstr "-r [#колона]"
+
+#: src/nano.c:868
+#, fuzzy
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=[број]"
+
+#: src/nano.c:869
+#, fuzzy
+msgid "Set width of a tab to #cols columns"
+msgstr "ПоÑтавља ширину табулатора на број"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr ""
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "ИÑпиши податке о издању и изађи"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr ""
+
+#: src/nano.c:880
+#, fuzzy
+msgid "-Y <str>"
+msgstr "-Y [ниÑка]"
+
+#: src/nano.c:880
+#, fuzzy
+msgid "--syntax=<str>"
+msgstr "--syntax [ниÑка]"
+
+#: src/nano.c:881
+#, fuzzy
+msgid "Syntax definition to use for coloring"
+msgstr "Која дефиниција ÑинтакÑе Ñе кориÑти"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Стално приказуј положај курзора"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr ""
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Само увуци нове редове"
+
+#: src/nano.c:889
+#, fuzzy
+msgid "Cut from cursor to end of line"
+msgstr "Ðека ^K иÑеца од курзора до краја реда"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Ðе прати Ñимболичке везе, преÑними их"
+
+#: src/nano.c:894
+#, fuzzy
+msgid "Enable the use of the mouse"
+msgstr "Укључи миша"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "-o <dir>"
+msgstr "-o [дир]"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=[дир]"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "ПоÑтавља радни директоријум"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "ТаÑтери за очување XON-а (^Q) и XOFF-а (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+#, fuzzy
+msgid "-r <#cols>"
+msgstr "-r [#колона]"
+
+#: src/nano.c:905
+#, fuzzy
+msgid "--fill=<#cols>"
+msgstr "--fill=[#колона]"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr ""
+
+#: src/nano.c:909
+#, fuzzy
+msgid "-s <prog>"
+msgstr "-s [програм]"
+
+#: src/nano.c:909
+#, fuzzy
+msgid "--speller=<prog>"
+msgstr "--speller=[програм]"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Омогући неку другу проверу правопиÑа"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Сам упиши при излазу, не питај"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+#, fuzzy
+msgid "View mode (read-only)"
+msgstr "Режим прегледа (Ñамо за читање)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Ðе преламај дуге редове"
+
+#: src/nano.c:922
+#, fuzzy
+msgid "Don't show the two help lines"
+msgstr "Ðе приказуј прозор за помоћ"
+
+#: src/nano.c:923
+#, fuzzy
+msgid "Enable suspension"
+msgstr "Укључи ÑуÑпензију"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr ""
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(занемарен, ради ÑаглаÑноÑти Ñа Пиком)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr "ГÐУ нано издање %s (изграђено %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr "Е-пошта: nano@nano-editor.org\tВеб: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Уграђене опције:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "ÐажалоÑÑ‚, подршка за ову функцију је иÑкључена"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"Сачувати измењени бафер (ОДГОВÐРÐЊЕМ СР„Ðе“ ЋЕТЕ БÐЦИТИ СВЕ ИЗМЕÐЕ) ? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Примих SIGHUP или SIGTERM\n"
+
+#: src/nano.c:1204
+#, fuzzy, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "КориÑтите „fg“ да Ñе вратите у нана"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "укључено"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "иÑкључено"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr ""
+
+#: src/nano.c:1674
+#, fuzzy
+msgid "XON ignored, mumble mumble"
+msgstr "XON занемарен, трт-мрт."
+
+#: src/nano.c:1679
+#, fuzzy
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF занемарен, трт-мрт."
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, fuzzy, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "тражена величина табулатора %d је неиÑправна"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, fuzzy, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "тражена величина попуне %d је неиÑправна"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "YyДдDd"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "ÐнNn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "AaÐа"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Да"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Све"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Ðе"
+
+#: src/rcfile.c:130
+#, fuzzy, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Грешка у %s у %d. реду: "
+
+#: src/rcfile.c:185
+#, fuzzy, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "аргумент %s Ñадржи недовршен \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+#, fuzzy
+msgid "Regex strings must begin and end with a \" character"
+msgstr "ниÑке регуларних израза морају почети и завршити Ñе знаком \"\n"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Лош регуларни израз „%s“: %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "ÐедоÑтаје име ÑинтакÑе"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr ""
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr ""
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "ÐедоÑтаје име ÑинтакÑе"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Ðе могох да отворим %s ради упиÑа: %s"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Ðе могох да покренем „%s“"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, fuzzy, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Ðе разумех боју %s.\n"
+"Дозвољене боје Ñу „green“ (зелена), „red“ (црвена), „blue“ (плава), \n"
+"„white“ (бела), „yellow“ (жута), „cyan“ (цијан), „magenta“ (магента) и\n"
+"„black“ (црна), Ñа необавезним предметком „bright“ (Ñветло).\n"
+
+#: src/rcfile.c:647
+#, fuzzy
+msgid "Cannot add a color command without a syntax command"
+msgstr "Ðе могох да додам упуте за боју без ÑинтакÑног реда"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "ÐедоÑтаје име боје"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr ""
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr ""
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "„start=“ захтева и одговарајући „end=“"
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Ðе могох да додам упуте за боју без ÑинтакÑног реда"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr ""
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr ""
+
+#: src/rcfile.c:966
+#, fuzzy, c-format
+msgid "Command \"%s\" not understood"
+msgstr "не разумех наредбу %s"
+
+#: src/rcfile.c:972
+#, fuzzy
+msgid "Missing flag"
+msgstr "ÐедоÑтаје име боје"
+
+#: src/rcfile.c:994
+#, fuzzy, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "опција „%s“ захтева аргумент"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr ""
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr ""
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr ""
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr ""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr ""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Ðе могох да нађем мој лични директоријум! Бре!"
+
+#: src/search.c:96
+#, fuzzy, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "Ðе нађох „%s“"
+
+#: src/search.c:205
+#, fuzzy
+msgid " (to replace) in selection"
+msgstr " (за замену)"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (за замену)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Да заменим ову појаву?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Замени Ñа"
+
+#: src/search.c:1004
+#, fuzzy, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Замених %d појаву"
+msgstr[1] "Замених %d појаве"
+msgstr[2] "Замених %d појава"
+
+#: src/search.c:1034
+#, fuzzy
+msgid "Enter line number, column number"
+msgstr "УнеÑите број реда"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr ""
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Ðије заграда"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Ðема одговарајуће заграде"
+
+# 48x48/emblems/emblem-marketing.icon.in.h:1
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Ознака поÑтављена"
+
+#: src/text.c:58
+#, fuzzy
+msgid "Mark Unset"
+msgstr "Ознака ОДпоÑтављена"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "Следећа датотека"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr ""
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "Следећа датотека"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr " (за замену)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Ðе могу да направим цев"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Ðе могу да покренем"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Лоша ниÑка за цитирање %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Сада могу да „одравнам“!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Измените замену"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Ðе могох да направим цевку"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Образујем ÑпиÑак погрешно унетих речи, Ñачекајте..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Ðе могох да Ñазнам величину бафера за цевку"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Грешка при покретању „spell“-а"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Грешка при покретању „sort -f“-а"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Грешка при покретању „uniq“-а"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Завршена провера правопиÑа"
+
+#: src/text.c:2815
+#, fuzzy, c-format
+msgid "Error invoking \"%s\""
+msgstr "Грешка при покретању „spell“-а"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "ÐеуÑпешна провера правопиÑа: %s"
+
+#: src/text.c:2962
+#, fuzzy, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "ÐеуÑпешна провера правопиÑа: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr ""
+
+#: src/text.c:3031
+#, fuzzy
+msgid "In Selection: "
+msgstr "Додај избор на крај датотеке"
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "нану је понеÑтало меморије!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr ""
+
+#: src/winio.c:2149 src/winio.c:2153
+#, fuzzy
+msgid "Modified"
+msgstr " Измењено "
+
+#: src/winio.c:2150
+#, fuzzy
+msgid "View"
+msgstr " Преглед "
+
+#: src/winio.c:2164
+#, fuzzy
+msgid "DIR:"
+msgstr "ДИР: "
+
+#: src/winio.c:2171
+#, fuzzy
+msgid "File:"
+msgstr "Датотека:"
+
+#: src/winio.c:3360
+#, fuzzy, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "ред %ld/%ld (%d%%), Ñтубац %lu/%lu (%d%%), знак %lu/%ld (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Уређивач текÑта нано"
+
+#: src/winio.c:3493
+#, fuzzy
+msgid "version"
+msgstr "издање "
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Омогућили Ñу вам:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "ПоÑебну захвалноÑÑ‚ дугујемо:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "Задужбина за Слободни Софтвер"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "За ен-курÑиÑ:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "и Ñви оÑтали које Ñмо пропуÑтили..."
+
+#: src/winio.c:3499
+#, fuzzy
+msgid "Thank you for using nano!"
+msgstr "Хвала што кориÑтите нана!\n"
+
+#~ msgid "File to insert into new buffer [from ./] "
+#~ msgstr "Датотека коју уметнути у нови бафер [из ./]"
+
+#~ msgid "File to insert [from ./] "
+#~ msgstr "Датотека коју уметнути [из ./]"
+
+#~ msgid "Could not read %s for backup: %s"
+#~ msgstr "Ðе могох да прочитам %s ради прављења резерве: %s"
+
+#~ msgid "Couldn't write backup: %s"
+#~ msgstr "Ðе могох да упишем резерву: %s"
+
+#~ msgid "Could not set permissions %o on backup %s: %s"
+#~ msgstr "Ðе могох да поÑтавим овлашћења %o за резерву %s: %s"
+
+#~ msgid "Could not set owner %d/group %d on backup %s: %s"
+#~ msgstr "Ðе могох да поÑтавим влаÑника %d и групу %d за резерву %s: %s"
+
+#~ msgid "Could not set access/modification time on backup %s: %s"
+#~ msgstr "Ðе могох да поÑтавим време приÑтупа и измене за резерву %s: %s"
+
+#~ msgid "Could not open file for writing: %s"
+#~ msgstr "Ðе могох да отворим датотеку ради упиÑа: %s"
+
+#~ msgid "Could not close %s: %s"
+#~ msgstr "Ðе могох да затворим %s: %s"
+
+#~ msgid "Could not reopen %s: %s"
+#~ msgstr "Ðе могох да поново отворим %s: %s"
+
+#~ msgid "Could not open %s for prepend: %s"
+#~ msgstr "Ðе могох да отворим %s ради додавања на почетак: %s"
+
+#~ msgid "Could not set permissions %o on %s: %s"
+#~ msgstr "Ðе могох да поÑтавим овлашћења %o за %s: %s"
+
+#~ msgid "Can't open \"%s\": %s"
+#~ msgstr "Ðе могох да отворим „%s“ : %s"
+
+#~ msgid "Goto Cancelled"
+#~ msgstr "Улазак отказан"
+
+#~ msgid "Unable to open ~/.nano_history file, %s"
+#~ msgstr "Ðе могох да отворим датотеку ~/.nano_history, %s"
+
+#~ msgid "Unable to write ~/.nano_history file, %s"
+#~ msgstr "Ðе могох да упишем датотеку ~/.nano_history, %s"
+
+#~ msgid "Writing file in DOS format"
+#~ msgstr "УпиÑујем датотеку у ДОС запиÑу"
+
+#~ msgid "Writing file in Mac format"
+#~ msgstr "УпиÑујем датотеку у Мекинтош запиÑу"
+
+#~ msgid "Backing up file"
+#~ msgstr "Правим резервни примерак"
+
+#~ msgid "Auto wrap"
+#~ msgstr "Самопрелом"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Покрени мени за помоћ"
+
+#~ msgid "Unjustify after a justify"
+#~ msgstr "Одравнај поÑле поравнавања"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Замени текÑÑ‚ из уређивача"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Тражи текÑÑ‚ у уређивачу"
+
+#~ msgid "Move up one line"
+#~ msgstr "Иди један ред изнад"
+
+#~ msgid "Insert a tab character"
+#~ msgstr "Уметни табулатор"
+
+#~ msgid "Make the current search or replace case (in)sensitive"
+#~ msgstr "Ðека текућа претрага или замена не разликује велика и мала Ñлова."
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Додај на почетак текуће датотеке"
+
+#~ msgid "Search backwards"
+#~ msgstr "Тражи уназад"
+
+#~ msgid "Write file out in DOS format"
+#~ msgstr "ИÑпиши датотеку у ДОС запиÑу"
+
+#~ msgid "Write file out in Mac format"
+#~ msgstr "ИÑпиши датотеку у Мекинтош запиÑу"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Ðаправи резервни примерак изворне датотеке при Ñнимању"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Ðађи другу заграду"
+
+#~ msgid "Open previously loaded file"
+#~ msgstr "Отвори претходно коришћену датотеку"
+
+#~ msgid "Open next loaded file"
+#~ msgstr "Отвори Ñледеће учитану датотеку"
+
+#~ msgid "Up"
+#~ msgstr "Горе"
+
+#~ msgid "Down"
+#~ msgstr "Доле"
+
+#~ msgid "Direction"
+#~ msgstr "Смер"
+
+#~ msgid "Space"
+#~ msgstr "ПроÑтор"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Употреба: nano [+РЕД] [Дуге Гнуове опције] [опција] [датотека]\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Употреба: nano [+РЕД] [опција] [датотека]\n"
+#~ "\n"
+
+#~ msgid "+LINE"
+#~ msgstr "+РЕД"
+
+#~ msgid "Use alternate keypad routines"
+#~ msgstr "КориÑти неке друге функције за нумеричку таÑтатуру"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "Изводи претраге по регуларним изразима"
+
+#~ msgid "-T [num]"
+#~ msgstr "-T [број]"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "ПоÑтави иÑпуњавање колона (прелом реда) на #колона"
+
+#~ msgid "Could not create a temporary filename: %s"
+#~ msgstr "Ðе могох да направим привремену датотеку: %s"
+
+#~ msgid "Spell checking failed: unable to write temp file!"
+#~ msgstr ""
+#~ "ÐеуÑпешна провера правопиÑа: не могох да пишем у привремену датотеку!"
+
+#~ msgid "Cannot resize top win"
+#~ msgstr "Ðе могох да изменим величину горњег прозора"
+
+#~ msgid "Cannot move top win"
+#~ msgstr "Ðе могох да премеÑтим горњи прозор"
+
+#~ msgid "Cannot resize edit win"
+#~ msgstr "Ðе могох да изменим величину прозора за уноÑ"
+
+#~ msgid "Cannot move edit win"
+#~ msgstr "Ðе могох да премеÑтим прозор за уноÑ"
+
+#~ msgid "Cannot resize bottom win"
+#~ msgstr "Ðе могох да изменим величину доњег прозора"
+
+#~ msgid "Cannot move bottom win"
+#~ msgstr "Ðе могох да премеÑтим доњи прозор"
+
+#~ msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
+#~ msgstr ""
+#~ "Примећена грешка Ñа NumLock-ом. Ðумеричка таÑтатура неће радити када је "
+#~ "он иÑкључен"
+
+#~ msgid "Tab size is too small for nano...\n"
+#~ msgstr "Величина табулатора премала за нана...\n"
+
+#~ msgid "Errors found in .nanorc file"
+#~ msgstr "Ðађох грешке у датотеци .nanorc"
+
+#~ msgid "Unable to open ~/.nanorc file, %s"
+#~ msgstr "Ðе могох да отворим датотеку ~/.nanorc, %s"
+
+#~ msgid "\"%s...\" not found"
+#~ msgstr "Ðе нађох „%s...“"
+
+#~ msgid "Invalid regex \"%s\""
+#~ msgstr "ÐеиÑправан регуларни израз „%s“"
+
+#~ msgid "Search Cancelled"
+#~ msgstr "Претрага отказана"
+
+#~ msgid "Replace Cancelled"
+#~ msgstr "Замена отказана"
+
+#~ msgid "Replace failed: unknown subexpression!"
+#~ msgstr "Ðе уÑпех да заменим: непознат подизраз!"
+
+#~ msgid "Aborted"
+#~ msgstr "ОбуÑтављен"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "'ајде, буди разуман"
+
+#~ msgid " File: ..."
+#~ msgstr " Датотека: ..."
+
+#~ msgid " DIR: ..."
+#~ msgstr " ДИР: ..."
+
+#~ msgid "Refusing 0 length regex match"
+#~ msgstr "Одбијам поклапање Ñа регуларним изразом дужине 0"
diff --git a/po/sv.gmo b/po/sv.gmo
new file mode 100644
index 0000000..ee0057b
--- /dev/null
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..ffe6db7
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,2403 @@
+# Swedish messages for nano.
+# Copyright (C) 2001, 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+# Daniel Nylander <po@danielnylander.se>, 2006.
+# Christian Rose <menthos@menthos.com>, 2001, 2002, 2003, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.9.99pre0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2006-08-24 20:53+0100\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Gå till katalog"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Avbruten"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Kan inte gå utanför %s i begränsat läge"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Fel vid inläsning av %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Kan inte gå upp en katalog"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(kat)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(föräldkat)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Sök"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Skiftlägeskänslig]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Reguljärt uttryck]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Baklänges]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Sökningen började om från början"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Detta är enda förekomsten"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Inget aktuellt sökmönster"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Kan inte infoga fil från utanför %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Inga fler öppna filbuffertar"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Växlade till %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Ny buffert"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Läste %lu rad (konverterad från DOS- och Mac-format)"
+msgstr[1] "Läste %lu rader (konverterade från DOS- och Mac-format)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "Läste %lu rad (konverterad från DOS- och Mac-format)"
+msgstr[1] "Läste %lu rader (konverterade från DOS- och Mac-format)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Läste %lu rad (konverterad från Mac-format)"
+msgstr[1] "Läste %lu rader (konverterade från Mac-format)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "Läste %lu rad (konverterad från Mac-format)"
+msgstr[1] "Läste %lu rader (konverterade från Mac-format)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Läste %lu rad (konverterad från DOS-format)"
+msgstr[1] "Läste %lu rader (konverterade från DOS-format)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "Läste %lu rad (konverterad från DOS-format)"
+msgstr[1] "Läste %lu rader (konverterade från DOS-format)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Läste %lu rad"
+msgstr[1] "Läste %lu rader"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Läser filen"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Ny fil"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" kunde inte hittas"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" är en katalog"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" är en enhetsfil"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Kommando att köra i ny buffert [från %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Kommando att köra [från %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Fil att infoga i ny buffert [från %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Fil att infoga [från %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Tangenten ogiltig i icke-flerbuffertläget"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Kan inte skriva utanför %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"Kan inte infoga före eller lägga till efter i en symbolisk länk då --"
+"nofollow är angivet"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, fuzzy, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Fel vid skrivning av temporär fil: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "För många säkerhetskopierade filer?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Fel vid skrivning av %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Fel vid skrivning av temporär fil: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Skrev %lu rad"
+msgstr[1] "Skrev %lu rader"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS-format]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac-format]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Säkerhetskopia]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Infoga markering till fil"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Lägg till markering till fil"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Skriv markering till fil"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Filnamn att infoga i"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Filnamn att lägga till i"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Filnamn att skriva"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Filen existerar, SKRIVA ÖVER? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Spara filen med ANNAT NAMN? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(mer)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Tryck Enter för att fortsätta starta nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Ersätt"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Ingen ersättning"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Skiftkänsl"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Bakåt"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Reguljärt uttr"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "FöregHisto"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "NästaHisto"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Gå till text"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "VarFinnsNäst"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Första filen"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Sista filen"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Till filer"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS-format"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac-format"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Lägg till"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Infoga"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Säkerhetskopiera fil"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Kör kommando"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Gå till katalog"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Få hjälp"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Avsluta"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Var finns"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Föreg sid"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Nästa sid"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Första raden"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Sista raden"
+
+#: src/global.c:487
+#, fuzzy
+msgid "Suspend"
+msgstr "Suspendering"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Börj på par"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Slut på par"
+
+# Osäker
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "Fulljstera"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Uppdatera"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Infoga fil"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Gå till rad"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Justera det aktuella stycket"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Avbryt den aktuella funktionen"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Visa denna hjälptext"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Stäng aktuell filbuffert / Avsluta nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Avsluta nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Skriv den aktuella filen till disk"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Infoga ytterligare en fil i den nuvarande"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Sök efter en sträng eller ett reguljärt uttryck"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "Flytta till föregående skärm"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "Flytta till nästa skärm"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Klipper ut den aktuella raden och lagrar den i urklippsbufferten"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Klistra in från urklippsbufferten i aktuell rad"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Visa markörens position"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Starta stavningskontrollen, om tillgänglig"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Ersätt en sträng eller ett reguljärt uttryck"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Gå till rad- och kolumnnummer"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Markera text vid markörpositionen"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Upprepa senaste sökning"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Kopiera den aktuella raden och lagrar den i urklippsbufferten"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Dra in aktuell rad"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Ångra indragning av aktuell rad"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "Flytta framåt ett tecken"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "Flytta bakåt ett tecken"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "Gå framåt ett ord"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "Flytta ett ord bakåt"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "Flytta till föregående rad"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "Flytta till nästa rad"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "Flytta till början på aktuell rad"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "Flytta till slutet på aktuell rad"
+
+#: src/global.c:555
+#, fuzzy
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "Gå till början på det aktuella stycket"
+
+#: src/global.c:557
+#, fuzzy
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "Gå till slutet på det aktuella stycket"
+
+#: src/global.c:560
+#, fuzzy
+msgid "Go to the first line of the file"
+msgstr "Gå till filens första rad"
+
+#: src/global.c:562
+#, fuzzy
+msgid "Go to the last line of the file"
+msgstr "Gå till filens sista rad"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "Gå till matchande klammer"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "Rulla upp en rad utan att rulla markören"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "Rulla ned en rad utan att rulla markören"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Växla till föregående filbuffert"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Växla till nästa filbuffert"
+
+# Osäker
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Infoga nästa tecken ordagrant"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Infoga ett tabulatortecken vid markörpositionen"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Infoga en vagnretur vid markörpositionen"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Ta bort tecknet under markören"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Ta bort tecknet till vänster om markören"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Klipp ut från markörens position till slutet av filen"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Justera hela filen"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Räkna antalet ord, rader och tecken"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Uppdatera (rita om) den aktuella skärmen"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Växla skiftlägeskänslig sökning"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Vänd riktning för sökningen"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Växla användning av reguljära uttryck"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Återkalla den föregående sök/ersätt-strängen"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Återkalla nästa sök/ersätt-sträng"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Gå till filbläddrare"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Växla användning av DOS-format"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Växla användning av Mac-format"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Växla inmatning efter"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Växla inmatning före"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Växla säkerhetskopiering av originalfilen"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Kör externt kommando"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Växla användning av en ny buffert"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Avsluta från filbläddraren"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Gå till första filen i listan"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Gå till sista filen i listan"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Gå till sista filen i listan"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Gå till första filen i listan"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Gå till katalog"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Stäng"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Spara"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Justera"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Läs fil"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Klipp ut"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Ojustera"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Ångra kopi"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Akt. pos"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Stavkontr."
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Markera text"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Kopiera text"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Dra in text"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Ångra indragning av text"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Framåt"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Bakåt"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Nästa ord"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Föreg ord"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Föreg rad"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Nästa rad"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Hem"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Slut"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Hitta andra klammern"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "Rulla upp"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "Rulla ned"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Föregående fil"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Nästa fil"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Ordagrann inmatning"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tabb"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Retur"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Ta bort"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Backsteg"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "KlippTillSlut"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Antal ord"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Hjälpläge"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Konstant visning av markörposition"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Användning av ytterligare en rad för redigering"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Mjuk rullning"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Visning av mellanrum"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Färgmarkering av syntax"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Smart hemtangent"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Automatisk indragning"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Klipp ut till slutet"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Radbryt långa rader"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Konvertering av inmatade tabulatorer till blanksteg"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Säkerhetskopiera filer"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Flera filbuffertar"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Musstöd"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Ingen konvertering från DOS/Mac-format"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Suspendering"
+
+#: src/global.c:1399
+#, fuzzy
+msgid "Soft line wrapping"
+msgstr "Radbryt långa rader"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Hjälptext för sökkommando\n"
+"\n"
+" Ange de ord eller tecken som du vill söka efter och tryck sedan Retur. Om "
+"det finns en träff för det du angav kommer skärmen att uppdateras till att "
+"visa den närmaste träffen för söksträngen.\n"
+"\n"
+" Den föregående söksträngen kommer att visas inom klamrar efter sökprompten. "
+"Att trycka Retur utan att ange någon text kommer att genomföra den tidigare "
+"sökningen. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Om du har markerat text med markören och sedan sökt och ersatt, kommer "
+"endast träffar i den markerade texten att ersättas.\n"
+"\n"
+" Följande funktionstangenter finns tillgängliga i sökläget:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Hjälptext för Gå till rad\n"
+"\n"
+" Ange det radnummer du vill gå till och tryck Retur. Om det finns färre "
+"textrader än det tal du angav kommer du att tas till den sista raden i "
+"filen.\n"
+"\n"
+" Följande funktionstangenter är tillgängliga i Gå till rad-läge:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Hjälptext för infoga fil\n"
+"\n"
+" Ange namnet på den fil som ska sättas in i den aktuella filbufferten på den "
+"aktuella platsen för markören.\n"
+"\n"
+" Om du har kompilerat nano med stöd för flera samtidiga filbuffertar och "
+"aktiverar flera buffertar med kommandoradsflaggorna -F eller --multibuffer, "
+"kombinationen Meta-F eller en nanorc-fil, kommer att infoga en fil göra så "
+"att den läses in i en separat buffert (använd Meta-< och > för att växla "
+"mellan filbuffertar). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Om du behöver ytterligare en tom buffert, ange inget filnamn, eller ange ett "
+"ickeexisterande filnamn vid prompten och tryck Retur.\n"
+"\n"
+" Följande funktionstangenter är tillgängliga i infoga fil-läge:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Hjälptext för skriv fil\n"
+"\n"
+" Ange det namn som du vill spara aktuell fil som och tryck Retur för att "
+"spara filen.\n"
+"\n"
+" Om du har markerat text med markören kommer du få frågan om att endast "
+"spara markeringen till en separat fil. För att minska risken att den "
+"aktuella filen skrivs över med endast en del av den är inte det aktuella "
+"filnamnet standardalternativet i detta läge.\n"
+"\n"
+" Följande funktionstangenter är tillgängliga i filskrivningsläge:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Hjälptext för filbläddrare\n"
+"\n"
+" Filbläddraren används för att visuellt bläddra i katalogstrukturen för att "
+"välja en fil för läsning eller skrivning. Du kan använda piltangenterna "
+"eller PageUp/PageDown för att bläddra bland filerna, och S eller Retur för "
+"att välja den markerade filen eller gå in i den markerade katalogen. För att "
+"gå upp en nivå väljer du katalogen kallad \"..\" överst i fillistan.\n"
+"\n"
+" Följande funktionstangenter är tillgängliga i filbläddraren:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Hjälptext för sökkommando\n"
+"\n"
+" Ange de ord eller tecken som du vill söka efter och tryck sedan Retur. Om "
+"det finns en träff för det du angav kommer skärmen att uppdateras till att "
+"visa den närmaste träffen för söksträngen.\n"
+"\n"
+" Den föregående söksträngen kommer att visas inom klamrar efter sökprompten. "
+"Att trycka Retur utan att ange någon text kommer att genomföra den tidigare "
+"sökningen.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+" Följande funktionstangenter är tillgängliga i sökläget:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Hjälptext för gå till katalog i bläddraren\n"
+"\n"
+" Ange namnet på den katalog som du vill gå till.\n"
+"\n"
+" Om tabulatorkomplettering inte har inaktiverats kan du använda "
+"tabulatortangenten för att (försöka att) automatiskt komplettera "
+"katalognamnet.\n"
+"\n"
+" Följande funktionstangenter är tillgängliga i bläddrarens gå till katalog-"
+"läge:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Hjälptext för stavningskontrollen\n"
+"\n"
+" Stavningskontrollen kontrollerar stavningen av all text i den aktuella "
+"filen. När ett okänt ord hittas, markeras det och en ersättning kan "
+"redigeras. Den kommer sedan att för varenda förekomst av det angivna "
+"felstavade ordet i den aktuella filen, fråga om det ska ersättas, eller, om "
+"du har markerat text med markören, i den markerade texten.\n"
+"\n"
+" Följande funktionstangenter är tillgängliga i stavningskontrolläget:\n"
+"\n"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Hjälptext för externt kommando\n"
+"\n"
+" Detta läge låter dig infoga utdata från ett kommando som körs av ett skal i "
+"den aktuella bufferten (eller en ny buffert i flerbuffertläge). Om du "
+"behöver ytterligare en tom buffert behöver du inte ange något kommando.\n"
+"\n"
+" Följande tangenter är tillgängliga i det externa kommandoläget:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Hjälptext för nano\n"
+"\n"
+" Textredigeraren nano är skapad för att emulera funktionaliteten och "
+"lättanvändheten hos textredigeraren UW Pico. Det finns fyra huvuddelar i "
+"redigeraren: Översta raden visar programmets versionsnummer, namnet på filen "
+"som redigeras och om filen har ändrats. Efter detta finns huvudfönstret som "
+"visar filen som redigeras. Statusraden är tredje raden från nederkanten och "
+"visar viktiga meddelanden. "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"De nedersta två raderna visar de vanligaste kortkommandona som används i "
+"textredigeraren.\n"
+"\n"
+" Notationen för kortkommandon är som följer: Sekvenser med Control-tangent "
+"skrivs med ett taktecken (^) och trycks tillsammans med antingen Control-"
+"tangenten (Ctrl) eller genom att trycka Escape-tangenten två gånger. Escape-"
+"sekvenser skrivs med metatecknet (M) och och anges antingen med Esc-, Alt- "
+"eller Meta-tangenten beroende på dina tangentbordsinställningar. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Dessutom kan du genom att trycka på Escape två gånger och sedan ange ett "
+"tresiffrigt tal från 000 till 255 ange det tecken som har motsvarande ASCII-"
+"kod. Följande tangentkombinationer är tillgängliga i redigerarens "
+"huvudfönster. Alternativa tangenter visas inom parentes:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "aktivera/inaktivera"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Tangenten ogiltig i visningsläget"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Bufferten skrevs till %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Bufferten skrevs inte till %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Bufferten skrevs inte: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Fönsterstorleken är för liten för Nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Användning: nano [FLAGGOR] [[+RAD,KOLUMN] FIL]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Flagga\t\tLång GNU flagga\t\tBetydelse\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Flagga\t\tBetydelse\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Visa detta meddelande"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+RAD,KOLUMN"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Starta vid radnummer RAD, kolumn KOLUMN"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Aktivera smart hemtangent"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Spara säkerhetskopior av befintliga filer"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <kat>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<kat>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Katalog för att spara unika säkerhetskopior"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Använd fet stil istället för omvänd videotext"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Convertera angivna tabulatorer till blanksteg"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Använd flera filbuffertar"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Logga och läs stränghistorik för sök/ersätt"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Titta inte i nanorc-filer"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Ta hand om förvirringsproblemet med numeriska tangentbordet"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Lägg inte till nya rader på slutet av filer"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Konvertera inte filer från DOS/Mac-format"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Använd en rad till för redigering"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <str>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<str>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Citatsträng"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Begränsat läge"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <kolumner>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<kolumner>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Ställ in bredden på ett tabbsteg till antal kolumner"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Gör en snabb rensning av statusraden"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Skriv ut versionsinformation och avsluta"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Identifiera ordgränsen mer noggrant"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <str>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<str>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Syntaxdefinition att använda för färger"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Visa markörposition hela tiden"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Fixa förvirringsproblemet med Backspace/Delete"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Dra automatiskt in nya rader"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Klipp ut från markören till slutet på raden"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Följ inte symboliska länkar, skriv över"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Aktivera användning av musen"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <kat>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<kat>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Ställ in arbetskatalog"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Bevara XON (^Q)- och XOFF (^S)-tangenter"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <kolumner>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<kolumner>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Ställ in brytpunkt vid kolumnen \"kolumner\""
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <prog>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<prog>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Använd alternativ stavningskontroll"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Spara automatiskt vid avslut, fråga inte"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Visningsläge (skrivskyddat)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Radbryt inte långa rader"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Visa inte de två hjälpraderna"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Använd suspendering"
+
+#: src/nano.c:924
+#, fuzzy
+msgid "Enable soft line wrapping"
+msgstr "Radbryt långa rader"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(ignorerad för kompatibilitet med Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano version %s (kompilerad %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " E-post: nano@nano-editor.org\tHemsida: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Kompileringsflaggor:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Tyvärr, stöd för denna funktion har inaktiverats"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"Spara ändrad buffert (ATT SVARA \"Nej\" KOMMER ATT FÖRSTÖRA ÄNDRINGAR)? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Mottog SIGHUP eller SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Använd \"fg\" för att återvända till nano.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "aktiverad"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "inaktiverad"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Okänt kommando"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON ignorerades, mummel mummel"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF ignorerades, mummel mummel"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Begärd tabulatorstorlek \"%s\" är ogiltig"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Begärd fyllningsstorlek \"%s\" är ogiltig"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "JjYy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Aa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Ja"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Alla"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Nej"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Fel i %s på rad %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Argumentet \"%s\" har ett oavslutat \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Strängar med reguljära uttryck måste börja och sluta med ett \"-tecken"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Felaktigt reguljärt uttryck \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Syntaxnamn saknas"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "Syntaxen \"none\" är reserverad"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "Syntaxen \"default\" får inte ta utökningar"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "Syntaxnamn saknas"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Kunde inte öppna %s för skrivning: %s"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Kunde inte starta \"%s\""
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Förstår inte färgen \"%s\".\n"
+"Giltiga färger är \"green\" (grönt), \"red\" (rött),\n"
+"\"blue\" (blått), \"white\" (vitt), \"yellow\" (gult),\n"
+"\"cyan\", \"magenta\" och \"black\" (svart), med\n"
+"valfria prefixet \"bright\" (ljus) för förgrundsfärger."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Kan inte lägga till ett färgkommando utan ett syntaxkommando"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Färgnamn saknas"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Bakgrundsfärgen \"%s\" kan inte vara ljus"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Saknar reguljär uttryckssträng"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" kräver ett motsvarande \"end=\""
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Kan inte lägga till ett färgkommando utan ett syntaxkommando"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Kommandot \"%s\" tillåts inte i inkluderad fil"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Syntax \"%s\" har inga färgkommandon"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Förstår inte kommandot \"%s\""
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Flagga saknas"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Flaggan \"%s\" kräver ett argument"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Flagga är inte en giltig flerbytesträng"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Icke-blanktecken krävs"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Två enkel-kolumntecken krävs"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Kan inte bort flaggan \"%s\""
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "Okänd flagga \"%s\""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Jag kan inte hitta min hemkatalog! Buhu!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%.*s%s\" kunde inte hittas"
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (att ersätta) i markering"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (att ersätta)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Ersätta denna förekomst?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Ersätt med"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Ersatte %lu förekomst"
+msgstr[1] "Ersatte %lu förekomster"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Ange radnummer, kolumnnummer"
+
+#: src/search.c:1061
+#, fuzzy
+msgid "Invalid line or column number"
+msgstr "Ange radnummer, kolumnnummer"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Inte en klammer"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Ingen matchande klammer"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Markering satt"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Markera borttagen"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "Nästa fil"
+
+#: src/text.c:489 src/text.c:628
+#, fuzzy
+msgid "line wrap"
+msgstr "Radbryt långa rader"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "Nästa rad"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr " (att ersätta)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Kunde inte använda rör"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Kunde inte grena"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Felaktig citeringssträng %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Kan ojustera nu!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Redigera en ersättning"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Kunde inte skapa rör"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Skapar lista över felstavade ord, var vänlig vänta..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Kunde inte få tag i rörbuffertens storlek"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Fel vid start av \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Fel vid start av \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Fel vid start av \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Stavningskontrollen slutfördes"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Fel vid start av \"%s\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Stavningskontrollen misslyckades: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Stavningskontrollen misslyckades: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sOrd: %lu Rader: %ld Tecken: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "I markering: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano har slut på minne!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Unicode-inmatning"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Ändrad"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Visa"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "KAT:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Fil:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "rad %ld/%ld (%d%%), kolumn %lu/%lu (%d%%), tecken %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Textredigeraren nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "version"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Presenteras av:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Ytterligare tack till:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "För ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "och alla andra som vi har glömt..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Tack för att du använder nano!"
+
+#~ msgid "Space"
+#~ msgstr "Blanksteg"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Kom igen, var nu förståndig"
+
+#~ msgid "Prepending to %s failed: %s"
+#~ msgstr "Infogning till %s misslyckades: %s"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Starta hjälpmenyn"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Sök efter text inuti textredigeraren"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Ersätt text inuti textredigeraren"
+
+#~ msgid "Find matching bracket"
+#~ msgstr "Hitta matchande klammer"
+
+#~ msgid "Make the current search/replace case (in)sensitive"
+#~ msgstr "Gör den aktuella sökningen/ersättningen skiftläges(o)känslig"
+
+#~ msgid "Make the current search/replace go backwards"
+#~ msgstr "Gör så att den aktuella sökningen/ersättningen går baklänges"
+
+#~ msgid "Write file out in DOS format"
+#~ msgstr "Skriv fil i DOS-format"
+
+#~ msgid "Write file out in Mac format"
+#~ msgstr "Skriv fil i Mac-format"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Infoga i den aktuella filen"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Säkerhetskopiera ursprunglig fil vid sparande"
+
+#~ msgid "Insert into new buffer"
+#~ msgstr "Infoga i ny buffert"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE,COLUMN] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Användning: nano [+RAD,KOLUMN]] [lång GNU-flagga] [flagga] [fil]\n"
+#~ "\n"
+
+#~ msgid "Use more space for editing"
+#~ msgstr "Använd mer utrymme för redigering"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Bryt rader efter antal tecken"
+
+#~ msgid "Duplicate syntax name %s"
+#~ msgstr "Kopia av syntaxnamn %s"
+
+#~ msgid "Could not create temp file: %s"
+#~ msgstr "Kunde inte skapa temporär fil: %s"
+
+#~ msgid "Refusing zero-length regex match"
+#~ msgstr "Vägrar matchning av reguljärt uttryck med noll-längd"
+
+#~ msgid "Wrote %u line"
+#~ msgid_plural "Wrote %u lines"
+#~ msgstr[0] "Skrev %u rad"
+#~ msgstr[1] "Skrev %u rader"
+
+#~ msgid "Can't open \"%s\": %s"
+#~ msgstr "Kan inte öppna \"%s\": %s"
+
+#~ msgid ""
+#~ "\n"
+#~ "Press Return to continue starting nano\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Tryck Retur för att fortsätta starta nano\n"
+
+#~ msgid "Direction"
+#~ msgstr "Riktning"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Hitta andra klammern"
+
+#~ msgid ""
+#~ "\n"
+#~ "Buffer not written to %s (too many backup files?)\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Bufferten skrevs inte till %s (för många säkerhetskopior?)\n"
+
+#~ msgid "Up"
+#~ msgstr "Upp"
+
+#~ msgid "+LINE"
+#~ msgstr "+RAD"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "Sök med reguljärt uttryck"
+
+#~ msgid "Verbatim input"
+#~ msgstr "Ordagrann inmatning"
+
+#~ msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%ld (%d%%)"
+#~ msgstr "rad %ld/%ld (%d%%), kolumn %lu/%lu (%d%%), tecken %lu/%ld (%d%%)"
+
+#~ msgid "File exists, OVERWRITE ?"
+#~ msgstr "Filen existerar, SKRIVA ÖVER?"
+
+#~ msgid "File exists, OVERWRITE?"
+#~ msgstr "Filen existerar, SKRIVA ÖVER?"
+
+#~ msgid "File exists, OVERWRITE? "
+#~ msgstr "Filen existerar, SKRIVA ÖVER? "
+
+#~ msgid "Save file under DIFFERENT NAME? "
+#~ msgstr "Spara filen med ANNAT NAMN? "
+
+#~ msgid "Save file under DIFFERENT NAME?"
+#~ msgstr "Spara filen med ANNAT NAMN?"
+
+#~ msgid "Jstify"
+#~ msgstr "Justera"
+
+#~ msgid "Backup file"
+#~ msgstr "Säkerhetskopiera fil"
+
+#~ msgid "%s not found"
+#~ msgstr "%s kunde inte hittas"
+
+#~ msgid "add_to_cutbuffer() called with inptr->data = %s\n"
+#~ msgstr "add_to_cutbuffer() anropades med inptr->data = %s\n"
+
+#~ msgid "Blew away cutbuffer =)\n"
+#~ msgstr "Sprängde urklippsbufferten =)\n"
+
+#~ msgid "File to insert into new buffer [from ./] "
+#~ msgstr "Fil att infoga i ny buffert [från ./] "
+
+#~ msgid "File to insert [from ./] "
+#~ msgstr "Fil att infoga [från ./] "
+
+#~ msgid "filename is %s\n"
+#~ msgstr "filnamnet är %s\n"
+
+#~ msgid "%s: free'd a node, YAY!\n"
+#~ msgstr "%s: frigjorde en nod, JIPPI!\n"
+
+#~ msgid "%s: free'd last node.\n"
+#~ msgstr "%s: frigjorde sista noden.\n"
+
+#~ msgid "Could not read %s for backup: %s"
+#~ msgstr "Kunde inte öppna %s för säkerhetskopiering: %s"
+
+#~ msgid "Couldn't write backup: %s"
+#~ msgstr "Kunde inte skriva säkerhetskopia: %s"
+
+#~ msgid "Backing up %s to %s\n"
+#~ msgstr "Säkerhetskopierar %s till %s\n"
+
+#~ msgid "Could not set permissions %o on backup %s: %s"
+#~ msgstr "Kunde inte sätta rättigheterna %o på säkerhetskopian %s: %s"
+
+#~ msgid "Could not set owner %d/group %d on backup %s: %s"
+#~ msgstr "Kunde inte sätta ägare %d/grupp %d på säkerhetskopian %s: %s"
+
+#~ msgid "Could not set access/modification time on backup %s: %s"
+#~ msgstr "Kunde inte sätta åtkomst-/modifieringstid på säkerhetskopian %s: %s"
+
+#~ msgid "Could not open file for writing: %s"
+#~ msgstr "Kunde inte öppna filen för skrivning: %s"
+
+#~ msgid "Wrote >%s\n"
+#~ msgstr "Skrev >%s\n"
+
+#~ msgid "Could not close %s: %s"
+#~ msgstr "Kunde inte stänga %s: %s"
+
+#~ msgid "Could not reopen %s: %s"
+#~ msgstr "Kunde inte återöppna %s: %s"
+
+#~ msgid "Could not open %s for prepend: %s"
+#~ msgstr "Kunde inte öppna %s för infogande: %s"
+
+#~ msgid "Could not set permissions %o on %s: %s"
+#~ msgstr "Kunde inte sätta rättigheterna %o på %s: %s"
+
+#~ msgid "Goto Cancelled"
+#~ msgstr "Gå till avbrutet"
+
+#~ msgid "Unable to open ~/.nano_history file, %s"
+#~ msgstr "Kan inte öppna filen ~/.nano_history, %s"
+
+#~ msgid "Unable to write ~/.nano_history file, %s"
+#~ msgstr "Kan inte skriva filen ~/.nano_history, %s"
+
+#~ msgid "Writing file in DOS format"
+#~ msgstr "Skriver fil i DOS-format"
+
+#~ msgid "Writing file in Mac format"
+#~ msgstr "Skriver fil i Mac-format"
+
+#~ msgid "Backing up file"
+#~ msgstr "Säkerhetskopierar fil"
+
+#~ msgid "Unjustify after a justify"
+#~ msgstr "Återställ en justering"
+
+#~ msgid "Move up one line"
+#~ msgstr "Gå upp en rad"
+
+#~ msgid "Move down one line"
+#~ msgstr "Gå ner en rad"
+
+#~ msgid "Search backwards"
+#~ msgstr "Sök baklänges"
+
+#~ msgid "Open previously loaded file"
+#~ msgstr "Öppna föregående inlästa fil"
+
+#~ msgid "Open next loaded file"
+#~ msgstr "Öppna nästa inlästa fil"
+
+#~ msgid "Down"
+#~ msgstr "Ner"
+
+#~ msgid "Use alternate keypad routines"
+#~ msgstr "Använd alternativa tangentbordsrutiner"
+
+#~ msgid "-T [num]"
+#~ msgstr "-T [antal]"
+
+#~ msgid "current->data now = \"%s\"\n"
+#~ msgstr "current->data nu = \"%s\"\n"
+
+#~ msgid "After, data = \"%s\"\n"
+#~ msgstr "Efter, data = \"%s\"\n"
+
+#~ msgid "Spell checking failed: unable to write temp file!"
+#~ msgstr "Stavningskontroll misslyckades: kan inte skriva till temporärfil!"
+
+#~ msgid "Cannot resize top win"
+#~ msgstr "Kan inte ändra storlek på övre fönstret"
+
+#~ msgid "Cannot move top win"
+#~ msgstr "Kan inte flytta övre fönstret"
+
+#~ msgid "Cannot resize edit win"
+#~ msgstr "Kan inte ändra storlek på redigeringsfönstret"
+
+#~ msgid "Cannot move edit win"
+#~ msgstr "Kan inte flytta redigeringsfönstret"
+
+#~ msgid "Cannot resize bottom win"
+#~ msgstr "Kan inte ändra storlek på nedre fönstret"
+
+#~ msgid "Cannot move bottom win"
+#~ msgstr "Kan inte flytta nedre fönstret"
+
+#~ msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
+#~ msgstr ""
+#~ "NumLock-problem upptäcktes. Tangenterna kommer inte att fungera utan "
+#~ "NumLock"
+
+#~ msgid "Tab size is too small for nano...\n"
+#~ msgstr "Tabulatorstorleken är för liten för nano...\n"
+
+#~ msgid "Main: set up windows\n"
+#~ msgstr "Main: konfigurera fönster\n"
+
+#~ msgid "Main: bottom win\n"
+#~ msgstr "Main: nedre fönstret\n"
+
+#~ msgid "Main: open file\n"
+#~ msgstr "Main: öppna fil\n"
+
+#~ msgid "AHA! %c (%d)\n"
+#~ msgstr "AHA! %c (%d)\n"
+
+#~ msgid "I got Alt-O-%c! (%d)\n"
+#~ msgstr "Jag mottog Alt-O-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-1-%c! (%d)\n"
+#~ msgstr "Jag mottog Alt-[-1-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-2-%c! (%d)\n"
+#~ msgstr "Jag mottog Alt-[-2-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-%c! (%d)\n"
+#~ msgstr "Jag mottog Alt-[-%c! (%d)\n"
+
+#~ msgid "I got Alt-%c! (%d)\n"
+#~ msgstr "Jag mottog Alt-%c! (%d)\n"
+
+#~ msgid "I got %c (%d)!\n"
+#~ msgstr "Jag mottog %c (%d)!\n"
+
+#~ msgid "Adding new syntax after 1st\n"
+#~ msgstr "Lägger till ny syntax efter första\n"
+
+#~ msgid "Starting a new syntax type\n"
+#~ msgstr "Startar ny syntaxtyp\n"
diff --git a/po/tr.gmo b/po/tr.gmo
new file mode 100644
index 0000000..7bf49e5
--- /dev/null
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 0000000..24ff5db
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,2495 @@
+# translation of nano-1.2.1.tr.po to Turkish
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# A. Murat EREN <meren@comu.edu.tr>, 2003
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.2.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2003-08-17 18:08+0300\n"
+"Last-Translator: A. Murat EREN <meren@comu.edu.tr>\n"
+"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: KBabel 1.0\n"
+
+#: src/browser.c:220
+#, fuzzy
+msgid "Go To Directory"
+msgstr "Dizine Git"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Ä°ptal edildi"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Kısıtlı kipte %s dışına çıkılamıyor"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, fuzzy, c-format
+msgid "Error reading %s: %s"
+msgstr "Hatalı alıntı dizgesi %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Bir üst dizine geçilemiyor"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr ""
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Ara"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Büyük / Küçük Harfe Duyarlı]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Düzenli İfade]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Geriye DoÄŸru]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Arama Döngülendi"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Bu tek bulgu"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr ""
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Dosya %s dışından eklenemiyor"
+
+#: src/files.c:234
+#, fuzzy
+msgid "No more open file buffers"
+msgstr "Başka açık dosya yok"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "%s 'e geçildi"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Yeni Arabellek"
+
+#: src/files.c:633
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "%d satır okundu (Mac biçiminden dönüştürüldü)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "%d satır okundu (Mac biçiminden dönüştürüldü)"
+
+#: src/files.c:644
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "%d satır okundu (Mac biçiminden dönüştürüldü)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "%d satır okundu (Mac biçiminden dönüştürüldü)"
+
+#: src/files.c:654
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "%d satır okundu (DOS biçiminden dönüştürüldü)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "%d satır okundu (DOS biçiminden dönüştürüldü)"
+
+#: src/files.c:664
+#, fuzzy, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "%d satır okundu"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Dosya Okunuyor"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Yeni Dosya"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" bulunamadı"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" bir dizin"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, fuzzy, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" bir aygıt dosyası"
+
+#: src/files.c:817
+#, fuzzy, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Yeni arabelleÄŸe eklenecek dosya [%s 'den]"
+
+#: src/files.c:819
+#, fuzzy, c-format
+msgid "Command to execute [from %s] "
+msgstr "Çalıştırılacak komut"
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Yeni arabelleÄŸe eklenecek dosya [%s 'den]"
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Eklenecek dosya [%s tarafından] "
+
+#: src/files.c:1077
+#, fuzzy
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Anahtar çoklu olmayan arabellek kipinde geçersiz"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "%s dışına yazılamıyor"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr ""
+
+#: src/files.c:1582 src/nano.c:701
+#, fuzzy
+msgid "Too many backup files?"
+msgstr ""
+"\n"
+"%s yazılmamış (çok fazla yedek dosyası?)\n"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, fuzzy, c-format
+msgid "Error writing %s: %s"
+msgstr "Hatalı alıntı dizgesi %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr ""
+
+#: src/files.c:1900
+#, fuzzy, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "%d satır yazıldı"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS Biçimi]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac Biçimi]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Yedek]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Seçimi Dosyanın Başına Ekle"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Seçimi Dosyanın Sonuna Ekle"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Seçimi Dosyaya Yaz"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Başına Eklenecek Dosya Adı"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Sonuna Eklenecek Dosya Adı"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Yazılacak Dosya Adı"
+
+#: src/files.c:2153
+#, fuzzy
+msgid "File exists, OVERWRITE ? "
+msgstr "Dosya var, ÃœSTÃœNE YAZILSIN MI?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr ""
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(daha)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"nano'yu başlatmaya devam etmek için Gir tuşuna basınız\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Ä°ptal"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "DeÄŸiÅŸtir"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "DeÄŸiÅŸtirme Yok"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Harf Duyarlı"
+
+#: src/global.c:421
+#, fuzzy
+msgid "Backwards"
+msgstr " [Geriye DoÄŸru]"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Düzenli İfade"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+#, fuzzy
+msgid "PrevHstory"
+msgstr "Geçmiş"
+
+#: src/global.c:452
+#, fuzzy
+msgid "NextHstory"
+msgstr "Geçmiş"
+
+#: src/global.c:453
+#, fuzzy
+msgid "Go To Text"
+msgstr "Satıra Git"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+#, fuzzy
+msgid "WhereIs Next"
+msgstr "Ara"
+
+#: src/global.c:457
+#, fuzzy
+msgid "First File"
+msgstr "İlk Satır"
+
+#: src/global.c:458
+#, fuzzy
+msgid "Last File"
+msgstr "Son Satır"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Dosyalara"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS Biçimi"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac Biçimi"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Sonuna Ekle"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Başına Ekle"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Yedek Dosyası"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Komut Çalıştır"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Dizine Git"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Yardım Al"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Çık"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Ara"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Önceki Sayfa"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Sonraki Sayfa"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "İlk Satır"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Son Satır"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "Askıya Al"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr ""
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr ""
+
+#: src/global.c:491
+#, fuzzy
+msgid "FullJstify"
+msgstr "Yasla"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Tazele"
+
+#: src/global.c:495
+#, fuzzy
+msgid "Insert File"
+msgstr "Sonraki Dosya"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Satıra Git"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Şu anki paragrafı yasla"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Yürürlükteki fonksiyonu iptal et"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr ""
+
+#: src/global.c:509
+#, fuzzy
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Yüklenmiş olan dosyayı kapat/nano'dan çık"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "nano'dan çık"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Yürütülmekte olan dosyayı diske yaz"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Åžu anki dosyaya baÅŸka bir dosya ekle"
+
+#: src/global.c:519
+#, fuzzy
+msgid "Search for a string or a regular expression"
+msgstr "Düzenli ifade kullan"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "Önceki ekrana git"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "Sonraki ekrana git"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Şu anki satırı kes ve kesim arabelleğinde sakla"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Şu anki satıra kesim arabelleğini yapıştır"
+
+#: src/global.c:527
+#, fuzzy
+msgid "Display the position of the cursor"
+msgstr "İmlecin pozisyonunu göster"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Yazım denetleyicisini çağır (eğer mümkün ise)"
+
+#: src/global.c:531
+#, fuzzy
+msgid "Replace a string or a regular expression"
+msgstr "Düzenli ifade kullan"
+
+#: src/global.c:532
+#, fuzzy
+msgid "Go to line and column number"
+msgstr "Satır numarasına git"
+
+#: src/global.c:534
+#, fuzzy
+msgid "Mark text at the cursor position"
+msgstr "İmleç hizasındaki metni işaretle"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr ""
+
+#: src/global.c:537
+#, fuzzy
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Şu anki satırı kes ve kesim arabelleğinde sakla"
+
+#: src/global.c:538
+#, fuzzy
+msgid "Indent the current line"
+msgstr "Yürürlükteki dosyanın sonuna ekle"
+
+#: src/global.c:539
+#, fuzzy
+msgid "Unindent the current line"
+msgstr "Yürürlükteki dosyanın sonuna ekle"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "Bir karakter ileri git"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "Bir karakter geri gel"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "Bir kelime ileri git"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "Bir kelime geriye git"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "Önceki ekrana git"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "Bir satır aşağı in"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "Şu anki satırın başına git"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "Şu anki satırın sonuna git"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr ""
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr ""
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "Dosyanın ilk satırına git"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Dosyanın son satırına git"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "Eşleşen ayraç yok"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:572
+#, fuzzy
+msgid "Switch to the previous file buffer"
+msgstr "Önceki ekrana git"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr ""
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr ""
+
+#: src/global.c:579
+#, fuzzy
+msgid "Insert a tab at the cursor position"
+msgstr "İmlecin olduğu yerden satır başı yap"
+
+#: src/global.c:581
+#, fuzzy
+msgid "Insert a newline at the cursor position"
+msgstr "İmlecin olduğu yerden satır başı yap"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "İmlecin altındaki karakteri sil"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Ä°mlecin solundaki karakteri sil"
+
+#: src/global.c:588
+#, fuzzy
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Şu anki satıra kesim arabelleğini yapıştır"
+
+#: src/global.c:591
+#, fuzzy
+msgid "Justify the entire file"
+msgstr "Şu anki paragrafı yasla"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr ""
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Şu anki ekranı tazele (yeniden çiz)"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr ""
+
+#: src/global.c:605
+#, fuzzy
+msgid "Reverse the direction of the search"
+msgstr "İmlecin pozisyonunu göster"
+
+#: src/global.c:609
+#, fuzzy
+msgid "Toggle the use of regular expressions"
+msgstr "Düzenli ifade kullan"
+
+#: src/global.c:613
+#, fuzzy
+msgid "Recall the previous search/replace string"
+msgstr "Önceki arama/değiştirme dizgisini düzenle"
+
+#: src/global.c:615
+#, fuzzy
+msgid "Recall the next search/replace string"
+msgstr "Önceki arama/değiştirme dizgisini düzenle"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Dosya tarayıcısına git"
+
+#: src/global.c:621
+#, fuzzy
+msgid "Toggle the use of DOS format"
+msgstr "Dosyayı DOS biçiminde yaz"
+
+#: src/global.c:622
+#, fuzzy
+msgid "Toggle the use of Mac format"
+msgstr "Dosyayı Mac biçiminde yaz"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr ""
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr ""
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr ""
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Harici komut çalıştır"
+
+#: src/global.c:633
+#, fuzzy
+msgid "Toggle the use of a new buffer"
+msgstr "Yeni arabelleğe girişi aç/kapa"
+
+#: src/global.c:636
+#, fuzzy
+msgid "Exit from the file browser"
+msgstr "Dosya tarayıcısına git"
+
+#: src/global.c:638
+#, fuzzy
+msgid "Go to the first file in the list"
+msgstr "Dosyanın ilk satırına git"
+
+#: src/global.c:640
+#, fuzzy
+msgid "Go to the last file in the list"
+msgstr "Dosyanın son satırına git"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "Dosyanın son satırına git"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "Dosyanın ilk satırına git"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Dizine git"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Kapat"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Yaz"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Yasla"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Dosya Oku"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Metni Kes"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Yaslamayı Geri Al"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+#, fuzzy
+msgid "UnCut Text"
+msgstr "Kesmeyi Geri Al"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "İmleç Pozisyonu"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Denetime"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Metni Ä°ÅŸaretle"
+
+#: src/global.c:777
+#, fuzzy
+msgid "Copy Text"
+msgstr "Metni Kes"
+
+#: src/global.c:780
+#, fuzzy
+msgid "Indent Text"
+msgstr "Metni Kes"
+
+#: src/global.c:783
+#, fuzzy
+msgid "Unindent Text"
+msgstr "Kesmeyi Geri Al"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Ä°leri"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Geri"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Sonraki Kelime"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Önceki Kelime"
+
+#: src/global.c:824
+#, fuzzy
+msgid "Prev Line"
+msgstr "Önceki Sayfa"
+
+#: src/global.c:827
+#, fuzzy
+msgid "Next Line"
+msgstr "Sonraki Dosya"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Ev"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Son"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Diğer Köşeli Ayracı Bul"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr ""
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr ""
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Önceki Dosya"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Sonraki Dosya"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr ""
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Sekme (TAB)"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Gir TuÅŸu (Enter)"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Sil"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Geri tuÅŸu"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr ""
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr ""
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Yardım Kipi"
+
+#: src/global.c:1369
+#, fuzzy
+msgid "Constant cursor position display"
+msgstr "Sabit imleç pozisyonu"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr ""
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Yumuşak kaydırma"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr ""
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Renkli sözdizimi vurgusu"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr ""
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Otomatik hizala"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Sonuna kes"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr ""
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr ""
+
+#: src/global.c:1389
+#, fuzzy
+msgid "Backup files"
+msgstr "Yedek Dosyası"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Dosya arabelleklerini çokla"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Fare DesteÄŸi"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "DOS/Mac biçimi ile ilgili bir şey yok"
+
+#: src/global.c:1397
+#, fuzzy
+msgid "Suspension"
+msgstr "Askıya Al"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr ""
+
+#: src/help.c:236
+#, fuzzy
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Arama Komutu İçin Yardım Metni\n"
+"\n"
+" Aramak istediÄŸiniz kelimeleri ya da karakterleri girin ve GiriÅŸ tuÅŸuna "
+"basın. Metin içinde aradığınıza karşı gelen bir kelime ya da karakter "
+"bulunursa, ekran tazelenir ve imleç sonucun bulunduğu en yakın noktaya "
+"konumlanır.\n"
+"\n"
+" Önceki arama metni, Arama komut satırının sağında köşeli parantezler "
+"içerisinde gösterilir. Hiç bir giriş yapmadan Giriş tuşuna basarsanız, "
+"arama işlemi köşeli parantezler içindeki kelime için tekrarlanır.\n"
+"\n"
+" Arama kipinde aşağıdaki anahtarlardan yararlanabilirsiniz:\n"
+"\n"
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Satıra Git Yardım Metni\n"
+"\n"
+" Gitmek istediğiniz satır numarasını yazarak Enter tuşuna basınız. Eğer "
+"girdiğiniz satır sayısı, metnin sahip olduğu toplam satır sayısından büyük "
+"ise, imleç dosyanın en son satırına konumlanır.\n"
+"\n"
+" Satıra Git kipinde aşağıdaki anahtarlardan yararlanabilirsiniz:\n"
+"\n"
+
+#: src/help.c:260
+#, fuzzy
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Dosya Ekle Yardım Metni\n"
+"\n"
+" Yürürlükte olan dosyaya, imlecin bulunduğu noktadan itibaren eklenecek olan "
+"dosyanın adını yazın.\n"
+"\n"
+" Eğer nano'yu çoklu dosya arabelleği desteği ile beraber derlediyseniz ve "
+"çoklu arabelleği, -F ya da --multibuffer komut satırı bayrakları ile "
+"kullanılabilir hale getirdiyseniz, ismini yazdığınız dosya ayrı bir "
+"arabelleğe yüklenecektir. (Meta < ve > tuşları yardımıyla arabellekler "
+"arasında gezebilirsiniz).\n"
+"\n"
+" Eğer boş bir arabelleğe ihtiyacınız varsa, komut satırına herhangi bir "
+"dosya adı girmeyin ya da var olmayan bir dosya adı girip Giriş tuşuna "
+"basın.\n"
+"\n"
+" Dosya Ekle kipinde aşağıdaki anahtarlardan yararlanabilirsiniz:\n"
+"\n"
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:275
+#, fuzzy
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Dosyayı Yaz Yardım Metni\n"
+"\n"
+" Dosyayı hangi isimle kaydetmek istiyorsanız o ismi yazıp Giriş tuşuna "
+"basınız.\n"
+"\n"
+" Eğer Ctrl-^ ile seçtiğiniz bir metin varsa, size sadece seçili olan kısmı "
+"ayrı bir dosyaya kaydedip kaydetmek istemeyeceğiniz sorulacaktır. "
+"Yanlışlıkla dosyanızın bir kısmını, tamamının üzerine yazabilmeniz "
+"ihtimalini ortadan kaldırmak için, çalıştığınız dosya ismi bu kipte "
+"varsayılan dosya ismi olarak komut satırında yazmamaktadır..\n"
+"\n"
+" Dosyayı Yaz kipinde aşağıdaki anahtarlardan yararlanabilirsiniz:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Dosya Tarayıcısı Yardım Metni\n"
+"\n"
+" Dosya tarayıcısı, okumak ya da yazmak üzere bir dosya seçme işlemi "
+"esnasında dizin yapısı içerisinde görsel olarak gezinebilmenizi sağlar. Ok "
+"ve Sayfa Aşağı/Yukarı tuşları yardımıyla dosyaları gezebilir, bir dizin veya "
+"dosya üzerindeyken S ya da Giriş tuşunuza basarak dizine geçebilir ya da "
+"dosyayı seçebilirsiniz. Bir üst dizine geçmek için listenin en üstünde "
+"bulunan \"..\" isimli dizini seçmeniz gerekmektedir.\n"
+"\n"
+" Dosya Tarayıcısı kipinde aşağıdaki anahtarlardan yararlanabilirsiniz:\n"
+"\n"
+
+#: src/help.c:302
+#, fuzzy
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Arama Komutu İçin Yardım Metni\n"
+"\n"
+" Aramak istediÄŸiniz kelimeleri ya da karakterleri girin ve GiriÅŸ tuÅŸuna "
+"basın. Metin içinde aradığınıza karşı gelen bir kelime ya da karakter "
+"bulunursa, ekran tazelenir ve imleç sonucun bulunduğu en yakın noktaya "
+"konumlanır.\n"
+"\n"
+" Önceki arama metni, Arama komut satırının sağında köşeli parantezler "
+"içerisinde gösterilir. Hiç bir giriş yapmadan Giriş tuşuna basarsanız, "
+"arama işlemi köşeli parantezler içindeki kelime için tekrarlanır.\n"
+"\n"
+" Arama kipinde aşağıdaki anahtarlardan yararlanabilirsiniz:\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:315
+#, fuzzy
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Tarayıcı Dizine Git Yardım Metni\n"
+"\n"
+" İçine girmek istediğiniz dizinin adını yazıp Giriş tuşuna basınız.\n"
+"\n"
+" Eğer isim tamamlama kullanılır durumda ise, klavyenizin Sekme tuşuna "
+"basarak dizinlerin isimlerinin tamamlanmasını sağlayabilirsiniz.\n"
+"\n"
+" Tarayıcı Dizine Git kipinde aşağıdaki anahtarlardan yararlanabilirsiniz:\n"
+"\n"
+
+#: src/help.c:328
+#, fuzzy
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Yazım Denetimi Yardım Metni\n"
+"\n"
+" Yazım denetleyicisi, tüm metin içerisindeki yazımı denetler. Bilinmeyen "
+"bir kelime ile karşılaştığında, kelimeyi vurgular ve kelimeyi "
+"değiştirebilmeniz için komut satırına yazar. Bu işlem yazım denetiminin "
+"metin içinde yanlış kabul ettiği her kelime için tekrarlanır.\n"
+"\n"
+" Yazım Denetimi kipinde aşağıdaki anahtarlardan yararlanabilirsiniz:\n"
+"\n"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Harici Komut Yardım Metni\n"
+"\n"
+" Bu menü, kabukta çalıştıracağınız bir komutun çıktısını yürürlükteki "
+"arabelleğe eklemenizi sağlar. (çoklu arabellek aktif ise diğer bir "
+"arabelleÄŸe de ekleyebilirsiniz).\n"
+"\n"
+" Harici Komut kipinde aşağıdaki anahtarlardan yararlanabilirsiniz:\n"
+"\n"
+
+#: src/help.c:356
+#, fuzzy
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+" nano yardım metni\n"
+"\n"
+" nano düzenleyicisi, UW Pico metin düenleyicisinin işlevselliğine ve kolay "
+"kullanımına öykünmesi için tasarlandı. Düzenleyicide dört ana bölüm "
+"bulunmaktadır: En üst satır programın sürümünü, o an düzenlenmekte olan "
+"dosyanın adını ve bu dosyanın değiştirilip değiştirilmediğini gösterir. Bir "
+"sonraki kısım ana düzenleyici penceresidir ve burada düzenlenmekte olan "
+"dosyanın içeriği gösterilir. Üçüncü kısım olan durum çubuğu, önemli "
+"mesajların gösterildiği kısımdır. En alttaki iki satır ise, düzenleyici "
+"içerisinde en sık kullanılan kısayolları gösterir.\n"
+"\n"
+" Kısayolların gösterimi ise şöyledir: Kontrol (Ctrl) tuşu ile başlayan "
+"ardışıklıklar düzeltme işarteti (^) ile gösterilmiştir. Kaçış tuşu (Esc) "
+"ardışıklıkları Meta (M) sembolü ile gösterilmiştir ve Esc, Alt ya da Meta "
+"tuşları M sembolü için kullanılabilir; bu sizin klavye yapılandırmanıza "
+"bağlıdır. Takip eden tuş birleşimleri düzenleyicinin ana penceresinde "
+"kullanılabilir. Alternatif tuşlar parantez içinde gösterilmişlerdir:\n"
+"\n"
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "etkin/etkisiz"
+
+#: src/nano.c:587
+#, fuzzy
+msgid "Key invalid in view mode"
+msgstr "GÖSTER kipi için geçersiz anahtar"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Arabellek %s olarak yazıldı\n"
+
+#: src/nano.c:697
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Arabellek %s olarak yazıldı\n"
+
+#: src/nano.c:700
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Arabellek %s olarak yazıldı\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Pencere boyutu nano için çok küçük...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+
+#: src/nano.c:819
+#, fuzzy, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Seçenek\t\tUzun Seçenek\t\tAnlamı\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Seçenek\t\tAnlamı\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Bu mesajı gösterir"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr ""
+
+#: src/nano.c:826
+#, fuzzy
+msgid "Start at line LINE, column COLUMN"
+msgstr "LINE satır numarasından başla"
+
+#: src/nano.c:828
+#, fuzzy
+msgid "Enable smart home key"
+msgstr "Fare etkin"
+
+#: src/nano.c:829
+#, fuzzy
+msgid "Save backups of existing files"
+msgstr "Kaydetme anında varolan dosyaların yedeğini al"
+
+#: src/nano.c:830
+#, fuzzy
+msgid "-C <dir>"
+msgstr "-o [dizin]"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr ""
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr ""
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr ""
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr ""
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Çoklu dosya arabelleği aktif"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Metin arama/değiştirme geçmişini oku ve günlükle."
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "nanorc dosyalarına bakma"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr ""
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr ""
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Dosyalaro DOS/Mac biçiminden dönüştürme"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr ""
+
+#: src/nano.c:860
+#, fuzzy
+msgid "-Q <str>"
+msgstr "-Q [metin]"
+
+#: src/nano.c:860
+#, fuzzy
+msgid "--quotestr=<str>"
+msgstr "--quotestr=[metin]"
+
+#: src/nano.c:861
+#, fuzzy
+msgid "Quoting string"
+msgstr "Alıntı dizgesi, öntanımlı \"> \""
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr ""
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+#, fuzzy
+msgid "-T <#cols>"
+msgstr "-r [#cols]"
+
+#: src/nano.c:868
+#, fuzzy
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=[sayı]"
+
+#: src/nano.c:869
+#, fuzzy
+msgid "Set width of a tab to #cols columns"
+msgstr "Sekmenin geniÅŸliÄŸini numaraya ayarla"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr ""
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "Sürüm bilgisini yaz ve çık"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr ""
+
+#: src/nano.c:880
+#, fuzzy
+msgid "-Y <str>"
+msgstr "-Y [metin]"
+
+#: src/nano.c:880
+#, fuzzy
+msgid "--syntax=<str>"
+msgstr "--syntax [metin]"
+
+#: src/nano.c:881
+#, fuzzy
+msgid "Syntax definition to use for coloring"
+msgstr "Kullanılacak sözdizim tanımlaması"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "İmleç pozisyonunu daimi göster"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr ""
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Yeni satırlarda otomatik paragraf başı yap"
+
+#: src/nano.c:889
+#, fuzzy
+msgid "Cut from cursor to end of line"
+msgstr ""
+"^K komutunun, imleç pozisyonundan satırın sonuna dek kesmesine izin ver"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Simgesel bağları takip etme, üzerine yaz"
+
+#: src/nano.c:894
+#, fuzzy
+msgid "Enable the use of the mouse"
+msgstr "Fare etkin"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "-o <dir>"
+msgstr "-o [dizin]"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=[dizin]"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Çalışma dizinini belirle"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "XON (^Q) ve XOFF (^S) tuşlarını sakla"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+#, fuzzy
+msgid "-r <#cols>"
+msgstr "-r [#cols]"
+
+#: src/nano.c:905
+#, fuzzy
+msgid "--fill=<#cols>"
+msgstr "--fill=[#cols]"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr ""
+
+#: src/nano.c:909
+#, fuzzy
+msgid "-s <prog>"
+msgstr "-s [prog]"
+
+#: src/nano.c:909
+#, fuzzy
+msgid "--speller=<prog>"
+msgstr "--speller=[prog]"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Alternatif yazım kontrolcüsü etkin"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Çıkışta sormaksızın otomatik kaydet"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+#, fuzzy
+msgid "View mode (read-only)"
+msgstr "Göster (sadece okunur) kipi"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Uzun satırları kaydırma"
+
+#: src/nano.c:922
+#, fuzzy
+msgid "Don't show the two help lines"
+msgstr "Yardım penceresini gösterme"
+
+#: src/nano.c:923
+#, fuzzy
+msgid "Enable suspension"
+msgstr "Askıya almayı etkinleştir"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr ""
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(Pico uyumluluğu için yoksayıldı)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano sürüm numarası: %s (%s, %s tarihinde derlendi)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr "E-Posta: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Derleme seçenekleri:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Özür dileriz, bu işlev için destek etkisiz kılınmış"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr ""
+"Değiştirilmiş arabellek kaydedilsin mi (\"Hayır\" CEVABI TÜM DEĞİŞİKLİKLERİ "
+"YOK EDECEK) ? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "SIGHUP ya da SIGTERM sinyali alındı\n"
+
+#: src/nano.c:1204
+#, fuzzy, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "nano'ya geri dönmek için \"fg\"'yi kullanın"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "etkin"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "etkisiz"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr ""
+
+#: src/nano.c:1674
+#, fuzzy
+msgid "XON ignored, mumble mumble"
+msgstr "XON yoksayıldı."
+
+#: src/nano.c:1679
+#, fuzzy
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF yoksayıldı."
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, fuzzy, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "istenen Tab değeri %d geçerli değil"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, fuzzy, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "istenen doldurma değeri %d geçerli değil"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Ee"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Hh"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Tt"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Evet"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Tümü"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Hayır"
+
+#: src/rcfile.c:130
+#, fuzzy, c-format
+msgid "Error in %s on line %lu: "
+msgstr "%s'nin %d. satırında hata: "
+
+#: src/rcfile.c:185
+#, fuzzy, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "%s argümanında sonlanmamış \" var"
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+#, fuzzy
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Düzenli ifade katarları, \" karakteri ile başlamalı ve bitmeli\n"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "\"%s\" yanlış bir düzenli ifade: %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Sözdizim ismi eksik"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr ""
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr ""
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "Sözdizim ismi eksik"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "%s yazmak için açılamadı: %s"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "\"%s\" çağırılamadı"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, fuzzy, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"%s rengi anlaşılamadı.\n"
+"Geçerli renkler \"green\", \"red\", \"blue\", \n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" ve \n"
+"\"black\", seçimli \"bright\" ön eki ile.\n"
+
+#: src/rcfile.c:647
+#, fuzzy
+msgid "Cannot add a color command without a syntax command"
+msgstr "Sözdizimi satırı olmaksızın renk direktifi eklenemez"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Renk ismi eksik"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr ""
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr ""
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\", \"end=\"e ihtiyaç duyar."
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "Sözdizimi satırı olmaksızın renk direktifi eklenemez"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr ""
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr ""
+
+#: src/rcfile.c:966
+#, fuzzy, c-format
+msgid "Command \"%s\" not understood"
+msgstr "%s komutu anlaşılamadı"
+
+#: src/rcfile.c:972
+#, fuzzy
+msgid "Missing flag"
+msgstr "Renk ismi eksik"
+
+#: src/rcfile.c:994
+#, fuzzy, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "%s seçeneği bir bağımsız değişken gerektiriyor"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr ""
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr ""
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr ""
+
+#: src/rcfile.c:1114
+#, fuzzy, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "%d bayrağı boşaltıldı!\n"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr ""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Ev dizinimi bulamıyorum!"
+
+#: src/search.c:96
+#, fuzzy, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%s\" bulunamadı"
+
+#: src/search.c:205
+#, fuzzy
+msgid " (to replace) in selection"
+msgstr " (değiştirmek için)"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (değiştirmek için)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Bu bulgu deÄŸiÅŸtirilsin mi?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Ä°le deÄŸiÅŸtir"
+
+#: src/search.c:1004
+#, fuzzy, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "%d değiştirme yapıldı"
+
+#: src/search.c:1034
+#, fuzzy
+msgid "Enter line number, column number"
+msgstr "Satır numarasını girin"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr ""
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Ayraç değil"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Eşleşen ayraç yok"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Ä°ÅŸaretle"
+
+#: src/text.c:58
+#, fuzzy
+msgid "Mark Unset"
+msgstr "İşareti Kaldır"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "Sonraki Dosya"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr ""
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "Sonraki Dosya"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr " (değiştirmek için)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Boru işlemi gerçekleştirilemedi"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Fork işlemi gerçekleştirilemedi"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Hatalı alıntı dizgesi %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Şmdi yaslamayı geri alabilirsiniz!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Bir yerdeğiştirmeyi düzenle"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Boru yaratılamadı"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Yazım hatası içeren kelimeler listeleniyor, lütfen bekleyiniz"
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Boru arabelleğinin boyutu alınamıyor"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "\"spell\" çağırılırken hata"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "\"sort -f\" çağırılırken hata"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "\"uniq\" çağırılırken hata"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Yazım kontrolü bitti"
+
+#: src/text.c:2815
+#, fuzzy, c-format
+msgid "Error invoking \"%s\""
+msgstr "\"spell\" çağırılırken hata"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Yazım kontrolü başarısız oldu: %s"
+
+#: src/text.c:2962
+#, fuzzy, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Yazım kontrolü başarısız oldu: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr ""
+
+#: src/text.c:3031
+#, fuzzy
+msgid "In Selection: "
+msgstr "Seçimi Dosyanın Sonuna Ekle"
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano bellek dışı!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr ""
+
+#: src/winio.c:2149 src/winio.c:2153
+#, fuzzy
+msgid "Modified"
+msgstr " DeÄŸiÅŸtirildi "
+
+#: src/winio.c:2150
+#, fuzzy
+msgid "View"
+msgstr " Göster "
+
+#: src/winio.c:2164
+#, fuzzy
+msgid "DIR:"
+msgstr " DÄ°ZÄ°N: "
+
+#: src/winio.c:2171
+#, fuzzy
+msgid "File:"
+msgstr "Dosya: "
+
+#: src/winio.c:3360
+#, fuzzy, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "satır %ld/%ld (%d%%), sütun %lu/%lu (%d%%), karakter %lu/%ld (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "nano metin editörü"
+
+#: src/winio.c:3493
+#, fuzzy
+msgid "version"
+msgstr "sürüm "
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Size saÄŸlayan: "
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Özel teşekkürler:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "The Free Software Foundation"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "ncurses için:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "ve unuttuÄŸumuz kiÅŸilere..."
+
+#: src/winio.c:3499
+#, fuzzy
+msgid "Thank you for using nano!"
+msgstr "nano kullandığınız için teşekkürler!\n"
+
+#~ msgid "add_to_cutbuffer() called with inptr->data = %s\n"
+#~ msgstr "add_to_cutbuffer(), inptr->data = %s ile çağırıldı\n"
+
+#~ msgid "Blew away cutbuffer =)\n"
+#~ msgstr "cutbuffer silindi =)\n"
+
+#~ msgid "File to insert into new buffer [from ./] "
+#~ msgstr "Yeni arabelleÄŸe eklenecek dosya [./ 'den]"
+
+#~ msgid "File to insert [from ./] "
+#~ msgstr "Eklenecek dosya [./ 'den] "
+
+#~ msgid "filename is %s\n"
+#~ msgstr "dosya ismi %s\n"
+
+#~ msgid "%s: free'd a node, YAY!\n"
+#~ msgstr "%s: bir düğüm serbest bırakıldı\n"
+
+#~ msgid "%s: free'd last node.\n"
+#~ msgstr "%s: son düğüm serbest bırakıldı.\n"
+
+#~ msgid "Could not read %s for backup: %s"
+#~ msgstr "%s yedekleme için okunamadı: %s"
+
+#~ msgid "Couldn't write backup: %s"
+#~ msgstr "Yedek yazılamadı: %s"
+
+#~ msgid "Backing up %s to %s\n"
+#~ msgstr "%s, %s olarak yedekleniyor\n"
+
+#~ msgid "Could not set permissions %o on backup %s: %s"
+#~ msgstr "%o izinleri %s yedeğine uygulanamadı: %s"
+
+#~ msgid "Could not set owner %d/group %d on backup %s: %s"
+#~ msgstr ""
+#~ "Kullanıcısı %d/grubu %d olarak ayarlanamadı, %s yedek dosyasının: %s"
+
+#~ msgid "Could not set access/modification time on backup %s: %s"
+#~ msgstr "%s yedeğinin erişim/değiştirme zamanı ayarlanamadı: %s"
+
+#~ msgid "Could not open file for writing: %s"
+#~ msgstr "Dosya yazmak için açılamadı: %s"
+
+#~ msgid "Wrote >%s\n"
+#~ msgstr "Yazıldı >%s\n"
+
+#~ msgid "Could not close %s: %s"
+#~ msgstr "%s kapatılamadı: %s"
+
+#~ msgid "Could not reopen %s: %s"
+#~ msgstr "%s tekrar açılamadı: %s"
+
+#~ msgid "Could not open %s for prepend: %s"
+#~ msgstr "%s başına ekleme için açılamıyor: %s"
+
+#~ msgid "Could not set permissions %o on %s: %s"
+#~ msgstr "%o izinleri %s dosyasına uygulanamadı: %s"
+
+#~ msgid "Can't open \"%s\": %s"
+#~ msgstr "\"%s\" açılamıyor: %s"
+
+#~ msgid "Goto Cancelled"
+#~ msgstr "Ä°ptal Edildi"
+
+#~ msgid "Unable to open ~/.nano_history file, %s"
+#~ msgstr "~/.nano_history dosyası açılamıyor, %s"
+
+#~ msgid "Unable to write ~/.nano_history file, %s"
+#~ msgstr "~/.nano_history dosyasına yazılamıyır, %s"
+
+#~ msgid "Writing file in DOS format"
+#~ msgstr "Dosya DOS biçiminde yazılıyor"
+
+#~ msgid "Writing file in Mac format"
+#~ msgstr "Dosya Mac biçiminde yazılıyor"
+
+#~ msgid "Backing up file"
+#~ msgstr "Dosya yedekleniyor"
+
+#~ msgid "Auto wrap"
+#~ msgstr "Otomatik kaydırma"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "Yardım menüsünü çağır"
+
+#~ msgid "Unjustify after a justify"
+#~ msgstr "Yaslama iÅŸlemini geri al"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "Editör içindeki metin ile değiştir"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "Editör içinde metin ara"
+
+#~ msgid "Move up one line"
+#~ msgstr "Bir satır yukarı çık"
+
+#~ msgid "Insert a tab character"
+#~ msgstr "Bir TAB karakteri yerleÅŸtirir"
+
+#~ msgid "Make the current search or replace case (in)sensitive"
+#~ msgstr ""
+#~ "Şu anki aramayı ya da değiştirmeyi büyük-küçük harfe duyarlı(duyarsız) "
+#~ "gerçekleştir"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "Yürürlükteki dosyanın başına ekle"
+
+#~ msgid "Search backwards"
+#~ msgstr "Geriye doÄŸru ara"
+
+#~ msgid "Write file out in DOS format"
+#~ msgstr "Dosyayı DOS biçiminde yaz"
+
+#~ msgid "Write file out in Mac format"
+#~ msgstr "Dosyayı Mac biçiminde yaz"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "Kaydederken özgün dosyayı yedekle"
+
+#~ msgid "Find other bracket"
+#~ msgstr "Diğer köşeli ayracı bul"
+
+#~ msgid "Open previously loaded file"
+#~ msgstr "Daha önce yüklenmiş dosyayı aç"
+
+#~ msgid "Open next loaded file"
+#~ msgstr "Sonraki yüklenmiş dosyayı aç"
+
+#~ msgid "Up"
+#~ msgstr "Yukarı"
+
+#~ msgid "Down"
+#~ msgstr "Aşağı"
+
+#~ msgid "Direction"
+#~ msgstr "Yön"
+
+#~ msgid "Space"
+#~ msgstr "BoÅŸluk"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Kullanımı: nano [+LINE] [GNU uzun seçenekler] [seçenekler] [dosya]\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Kullanımı: nano [+LINE] [seçenekler] [dosya]\n"
+#~ "\n"
+
+#~ msgid "+LINE"
+#~ msgstr "+LINE"
+
+#~ msgid "Use alternate keypad routines"
+#~ msgstr "Alternatif tuştakımı yordamlarını kullan"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "Düzenli ifade aramaları gerçekleştir"
+
+#~ msgid "-T [num]"
+#~ msgstr "-T [sayı]"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "Satırları #cols hizasından kaydır"
+
+#~ msgid "current->data now = \"%s\"\n"
+#~ msgstr "current->data now = \"%s\"\n"
+
+#~ msgid "After, data = \"%s\"\n"
+#~ msgstr "Sonra, veri = \"%s\"\n"
+
+#~ msgid "Could not create a temporary filename: %s"
+#~ msgstr "Geçici bir dosya adı yaratılamadı: %s"
+
+#~ msgid "Spell checking failed: unable to write temp file!"
+#~ msgstr "Yazım kontrolü başarısız oldu: geçici dosyaya yazılamıyor!"
+
+#~ msgid "Cannot resize top win"
+#~ msgstr "Üst pencere yeniden boyutlandırılamaz"
+
+#~ msgid "Cannot move top win"
+#~ msgstr "Ãœst pencere hareket ettirilemez"
+
+#~ msgid "Cannot resize edit win"
+#~ msgstr "Düzenleme penceresi yeniden boyutlandırılamaz"
+
+#~ msgid "Cannot move edit win"
+#~ msgstr "Düzenleme penceresi hareket ettirilemez"
+
+#~ msgid "Cannot resize bottom win"
+#~ msgstr "Alt pencere yeniden boyutlandırılamaz"
+
+#~ msgid "Cannot move bottom win"
+#~ msgstr "Alt pencere hareket ettirilemez"
+
+#~ msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
+#~ msgstr ""
+#~ "NumLock hatası bulundu. Sayısal klavye NumLock basılı değil ise hata "
+#~ "verecek"
+
+#~ msgid "Tab size is too small for nano...\n"
+#~ msgstr "Tab boyutu nano için çok küçük...\n"
+
+#~ msgid "Main: set up windows\n"
+#~ msgstr "Ana: pencereleri ayarla\n"
+
+#~ msgid "Main: bottom win\n"
+#~ msgstr "Ana: alt pencere\n"
+
+#~ msgid "Main: open file\n"
+#~ msgstr "Ana: dosya aç\n"
+
+#~ msgid "AHA! %c (%d)\n"
+#~ msgstr "AHA! %c (%d)\n"
+
+#~ msgid "I got Alt-O-%c! (%d)\n"
+#~ msgstr "Alt-O-%c bulundu! (%d)\n"
+
+#~ msgid "I got Alt-[-1-%c! (%d)\n"
+#~ msgstr "Alt-[-1-%c bulundu! (%d)\n"
+
+#~ msgid "I got Alt-[-2-%c! (%d)\n"
+#~ msgstr "Alt-[-2-%c bulundu! (%d)\n"
+
+#~ msgid "I got Alt-[-%c! (%d)\n"
+#~ msgstr "Alt-[-%c bulundu! (%d)\n"
+
+#~ msgid "I got Alt-%c! (%d)\n"
+#~ msgstr "Alt-%c bulundu! (%d)\n"
+
+#~ msgid "I got %c (%d)!\n"
+#~ msgstr "%c (%d) bulundu!\n"
+
+#~ msgid "Adding new syntax after 1st\n"
+#~ msgstr "Birinciden sonra yeni bir sözdizimi ekleniyor\n"
+
+#~ msgid "Starting a new syntax type\n"
+#~ msgstr "Yeni bir sözdizim tipine başlanıyor\n"
+
+#~ msgid "Starting a new colorstring for fg %d bg %d\n"
+#~ msgstr ""
+#~ "Yeni bir renkli yazıya %d ön plan rengi ve %d arka plan rengi ile "
+#~ "başlanıyor\n"
+
+#~ msgid "Adding new entry for fg %d bg %d\n"
+#~ msgstr ""
+#~ "Yeni bir girdi, %d ön plan rengi ve %d arka plan rengi ile ekleniyor\n"
+
+#~ msgid "%s: Read a comment\n"
+#~ msgstr "%s: Bir açıklama oku\n"
+
+#~ msgid "%s: Parsing option %s\n"
+#~ msgstr "%s: %s seçeneği ayrıştırılıyor\n"
+
+#~ msgid "set flag %d!\n"
+#~ msgstr "%d bayrağı atandı!\n"
+
+#~ msgid "Errors found in .nanorc file"
+#~ msgstr ".nanorc dosyası içerisinde hatalar bulundu"
+
+#~ msgid "Unable to open ~/.nanorc file, %s"
+#~ msgstr "~/.nanorc dosyası açılamıyor, %s"
+
+#~ msgid "\"%s...\" not found"
+#~ msgstr "\"%s...\" bulunamadı"
+
+#~ msgid "Invalid regex \"%s\""
+#~ msgstr "Geçersiz düzenli ifade \"%s\""
+
+#~ msgid "Search Cancelled"
+#~ msgstr "Arama Ä°ptal Edildi"
+
+#~ msgid "Replace Cancelled"
+#~ msgstr "DeÄŸiÅŸtirme Ä°ptal Edildi"
+
+#~ msgid "Replace failed: unknown subexpression!"
+#~ msgstr "Yerdeğiştirme başarısız oldu: bilinmeyen ifade parçası!"
+
+#~ msgid "Aborted"
+#~ msgstr "Ä°ptal edildi"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "Hadi ama, mantıklı olun"
+
+#~ msgid "actual_x for xplus=%d returns %d\n"
+#~ msgstr "actual_x, xplus=%d değeri için %d döndürdü\n"
+
+#~ msgid "Aha! '%c' (%d)\n"
+#~ msgstr "Aha! '%c' (%d)\n"
+
+#~ msgid "input '%c' (%d)\n"
+#~ msgstr "girdi '%c' (%d)\n"
+
+#~ msgid " File: ..."
+#~ msgstr " Dosya: ..."
+
+#~ msgid " DIR: ..."
+#~ msgstr " DÄ°ZÄ°N: ..."
+
+#~ msgid "Refusing 0 length regex match"
+#~ msgstr "0 uzunluktaki düzenli ifade eşi dikkate alınmadı"
+
+#~ msgid "Moved to (%d, %d) in edit buffer\n"
+#~ msgstr "Düzenleme arabelleği içine (%d, %d) taşındı\n"
+
+#~ msgid "I got \"%s\"\n"
+#~ msgstr "\"%s\" bulundu\n"
+
+#~ msgid "Dumping file buffer to stderr...\n"
+#~ msgstr "Dosya arabelleği stderr'a dökülüyor...\n"
+
+#~ msgid "Dumping cutbuffer to stderr...\n"
+#~ msgstr "Kesme arabelleği stderr'a dökülüyor...\n"
+
+#~ msgid "Dumping a buffer to stderr...\n"
+#~ msgstr "Arabellek stderr'a dökülüyor...\n"
+
+#~ msgid "Pico mode"
+#~ msgstr "Pico kipi"
diff --git a/po/uk.gmo b/po/uk.gmo
new file mode 100644
index 0000000..3f6b730
--- /dev/null
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
new file mode 100644
index 0000000..8527b04
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,2719 @@
+# l10n file 4 nano, ukrainian language
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Sergey A. Ribalchenko <fisher@obu.ck.ua>, 2001.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.1.99pre3\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2003-02-17 10:51+0300\n"
+"Last-Translator: Sergey A. Ribalchenko <fisher@obu.ck.ua>\n"
+"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=koi8-u\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: src/browser.c:220
+#, fuzzy
+msgid "Go To Directory"
+msgstr "äÏ äÉÒÅËÔÏÒ¦§"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "óËÁÓÏ×ÁÎÏ"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "îÅ ÍÏÖÕ Ð¦ÔÉ ÐÏÚÁ %s × ÏÂÍÅÖÅÎÏÍÕ ÒÅÖÉͦ"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, fuzzy, c-format
+msgid "Error reading %s: %s"
+msgstr "ðÏÇÁÎÉÊ ÒÑÄÏË ÃÉÔÕ×ÁÎÎÑ %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "îÅ ÍÏÖÕ ÐÅÒÅͦÓÔÉÔÉ ÄÉÒÅËÔÏÒ¦À"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr ""
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr ""
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "ðÏÛÕË"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [òÅÇúÁÌÅÖ]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [æÏÒÍ÷ÉÒ]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [îÁÚÁÄ]"
+
+# message
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "ä¦ÓÔÁÌÉÓÑ Ë¦ÎÃÑ ÆÁÊÌÁ, ÐÏÞÁÌÉ ÓÐÏÞÁÔËÕ"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "ãÅ ¤ÄÉÎÅ ÓЦ×ÐÁĦÎÎÑ"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr ""
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "îÅ ÍÏÖÕ ×ÓÔÁ×ÉÔÉ ÆÁÊÌ ÐÏÚÁ %s"
+
+#: src/files.c:234
+#, fuzzy
+msgid "No more open file buffers"
+msgstr "â¦ÌØÛ ÎÅÍÁ צÄËÒÉÔÉÈ ÆÁÊ̦×"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "ðÅÒÅÍËÎÕÔÏ ÄÏ %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "îÏ×ÉÊ âÕÆÅÒ"
+
+#: src/files.c:633
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄÏË (ÐÅÒÅÔ×ÏÒÅÎÏ Ú ÆÏÒÍÁÔÕ Mac)"
+msgstr[1] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄËÁ (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ Mac)"
+msgstr[2] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄË¦× (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ Mac)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄÏË (ÐÅÒÅÔ×ÏÒÅÎÏ Ú ÆÏÒÍÁÔÕ Mac)"
+msgstr[1] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄËÁ (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ Mac)"
+msgstr[2] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄË¦× (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ Mac)"
+
+#: src/files.c:644
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄÏË (ÐÅÒÅÔ×ÏÒÅÎÏ Ú ÆÏÒÍÁÔÕ Mac)"
+msgstr[1] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄËÁ (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ Mac)"
+msgstr[2] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄË¦× (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ Mac)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄÏË (ÐÅÒÅÔ×ÏÒÅÎÏ Ú ÆÏÒÍÁÔÕ Mac)"
+msgstr[1] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄËÁ (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ Mac)"
+msgstr[2] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄË¦× (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ Mac)"
+
+#: src/files.c:654
+#, fuzzy, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄÏË (ÐÅÒÅÔ×ÏÒÅÎÏ Ú ÆÏÒÍÁÔÕ DOS)"
+msgstr[1] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄËÁ (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ DOS)"
+msgstr[2] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄË¦× (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ DOS)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄÏË (ÐÅÒÅÔ×ÏÒÅÎÏ Ú ÆÏÒÍÁÔÕ DOS)"
+msgstr[1] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄËÁ (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ DOS)"
+msgstr[2] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄË¦× (ÐÅÒÅÔ×ÏÒÅÎÉÈ Ú ÆÏÒÍÁÔÕ DOS)"
+
+#: src/files.c:664
+#, fuzzy, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄÏË"
+msgstr[1] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄËÁ"
+msgstr[2] "ðÒÏÞÉÔÁÎÏ %d ÒÑÄ˦×"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "þÉÔÁ¤ÍÏ ÆÁÊÌ.."
+
+#: src/files.c:706
+msgid "New File"
+msgstr "îÏ×ÉÊ ÆÁÊÌ"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "\"%s\" ÎÅ ÚÎÁÊÄÅÎÏ"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "æÁÊÌ \"%s\" ¤ ÄÉÒÅËÔÏÒ¦¤À"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, fuzzy, c-format
+msgid "\"%s\" is a device file"
+msgstr "æÁÊÌ \"%s\" ¤ ÆÁÊÌÏÍ ÐÒÉÓÔÒÏÀ"
+
+#: src/files.c:817
+#, fuzzy, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "æÁÊÌ ÄÏ ×ÓÔÁ×ËÉ (× ÎÏ×ÉÊ ÂÕÆÅÒ) [×¦Ä %s] "
+
+#: src/files.c:819
+#, fuzzy, c-format
+msgid "Command to execute [from %s] "
+msgstr "ëÏÍÁÎÄÁ ÄÏ ×ÉËÏÎÁÎÎÑ "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "æÁÊÌ ÄÏ ×ÓÔÁ×ËÉ (× ÎÏ×ÉÊ ÂÕÆÅÒ) [×¦Ä %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "æÁÊÌ ÄÏ ×ÓÔÁ×ËÉ [×¦Ä %s] "
+
+#: src/files.c:1077
+#, fuzzy
+msgid "Key invalid in non-multibuffer mode"
+msgstr "îÅצÒÎÁ ËÎÏÐËÁ × ÎÅ-ÍÕÌØÔÉÂÕÆÅÒÎÏÍÕ ÒÅÖÉͦ"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÐÏÚÁ %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr ""
+
+#: src/files.c:1582 src/nano.c:701
+#, fuzzy
+msgid "Too many backup files?"
+msgstr ""
+"\n"
+"%s ÎÅ ÚÁÐÉÓÁÎÏ (ÎÁÄÔÏ ÂÁÇÁÔÏ ÒÅÚÅÒ×ÎÉÈ ÆÁÊ̦×?)\n"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, fuzzy, c-format
+msgid "Error writing %s: %s"
+msgstr "ðÏÇÁÎÉÊ ÒÑÄÏË ÃÉÔÕ×ÁÎÎÑ %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr ""
+
+#: src/files.c:1900
+#, fuzzy, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "úÁÐÉÓÁÎÏ %d ÒÑÄÏË"
+msgstr[1] "úÁÐÉÓÁÎÏ %d ÒÑÄËÁ"
+msgstr[2] "úÁÐÉÓÁÎÏ %d ÒÑÄ˦×"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [ÆÏÒÍÁÔ DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [ÆÏÒÍÁÔ Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [òÅÚÅÒ×]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "äÏÄÁÔÉ ÷ÉĦÌÅÎÅ ÄÏ ÆÁÊÌÕ (× ÐÏÞÁÔÏË ÆÁÊÌÁ)"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "äÏÄÁÔÉ ÷ÉĦÌÅÎÅ ÄÏ ÆÁÊÌÕ"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "úÁÐÉÓÁÔÉ ÷ÉĦÌÅÎÅ ÄÏ ÆÁÊÌÕ"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "¶Í'Ñ ÆÁÊÌÕ ÄÌÑ ÄÏÄÁ×ÁÎÎÑ"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "¶Í'Ñ ÆÁÊÌÕ ÄÌÑ ÄÏÄÁ×ÁÎÎÑ"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "¶Í'Ñ ÆÁÊÌÕ ÄÏ ÚÁÐÉÓÕ"
+
+#: src/files.c:2153
+#, fuzzy
+msgid "File exists, OVERWRITE ? "
+msgstr "æÁÊÌ ¦ÓÎÕ¤, ðåòåðéóáôé ?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr ""
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(ÄÁ̦)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"îÁÖͦÔØ Enter ÝÏ ÐÒÏÄÏ×ÖÉÔÉ ÚÁ×ÁÎÔÁÖÅÎÎÑ nano\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "óËÁÓÕ×ÁÔÉ"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "úÁͦÎÁ"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "îÅ úÁͦÝÁÔÉ"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "òÅÇúÁÌÅÖ"
+
+#: src/global.c:421
+#, fuzzy
+msgid "Backwards"
+msgstr " [îÁÚÁÄ]"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "æÏÒÍ÷ÉÒ"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+#, fuzzy
+msgid "PrevHstory"
+msgstr "¶ÓÔÏÒ¦Ñ"
+
+#: src/global.c:452
+#, fuzzy
+msgid "NextHstory"
+msgstr "¶ÓÔÏÒ¦Ñ"
+
+#: src/global.c:453
+#, fuzzy
+msgid "Go To Text"
+msgstr "äÏ òÑÄËÁ"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+#, fuzzy
+msgid "WhereIs Next"
+msgstr "ðÏÛÕË"
+
+#: src/global.c:457
+#, fuzzy
+msgid "First File"
+msgstr "ðÅÒÛÉÊ òÑÄÏË"
+
+#: src/global.c:458
+#, fuzzy
+msgid "Last File"
+msgstr "ïÓÔÁÎÎ¦Ê òÑÄÏË"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "äÏ æÁÊ̦×"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "ÆÏÒÍÁÔ DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "ÆÏÒÍÁÔ Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "äÏÄÁÔÉ"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "äÏÄÁÔÉ(0)"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "úÒÏÂÉÔÉ ÒÅÚÅÒ×ÎÕ ËÏЦÀ"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "÷ÉËÏÎÁÔÉ ËÏÍÁÎÄÕ"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "äÏ äÉÒÅËÔÏÒ¦§"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "äÏÐÏÍÏÇÁ"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "÷ÉȦÄ"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "ðÏÛÕË"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "ðÏÐ.óÔÏÒ."
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "îÁÓÔ.óÔÏÒ."
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "ðÅÒÛÉÊ òÑÄÏË"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "ïÓÔÁÎÎ¦Ê òÑÄÏË"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "ðÒÉÚÕÐÉÎËÁ -"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr ""
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr ""
+
+#: src/global.c:491
+#, fuzzy
+msgid "FullJstify"
+msgstr "÷ÉÒ¦×ÎÀ×ÁÎÎÑ"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "ðÅÒÅÍÁÌÀ×ÁÔÉ"
+
+#: src/global.c:495
+#, fuzzy
+msgid "Insert File"
+msgstr "îÁÓÔÕÐÎÉÊ ÆÁÊÌ"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "äÏ òÑÄËÁ"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "÷ÉÒ¦×ÎÑÔÉ ÐÏÔÏÞÎÉÊ ÁÂÚÁÃ"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "óËÁÓÕ×ÁÔÉ ÐÏÔÏÞÎÕ ÆÕÎËæÀ"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr ""
+
+#: src/global.c:509
+#, fuzzy
+msgid "Close the current file buffer / Exit from nano"
+msgstr "úÁËÒÉÔÉ ÚÁ×ÁÎÔÁÖÅÎÉÊ ÚÁÒÁÚ ÆÁÊÌ/÷ÉÊÔÉ ¦Ú nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "÷ÉÈ¦Ä Ú nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "úÁÐÉÓÁÔÉ ÐÏÔÏÞÎÉÊ ÆÁÊÌ ÎÁ ÄÉÓË"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "÷ÓÔÁ×ÉÔÉ ¦ÎÛÉÊ ÆÁÊÌ ÄÏ ÐÏÔÏÞÎÏÇÏ"
+
+#: src/global.c:519
+#, fuzzy
+msgid "Search for a string or a regular expression"
+msgstr "æÏÒÍÁÌØΦ ×ÉÒÁÚÉ (regexp)"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "ðÅÒÅÊÔÉ ÄÏ ÐÏÐÅÒÅÄÎØÏÇÏ ÅËÒÁÎÕ"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "ðÅÒÅÊÔÉ ÄÏ ÎÁÓÔÕÐÎÏÇÏ ÅËÒÁÎÕ"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "÷ÉÒ¦ÚÁÔÉ ÐÏÔÏÞÎÉÊ ÒÑÄÏË ÔÁ ÐÏͦÓÔÉÔÉ ÊÏÇÏ ÄÏ \"ËÉÛÅΦ\""
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "óËÁÓÕ×ÁÔÉ ×ÉÒ¦ÚÁÎÎÑ ÔÁ ×ÓÔÁ×ÉÔÉ ÚͦÓÔ \"ËÉÛÅΦ\" ÄÏ ÐÏÔÏÞÎÏÇÏ ÒÑÄËÁ"
+
+#: src/global.c:527
+#, fuzzy
+msgid "Display the position of the cursor"
+msgstr "ðÏËÁÚÁÔÉ ÐÏÚÉæÀ ËÕÒÓÏÒÁ"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "÷ÉËÌÉËÁÔÉ ÐÒÏÇÒÁÍÕ ÐÏÛÕËÕ ÄÒÕËÁÒÓØËÉÈ ÐÏÍÉÌÏË (ÑËÝÏ ¤)"
+
+#: src/global.c:531
+#, fuzzy
+msgid "Replace a string or a regular expression"
+msgstr "æÏÒÍÁÌØΦ ×ÉÒÁÚÉ (regexp)"
+
+#: src/global.c:532
+#, fuzzy
+msgid "Go to line and column number"
+msgstr "ðÅÒÅÊÔÉ ÄÏ ×ËÁÚÁÎÏÇÏ ÒÑÄËÁ"
+
+#: src/global.c:534
+#, fuzzy
+msgid "Mark text at the cursor position"
+msgstr "ðÏͦÔÉÔÉ ÔÅËÓÔ Ð¦Ä ÐÏÔÏÞÎÏÀ ÐÏÚÉæ¤À ËÕÒÓÏÒÁ"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr ""
+
+#: src/global.c:537
+#, fuzzy
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "÷ÉÒ¦ÚÁÔÉ ÐÏÔÏÞÎÉÊ ÒÑÄÏË ÔÁ ÐÏͦÓÔÉÔÉ ÊÏÇÏ ÄÏ \"ËÉÛÅΦ\""
+
+#: src/global.c:538
+#, fuzzy
+msgid "Indent the current line"
+msgstr "äÏÄÁÔÉ ÄÏ ÐÏÔÏÞÎÏÇÏ ÆÁÊÌÕ"
+
+#: src/global.c:539
+#, fuzzy
+msgid "Unindent the current line"
+msgstr "äÏÄÁÔÉ ÄÏ ÐÏÔÏÞÎÏÇÏ ÆÁÊÌÕ"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "÷ÐÅÒÅÄ ÎÁ ÏÄÎÕ Ì¦ÔÅÒÕ"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "îÁÚÁÄ ÎÁ ÏÄÎÕ Ì¦ÔÅÒÕ"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "÷ÐÅÒÅÄ ÎÁ ÏÄÎÅ ÓÌÏ×Ï"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "îÁÚÁÄ ÎÁ ÏÄÎÅ ÓÌÏ×Ï"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "ðÅÒÅÊÔÉ ÄÏ ÐÏÐÅÒÅÄÎØÏÇÏ ÅËÒÁÎÕ"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "ðÅÒÅͦÓÔÉÔÉÓÑ ÎÁ ÒÑÄÏË ÎÉÖÞÅ"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "ðÅÒÅͦÓÔÉÔÉÓÑ ÄÏ ÐÏÞÁÔËÕ ÐÏÔÏÞÎÏÇÏ ÒÑÄËÁ"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "ðÅÒÅͦÓÔÉÔÉÓÑ ÎÁ ˦ÎÅÃØ ÐÏÔÏÞÎÏÇÏ ÒÑÄËÁ"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr ""
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr ""
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "ðÅÒÅͦÓÔÉÔÉÓÑ ÄÏ ÐÅÒÛÏÇÏ ÒÑÄËÁ ÆÁÊÌÕ"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "ðÅÒÅͦÓÔÉÔÉÓÑ ÄÏ ÏÓÔÁÎÎØÏÇÏ ÒÑÄËÁ ÆÁÊÌÕ"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "îÅÍÁ צÄÐÏצÄÎϧ ÄÕÖËÉ"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr ""
+
+#: src/global.c:572
+#, fuzzy
+msgid "Switch to the previous file buffer"
+msgstr "ðÅÒÅÊÔÉ ÄÏ ÐÏÐÅÒÅÄÎØÏÇÏ ÅËÒÁÎÕ"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr ""
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr ""
+
+#: src/global.c:579
+#, fuzzy
+msgid "Insert a tab at the cursor position"
+msgstr "÷ÓÔÁ×ÉÔÉ ÓÉÍ×ÏÌ CR (ÐÏ×ÅÒÎÅÎÎÑ ÇÏ̦×ËÉ) × ÐÏÚ. ËÕÒÓÏÒÁ"
+
+#: src/global.c:581
+#, fuzzy
+msgid "Insert a newline at the cursor position"
+msgstr "÷ÓÔÁ×ÉÔÉ ÓÉÍ×ÏÌ CR (ÐÏ×ÅÒÎÅÎÎÑ ÇÏ̦×ËÉ) × ÐÏÚ. ËÕÒÓÏÒÁ"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "÷ÉÄÁÌÉÔÉ Ì¦ÔÅÒÕ Ð¦Ä ËÕÒÓÏÒÏÍ"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "÷ÉÄÁÌÉÔÉ Ì¦ÔÅÒÕ Ú̦×Á ×¦Ä ËÕÒÓÏÒÁ"
+
+#: src/global.c:588
+#, fuzzy
+msgid "Cut from the cursor position to the end of the file"
+msgstr "óËÁÓÕ×ÁÔÉ ×ÉÒ¦ÚÁÎÎÑ ÔÁ ×ÓÔÁ×ÉÔÉ ÚͦÓÔ \"ËÉÛÅΦ\" ÄÏ ÐÏÔÏÞÎÏÇÏ ÒÑÄËÁ"
+
+#: src/global.c:591
+#, fuzzy
+msgid "Justify the entire file"
+msgstr "÷ÉÒ¦×ÎÑÔÉ ÐÏÔÏÞÎÉÊ ÁÂÚÁÃ"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr ""
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "ðÅÒÅÍÁÌÀ×ÁÔÉ ÐÏÔÏÞÎÉÊ ÅËÒÁÎ"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+#, fuzzy
+msgid "Toggle the case sensitivity of the search"
+msgstr "òÅÇÉÓÔÒÏÚÁÌÅÖÎÉÊ ÐÏÛÕË"
+
+#: src/global.c:605
+#, fuzzy
+msgid "Reverse the direction of the search"
+msgstr "ðÏËÁÚÁÔÉ ÐÏÚÉæÀ ËÕÒÓÏÒÁ"
+
+#: src/global.c:609
+#, fuzzy
+msgid "Toggle the use of regular expressions"
+msgstr "æÏÒÍÁÌØΦ ×ÉÒÁÚÉ (regexp)"
+
+#: src/global.c:613
+#, fuzzy
+msgid "Recall the previous search/replace string"
+msgstr "òÅÄÁÇÕ×ÁÔÉ ÐÏÐÅÒÅÄÎ¦Ê ÒÑÄÏË ÐÏÛÕËÕ/ÚÁͦÎÉ"
+
+#: src/global.c:615
+#, fuzzy
+msgid "Recall the next search/replace string"
+msgstr "òÅÄÁÇÕ×ÁÔÉ ÐÏÐÅÒÅÄÎ¦Ê ÒÑÄÏË ÐÏÛÕËÕ/ÚÁͦÎÉ"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "äÏ ÐÅÒÅÇÌÑÄÁÞÁ ÆÁÊ̦×"
+
+#: src/global.c:621
+#, fuzzy
+msgid "Toggle the use of DOS format"
+msgstr "úÁÐÉÓ ÆÁÊÌÕ Õ ÆÏÒÍÁÔ¦ DOS"
+
+#: src/global.c:622
+#, fuzzy
+msgid "Toggle the use of Mac format"
+msgstr "úÁÐÉÓ ÆÁÊÌÕ Õ ÆÏÒÍÁÔ¦ Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr ""
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr ""
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr ""
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "÷ÉËÏÎÁÔÉ ÚÏ×ΦÛÎÀ ËÏÍÁÎÄÕ"
+
+#: src/global.c:633
+#, fuzzy
+msgid "Toggle the use of a new buffer"
+msgstr "ðÅÒÅÍÉËÎÕÔÉ ÒÅÖÉÍ ×ÓÔÁ×ËÉ × ÎÏ×ÉÊ ÂÕÆÅÒ"
+
+#: src/global.c:636
+#, fuzzy
+msgid "Exit from the file browser"
+msgstr "äÏ ÐÅÒÅÇÌÑÄÁÞÁ ÆÁÊ̦×"
+
+#: src/global.c:638
+#, fuzzy
+msgid "Go to the first file in the list"
+msgstr "ðÅÒÅͦÓÔÉÔÉÓÑ ÄÏ ÐÅÒÛÏÇÏ ÒÑÄËÁ ÆÁÊÌÕ"
+
+#: src/global.c:640
+#, fuzzy
+msgid "Go to the last file in the list"
+msgstr "ðÅÒÅͦÓÔÉÔÉÓÑ ÄÏ ÏÓÔÁÎÎØÏÇÏ ÒÑÄËÁ ÆÁÊÌÕ"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "ðÅÒÅͦÓÔÉÔÉÓÑ ÄÏ ÏÓÔÁÎÎØÏÇÏ ÒÑÄËÁ ÆÁÊÌÕ"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "ðÅÒÅͦÓÔÉÔÉÓÑ ÄÏ ÐÅÒÛÏÇÏ ÒÑÄËÁ ÆÁÊÌÕ"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "äÏ äÉÒÅËÔÏÒ¦§"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "úÁËÒÉÔÉ"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "úÁÐÉÓÁÔÉ"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "÷ÉÒ¦×ÎÀ×ÁÎÎÑ"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "þÉÔ. æÁÊÌ"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "÷ÉÒ¦ÚÁÔÉ"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "óËÁÓ÷ÉÒ¦×Î"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+#, fuzzy
+msgid "UnCut Text"
+msgstr "óËÁÓ÷ÉÒ¦Ú"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "ðÏÚÉæÑ"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "ðÒÁ×ÏÐÉÓ"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "ðÏͦÔÉÔÉ"
+
+#: src/global.c:777
+#, fuzzy
+msgid "Copy Text"
+msgstr "÷ÉÒ¦ÚÁÔÉ"
+
+#: src/global.c:780
+#, fuzzy
+msgid "Indent Text"
+msgstr "÷ÉÒ¦ÚÁÔÉ"
+
+#: src/global.c:783
+#, fuzzy
+msgid "Unindent Text"
+msgstr "óËÁÓ÷ÉÒ¦Ú"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "÷ÐÅÒÅÄ"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "îÁÚÁÄ"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "îÁÓÔóÌÏ×Ï"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "ðÏÐóÌÏ×Ï"
+
+#: src/global.c:824
+#, fuzzy
+msgid "Prev Line"
+msgstr "ðÏÐ.óÔÏÒ."
+
+#: src/global.c:827
+#, fuzzy
+msgid "Next Line"
+msgstr "îÁÓÔÕÐÎÉÊ ÆÁÊÌ"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "ðÏÞÁÔÏË"
+
+#: src/global.c:833
+msgid "End"
+msgstr "ë¦ÎÅÃØ"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "úÎÁÊÔÉ äÒÕÇÕ äÕÖËÕ"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr ""
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr ""
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "ðÏÐÅÒÅÄÎ¦Ê æÁÊÌ"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "îÁÓÔÕÐÎÉÊ ÆÁÊÌ"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr ""
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "ôÁÂÕÌÑæÑ"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "÷×ÏÄ"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "÷ÉÄÁÌÉÔÉ"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "úÁ¦Ê"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr ""
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr ""
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "òÅÖÉÍ ÄÏÐÏÍÏÇÉ"
+
+#: src/global.c:1369
+#, fuzzy
+msgid "Constant cursor position display"
+msgstr "ðÏÓÔ¦ÊÎÁ ÐÏÚÉÃ¦Ñ ËÕÒÓÏÒÁ"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr ""
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "ðÌÁ×ÎÁ ÐÒÏËÒÕÔËÁ"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr ""
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "ð¦ÄÓצÞÕ×ÁÎÎÑ ÓÉÎÔÁËÓÉÓÕ ËÏÌØÏÒÏÍ"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr ""
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "á×ÔÏ-×ÉÒ¦×ÎÀ×ÁÎÎÑ"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "÷ÉÒ¦ÚÁÔÉ ÄÏ Ë¦ÎÃÑ"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr ""
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr ""
+
+#: src/global.c:1389
+#, fuzzy
+msgid "Backup files"
+msgstr "úÒÏÂÉÔÉ ÒÅÚÅÒ×ÎÕ ËÏЦÀ"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "äÅ˦ÌØËÁ ÆÁÊÌÏ×ÉÈ ÂÕÆÅÒ¦×"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "ð¦ÄÔÒÉÍËÁ ÍÉÛ¦"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "îÅÍÁ ÐÅÒÅÔ×ÏÒÀ×ÁÎÎÑ ¦Ú DOS/Mac ÆÏÒÍÁÔÕ"
+
+#: src/global.c:1397
+#, fuzzy
+msgid "Suspension"
+msgstr "ðÒÉÚÕÐÉÎËÁ -"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr ""
+
+#: src/help.c:236
+#, fuzzy
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"ôÅËÓÔ ÄÏÐÏÍÏÇÉ ËÏÍÁÎÄÉ ÐÏÛÕËÕ\n"
+"\n"
+" ÷×ÅĦÔØ ÓÌÏ×Á ÁÂÏ Ì¦ÔÅÒÉ Ñ˦ ÷É ÛÕËÁ¤ÔÅ, ÔÁ ÎÁÔÉÓΦÔØ Enter. ñËÝÏ ÄÌÑ "
+"××ÅÄÅÎϧ ÷ÁÍÉ ÕÍÏ×É ÚÎÁÊÄÅÔØÓÑ ×¦ÄÐÏצÄÎÉÊ Ú¦Ç, ÅËÒÁÎ ÐÅÒÅͦÓÔÉÔØÓÑ × "
+"ÐÏÌÏÖÅÎÎÑ ÐÏÂÌÉÚÕ ÃØÏÇÏ Ú¦ÇÕ.\n"
+"\n"
+" ðÏÐÅÒÅÄÎÑ ÕÍÏ×Á Ú¦ÇÕ Ú'Ñ×ÉÔØÓÑ Õ Ë×ÁÄÒÁÔÎÉÈ ÄÕÖËÁÈ Ð¦ÓÌÑ ÚÁÐÒÏÛÅÎÎÑ "
+"\"ðÏÛÕË:\". îÁÔÉÓÎÅÎÎÑ Enter ÂÅÚ ÒÅÄÁÇÕ×ÁÎÎÑ ÂÕÄØ-ÑËÏÇÏ ÔÅËÓÔÕ ÐÒÉÚ×ÅÄÅ ÄÏ "
+"ÐÏÛÕËÕ ÐÏÐÅÒÅÄÎØϧ ÕÍÏ×É Ú¦ÇÕ.\n"
+"\n"
+" îÁÓÔÕÐΦ ÆÕÎËæÏÎÁÌØΦ ËÌÁצۦ ÎÁÑ×Φ Õ ÒÅÖÉͦ ðÏÛÕËÕ:\n"
+"\n"
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"ôÅËÓÔ ÄÏÐÏÍÏÇÉ ÒÅÖÉÍÕ äÏ_ÒÑÄËÁ\n"
+"\n"
+" ÷×ÅĦÔØ ÎÏÍÅÒ ÒÑÄËÁ ÄÏ ÑËÏÇÏ ÷É ÂÁÖÁ¤ÔŠĦÓÔÁÔÉÓØ ÔÁ ÎÁÔÉÓΦÔØ Enter. ñËÝÏ "
+"˦ÌØ˦ÓÔØ ÒÑÄË¦× Õ ÆÁÊ̦ ÍÅÎÛÁ ÚÁ ÞÉÓÌÏ ÑËÅ ÷É ××ÅÌÉ, ÷É ÐÏÐÁÄÅÔÅ ÎÁ "
+"ÏÓÔÁÎÎ¦Ê ÒÑÄÏË ÆÁÊÌÕ.\n"
+"\n"
+" îÁÓÔÕÐΦ ÆÕÎËæÏÎÁÌØΦ ËÌÁצۦ ÎÁÑ×Φ Õ ÒÅÖÉͦ äÏ_ÒÑÄËÁ:\n"
+"\n"
+
+#: src/help.c:260
+#, fuzzy
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"ôÅËÓÔ ÄÏÐÏÍÏÇÉ ÒÅÖÉÍÕ ÷ÓÔÁ×ÉÔÉ æÁÊÌ\n"
+"\n"
+" ÷×ÅĦÔØ ¦Í'Ñ ÆÁÊÌÕ ÄÏ ×ÓÔÁ×ËÉ × ÐÏÔÏÞÎÉÊ ÆÁÊÌÏ×ÉÊ ÂÕÆÅÒ × ÐÏÔÏÞÎÕ ÐÏÚÉæÀ "
+"ËÕÒÓÏÒÕ.\n"
+"\n"
+" ñËÝÏ ÷ÁÛ nano Ú¦ÂÒÁÎÉÊ ¦Ú ЦÄÔÒÉÍËÏÀ ÄÅ˦ÌØËÏÈ ÆÁÊÌÏ×ÉÈ ÂÕÆÅÒ¦×, ÔÁ ÃÑ "
+"ÍÏÖÌÉצÓÔØ ×צÍËÎÅÎÁ ÞÅÒÅÚ ÏÐæ§ ËÏÍÁÎÄÎÏÇÏ ÒÑÄËÕ -F ÁÂÏ --multibuffer, ÁÂÏ "
+"ÞÅÒÅÚ ËÏͦÎÁæÀ Meta-F, ÁÂÏ ÚÁ ÄÏÐÏÍÏÇÏÀ ÆÁÊÌÕ nanorc, ÆÁÊÌ ×ÓÔÁ×ÉÔØÓÑ × "
+"ÏËÒÅÍÉÊ ÆÁÊÌÏ×ÉÊ ÂÕÆÅÒ (ËÏÒÉÓÔÕÊÔÅÓØ Meta-< ÔÁ > ÝÏ ÐÅÒÅÍÉËÁÔÉÓØ Í¦Ö "
+"ÂÕÆÅÒÁÍÉ).\n"
+"\n"
+" ñËÝÏ ÷ÁÍ ÐÏÔÒ¦ÂÅÎ ÏËÒÅÍÉÊ ÐÕÓÔÉÊ ÂÕÆÅÒ, ÐÒÏÓÔÏ ÖͦÔØ Enter × ÒÑÄËÕ "
+"ÚÁÐÒÏÛÅÎÎÑ ÂÅÚ ×ÐÉÓÕ×ÁÎÎÑ ¦ÍÅΦ ÆÁÊÌÕ, ÁÂÏ ×ÐÉÛ¦ÔØ ¦Í'Ñ ÎŦÓÎÕÀÞÏÇÏ ÆÁÊÌÕ ÔÁ "
+"ÎÁÔÉÓΦÔØ Enter.\n"
+"\n"
+" îÁÓÔÕÐΦ ÆÕÎËæÏÎÁÌØΦ ËÌÁצۦ ÎÁÑ×Φ × ÒÅÖÉͦ ÷ÓÔÁ×ÉÔÉ æÁÊÌ:\n"
+"\n"
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:275
+#, fuzzy
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"ôÅËÓÔ ÄÏÐÏÍÏÇÉ ÒÅÖÉÍÕ úÂÅÒÅÇÔÉ æÁÊÌ\n"
+"\n"
+" ÷×ÅĦÔØ ¦Í'Ñ Ð¦Ä ÑËÉÍ ÷É ÂÁÖÁ¤ÔÅ ÚÂÅÒÅÇÔÉ ÐÏÔÏÞÎÉÊ ÆÁÊÌ ÔÁ ÎÁÔÉÓΦÔØ "
+"Enter.\n"
+"\n"
+" ñËÝÏ ÷É ËÏÒÉÓÔÕ¤ÔÅÓØ ËÏÄÏÍ ×¦ÄͦÔËÉ ¦Ú Ctrl-^ ÔÁ ÐÏͦÔÉÌÉ ÄÅÑËÉÊ ÔÅËÓÔ, "
+"Ú'Ñ×ÉÔØÓÑ ÚÁÐÉÔ ¦Ú ЦÄËÁÚËÏÀ, ÞÉ ÚÁÐÉÓÁÔÉ ÏÂÒÁÎÉÊ ÂÌÏË × ÏËÒÅÍÉÊ ÆÁÊÌ. ýÏ "
+"ÚÍÅÎÛÉÔÉ ÛÁÎÓÉ ÐÅÒÅÚÁÐÉÓÕ ÐÏÔÏÞÎÏÇÏ ÆÁÊÌÕ ÌÉÛÅ ÞÁÓÔÉÎÏÀ ÃØÏÇÏ ÆÁÊÌÕ, ¦Í'Ñ "
+"ÐÏÔÏÞÎÏÇÏ ÆÁÊÌÕ ÎÅ ÂÕÄÅ ¦Í'ÑÍ ÐÏ ÚÁÍÏ×ÞÅÎÎÀ × ÃØÏÍÕ ÒÅÖÉͦ.\n"
+"\n"
+" îÁÓÔÕÐΦ ÆÕÎËæÏÎÁÌØΦ ËÌÁצۦ ÎÁÑ×Φ × ÒÅÖÉͦ úÂÅÒÅÇÔÉ æÁÊÌ\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"ôÅËÓÔ ÄÏÐÏÍÏÇÉ ÒÅÖÉÍÕ ðÅÒÅÇÌÑÄÁÞ æÁÊ̦×\n"
+"\n"
+" ðÅÒÅÇÌÑÄÁÞ ÆÁÊÌ¦× ×ÉËÏÒÉÓÔÏ×Õ¤ÔØÓÑ ÄÌÑ ×¦ÚÕÁÌØÎÏÇÏ ÐÅÒÅÇÌÑÄÕ ÚͦÓÔÕ "
+"ÄÉÒÅËÔÏÒ¦§ ÔÁ ÏÂÉÒÁÎÎÑ ÐÏÔÒ¦ÂÎÏÇÏ ÆÁÊÌÕ ÄÌÑ ÚÁÐÉÓÕ ÁÂÏ ÞÉÔÁÎÎÑ. ÷É ÍÁ¤ÔÅ "
+"ËÏÒÉÓÔÕ×ÁÔÉÓØ ËÌÁצÛÁÍÉ ËÅÒÕ×ÁÎÎÑ ËÕÒÓÏÒÏÍ ÔÁ PageUp/PageDown ÄÌÑ "
+"ÐÅÒÅÓÕ×ÁÎÎÑ ËÒ¦ÚØ ÆÁÊÌÉ, ÔÁ ÏÂÉÒÁÔÉ ÐÏÔÒ¦ÂÎÉÊ ÆÁÊÌ ÁÂÏ ×ÈÏÄÉÔÉ ÄÏ ÏÂÒÁÎϧ "
+"ÄÉÒÅËÔÏÒ¦§ ËÌÁצÛÅÀ S ÁÂÏ Enter. ýÏ ÐÅÒÅͦÓÔÉÔÉÓØ ÎÁ ÄÉÒÅËÔÏÒ¦À ×ÉÝÅ, "
+"ÏÂÅÒ¦ÔØ ÄÉÒÅËÔÏÒ¦À \"..\" × ÐÏÞÁÔËÕ ÓÐÉÓËÕ ÆÁÊ̦×.\n"
+"\n"
+" îÁÓÔÕÐΦ ÆÕÎËæÏÎÁÌØΦ ËÌÁצۦ ÎÁÑ×Φ × ÒÅÖÉͦ ðÅÒÅÇÌÑÄÁÞ æÁÊ̦×:\n"
+"\n"
+
+#: src/help.c:302
+#, fuzzy
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"ôÅËÓÔ ÄÏÐÏÍÏÇÉ ËÏÍÁÎÄÉ ÐÏÛÕËÕ\n"
+"\n"
+" ÷×ÅĦÔØ ÓÌÏ×Á ÁÂÏ Ì¦ÔÅÒÉ Ñ˦ ÷É ÛÕËÁ¤ÔÅ, ÔÁ ÎÁÔÉÓΦÔØ Enter. ñËÝÏ ÄÌÑ "
+"××ÅÄÅÎϧ ÷ÁÍÉ ÕÍÏ×É ÚÎÁÊÄÅÔØÓÑ ×¦ÄÐÏצÄÎÉÊ Ú¦Ç, ÅËÒÁÎ ÐÅÒÅͦÓÔÉÔØÓÑ × "
+"ÐÏÌÏÖÅÎÎÑ ÐÏÂÌÉÚÕ ÃØÏÇÏ Ú¦ÇÕ.\n"
+"\n"
+" ðÏÐÅÒÅÄÎÑ ÕÍÏ×Á Ú¦ÇÕ Ú'Ñ×ÉÔØÓÑ Õ Ë×ÁÄÒÁÔÎÉÈ ÄÕÖËÁÈ Ð¦ÓÌÑ ÚÁÐÒÏÛÅÎÎÑ "
+"\"ðÏÛÕË:\". îÁÔÉÓÎÅÎÎÑ Enter ÂÅÚ ÒÅÄÁÇÕ×ÁÎÎÑ ÂÕÄØ-ÑËÏÇÏ ÔÅËÓÔÕ ÐÒÉÚ×ÅÄÅ ÄÏ "
+"ÐÏÛÕËÕ ÐÏÐÅÒÅÄÎØϧ ÕÍÏ×É Ú¦ÇÕ.\n"
+"\n"
+" îÁÓÔÕÐΦ ÆÕÎËæÏÎÁÌØΦ ËÌÁצۦ ÎÁÑ×Φ Õ ÒÅÖÉͦ ðÏÛÕËÕ:\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:315
+#, fuzzy
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"ôÅËÓÔ ÄÏÐÏÍÏÇÉ ÒÅÖÉÍÕ ÐÅÒÅÇÌÑÄÁÞÁ ÆÁÊÌ¦× äÏ_ÄÉÒÅËÔÏÒ¦§\n"
+"\n"
+" ÷×ÅĦÔØ ¦Í'Ñ ÄÉÒÅËÔÏÒ¦§, ÑËÕ ÷É ÂÁÖÁ¤ÔÅ ÐÅÒÅÇÌÑÎÕÔÉ.\n"
+"\n"
+" ñËÝÏ tab-ÄÏÐÏ×ÎÅÎÎÑ ÎÅ ÚÁÂÏÒÏÎÅÎÏ, ÷É ÍÏÖÅÔÅ ËÏÒÉÓÔÕ×ÁÔÉÓØ ËÌÁצÛÅÀ TAB ÄÌÑ "
+"(ÓÐÒÏÂÉ) Á×ÔÏÍÁÔÉÞÎÏÇÏ ÄÏÐÏ×ÎÅÎÎÑ ÎÁÚ×É ÄÉÒÅËÔÏÒ¦§.\n"
+"\n"
+" îÁÓÔÕÐΦ ÆÕÎËæÏÎÁÌØΦ ËÌÁצۦ ÎÁÑ×Φ × ÒÅÖÉͦ ÐÅÒÅÇÌÑÄÁÞÁ ÆÁÊÌ¦× "
+"äÏ_äÉÒÅËÔÏÒ¦§:\n"
+"\n"
+
+#: src/help.c:328
+#, fuzzy
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"ôÅËÓÔ ÄÏÐÏÍÏÇÉ ÒÅÖÉÍÕ ðÒÁ×ÏÐÉÓ\n"
+"\n"
+" ðÒÏÇÒÁÍÁ ÐÅÒÅצÒËÉ ÐÒÁ×ÏÐÉÓÕ ÐÅÒÅצÒѤ ÏÒÆÏÇÒÁƦÀ ×ÓØÏÇÏ ÔÅËÓÔÕ × ÐÏÔÏÞÎÏÍÕ "
+"ÆÁÊ̦. ëÏÌÉ ÚÕÓÔÒ¦ÞÁ¤ÔØÓÑ ÎÅÚÎÁÊÏÍÅ ÓÌÏ×Ï, ×ÏÎÏ ×ÉĦÌѤÔØÓÑ ÔÁ Ú'Ñ×ÌѤÔØÓÑ "
+"ÍÏÖÌÉצÓÔØ ×¦ÄÒÅÄÁÇÕ×ÁÔÉ ÐÒÏÐÏÎÏ×ÁÎÕ ÚÁͦÎÕ. ðÏÔ¦Í Ú'Ñ×ÉÔØÓÑ ÚÁÐÉÔ ÎÁ ÚÁͦÎÕ "
+"ËÏÖÎÏÇÏ ×ÈÏÄÖÅÎÎÑ ÃØÏÇÏ ÎÅÚÎÁÊÏÍÏÇÏ ÓÌÏ×Á × ÐÏÔÏÞÎÏÍÕ ÆÁÊ̦.\n"
+"\n"
+" îÁÓÔÕÐΦ ¦ÎÛ¦ ÆÕÎËæ§ ÎÁÑ×Φ × ÒÅÖÉͦ ðÒÁ×ÏÐÉÓ:\n"
+"\n"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"ôÅËÓÔ ÄÏÐÏÍÏÇÉ ÒÅÖÉÍÕ úÏ×ΦÛÎÑ ëÏÍÁÎÄÁ\n"
+"\n"
+" ãÅ ÍÅÎÀ ÄÏÚ×ÏÌѤ ×ÁÍ ×ÓÔÁ×ÉÔÉ ×É×¦Ä ËÏÍÁÎÄÉ, ÝÏ ×ÉËÏÎÕ×ÁÔÉÍÅÔØÓÑ × "
+"ÏÂÏÌÏÎæ, × ÐÏÔÏÞÎÉÊ ÂÕÆÅÒ (ÁÂÏ Õ ÎÏ×ÉÊ ÂÕÆÅÒ × ÂÁÇÁÔÏ-ÂÕÆÅÒÎÏÍÕ ÒÅÖÉͦ).\n"
+"\n"
+" îÁÓÔÕÐΦ ËÌÁצۦ ÎÁÑ×Φ Õ ÃØÏÍÕ ÒÅÖÉͦ:\n"
+"\n"
+
+#: src/help.c:356
+#, fuzzy
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+" ÔÅËÓÔ ÄÏÐÏÍÏÇÉ nano\n"
+"\n"
+" òÅÄÁËÔÏÒ nano ÒÏÚÒÏÂÌÅÎÏ ÄÌÑ ÅÍÕÌÑæ§ ÆÕÎËæÏÎÁÌØÎÏÓÔ¦ ÔÁ ÐÒÏÓÔÏÔÉ "
+"×ÉËÏÒÉÓÔÁÎÎÑ ÒÅÄÁËÔÏÒÕ UW Pico. òÅÄÁËÔÏÒ ÐÏĦÌѤÔØÓÑ ÎÁ 4 ÇÏÌÏ×Φ ÓÅËæ§: "
+"×ÅÒÈÎ¦Ê ÒÑÄÏË Í¦ÓÔÉÔØ ×ÅÒÓ¦À ÐÒÏÇÒÁÍÉ, ¦Í'Ñ ÐÏÔÏÞÎÏÇÏ ÆÁÊÌÕ, ÝÏ ÒÅÄÁÇÕ¤ÔØÓÑ, "
+"ÔÁ ¦ÎÆÏÒÍÁæÀ ÐÒÏ ÔÅ, ÞÉ ×ÎÅÓÅÎÏ ÂÕÄØ-Ñ˦ ÚͦÎÉ ÄÏ ÆÁÊÌÕ. îÁÓÔÕÐÎÁ ÓÅËÃ¦Ñ - "
+"ÃÅ ÇÏÌÏ×ΊצËÎÏ ÒÅÄÁÇÕ×ÁÎÎÑ, × ÑËÏÍÕ (ÑËÝÏ Õ×ÁÖÎÏ ÐÒÉÄÉ×ÉÔÉÓØ) ÍÏÖÎÁ "
+"ÐÏÂÁÞÉÔÉ ÚͦÓÔ ÐÏÔÏÞÎÏÇÏ ÆÁÊÌÕ. òÑÄÏË ÓÔÁÔÕÔÕ ¤ 3-Í ÚÎÉÚÕ ÒÑÄËÏÍ ÔÁ ͦÓÔÉÔØ "
+"×ÁÖÌÉצ ÐÏצÄÏÍÌÅÎÎÑ. ïÓÔÁÎΦ Ä×Á ÒÑÄËÉ Í¦ÓÔÑÔØ ÎÁʦÌØÛ ÚÁÇÁÌØΦ ËÏͦÎÁæ§ "
+"ËÌÁ×¦Û ÒÅÄÁËÔÏÒÕ.\n"
+"\n"
+" îÏÔÁÔËÉ ÄÏ ËÏͦÎÁæÊ: ËÏͦÎÁæ§ Ú ËÌÁצÛÅÀ Control ÐÏËÁÚÁΦ ¦Ú ÓÉÍ×ÏÌÏÍ "
+"'^' ÔÁ ××ÏÄÑÔØÓÑ Ú ÎÁÔÉÓÎÕÔÏÀ ËÌÁצÛÅÀ Control (Ctrl). Esc-ËÏͦÎÁæ§ "
+"ÐÏËÁÚÁΦ ÓÉÍ×ÏÌÏÍ 'M' ÔÁ ××ÏÄÑÔØÓÑ Ú ×ÉËÏÒÉÓÔÁÎÎÑÍ ËÌÁצۦ Esc, Alt ÁÂÏ Meta "
+"× ÚÁÌÅÖÎÏÓÔ¦ ×¦Ä ÷ÁÛϧ ËÌÁצÁÔÕÒÉ. îÁÓÔÕÐΦ ËÏͦÎÁæ§ ÄÏÓÔÕÐΦ × ÇÏÌÏ×ÎÏÍÕ "
+"צËΦ ÒÅÄÁÇÕ×ÁÎÎÑ. äÏÄÁÔËÏצ ËÏͦÎÁæ§ ÐÏËÁÚÁΦ Õ ÄÕÖËÁÈ:\n"
+"\n"
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "ÄÏÚ×ÏÌÉÔÉ/ÚÁÂÏÒÏÎÉÔÉ"
+
+#: src/nano.c:587
+#, fuzzy
+msgid "Key invalid in view mode"
+msgstr "îÅצÒÎÁ ËÎÏÐËÁ × ÒÅÖÉͦ VIEW"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"âÕÆÅÒ ÚÁÐÉÓÁÎÏ ÄÏ %s\n"
+
+#: src/nano.c:697
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"âÕÆÅÒ ÚÁÐÉÓÁÎÏ ÄÏ %s\n"
+
+#: src/nano.c:700
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"âÕÆÅÒ ÚÁÐÉÓÁÎÏ ÄÏ %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "òÏÚÍ¦Ò ×¦ËÎÁ ÚÁÍÁÌÉÊ ÄÌÑ Nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+
+#: src/nano.c:819
+#, fuzzy, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "ïÐæ§\t\täÏ×Ǧ ÏÐæ§\t\túÎÁÞÅÎÎÑ\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "ïÐæÑ\t\túÎÁÞÅÎÎÑ\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "ðÏËÁÚÁÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr ""
+
+#: src/nano.c:826
+#, fuzzy
+msgid "Start at line LINE, column COLUMN"
+msgstr "ðÏÞÁÔÉ Ú ÒÑÄËÁ ÎÏÍÅÒ òñäïë"
+
+#: src/nano.c:828
+#, fuzzy
+msgid "Enable smart home key"
+msgstr "äÏÚ×ÏÌÉÔÉ ÍÉÛÕ"
+
+#: src/nano.c:829
+#, fuzzy
+msgid "Save backups of existing files"
+msgstr "òÏÂÉÔÉ ÒÅÚÅÒ×Φ ËÏЦ§ ¦ÓÎÕÀÞÉÈ ÆÁÊÌ¦× ÐÒÉ ÚÁÐÉÓÕ"
+
+#: src/nano.c:830
+#, fuzzy
+msgid "-C <dir>"
+msgstr "-o [ÄÉÒ]"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr ""
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr ""
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr ""
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr ""
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "äÏÚ×ÏÌÉÔÉ ÄÅ˦ÌØËÁ ÆÁÊÌÏ×ÉÈ ÂÕÆÅÒ¦×"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "÷ÅÓÔÉ ÖÕÒÎÁÌ ÔÁ ÞÉÔÁÔÉ ¦ÓÔÏÒ¦À ÕÍÏ× ÐÏÛÕËÕ/ÚÁͦÎÉ"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "îÅ ÄÉ×ÉÔÉÓÑ × nanorc ÆÁÊÌÉ"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr ""
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr ""
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "îÅÍÁ ÐÅÒÅÔ×ÏÒÀ×ÁÎÎÑ ¦Ú DOS/Mac ÆÏÒÍÁÔÕ"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr ""
+
+#: src/nano.c:860
+#, fuzzy
+msgid "-Q <str>"
+msgstr "-Q [ÒÑÄÏË]"
+
+#: src/nano.c:860
+#, fuzzy
+msgid "--quotestr=<str>"
+msgstr "--quotestr=[ÒÑÄÏË]"
+
+#: src/nano.c:861
+#, fuzzy
+msgid "Quoting string"
+msgstr "òÑÄÏË ÐÏÓÉÌÁÎÎÑ, ÐÏ ÚÁÍÏ×ÞÅÎÎÀ \"> \""
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr ""
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+#, fuzzy
+msgid "-T <#cols>"
+msgstr "-r [#ÓÔÏ×Ð]"
+
+#: src/nano.c:868
+#, fuzzy
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=[ÞÉÓ]"
+
+#: src/nano.c:869
+#, fuzzy
+msgid "Set width of a tab to #cols columns"
+msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÒÏÚÍ¦Ò ÔÁÂÕÌÑæ§ =ÞÉÓ"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr ""
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "ðÏËÁÚÁÔÉ ×ÅÒÓ¦À ÔÁ ×ÉÊÔÉ"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr ""
+
+#: src/nano.c:880
+#, fuzzy
+msgid "-Y <str>"
+msgstr "-Y [ÒÑÄÏË]"
+
+#: src/nano.c:880
+#, fuzzy
+msgid "--syntax=<str>"
+msgstr "--syntax [ÒÑÄÏË]"
+
+#: src/nano.c:881
+#, fuzzy
+msgid "Syntax definition to use for coloring"
+msgstr "÷ÉÚÎÁÞÅÎÎÑ ÓÉÎÔÁËÓÉÓÕ ÄÏ ×ÉËÏÒÉÓÔÁÎÎÑ"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "ðÏÓÔ¦ÊÎÏ ÐÏËÁÚÕ×ÁÔÉ ÐÏÚÉæÀ ËÕÒÓÏÒÁ"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr ""
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "á×ÔÏÍÁÔÉÞÎÏ ×ÉÒ¦×ÎÀ×ÁÔÉ ÎÏצ ÒÑÄËÉ"
+
+#: src/nano.c:889
+#, fuzzy
+msgid "Cut from cursor to end of line"
+msgstr "äÏÚ×ÏÌÉÔÉ ^K ×ÉÒ¦ÚÁÔÉ ×¦Ä ËÕÒÓÏÒÁ ÄÏ Ë¦ÎÃÑ ÒÑÄËÁ"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "îÅ ÊÔÉ ÚÁ Ó¦Í̦ÎËÁÍÉ, ÁÌÅ ÐÅÒÅÐÉÓÕ×ÁÔÉ"
+
+#: src/nano.c:894
+#, fuzzy
+msgid "Enable the use of the mouse"
+msgstr "äÏÚ×ÏÌÉÔÉ ÍÉÛÕ"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "-o <dir>"
+msgstr "-o [ÄÉÒ]"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=[ÄÉÒ]"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÒÏÂÏÞÉÊ ËÁÔÁÌÏÇ"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "úÂÅÒÅÇÔÉ ËÌÁצÛÉ XON (^Q) ÔÁ XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+#, fuzzy
+msgid "-r <#cols>"
+msgstr "-r [#ÓÔÏ×Ð]"
+
+#: src/nano.c:905
+#, fuzzy
+msgid "--fill=<#cols>"
+msgstr "--fill=[#ÓÔÏ×Ð]"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr ""
+
+#: src/nano.c:909
+#, fuzzy
+msgid "-s <prog>"
+msgstr "-s [ÐÒÏÇ]"
+
+#: src/nano.c:909
+#, fuzzy
+msgid "--speller=<prog>"
+msgstr "--speller=[ÐÒÏÇ]"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "áÌØÔÅÒÎÁÔÉ×ÎÁ ÐÒÏÇÒÁÍÁ ÐÅÒÅצÒËÉ ÐÒÁ×ÏÐÉÓÕ"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "á×ÔÏúÁÐÉÓ ÐÒÉ ×ÉÈÏĦ, ÂÅÚ ÚÁÐÉÔÁÎØ"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+#, fuzzy
+msgid "View mode (read-only)"
+msgstr "òÅÖÉÍ ÐÅÒÅÇÌÑÄÁÎÎÑ (Ô¦ÌØËÉ ÞÉÔÁÎÎÑ)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "îÅ ÚÁÇÏÒÔÁÔÉ ÄÏ×Ǧ ÒÑÄËÉ"
+
+#: src/nano.c:922
+#, fuzzy
+msgid "Don't show the two help lines"
+msgstr "îÅ ÐÏËÁÚÕ×ÁÔÉ ×¦ËÎÏ ÄÏÐÏÍÏÇÉ"
+
+#: src/nano.c:923
+#, fuzzy
+msgid "Enable suspension"
+msgstr "äÏÚ×ÏÌÉÔÉ ÐÒÉÚÕÐÉÎËÕ"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr ""
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(¦ÇÎÏÒÏ×ÁÎÏ, ÄÌÑ ÓÕͦÓÎÏÓÔ¦ ¦Ú Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano ×ÅÒÓ¦§ %s (Ú¦ÂÒÁÎÅ %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " å-ÐÏÛÔÁ: nano@nano-editor.org\tôÅÎÅÔÁ: http://www.nano-editor.org"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" ú¦ÂÒÁÎÏ Ú ÏÐæÑÍÉ:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "÷ÉÂÁÞÔÅ, ЦÄÔÒÉÍËÁ 椧 ÆÕÎËæ§ ÂÕÌÏ ÚÁÂÏÒÏÎÅÎÏ"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "úÂÅÒÅÇÔÉ ÚͦÎÅÎÉÊ ÂÕÆÅÒ (÷¦ÄÐÏצÄØ \"î¦\" óëáóõ´ ÷ó¶ úí¶îé) ? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "ðÒÉÊÎÑÔÏ SIGHUP ÁÂÏ SIGTERM\n"
+
+#: src/nano.c:1204
+#, fuzzy, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "ëÏÒÉÓÔÕÊÔÅÓÑ ËÏÍÁÎÄÏÀ \"fg\" ÄÌÑ ÔÏÇÏ, ÝÏ ÐÏ×ÅÒÎÕÔÉÓÑ ÄÏ nano"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "ÄÏÚ×ÏÌÅÎÏ"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "ÚÁÂÏÒÏÎÅÎÏ"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr ""
+
+#: src/nano.c:1674
+#, fuzzy
+msgid "XON ignored, mumble mumble"
+msgstr "XON ÉÇÎÏÒÏ×ÁÎÏ, ÍÕÒ-ÍÕÒ-ÍÕÒ"
+
+#: src/nano.c:1679
+#, fuzzy
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF ÉÇÎÏÒÏ×ÁÎÏ, ÐÒÉÍ-ЦÍ-ЦÍ"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, fuzzy, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "ÚÁÐÒÏÛÅÎÉÊ ÒÏÚÍ¦Ò ÔÁÂÕÌÑæ§ %d ¤ ÎÅËÏÒÅËÔÎÉÍ"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, fuzzy, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "ÚÁÐÉÔÁÎÉÊ ÒÏÚÍ¦Ò ÚÁÐÏ×ÎÅÎÎÑ %d ¤ ÎÅËÏÒÅËÔÎÉÍ"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "YyôÔ"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "NnîÎ"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Aa÷×"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "ôÁË"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "÷ÓÅ"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "î¦"
+
+#: src/rcfile.c:130
+#, fuzzy, c-format
+msgid "Error in %s on line %lu: "
+msgstr "ðÏÍÉÌËÁ × %s Õ ÒÑÄËÕ %d: "
+
+#: src/rcfile.c:185
+#, fuzzy, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "ÁÒÇÕÍÅÎÔ %s ÍÁ¤ ÚÁ˦ÎÞÕ×ÁÔÉÓÑ ÎÁ \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+#, fuzzy
+msgid "Regex strings must begin and end with a \" character"
+msgstr ""
+"ÒÑÄËÉ ÆÏÒÍÁÌØÎÉÈ ×ÉÒÁÚ¦× ÐÏ×ÉÎΦ ÐÏÞÉÎÁÔÉÓØ ÔÁ ÚÁ˦ÎÞÕ×ÁÔÉÓØ ÓÉÍ×ÏÌÏÍ '\"'\n"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "îŠצÒÎÉÊ ÒÅÇÕÌÑÒÎÉÊ ×ÉÒÁÚ \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "÷¦ÄÓÕÔÎÑ ÎÁÚ×Á ÓÉÎÔÁËÓÉÓÕ"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr ""
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr ""
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "÷¦ÄÓÕÔÎÑ ÎÁÚ×Á ÓÉÎÔÁËÓÉÓÕ"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ %s ÄÌÑ ÚÁÐÉÓÕ: %s"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, fuzzy, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "îÅ ÍÏÖÕ ×ÉËÏÎÁÔÉ \"%s\""
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, fuzzy, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"ËÏÌ¦Ò %s ÎÅ ÚÒÏÚÕͦÌÉÊ.\n"
+"îÁÑ×Φ ËÏÌØÏÒÉ - \"green\", \"red\", \"blue\", \n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" ÔÁ \n"
+"\"black\", Ú ÏÐæÏÎÁÌØÎÉÍ ÐÒÅƦËÓÏÍ \"bright\".\n"
+
+#: src/rcfile.c:647
+#, fuzzy
+msgid "Cannot add a color command without a syntax command"
+msgstr "îÅ ÍÏÖÕ ÄÏÄÁÔÉ ËÏÍÁÎÄÕ ËÏÌØÏÒÕ ÂÅÚ ÒÑÄËÁ ÓÉÎÔÁËÓÉÓÕ"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "÷¦ÄÓÕÔÎÑ ÎÁÚ×Á ËÏÌØÏÒÕ"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr ""
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr ""
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" ÐÏÔÒÅÂÕ¤ צÄÐÏצÄÎÏÇÏ \"end=\""
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "îÅ ÍÏÖÕ ÄÏÄÁÔÉ ËÏÍÁÎÄÕ ËÏÌØÏÒÕ ÂÅÚ ÒÑÄËÁ ÓÉÎÔÁËÓÉÓÕ"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr ""
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr ""
+
+#: src/rcfile.c:966
+#, fuzzy, c-format
+msgid "Command \"%s\" not understood"
+msgstr "ËÏÍÁÎÄÁ %s ÎÅ ÚÒÏÚÕͦÌÁ"
+
+#: src/rcfile.c:972
+#, fuzzy
+msgid "Missing flag"
+msgstr "÷¦ÄÓÕÔÎÑ ÎÁÚ×Á ËÏÌØÏÒÕ"
+
+#: src/rcfile.c:994
+#, fuzzy, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "ÏÐÃ¦Ñ %s ÐÏÔÒÅÂÕ¤ ÁÒÇÕÍÅÎÔÁ"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr ""
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr ""
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr ""
+
+#: src/rcfile.c:1114
+#, fuzzy, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "ÓËÉÎØÔÅ ÆÌÁÇ %d!\n"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr ""
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "ñ ÎÅ ÍÏÖÕ ÚÎÁÊÔÉ Ó×ÏÀ ÄÏͦ×ËÕ! öÁÈ!"
+
+#: src/search.c:96
+#, fuzzy, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "\"%s\" ÎÅ ÚÎÁÊÄÅÎÏ"
+
+#: src/search.c:205
+#, fuzzy
+msgid " (to replace) in selection"
+msgstr " (ÄÏ ÚÁͦÎÉ)"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (ÄÏ ÚÁͦÎÉ)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "úÁͦÎÉÔÉ ÃÅÊ ÐÒÉͦÒÎÉË?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "úÁͦÎÉÔÉ ÎÁ"
+
+#: src/search.c:1004
+#, fuzzy, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "úÁͦÎÅÎÏ %d ×ÈÏÄÖÅÎÎÑ"
+msgstr[1] "úÁͦÎÅΦ %d ×ÈÏÄÖÅÎÎÑ"
+msgstr[2] "úÁͦÎÅÎÏ %d ×ÈÏÄÖÅÎØ"
+
+#: src/search.c:1034
+#, fuzzy
+msgid "Enter line number, column number"
+msgstr "÷×ÅĦÔØ ÎÏÍÅÒ ÒÑÄËÁ"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr ""
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "îÅ ÄÕÖËÁ"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "îÅÍÁ צÄÐÏצÄÎϧ ÄÕÖËÉ"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "í¦ÔËÕ ×ÓÔÁÎÏ×ÌÅÎÏ"
+
+#: src/text.c:58
+#, fuzzy
+msgid "Mark Unset"
+msgstr "í¦ÔËÕ ÚÎÑÔÏ"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "îÁÓÔÕÐÎÉÊ ÆÁÊÌ"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr ""
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "îÁÓÔÕÐÎÉÊ ÆÁÊÌ"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr " (ÄÏ ÚÁͦÎÉ)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "îÅ ÍÏÖÕ ÐÒÁÃÀ×ÁÔÉ ¦Ú ËÁÎÁÌÏÍ (pipe)"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "îÅ ÍÏÖÕ ÚÒÏÂÉÔÉ fork()"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "ðÏÇÁÎÉÊ ÒÑÄÏË ÃÉÔÕ×ÁÎÎÑ %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "íÏÖÕ ÚÁÒÁÚ ÖÅ óËÁÓ÷ÉÒ¦×ÎÀ×ÁÎÎÑ!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "òÅÄÁÇÕ×ÁÔÉ ÚÁͦÎÕ"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ËÁÎÁÌ (pipe)"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "óÔ×ÏÒÀÀ ÐÅÒÅÌ¦Ë ÏÒÆÏÇÒÁƦÞÎÉÈ ÐÏÍÉÌÏË, ÚÁÖĦÔØ Â-ÌÁÓËÁ..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "îÅ ÍÏÖÕ ÏÔÒÉÍÁÔÉ ÒÏÚÍ¦Ò ÂÕÆÅÒÕ ËÁÎÁÌÕ"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "ðÅÒÅצÒËÕ ÏÒÆÏÇÒÁƦ§ ÚÁ×ÅÒÛÅÎÏ"
+
+#: src/text.c:2815
+#, fuzzy, c-format
+msgid "Error invoking \"%s\""
+msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ \"spell\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "ðÅÒÅצÒËÁ ÏÒÆÏÇÒÁƦ§ ÎÅ ×ÄÁÌÁÓÑ: %s"
+
+#: src/text.c:2962
+#, fuzzy, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "ðÅÒÅצÒËÁ ÏÒÆÏÇÒÁƦ§ ÎÅ ×ÄÁÌÁÓÑ: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr ""
+
+#: src/text.c:3031
+#, fuzzy
+msgid "In Selection: "
+msgstr "äÏÄÁÔÉ ÷ÉĦÌÅÎÅ ÄÏ ÆÁÊÌÕ"
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "ÎÅ×ÉÓÔÁÞÁ¤ צÌØÎϧ ÐÁÍ'ÑÔ¦ ÄÌÑ nano!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr ""
+
+#: src/winio.c:2149 src/winio.c:2153
+#, fuzzy
+msgid "Modified"
+msgstr " úͦÎÅÎÏ "
+
+#: src/winio.c:2150
+#, fuzzy
+msgid "View"
+msgstr " ðÅÒÅÇÌÑÄ "
+
+#: src/winio.c:2164
+#, fuzzy
+msgid "DIR:"
+msgstr " äÉÒ: "
+
+#: src/winio.c:2171
+#, fuzzy
+msgid "File:"
+msgstr "æÁÊÌ: "
+
+#: src/winio.c:3360
+#, fuzzy, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "ÒÑÄÏË %ld/%ld (%d%%), ÓÔÏ×ÐÞÉË %lu/%lu (%d%%, ̦ÔÅÒÁ %lu/%ld (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "ôÅËÓÔÏ×ÉÊ ÒÅÄÁËÔÏÒ nano"
+
+#: src/winio.c:3493
+#, fuzzy
+msgid "version"
+msgstr "×ÅÒÓ¦Ñ "
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "óÔ×ÏÒÅÎÏ ÄÌÑ ÷ÁÓ:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "ïÓÏÂÌÉ×Á ÐÏÄÑËÁ:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "The Free Software Foundation (æÏÎÄ ÷¦ÌØÎÏÇÏ ðÒÏÇÒÁÍÎÏÇÏ ÚÁÂÅÚÐÅÞÅÎÎÑ)"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "äÌÑ ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "ÔÁ ¦ÎÛÉÍ ËÏÇÏ ÍÉ ÚÁÂÕÌÉ..."
+
+#: src/winio.c:3499
+#, fuzzy
+msgid "Thank you for using nano!"
+msgstr "äÑËÕ¤ÍÏ ÷ÁÍ ÚÁ ÔÅ, ÝÏ ÏÂÒÁÌÉ nano!\n"
+
+#~ msgid "add_to_cutbuffer() called with inptr->data = %s\n"
+#~ msgstr "add_to_cutbuffer() ×ÉËÌÉËÁÎÏ Ú inptr->data = %s\n"
+
+#~ msgid "Blew away cutbuffer =)\n"
+#~ msgstr "\"ËÉÛÅÎÀ\" (cutbuffer) ÚÄÕÌÏ ×¦ÔÒÏÍ =)\n"
+
+#~ msgid "File to insert into new buffer [from ./] "
+#~ msgstr "æÁÊÌ ÄÏ ×ÓÔÁ×ËÉ (× ÎÏ×ÉÊ ÂÕÆÅÒ) [×¦Ä ./] "
+
+#~ msgid "File to insert [from ./] "
+#~ msgstr "æÁÊÌ ÄÏ ×ÓÔÁ×ËÉ [×¦Ä ./] "
+
+#~ msgid "filename is %s\n"
+#~ msgstr "¦Í'Ñ ÆÁÊÌÕ: %s\n"
+
+#~ msgid "%s: free'd a node, YAY!\n"
+#~ msgstr "%s: êÏÊ.. ×ÕÚÏÌ ÚצÌØÎÅÎÏ!\n"
+
+#~ msgid "%s: free'd last node.\n"
+#~ msgstr "%s: ÚצÌØÎÅÎÏ ÏÓÔÁÎÎØÏÇÏ ×ÕÚÌÁ.\n"
+
+#~ msgid "Could not read %s for backup: %s"
+#~ msgstr "îÅ ÍÏÖÕ ÐÒÏÞÉÔÁÔÉ %s ÄÌÑ ÒÅÚÅÒ×Õ×ÁÎÎÑ: %s"
+
+#~ msgid "Couldn't write backup: %s"
+#~ msgstr "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÒÅÚÅÒ×: %s"
+
+#~ msgid "Backing up %s to %s\n"
+#~ msgstr "òÏÂÌÀ ÒÅÚÅÒ×ÎÕ ËÏЦÀ ÆÁÊÌÕ %s, ÒÅÚÅÒ×ÎÉÊ ÆÁÊÌ: %s\n"
+
+#~ msgid "Could not set permissions %o on backup %s: %s"
+#~ msgstr "îÅ ÍÏÖÕ ×ÓÔÁÎÏ×ÉÔÉ ÐÒÁ×Á %o ÎÁ ÒÅÚÅÒ×ÎÉÊ ÆÁÊÌ %s: %s"
+
+#~ msgid "Could not set owner %d/group %d on backup %s: %s"
+#~ msgstr "îÅ ÍÏÖÕ ×ÓÔÁÎÏ×ÉÔÉ ×ÌÁÓÎÉËÁ %d/ÇÒÕÐÕ %d ÎÁ ÒÅÚÅÒ×ÎÉÊ ÆÁÊÌ %s: %s"
+
+#~ msgid "Could not set access/modification time on backup %s: %s"
+#~ msgstr ""
+#~ "îÅ ÍÏÖÕ ×ÓÔÁÎÏ×ÉÔÉ ÞÁÓ ÏÓÔÁÎØϧ ÚͦÎÉ/Ú×ÅÒÔÁÎÎÑ ÎÁ ÒÅÚÅÒ×ÎÉÊ ÆÁÊÌ %s: %s"
+
+#~ msgid "Could not open file for writing: %s"
+#~ msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÆÁÊÌ ÄÌÑ ÚÁÐÉÓÕ: %s"
+
+#~ msgid "Wrote >%s\n"
+#~ msgstr "úÁÐÉÓÁÎÏ >%s\n"
+
+#~ msgid "Could not close %s: %s"
+#~ msgstr "îÅ ÍÏÖÕ ÚÁÞÉÎÉÔÉ %s: %s"
+
+#~ msgid "Could not reopen %s: %s"
+#~ msgstr "îÅ ×ÄÁ¤ÔØÓÑ ÐÅÒÅצÄËÒÉÔÉ %s: %s"
+
+#~ msgid "Could not open %s for prepend: %s"
+#~ msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ %s ÄÌÑ ÚÁÐÉÓÕ: %s"
+
+#~ msgid "Could not set permissions %o on %s: %s"
+#~ msgstr "îÅ ÍÏÖÕ ×ÓÔÁÎÏ×ÉÔÉ ÐÒÁ×Á %o ÎÁ %s: %s"
+
+#~ msgid "Can't open \"%s\": %s"
+#~ msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ \"%s\": %s"
+
+#~ msgid "Goto Cancelled"
+#~ msgstr "óËÁÓÏ×ÁÎÏ"
+
+#~ msgid "Unable to open ~/.nano_history file, %s"
+#~ msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÆÁÊÌ ~/.nano_history, %s"
+
+#~ msgid "Unable to write ~/.nano_history file, %s"
+#~ msgstr "îÅ ×ÄÁ¤ÔØÓÑ ÚÁÐÉÓÁÔÉ ÆÁÊÌ ~/.nano_history, %s"
+
+#~ msgid "Writing file in DOS format"
+#~ msgstr "úÁÐÉÓ ÆÁÊÌÕ Õ ÆÏÒÍÁÔ¦ DOS"
+
+#~ msgid "Writing file in Mac format"
+#~ msgstr "úÁÐÉÓ ÆÁÊÌÕ Õ ÆÏÒÍÁÔ¦ Mac"
+
+#~ msgid "Backing up file"
+#~ msgstr "òÏÂÉÔÉ ÒÅÚÅÒ×ÎÕ ËÏЦÀ ÆÁÊÌÁ"
+
+#~ msgid "Auto wrap"
+#~ msgstr "á×ÔÏ ÚÁÇÏÒÔÁÎÎÑ"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "÷ÉËÌÉËÁÔÉ ÍÅÎÀ ÄÏÐÏÍÏÇÉ"
+
+#~ msgid "Unjustify after a justify"
+#~ msgstr "óËÁÓÕ×ÁÔÉ ÏÓÔÁÎΤ ×ÉÒ¦×ÎÀ×ÁÎÎÑ"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "úÁͦÎÉÔÉ ÔÅËÓÔ Õ ÍÅÖÁÈ ÒÅÄÁËÔÏÒÁ"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "ûÕËÁÔÉ ÔÅËÓÔ × ÍÅÖÁÈ ÒÅÄÁËÔÏÒÕ"
+
+#~ msgid "Move up one line"
+#~ msgstr "ð¦ÄÎÑÔÉÓÑ ×ÇÏÒÕ ÎÁ ÏÄÉÎ ÒÑÄÏË"
+
+#~ msgid "Insert a tab character"
+#~ msgstr "÷ÓÔÁ×ÉÔÉ ÓÉÍ×ÏÌ ÔÁÂÕÌÑæ§"
+
+#~ msgid "Make the current search or replace case (in)sensitive"
+#~ msgstr "úÒÏÂÉÔÉ ÐÏÔÏÞÎÉÊ ÐÏÛÕË ÁÂÏ ÚÁͦÎÕ (ÎÅ)ÚÁÌÅÖÎÉÍ ×¦Ä ÒÅǦÓÔÒÕ Ì¦ÔÅÒ"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "äÏÄÁÔÉ ÄÏ ÐÏÔÏÞÎÏÇÏ ÆÁÊÌÕ (× ÐÏÞÁÔÏË ÆÁÊÌÁ)"
+
+#~ msgid "Search backwards"
+#~ msgstr "ûÕËÁÔÉ ÎÁÚÁÄ"
+
+#~ msgid "Write file out in DOS format"
+#~ msgstr "úÁÐÉÓ ÆÁÊÌÕ Õ ÆÏÒÍÁÔ¦ DOS"
+
+#~ msgid "Write file out in Mac format"
+#~ msgstr "úÁÐÉÓ ÆÁÊÌÕ Õ ÆÏÒÍÁÔ¦ Mac"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "úÒÏÂÉÔÉ ÒÅÚÅÒ×ÎÕ ËÏЦÀ ÆÁÊÌÕ ÐÒÉ ÚÂÅÒ¦ÇÁÎΦ"
+
+#~ msgid "Find other bracket"
+#~ msgstr "úÎÁÊÔÉ ÄÒÕÇÕ ÄÕÖËÕ"
+
+#~ msgid "Open previously loaded file"
+#~ msgstr "÷¦ÄËÒÉÔÉ ÐÏÐÅÒÅÄÎ¦Ê ÆÁÊÌ"
+
+#~ msgid "Open next loaded file"
+#~ msgstr "÷¦ÄËÒÉÔÉ ÎÁÓÔÕÐÎÉÊ ÆÁÊÌ"
+
+#~ msgid "Up"
+#~ msgstr "÷ÇÏÒÕ"
+
+#~ msgid "Down"
+#~ msgstr "÷ÎÉÚ"
+
+#~ msgid "Direction"
+#~ msgstr "îÁÐÒÑÍÏË"
+
+#~ msgid "Space"
+#~ msgstr "ðÒϦÌ"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "÷ÉËÏÒÉÓÔÁÎÎÑ: nano [+òñäïë] [ÄÏ×Ǧ ÏÐæ§ GNU] [ÏÐæ§] [ÆÁÊÌ]\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "÷ÉËÏÒÉÓÔÁÎÎÑ: nano [+òñäïë] [ÏÐæÑ] [ÆÁÊÌ]\n"
+#~ "\n"
+
+#~ msgid "+LINE"
+#~ msgstr "+òñäïë"
+
+#~ msgid "Use alternate keypad routines"
+#~ msgstr "÷ÖÉ×ÁÔÉ ÁÌØÔÅÒÎÁÔÉ×Φ ЦÄÐÒÏÇÒÁÍÉ ÄÌÑ keypad"
+
+#~ msgid "Do regular expression searches"
+#~ msgstr "ðÏÛÕË ÐÏ ÆÏÒÍÁÌØÎÏÍÕ ×ÉÒÁÚÕ (regexp)"
+
+#~ msgid "-T [num]"
+#~ msgstr "-T [ÞÉÓ]"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÚÁÇÏÒÔÁÎÎÑ ÒÑÄË¦× × ÐÏÚÉæ§ #ÓÔÏ×Ð"
+
+#~ msgid "current->data now = \"%s\"\n"
+#~ msgstr "current->data ÚÁÒÁÚ = \"%s\"\n"
+
+#~ msgid "After, data = \"%s\"\n"
+#~ msgstr "ð¦ÓÌÑ, ÄÁΦ = \"%s\"\n"
+
+#~ msgid "Could not create a temporary filename: %s"
+#~ msgstr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÔÉÍÞÁÓÏ×Õ ÎÁÚ×Õ ÄÌÑ ÆÁÊÌÕ: %s"
+
+#~ msgid "Spell checking failed: unable to write temp file!"
+#~ msgstr ""
+#~ "ðÅÒÅצÒËÁ ÏÒÆÏÇÒÁƦ§ ÎÅ ×ÄÁÌÁÓÑ: ÎÅÍÏÖÌÉ×Ï ÚÁÐÉÓÁÔÉ ÔÉÍÞÁÓÏ×ÉÊ ÆÁÊÌ!"
+
+#~ msgid "Cannot resize top win"
+#~ msgstr "îÅ ÍÏÖÕ ÚͦÎÉÔÉ ÒÏÚÍ¦Ò ×ÅÒÈÎØÏÇÏ ×¦ËÎÁ"
+
+#~ msgid "Cannot move top win"
+#~ msgstr "îÅ ÍÏÖÕ ÐÅÒÅͦÓÔÉÔÉ ×ÅÒÈÎØÏÇÏ ×¦ËÎÏ"
+
+#~ msgid "Cannot resize edit win"
+#~ msgstr "îÅ ÍÏÖÕ ÚͦÎÉÔÉ ÒÏÚÍ¦Ò ×¦ËÎÁ ÒÅÄÁÇÕ×ÁÎÎÑ"
+
+#~ msgid "Cannot move edit win"
+#~ msgstr "îÅ ÍÏÖÕ ÐÅÒÅͦÓÔÉÔÉ ×¦ËÎÏ ÒÅÄÁÇÕ×ÁÎÎÑ"
+
+#~ msgid "Cannot resize bottom win"
+#~ msgstr "îÅ ÍÏÖÕ ÚͦÎÉÔÉ ÒÏÚÍ¦Ò ÎÉÖÎØÏÇÏ ×¦ËÎÁ"
+
+#~ msgid "Cannot move bottom win"
+#~ msgstr "îÅ ÍÏÖÕ ÐÅÒÅͦÓÔÉÔÉ ÎÉÖΤ צËÎÏ"
+
+#~ msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
+#~ msgstr "ÐÏͦÞÅÎÏ ÇÌÀË NumLock'Á. äÏÄÁÔËÏ×Á ËÌÁצÁÔÕÒÁ ÍÏÖÅ ÎÅ ÐÒÁÃÀ×ÁÔÉ"
+
+#~ msgid "Tab size is too small for nano...\n"
+#~ msgstr "òÏÚÍ¦Ò ÔÁÂÕÌÑæ§ ÚÁÍÁÌÉÊ ÄÌÑ nano...\n"
+
+#~ msgid "Main: set up windows\n"
+#~ msgstr "Main: ×ÓÔÁÎÏ×ÉÔÉ ×¦ËÎÁ\n"
+
+#~ msgid "Main: bottom win\n"
+#~ msgstr "Main: ÎÉÖΤ צËÎÏ\n"
+
+#~ msgid "Main: open file\n"
+#~ msgstr "Main: צÄËÒÉÔÉ ÆÁÊÌ\n"
+
+#~ msgid "AHA! %c (%d)\n"
+#~ msgstr "áÇÁ! %c (%d)\n"
+
+#~ msgid "I got Alt-O-%c! (%d)\n"
+#~ msgstr "ñ ЦÊÍÁ× Alt-O-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-1-%c! (%d)\n"
+#~ msgstr "ñ ЦÊÍÁ× Alt-[-1-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-2-%c! (%d)\n"
+#~ msgstr "ñ ЦÊÍÁ× Alt-[-2-%c! (%d)\n"
+
+#~ msgid "I got Alt-[-%c! (%d)\n"
+#~ msgstr "ñ ЦÊÍÁ× Alt-[-%c! (%d)\n"
+
+#~ msgid "I got Alt-%c! (%d)\n"
+#~ msgstr "ñ ЦÊÍÁ× Alt-%c! (%d)\n"
+
+#~ msgid "I got %c (%d)!\n"
+#~ msgstr "ñ ЦÊÍÁ× %c (%d)!\n"
+
+#~ msgid "Adding new syntax after 1st\n"
+#~ msgstr "äÏÄÁ¤ÍÏ ÎÏ×ÉÊ ÓÉÎÔÁËÓ Ð¦ÓÌÑ ÐÅÒÛÏÇÏ\n"
+
+#~ msgid "Starting a new syntax type\n"
+#~ msgstr "ðÏÞÉÎÁ¤ÍÏ ÎÏ×ÉÊ ÔÉÐ ÓÉÎÔÁËÓÕ\n"
+
+#~ msgid "Starting a new colorstring for fg %d bg %d\n"
+#~ msgstr "ðÏÞÉÎÁ¤ÍÏ ÎÏ×ÉÊ ÒÑÄÏË ËÏÌØÏÒÕ ÄÌÑ ËÏÌØÏÒÕ %d ÎÁ ÆÏΦ %d\n"
+
+#~ msgid "Adding new entry for fg %d bg %d\n"
+#~ msgstr "äÏÄÁ¤ÍÏ ÎÏ×ÉÊ ÚÁÐÉÓ ÄÌÑ ËÏÌØÏÒÕ %d ÎÁ ÆÏΦ %d\n"
+
+#~ msgid "%s: Read a comment\n"
+#~ msgstr "%s: ÞÉÔÁ¤ÍÏ ËÏÍÅÎÔÁÒ\n"
+
+#~ msgid "%s: Parsing option %s\n"
+#~ msgstr "%s: òÏÚ¦ÂÒÁÎÎÑ ÏÐæ§ %s\n"
+
+#~ msgid "set flag %d!\n"
+#~ msgstr "×ÓÔÁÎÏ×ÉÔØ ÆÌÁÇ %d!\n"
+
+#~ msgid "Errors found in .nanorc file"
+#~ msgstr "úÎÁÊÄÅÎÏ ÐÏÍÉÌËÉ Õ ÆÁÊ̦ .nanorc"
+
+#~ msgid "Unable to open ~/.nanorc file, %s"
+#~ msgstr "îÅ ÍÏÖÕ ×¦ÄËÒÉÔÉ ÆÁÊÌ ~/.nanorc, %s"
+
+#~ msgid "\"%s...\" not found"
+#~ msgstr "\"%s...\" ÎÅ ÚÎÁÊÄÅÎÏ"
+
+#~ msgid "Invalid regex \"%s\""
+#~ msgstr "îÅצÒÎÉÊ ÒÅÇÕÌÑÒÎÉÊ ×ÉÒÁÚ \"%s\""
+
+#~ msgid "Search Cancelled"
+#~ msgstr "ðÏÛÕË ÓËÁÓÏ×ÁÎÏ"
+
+#~ msgid "Replace Cancelled"
+#~ msgstr "úÁͦÎÕ ÓËÁÓÏ×ÁÎÏ"
+
+#~ msgid "Replace failed: unknown subexpression!"
+#~ msgstr "úÁͦÎÁ ÎÅ×ÄÁÌÁ: ÎÅÚÎÁÊÏÍÉÊ Ð¦Ä×ÉÒÁÚ!"
+
+#~ msgid "Aborted"
+#~ msgstr "ðÒÅÒ×ÁÎÏ"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "çÅÊ, ÂÕÄØÔÅ Á×ÔÏÔÅÎÔÉÞΦ"
+
+#~ msgid "actual_x for xplus=%d returns %d\n"
+#~ msgstr "actual_x ÄÌÑ xplus=%d ÐÏ×ÅÒÔÁ¤ %d\n"
+
+#~ msgid "Aha! '%c' (%d)\n"
+#~ msgstr "áÇÁ! '%c' (%d)\n"
+
+#~ msgid "input '%c' (%d)\n"
+#~ msgstr "×È¦Ä '%c' (%d)\n"
+
+#~ msgid " File: ..."
+#~ msgstr " æÁÊÌ: ..."
+
+#~ msgid " DIR: ..."
+#~ msgstr " äÉÒ: ..."
+
+#~ msgid "Refusing 0 length regex match"
+#~ msgstr "÷¦ÄËÉÄÁ¤ÍÏ ÓЦ×ÐÁĦÎÎÑ ÆÏÒÍÁÌØÎÏÇÏ ×ÉÒÁÚÕ ÄÏ×ÖÉÎÏÀ 0"
+
+#~ msgid "Moved to (%d, %d) in edit buffer\n"
+#~ msgstr "ðÅÒÅͦÝÅÎÏ ÄÏ (%d,%d) × ÂÕÆÅÒ¦ ÒÅÄÁÇÕ×ÁÎÎÑ\n"
+
+#~ msgid "I got \"%s\"\n"
+#~ msgstr "ñ ЦÊÍÁ× \"%s\"\n"
+
+#~ msgid "Dumping file buffer to stderr...\n"
+#~ msgstr "óËÉÄÁÎÎÑ ÂÕÆÅÒÕ ÆÁÊÌÕ ÄÏ stderr...\n"
+
+#~ msgid "Dumping cutbuffer to stderr...\n"
+#~ msgstr "óËÉÄÁÎÎÑ ÚͦÓÔÕ \"ËÉÛÅΦ\" ÄÏ stderr...\n"
+
+#~ msgid "Dumping a buffer to stderr...\n"
+#~ msgstr "óËÉÄÁÎÎÑ ÂÕÆÅÒÕ ÄÏ stderr...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "The -p flag now invokes the Pico \"preserve\" flag.\n"
+#~ "The Pico compatibility flag has been removed as nano\n"
+#~ "now fully Pico compatible. Please see the nano FAQ\n"
+#~ "for more info on this change...\n"
+#~ "\n"
+#~ "Press return to continue\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ïÐÃ¦Ñ -p ÚÁÒÁÚ ×ÉÚÎÁÞÁ¤ ÏÐæÀ \"preserve\" ÒÅÄÁËÔÏÒÁ Pico.\n"
+#~ "ïÐæÀ ÓÕͦÓÎÏÓÔ¦ ¦Ú Pico ÂÕÌÏ ×ÉÄÁÌÅÎÏ, ÏÓ˦ÌØËÉ nano ÔÅÐÅÒ ÐÏ×ΦÓÔÀ\n"
+#~ "ÓÕͦÓÎÉÊ ¦Ú Pico. âÕÄØ ÌÁÓËÁ ÄÉ×ÉÔØÓÑ FAQ ÄÌÑ Â¦ÌØÛ ÐÏ×Îϧ ÄÏצÄËÉ\n"
+#~ "ÝÏÄÏ Ã¦¤§ ÚͦÎÉ.\n"
+#~ "\n"
+#~ "îÁÔÉÓΦÔØ ÂÕÄØ-ÌÁÓËÁ Enter\n"
+
+#~ msgid "Generic error"
+#~ msgstr "úÁÇÁÌØÎÁ ÐÏÍÉÌËÁ"
+
+#~ msgid "delete_opennode(): free'd a node, YAY!\n"
+#~ msgstr "delete_opennode(): OÊ.. ×ÕÚÏÌ ÚצÌØÎÅÎÏ!\n"
+
+#~ msgid "delete_opennode(): free'd last node.\n"
+#~ msgstr "delete_opennode(): ÚצÌØÎÅÎÏ ÏÓÔÁÎÎØÏÇÏ ×ÕÚÌÁ.\n"
+
+#~ msgid "Can't visit parent in restricted mode"
+#~ msgstr "îÅ ÍÏÖÕ ×¦ÄצÄÁÔÉ ÂÁÔØËÁ (cd ./..) × ÏÂÍÅÖÅÎÏÍÕ ÒÅÖÉͦ"
+
+#~ msgid "-p"
+#~ msgstr "-p"
+
+#~ msgid "--preserve"
+#~ msgstr "--preserve"
+
+#~ msgid ""
+#~ "\n"
+#~ "The -p flag now invokes the Pico \"preserve\" flag. The Pico\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ïÐÃ¦Ñ -p ÚÁÒÁÚ ×ÉÚÎÁÞÁ¤ ÏÐæÀ \"preserve\" ÒÅÄÁËÔÏÒÁ Pico. ïÐæÀ\n"
+
+#~ msgid "compatibility flag has been removed as nano is now fully Pico\n"
+#~ msgstr "ÓÕͦÓÎÏÓÔ¦ ¦Ú Pico ÂÕÌÏ ×ÉÄÁÌÅÎÏ, ÏÓ˦ÌØËÉ nano ÔÅÐÅÒ ÐÏ×ΦÓÔÀ\n"
+
+#~ msgid ""
+#~ "compatible. Please see the nano FAQ for more info on this change...\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ÓÕͦÓÎÉÊ ¦Ú Pico. âÕÄØ ÌÁÓËÁ ÄÉ×ÉÔØÓÑ FAQ ÄÌÑ Â¦ÌØÛ ÐÏ×Îϧ ÄÏצÄËÉ\n"
+#~ "ÝÏÄÏ Ã¦¤§ ÚͦÎÉ.\n"
+
+#~ msgid "Press return to continue\n"
+#~ msgstr "îÁÔÉÓΦÔØ Enter ÄÌÑ ÐÏÄÏ×ÖÅÎÎÑ\n"
+
+#~ msgid "string val=%s\n"
+#~ msgstr "ÒÑÄÏË val=%s\n"
+
+#~ msgid "For end part, beginning = \"%s\"\n"
+#~ msgstr "äÌÑ Ë¦ÎÃÅ×ϧ ÞÁÓÔÉÎÉ, ÐÏÞÁÔÏË = \"%s\"\n"
+
+#~ msgid "current->data = \"%s\"\n"
+#~ msgstr "(winio.c) current->data = \"%s\"\n"
+
+#~ msgid "do_cursorpos: linepct = %f, bytepct = %f\n"
+#~ msgstr "do_cursorpos: linepct = %f, bytepct = %f\n"
+
+#~ msgid "read_line: not on first line and prev is NULL"
+#~ msgstr "read_line: ÎÅ ÎÁ ÐÅÒÛÏÍÕ ÒÑÄËÕ, ÔÁ ÝÅ Ê ÐÏÐÅÒÅÄÎ¦Ê ¤ NULL"
+
+#~ msgid "Pico mode"
+#~ msgstr "òÅÖÉÍ Pico"
+
+#~ msgid "Emulate Pico as closely as possible"
+#~ msgstr "åÍÕÌÀ×ÁÔÉ Pico ÎÁÓ˦ÌØËÉ ÍÏÖÌÉ×Ï"
+
+#~ msgid "'\")}]>"
+#~ msgstr "'\")}]>"
+
+#~ msgid ".?!"
+#~ msgstr ".?!"
+
+#~ msgid "Replaced 1 occurrence"
+#~ msgstr "úÁͦÎÅÎÏ 1 ×ÈÏÄÖÅÎÎÑ"
+
+#~ msgid "Replace with [%s]"
+#~ msgstr "úÁͦÎÉÔÉ ÎÁ [%s]"
+
+#~ msgid "nano: realloc: out of memory!"
+#~ msgstr "nano: realloc: ÎÅÍÁ¤ צÌØÎϧ ÐÁÍ'ÑÔ¦!"
+
+#~ msgid "Backwards search"
+#~ msgstr "ðÏÛÕË îÁÚÁÄ"
+
+#~ msgid "Goto"
+#~ msgstr "äÏ òÑÄËÁ"
+
+#~ msgid "check_wrap called with inptr->data=\"%s\"\n"
+#~ msgstr "check_wrap ×ÉÚ×ÁÎÏ Ú inptr->data=\"%s\"\n"
+
+#~ msgid "nano: calloc: out of memory!"
+#~ msgstr "nano: calloc: ÎÅÍÁ¤ צÌØÎϧ ÐÁÍ'ÑÔ¦!"
+
+#~ msgid " -D \t\t--dos\t\t\tWrite file in DOS format\n"
+#~ msgstr " -D \t\t--dos\t\t\túÁÐÉÓ ÆÁÊÌÕ Õ ÆÏÒÍÁÔ¦ DOS\n"
+
+#~ msgid " -F \t\t--multibuffer\t\tEnable multiple file buffers\n"
+#~ msgstr " -F \t\t--multibuffer\t\täÏÚ×ÏÌÉÔÉ ÄÅ˦ÌØËÁ ÆÁÊÌÏ×ÉÈ ÂÕÆÅÒ¦×\n"
+
+#~ msgid " -K \t\t--keypad\t\tUse alternate keypad routines\n"
+#~ msgstr " -K \t\t--keypad\t\t÷ÖÉ×ÁÔÉ ÁÌØÔÅÒÎÁÔÉ×Φ ЦÄÐÒÏÇÒÁÍÉ keypad\n"
+
+#~ msgid " -M \t\t--mac\t\t\tWrite file in Mac format\n"
+#~ msgstr " -M \t\t--mac\t\t\túÁÐÉÓ ÆÁÊÌÕ Õ ÆÏÒÍÁÔ¦ Mac\n"
+
+#~ msgid " -N \t\t--noconvert\t\tDon't convert files from DOS/Mac format\n"
+#~ msgstr " -N \t\t--noconvert\t\tîÅ ÏÂÅÒÔÁÔÉ ÆÁÊÌÉ ¦Ú ÆÏÒÍÁÔ¦× DOS/Mac\n"
+
+#~ msgid " -Q [str]\t--quotestr [str]\tQuoting string, default \"> \"\n"
+#~ msgstr ""
+#~ " -Q [str]\t--quotestr [str]\tòÑÄÏË ÐÏÓÉÌÁÎÎÑ, ÐÏ ÚÁÍÏ×ÞÅÎÎÀ \"> \"\n"
+
+#~ msgid " -S\t\t--smooth\t\tSmooth scrolling\n"
+#~ msgstr " -S\t\t--smooth\t\tðÌÁ×ÎÁ ÐÒÏËÒÕÔËÁ\n"
+
+#~ msgid " -T [num]\t--tabsize=[num]\t\tSet width of a tab to num\n"
+#~ msgstr " -T [ÎÏÍ]\t--tabsize=[ÎÏÍ]\t\t÷ÓÔÁÎÏ×ÉÔÉ ÒÏÚÍ¦Ò ÔÁÂÕÌÑæ§ ÄÏ ÎÏÍ\n"
+
+#~ msgid " -V \t\t--version\t\tPrint version information and exit\n"
+#~ msgstr " -V \t\t--version\t\tîÁÄÒÕËÕ×ÁÔÉ ×ÅÒÓ¦À ÔÁ ×ÉÊÔÉ\n"
+
+#~ msgid " -c \t\t--const\t\t\tConstantly show cursor position\n"
+#~ msgstr " -c \t\t--const\t\t\tðÏÓÔ¦ÊÎÏ ÐÏËÁÚÕ×ÁÔÉ ÐÏÚÉæÀ ËÕÒÓÏÒÁ\n"
+
+#~ msgid " -h \t\t--help\t\t\tShow this message\n"
+#~ msgstr " -h \t\t--help\t\t\tðÏËÁÚÁÔÉ ÃÅ ÐÏצÄÏÍÌÅÎÎÑ\n"
+
+#~ msgid " -i \t\t--autoindent\t\tAutomatically indent new lines\n"
+#~ msgstr " -i \t\t--autoindent\t\tá×ÔÏÍÁÔÉÞÎÏ ×ÉÒ¦×ÎÀ×ÁÔÉ ÎÏצ ÒÑÄËÉ\n"
+
+#~ msgid " -k \t\t--cut\t\t\tLet ^K cut from cursor to end of line\n"
+#~ msgstr ""
+#~ " -k \t\t--cut\t\t\täÏÚ×ÏÌÉÔÉ ×ÉÒ¦ÚÁÔÉ ×¦Ä ËÕÒÓÏÒÁ ÄÏ Ë¦ÎÃÑ\n"
+#~ "\t\t\t\t\tÒÑÄËÁ ÚÁ ÄÏÐÏÍÏÇÏÀ ^K\n"
+
+#~ msgid " -l \t\t--nofollow\t\tDon't follow symbolic links, overwrite\n"
+#~ msgstr " -l \t\t--nofollow\t\tîÅ ÊÔÉ ÚÁ Ó¦Í̦ÎËÁÍÉ, ÁÌÅ ÐÅÒÅÐÉÓÕ×ÁÔÉ\n"
+
+#~ msgid " -m \t\t--mouse\t\t\tEnable mouse\n"
+#~ msgstr " -m \t\t--mouse\t\t\täÏÚ×ÏÌÉÔÉ ÍÉÛÕ\n"
+
+#~ msgid " -o [dir] \t--operatingdir=[dir]\tSet operating directory\n"
+#~ msgstr " -o [dir] \t--operatingdir=[dir]\t÷ÓÔÁÎÏ×ÉÔÉ ÒÏÂÏÞÉÊ ËÁÔÁÌÏÇ\n"
+
+#~ msgid " -p \t\t--pico\t\t\tEmulate Pico as closely as possible\n"
+#~ msgstr " -p\t \t--pico\t\t\tåÍÕÌÀ×ÁÔÉ Pico ÎÁÓ˦ÌØËÉ ÃÅ ÍÏÖÌÉ×Ï\n"
+
+#~ msgid ""
+#~ " -r [#cols] \t--fill=[#cols]\t\tSet fill cols to (wrap lines at) #cols\n"
+#~ msgstr ""
+#~ " -r [#ÓÔÏ×Ð]\t--fill=[#ÓÔÏ×Ð]\t\túÁÇÏÒÔÁÔÉ ÒÑÄËÉ × ÐÏÚÉæ§ ÓÔÏ×ÐÃÑ "
+#~ "#ÓÔÏ×Ð\n"
+
+#~ msgid " -s [prog] \t--speller=[prog]\tEnable alternate speller\n"
+#~ msgstr ""
+#~ " -s [ÐÒÏÇ] \t--speller=[ÐÒÏÇ]\táÌØÔÅÒÎ. ÐÒÏÇÒÁÍÁ ÐÅÒÅצÒËÉ ÐÒÁ×ÏÐÉÓÕ\n"
+
+#~ msgid " -t \t\t--tempfile\t\tAuto save on exit, don't prompt\n"
+#~ msgstr " -t \t\t--tempfile\t\tá×ÔÏúÁÐÉÓ ÐÒÉ ×ÉÈÏĦ, ÂÅÚ ÚÁÐÉÔÁÎØ\n"
+
+#~ msgid " -v \t\t--view\t\t\tView (read only) mode\n"
+#~ msgstr " -v \t\t--view\t\t\tòÅÖÉÍ ÐÅÒÅÇÌÑÄÁÎÎÑ (Ô¦ÌØËÉ ÞÉÔÁÎÎÑ)\n"
+
+#~ msgid " -w \t\t--nowrap\t\tDon't wrap long lines\n"
+#~ msgstr " -w \t\t--nowrap\t\tîÅ ÚÁÇÏÒÔÁÔÉ ÄÏ×Ǧ ÒÑÄËÉ\n"
+
+#~ msgid " -x \t\t--nohelp\t\tDon't show help window\n"
+#~ msgstr " -x \t\t--nohelp\t\tîÅ ÐÏËÁÚÕ×ÁÔÉ ×¦ËÎÏ ÄÏÐÏÍÏÇÉ\n"
+
+#~ msgid " -z \t\t--suspend\t\tEnable suspend\n"
+#~ msgstr " -z \t\t--suspend\t\täÏÚ×ÏÌÉÔÉ ÐÒÉÚÕÐÉÎËÕ\n"
+
+#~ msgid " +LINE\t\t\t\t\tStart at line number LINE\n"
+#~ msgstr " +òñäïë\t\t\t\t\tðÏÞÁÔÉ Ú ÒÑÄËÁ ÎÏÍÅÒ òñäïë\n"
+
+#~ msgid " -D \t\tWrite file in DOS format\n"
+#~ msgstr " -D \t\túÁÐÉÓ ÆÁÊÌÕ Õ ÆÏÒÍÁÔ¦ DOS\n"
+
+#~ msgid " -M \t\tWrite file in Mac format\n"
+#~ msgstr " -M \t\túÁÐÉÓ ÆÁÊÌÕ Õ ÆÏÒÍÁÔ¦ Mac\n"
+
+#~ msgid " -R\t\tUse regular expressions for search\n"
+#~ msgstr " -R\t\tëÏÒÉÓÔÕ×ÁÔÉÓÑ æÏÒÍÁÌØÎÉÍÉ ÷ÉÒÁÚÁÍÉ ÄÌÑ ÐÏÛÕËÕ\n"
+
+#~ msgid " -S\t\tSmooth scrolling\n"
+#~ msgstr " -S\t\tðÌÁ×ÎÁ ÐÒÏËÒÕÔËÁ\n"
+
+#~ msgid "Pavel Curtis, Zeyd Ben-Halim and Eric S. Raymond for ncurses"
+#~ msgstr "ðÁ×ÌÏ ëÕÒÔ¦Ó, úÅÊÄ ÓÉÎ-èÁ̦ÍÁ ÔÁ åÒ¦Ë ó. òÅÊÍÏÎÄ ÚÁ ncurses"
+
+#~ msgid "File already loaded"
+#~ msgstr "æÁÊÌ ×ÖÅ ÚÁ×ÁÎÔÁÖÅÎÏ"
+
+#~ msgid " -R\t\t--regexp\t\tUse regular expressions for search\n"
+#~ msgstr " -R\t\t--regexp\t\tûÕËÁÔÉ ËÏÒÉÓÔÕÀÞÉÓØ æÏÒÍÁÌØÎÉÍÉ ÷ÉÒÁÚÁÍÉ\n"
+
+#~ msgid "Write"
+#~ msgstr "úÁÐÉÓÁÔÉ"
+
+#~ msgid "Case Sensitive Regexp Search%s%s"
+#~ msgstr "òÅÇÉÓÔÒÏÚÁÌÅÖÎÉÊ ÐÏÛÕË æÏÒÍÁÌØÎÏÇÏ ÷ÉÒÁÚÕ%s%s"
+
+#~ msgid "Regexp Search%s%s"
+#~ msgstr "ðÏÛÕË æÏÒÍÁÌØÎÏÇÏ ÷ÉÒÁÚÕ%s%s"
+
+#~ msgid "Only %d lines available, skipping to last line"
+#~ msgstr "ô¦ÌØËÉ %d ÒÑÄË¦× Õ ÎÁÑ×ÎÏÓÔ¦, ÓËÉÐÁ¤ÍÏ ÄÏ ÏÓÔÁÎÎØÏÇÏ ÒÑÄËÁ"
diff --git a/po/vi.gmo b/po/vi.gmo
new file mode 100644
index 0000000..487a4ca
--- /dev/null
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
new file mode 100644
index 0000000..fb2db9a
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,2080 @@
+# Vietnamese translation for Nano.
+# Copyright © 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# Phan Vinh Thinh <teppi82@gmail.com>, 2005, 2006.
+# Clytie Siddall <clytie@riverland.net.au>, 2007-2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.4pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-04-07 17:07+0930\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.8\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "Äi tá»›i thÆ° mục"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "Bị thôi"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "Không đi ra được bên ngoài của %s trong chế độ hạn chế"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "Lá»—i Ä‘á»c %s: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "Không thể nâng lên một thư mục"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(thư mục)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(thư mục cha)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "Tìm kiếm"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [Tính đến kiểu chữ]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [Biểu thức chính quy]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [Ngược lại]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "Tìm (cuộn lại)"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "Äây là tÆ°Æ¡ng ứng duy nhất"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "Không có mẫu tìm kiếm hiện thá»i"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "Không chèn được tập tin từ bên ngoài của %s"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "Không còn bộ đệm mở tập tin nữa"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "Äã chuyển tá»›i %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "Bộ đệm mới"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "Äá»c %lu dòng (Äã chuyển đổi từ định dạng DOS và Mac)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] ""
+"Äá»c %lu dòng (Äã chuyển đổi từ định dạng DOS và Mac — Cảnh báo : không có "
+"quyá»n ghi)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "Äá»c %lu dòng (Äã chuyển đổi từ định dạng Mac)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] ""
+"Äá»c %lu dòng (Äã chuyển đổi từ định dạng Mac — Cảnh báo : không có quyá»n ghi)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "Äá»c %lu dòng (Äã chuyển đổi từ định dạng DOS)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] ""
+"Äá»c %lu dòng (Äã chuyển đổi từ định dạng DOS — Cảnh báo : không có quyá»n ghi)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "Äá»c %lu dòng"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "Äá»c %lu dòng (Cảnh báo : không có quyá»n ghi)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "Äang Ä‘á»c tập tin"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "Tập tin mới"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "Không tìm thấy « %s »"
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "« %s » là một thư mục"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "« %s » là một tập tin thiết bị"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "Câu lệnh để thực hiện trong bộ đệm mới [từ %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "Câu lệnh để thực hiện [từ %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "Tập tin để chèn vào bộ đệm mới [từ %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "Tập tin để chèn [từ %s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "Phím không hợp lệ trong chế độ khác đa bộ đệm"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "Không ghi được ra bên ngoài của %s"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr ""
+"Không thể thêm vào trÆ°á»›c hoặc thêm vào sau má»™t liên kết má»m bằng tùy chá»n --"
+"nofollow"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "Gặp lỗi khi ghi tập tin sao lưu %s: %s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "Quá nhiá»u tập tin lÆ°u trữ?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "Lá»—i ghi nhá»› %s: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "Lá»—i ghi nhá»› tập tin tạm thá»i: %s"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "Äã ghi %lu dòng"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [Äịnh dạng DOS]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Äịnh dạng Mac]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [Lưu trữ]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "Thêm lá»±a chá»n vào trÆ°á»›c Tập tin"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "Thêm lá»±a chá»n vào sau Tập tin"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "Ghi nhá»› lá»±a chá»n vào má»™t tập tin"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "Tên tập tin để thêm vào trước"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "Tên tập tin để thêm vào sau"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "Tên tập tin để ghi nhớ"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "Tập tin đã tồn tại, GHI ÄÈ LÊN ? "
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "Ghi nhá»› tập tin dÆ°á»›i TÊN KHÃC ? "
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+"Tập tin bị sửa đổi kể từ lần bạn mở cuối cùng: có nên tiếp tục lưu không?"
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(còn nữa)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"Nhấn Enter để tiếp tục khởi chạy nano.\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "Thôi"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "Thay thế"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "Không thay thế"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "Tính đến kiểu chữ"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "Ngược lại"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "Biểu thức chính quy"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "Lịch sử lùi"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "Lịch sử kế"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "Tới văn bản"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "Tiếp theo ở đâu"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "Tập tin đầu"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "Tập tin cuối"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "Tới tập tin"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "Äịnh dạng DOS"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Äịnh dạng Mac"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "Phụ thêm"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "Thêm vào trước"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "Lưu trữ tập tin"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "Thực hiện lệnh"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "Tới thư mục"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "Trợ giúp"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "Thoát"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "Ở đâu"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "Trang trÆ°á»›c"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "Trang kế"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "Dòng đầu"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "Dòng cuối"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "NgÆ°ng"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "Äầu Ä‘oạn văn"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "Cuối đoạn văn"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "Sắp hàng đầy đủ"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "Cập nhật"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "Chèn tập tin"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "Tới dòng"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "Sắp chữ đúng hàng cho Ä‘oạn văn hiện thá»i"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "Dừng hàm hiện thá»i"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "Hiển thị trợ giúp này"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "Äóng bá»™ đệm tập tin hiện thá»i/Thoát nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "Thoát khá»i nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "Ghi nhá»› tập tin hiện thá»i lên Ä‘Ä©a"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "Chèn tập tin khác vào tập tin hiện thá»i"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "Tìm một chuỗi hay biểu thức chính quy"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "VỠmàn hình trước"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "Tới màn hình kế"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "Cắt dòng hiện thá»i và ghi nhá»› nó vào bá»™ đệm cắt"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "Hủy cắt từ bá»™ đệm cắt vào dòng hiện thá»i"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "Hiển thị vị trí con trá»"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "Gá»i trình kiểm tra chính tả, nếu có thể"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "Thay thế một chuỗi hay biểu thức chính quy"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "Chuyển tới dòng và cột có số thứ tự đưa ra"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "Äặt nhãn cho văn bản tại vị trí con trá»"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "Lặp lại tìm kiếm cuối cùng"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "Sao chép dòng hiện thá»i và ghi nhá»› nó vào bá»™ đệm cắt"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "Thụt lỠdòng hiện tại"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "Hủy thụt lỠdòng hiện tại"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "Hủy bước vừa mới làm"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "Làm lại bước vừa mới được hủy"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "Tiếp tới một ký tự"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "Lùi lại một ký tự"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "Tiếp tới một từ"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "Lùi lại một từ"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "VỠdòng trước"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "Tới dòng kế"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "VỠđầu của dòng hiện tại"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "Tới cuối của dòng hiện tại"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "VỠđầu của đoạn văn này; rồi vỠđầu của đoạn văn trước"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr ""
+"Tới đúng sau cuối của đoạn văn này; rồi tới đúng sau cuối của đoạn văn sau"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "VỠdòng đầu của tập tin"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "Tới dòng cuối của tập tin"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "Tới dấu ngoặc tương ứng"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "ÄÆ°a màn hình lên má»™t dòng nhÆ°ng giữ nguyên vị trí con trá»"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "ÄÆ°a màn hình xuống má»™t dòng nhÆ°ng giữ nguyên vị trí con trá»"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "Chuyển tới bộ đệm tập tin trước"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "Chuyển tới bộ đệm tập tin tiếp theo"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "Chèn ký tự kế tiếp đúng nguyên văn"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "Chèn má»™t ký tá»± tab tại vị trí con trá»"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "Chèn má»™t ký tá»± dòng má»›i tại vị trí con trá»"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "Xóa ký tá»± nằm dÆ°á»›i con trá»"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "Xóa ký tá»± ở bên trái con trá»"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "Cắt từ vị trí con trỠtới cuối tập tin"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "Sắp chữ đúng hàng cho cả tập tin"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "Äếm số từ, số dòng và số ký tá»±"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "Cập nhật (vẽ lại) màn hình hiện thá»i"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "Ngưng trình soạn thảo (nếu tính năng ngưng đã được bật)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "Bật/tắt khả năng phân biệt chữ hoa/thÆ°á»ng của việc tìm"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "Äảo ngược hÆ°á»›ng tìm"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "Bật/tắt khả năng sử dụng biểu thức chính quy"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "Xem lại chuỗi tìm kiếm/thay thế trước"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "Xem lại chuỗi tìm kiếm/thay thế kế"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "Äi tá»›i trình duyệt tập tin"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "Bật/tắt khả năng sử dụng định dạng DOS"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "Bật/tắt khả năng sử dụng định dạng Mac"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "Bật/tắt khả năng phụ thêm"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "Bật/tắt khả năng thêm vào trước"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "Bật/tắt khả năng sao lưu tập tin gốc"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "Thực hiện câu lệnh ngoại trú"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "Bật/tắt khả năng sử dụng bộ đệm mới"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "Thoát khá»i trình duyệt tập tin"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "Chuyển tới dòng đầu tiên của danh sách"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "Chuyển tới dòng cuối cùng của danh sách"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "Chuyển tới tập tin đằng sau trong danh sách"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "Chuyển tới tập tin đằng trước trong danh sách"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "Äi tá»›i thÆ° mục"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "Äóng"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "Ghi"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "Sắp chữ"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "Äá»c tập tin"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "Cắt văn bản"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "Hủy sắp chữ"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "Hủy cắt văn bản"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "Vị trí con trá»"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "Chính tả"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "Äánh dấu văn bản"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "Chép văn bản"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "Thụt lỠvăn bản"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "Hủy thụt lỠvăn bản"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "Hủy bước"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "Hoàn lại"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "Tiếp"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "Lùi"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "Từ kế"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "Từ trước"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "Dòng trước"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "Dòng kế"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "Nhà"
+
+#: src/global.c:833
+msgid "End"
+msgstr "Cuối"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "Tìm ngoặc đơn khác"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "ÄÆ°a lên"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "ÄÆ°a xuống"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "Tập tin trước"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "Tập tin kế"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "Dữ liệu nhập nguyên bản"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "Tab"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "Enter"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "Xoá"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "Xoá lùi"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "Cắt đến cuối"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "Äếm từ"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "Chế độ Trợ giúp"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "Hiển thị ví trí cố định của con trá»"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "Sử dụng dòng thêm để soạn thảo"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "Cuộn trơn mượt"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "Hiển thị khoảng trắng"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "Chiếu sáng cú pháp"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "Phím home khéo"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "Tá»± Ä‘á»™ng thụt lá»"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "Cắt tới cuối"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "Ngắt dòng dài"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "Chuyển các tab thành dấu cách"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "Lưu trữ tập tin"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "Bộ đệm đa tập tin"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "Hỗ trợ chuột"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "Không chuyển đổi từ định dạng DOS/Mac"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "Tạm dừng"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "Ngắt dòng má»m"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"Văn bản của Trợ giúp cho Câu lệnh Tìm kiếm\n"
+"\n"
+" Nhập từ hoặc ký tự bạn muốn tìm kiếm, sau đó gõ Enter. Nếu có tương ứng "
+"với văn bản bạn đã nhập, thì trên màn hình sẽ là vị trí của tương ứng gần "
+"nhất cho chuỗi tìm kiếm này.\n"
+"\n"
+" Chuỗi tìm kiếm ngay trước sẽ hiển thị trong ngoặc đơn ở sau dấu nhắc tìm "
+"kiếm. Không nhập văn bản nào và gõ Enter sẽ thực hiện tìm kiếm ngay trước "
+"này. "
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"Nếu đã có văn bản đánh dấu và sau đó tìm kiếm để thay thế, thì chỉ thay thế "
+"những tương ứng có trong vùng đánh dấu.\n"
+"\n"
+" Những phím chức năng sau có trong chế độ Tìm kiếm:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"Văn bản của Trợ giúp cho Tới dòng\n"
+"\n"
+" Nhập số thứ tự của dòng bạn muốn đi tới và gõ Enter. Nếu có ít dòng hơn số "
+"bạn nhập vào, thì chương trình sẽ đưa tới dòng cuối cùng của tập tin.\n"
+"\n"
+" Có thể dùng các phím chức năng sau trong chế độ Tới dòng:\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"Văn bản của Trợ giúp cho Chèn tập tin\n"
+"\n"
+" Hãy gõ tên của tập tin bạn muốn chèn vào bá»™ đệm hiện thá»i tại vị trí con "
+"trá».\n"
+"\n"
+" Nếu bạn đã biên dịch nano với sự hỗ trợ đa bộ đệm, và bật sự hỗ trợ này "
+"bằng các cỠ(flag) dòng lệnh -F hay --multibuffer, bằng tổ hợp phím bật tắt "
+"Meta-F, hay bằng tập tin nanorc, thì việc chèn một tập tin đồng nghĩa với "
+"việc nạp tập tin đó vào một bộ đệm riêng (sử dụng Meta-< và > để chuyển giữa "
+"các bộ đệm này). "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"Nếu cần một bộ đệm trống khác, thì đừng nhập tên tập tin, hoặc nhập vào tên "
+"một tập tin không có trên dấu nhắc rồi nhấn Enter.\n"
+"\n"
+" Có những phím chức năng sau trong chế độ Chèn Tập tin:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"Văn bản của Trợ giúp cho Ghi nhớ tập tin\n"
+"\n"
+" Hãy gõ tên bạn muốn ghi nhá»› cho tập tin hiện thá»i và gõ Enter để hoàn thành "
+"ghi nhá»›.\n"
+"\n"
+" Nếu đã lá»±a chá»n má»™t Ä‘oạn văn bản nào đó (bằng dấu hiệu), thì chÆ°Æ¡ng trình "
+"sẽ nhắc ghi nhá»› Ä‘oạn văn bản đã lá»±a chá»n đó vào má»™t tập tin riêng rẽ. Äể "
+"giảm khả năng ghi má»™t phần đè lên cả tập tin hiện thá»i, thì tên tập tin hiện "
+"thá»i không phải là mặc định trong chế Ä‘á»™ này.\n"
+"\n"
+" Có thể dùng các phím chức năng sau trong chế độ Ghi nhớ Tập tin:\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"Văn bản của Trợ giúp cho Trình duyệt Tập tin\n"
+"\n"
+" Trình duyệt tập tin sá»­ dụng cho việc xem cấu trúc thÆ° mục và chá»n má»™t tập "
+"tin để Ä‘á»c hay soạn thảo. Bạn có thể sá»­ dụng các phím mÅ©i tên hoặc Page Up/"
+"Down để di chuyển qua các tập tin, và S hoặc Enter để chá»n tập tin hay thÆ° "
+"mục đánh dấu. Äể di chuyển lên trên má»™t bậc, hãy chá»n thÆ° mục có tên \"..\" "
+"trên đầu danh sách.\n"
+"\n"
+" Có thể dùng các phím chức năng sau trong trình duyệt:\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"Văn bản của Trợ giúp cho Câu lệnh Tìm kiếm trong trình duyệt\n"
+"\n"
+" Nhập từ hoặc ký tự bạn muốn tìm kiếm, sau đó gõ Enter. Nếu có tương ứng "
+"với văn bản bạn đã nhập, thì trên màn hình sẽ là vị trí của tương ứng gần "
+"nhất cho chuỗi tìm kiếm này.\n"
+"\n"
+" Chuỗi tìm kiếm ngay trước sẽ hiển thị trong ngoặc đơn ở sau dấu nhắc tìm "
+"kiếm. Không nhập văn bản nào và gõ Enter sẽ thực hiện tìm kiếm ngay trước "
+"này.\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+"Có thể dùng các phím chức năng sau trong chế độ Tìm trong trình duyệt:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"Văn bản của Trợ giúp cho Trình duyệt Äi tá»›i thÆ° mục\n"
+"\n"
+" Hãy nhập tên của thư mục bạn muốn duyệt tới.\n"
+"\n"
+" Nếu việc tự động hoàn thành tab không bị tắt, thì bạn có thể sử dụng phím "
+"Tab để (thử) tự động hoàn thành tên tập tin.\n"
+"\n"
+" Có thể dùng các phím chức năng sau trong chế Ä‘á»™ Trình duyệt Äi tá»›i thÆ° "
+"mục:\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"Văn bản của Trợ giúp cho Kiểm tra chính tả\n"
+"\n"
+" Trình kiểm tra chính tả sẽ kiểm tra chính tả của tất cả văn bản trong tập "
+"tin hiện thá»i. Khi tìm thấy má»™t từ không biết, nó sẽ chiếu sáng và có thể "
+"soạn thảo má»™t thay thế. Sau đó nó sẽ nhắc thay thế má»i từ sai lá»—i chính tả "
+"này trong tập tin hiện thá»i, hoặc, trong Ä‘oạn văn bản đã đánh dấu, nếu có.\n"
+"\n"
+" Có các chức năng sau trong chế độ Kiểm tra chính tả:\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"Văn bản của Trợ giúp cho Thực hiện Câu lệnh\n"
+"\n"
+" Chế độ này cho phép bạn chèn kết quả của một câu lệnh chạy bằng trình bao "
+"vào bá»™ đệm hiện thá»i (hoặc vào má»™t bá»™ đệm má»›i ở chế Ä‘á»™ Ä‘a bá»™ đệm). Nếu cần "
+"một bộ đệm trống khác, thì đừng nhập câu lệnh.\n"
+"\n"
+" Có thể dùng các phím sau trong chế độ Thực hiện Câu lệnh:\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"Văn bản Trợ giúp Chính của nano\n"
+"\n"
+" Trình soạn thảo nano được thiết kế để nâng cao tính năng suất và sự dễ sử "
+"dụng của trình soạn thảo UW Pico. Nano gồm bốn phần chính. Dòng trên cùng "
+"hiển thị phiên bản chương trình, tên của tập tin đang soạn thảo, và tập tin "
+"đã thay đổi hay chưa. Tiếp theo là cửa sổ soạn thảo chính hiển thị tập tin "
+"đang soạn thảo. Dòng trạng thái là dòng thứ ba từ dưới lên và hiển thị "
+"những thông báo quan trá»ng."
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"Dưới cùng là hai dòng hiển thị những phím tắt thông dụng trong trình soạn "
+"thảo.\n"
+"\n"
+"Ký hiệu cho phím tắt như sau: Phím Control ký hiệu bởi một dấu ^ và nhập vào "
+"bằng phím Control (Ctrl) hoặc nhấn phím Escape (Esc) hai lần. Phím Escape "
+"ký hiệu bằng ký tự Meta (M) và nhập vào bằng (một trong) các phím Esc, Alt "
+"hay Meta tùy thuộc vào cấu hình bàn phím. "
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"Äồng thá»i, nhấn phím Esc hai lần và sau đó gõ má»™t số ba chữ số từ 000 tá»›i "
+"255 sẽ nhập ký tự với giá trị tương ứng. Có những tổ hợp phím sau trong cửa "
+"sổ soạn thảo chính. Các phím tương đương đặt trong dấu ngoặc đơn:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "bật/tắt"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "Phím không hợp lệ trong chế độ xem"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"Ghi nhớ bộ đệm vào %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"Chưa ghi nhớ bộ đệm vào %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"Chưa ghi nhớ bộ đệm: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "Kích thước cửa sổ quá nhỠcho nano...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"Sử dụng: nano [TÙY_CHỌN] [[+DÒNG,CỘT] TẬP_TIN]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "Tùy chá»n\t\tTùy chá»n GNU dài\t\tà nghÄ©a\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "Tùy chá»n\t\tà nghÄ©a\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "Hiển thị thông báo này"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+DÒNG,CỘT"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "Bắt đầu trên dòng DÒNG, cột CỘT"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "Bật dùng phím home khéo"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "Lưu trữ các tập tin đã có"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <thư mục>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<thư mục>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "Thư mục để ghi nhớ tập tin lưu trữ duy nhất"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "Hiển thị chữ in đậm thay cho chữ ảnh động đảo ngược"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "Chuyển tab thành dấu cách"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "Bật dùng bộ đệm đa tập tin"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "Ghi lại và Ä‘á»c lịch sá»­ các chuá»—i tìm kiếm/thay thế"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "Äừng nhìn vào các tập tin nanorc"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "Giải quyết vấn đỠnhầm lẫn trên bàn phím số"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "Äừng thêm dòng má»›i vào cuối tập tin"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "Äừng chuyển đổi tập tin từ định dạng DOS/Mac"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "Sử dụng một dòng thêm để soạn thảo"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <chuá»—i>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<chuá»—i>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "Chuỗi dùng để trích dẫn"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "Chế độ hạn chế"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "Cuộn theo dòng thay vào theo nửa màn hình"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <số_cột>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<số_cột>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "Äặt Ä‘á»™ rá»™ng của tab tính theo cá»™t tá»›i số cá»™t này"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "Xóa nhanh dòng trạng thái"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "In ra thông tin phiên bản và thoát"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "Nhận dạng ranh giới của từ cẩn thận hơn"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <chuá»—i>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<chuá»—i>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "Äịnh nghÄ©a cú pháp để sá»­ dụng khi tô màu"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "Luôn luôn hiển thị vị trí con trá»"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "Giải quyết vấn đỠnhầm lẫn Backspace/Delete"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "Tự động thụt các dòng mới"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "Cắt từ vị trí con trỠtới cuối dòng"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "Äừng Ä‘i theo liên kết má»m, hãy ghi đè"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "Hỗ trợ chuột"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <thư mục>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<thư mục>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "Äặt thÆ° mục thao tác"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "Giữ gìn các phím XON (^Q) và XOFF (^S)"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+"BỠqua im (không xuất thông điệp) các vấn đỠkhởi chạy, v.d. lỗi tập tin rc"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <số_cột>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<số_cột>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "Äặt Ä‘iểm ngắt dòng tính theo cá»™t tá»›i số cá»™t này"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <chương trình>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<chương trình>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "Dùng chương trình kiểm tra chính tả khác"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "Tá»± Ä‘á»™ng ghi nhá»› khi thoát, đừng há»i lại"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "Cho phép hủy bước giống loài [VẪN THỰC NGHIỆM]"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "Chế Ä‘á»™ Xem (chỉ Ä‘á»c)"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "Äừng ngắt những dòng dài"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "Äừng hiển thị hai dòng trợ giúp"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "Bật dùng sự Tạm hoãn"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "Bật ngắt dòng má»m"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(bị lỠđi, để tương thích với Pico)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano phiên bản %s (biên dịch %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " Äịa chỉ thÆ° : nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" Tùy chá»n được biên dịch:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "Rất tiếc, hỗ trợ cho chức năng này bị tắt"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "Ghi bá»™ đệm đã sá»­a đổi (TRẢ LỜI \"K\" SẼ BỎ MỌI THAY Äá»”I) (C/K) ? "
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "Tiếc là không thể mở lại đầu vào tiêu chuẩn từ bàn phím\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "Äang Ä‘á»c từ đầu vào tiêu chuẩn (bấm ^C để hủy bá»)\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "Nhận được tín hiệu SIGHUP hoặc SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "Sử dụng \"fg\" để quay lại nano.\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "đã bật"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "bị tắt"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "Lệnh không rõ"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "XON bị lỠđi."
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "XOFF bị lỠđi."
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "Yêu cầu một kích thước tab « %s » không hợp lệ"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "Yêu cầu một kích thước tô đầy « %s » không hợp lệ"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Cc"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Kk"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Tt"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "Có"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "Tất cả"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "Không"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "Lỗi trong %s trên dòng %lu: "
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "Äối số « %s » không kết thúc \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "Biểu thức chính quy phải bắt đầu và kết thúc bởi một ký tự \""
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "Biểu thức chính quy xấu \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "Thiếu tên cú pháp"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "Cú pháp \"none\" bị hạn chế"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "Cú pháp \"default\" không chấp nhận phần mở rộng"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "Thiếu tên khoá"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "tổ hợp phím phải bắt đầu với « ^ », « M » hoặc « F »"
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "Phải ghi rõ chức năng với đó cần tổ hợp phím"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+"Phải ghi rõ trình đơn với đó cần tổ hợp phím (hoặc đặt « all » (tất cả))"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "Không thể ánh xạ tên « %s » tới một chức năng"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "Không thể ánh xạ tên « %s » tới một trình đơn"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "Tiếc là không cho phép dùng tổ hợp phím « %s »"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"Không hiểu màu %s.\n"
+"Có thể dùng các màu :\n"
+" • green\tlục\n"
+" • red\tÄ‘á»\n"
+" • blue\txanh\n"
+" • white\ttrắng\n"
+" • yellow\tvàng\n"
+" • cyan\txanh lá mạ\n"
+" • magenta\tđỠtươi\n"
+" • black\tđên\n"
+"vá»›i tiá»n tố không bắt buá»™c:\n"
+" • bright\tsáng\n"
+"cho màu của văn bản."
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "Không thêm được một chỉ thị màu mà không có dòng cú pháp"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "Thiếu tên màu"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "Màu ná»n « %s » không thể là màu sáng (khó Ä‘á»c)"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "Thiếu các chuỗi biểu thức chính quy"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr ""
+"\"start=\" (bắt đầu) thì yêu cầu một phần \"end=\" (kết thúc) tương ứng"
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr ""
+"Không thêm được một biểu thức chính quy kiểu phần đầu mà không có câu lệnh "
+"cú pháp"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "Lá»—i nghiêm trá»ng: chÆ°a ánh xạ phím vá»›i chức năng « %s »"
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+"Äang thoát... Hãy sá»­ dụng trình soạn thảo nano vá»›i tùy chá»n « -l » nếu cần "
+"thiết, để Ä‘iá»u chỉnh thiết lập nanorc của bạn\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "Lệnh « %s » không được phép trong tập tin đã bao gồm"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "Cú pháp « %s » không có câu lệnh màu"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "Không hiểu câu lệnh « %s »"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "Thiếu cá»"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "Tùy chá»n « %s » cần má»™t tham số"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "Tùy chá»n không phải là má»™t chuá»—i Ä‘a byte hợp lệ"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "Yêu cầu các ký tự không phải khoảng trắng"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "Yêu cầu hai ký tự một cột"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "Không bỠđặt được cỠ« %s »"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "CỠkhông rõ « %s »"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "Tôi không thể tìm thấy thư mục cá nhân của mình!"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "Không tìm thấy \"%.*s%s\""
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " (thay thế) trong lá»±a chá»n"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (thay thế)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "Thay thế tương ứng này?"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "Thay thế bởi"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "Äã thay thế %lu lần"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "Nhập số thứ tự dòng, cột"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "Sai số thứ tự dòng hoặc cột"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "Không phải ngoặc đơn"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "Không có ngoặc đơn tương ứng"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "Äánh dấu văn bản"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "Hủy dấu văn bản"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "Không có gì trong vùng đệm hủy bước !"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr "Lỗi nội bộ : không thể khớp dòng %d. Hãy lưu tập tin"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "thêm văn bản"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "xoá văn bản"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "ngắt dòng"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "nối dòng"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "văn bản cắt"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "văn bản không cắt"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "chia dòng"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "chèn văn bản"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "thay thế văn bản"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "Lỗi nội bộ : kiểu không rõ. Hãy lưu tập tin"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "Bước được hủy (%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "Không có gì cần hoàn lại !"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr "Lỗi nội bộ : không thiết lập được việc hoàn lại. Hãy lưu tập tin"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "Bước được hoàn lại (%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "Không thể gá»­i qua Ä‘Æ°á»ng ống"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "Không thể tạo tiến trình con"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr "Lỗi nội bộ : không thể thiết lập mà không cắt. Hãy lưu tập tin."
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "Lỗi nội bộ : kiểu không rõ. Hãy lưu tập tin."
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "Chuỗi trích dẫn xấu %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "Bây giỠcó thể BỠsắp chữ!"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "Sửa chuỗi thay thế"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "Không thể tạo Ä‘Æ°á»ng ống"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "Äang tạo danh sách từ sai chính tả, xin hãy chá»..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "Không lấy được kích thÆ°á»›c của bá»™ đệm Ä‘Æ°á»ng ống"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "Lá»—i gá»i \"spell\""
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "Lá»—i gá»i \"sort -f\""
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "Lá»—i gá»i \"uniq\""
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "Hoàn thành việc kiểm tra chính tả"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "Lá»—i gá»i \"%s\""
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "Kiểm tra chính tả không thành công: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "Kiểm tra chính tả không thành công: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%sTừ: %lu Dòng: %ld Ký tự: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "Trong lá»±a chá»n: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano làm tràn bộ nhớ!"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Dữ liệu nhập Unicode"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "Äã sá»­a đổi"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "Xem"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "THƯ MỤC:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "Tập tin:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "dòng %ld/%ld (%d%%), cột %lu/%lu (%d%%), ký tự %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "Trình soạn thảo văn bản nano"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "phiên bản"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "Äược Ä‘em tá»›i bởi:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "Äặc biệt cảm Æ¡n:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "Tổ chức Phần má»m Tá»± do (FSF)"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "Cho ncurses:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "và những ngÆ°á»i khác mà chúng tôi quên..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "Cảm ơn bạn đã dùng nano!"
+
+#~ msgid "Error writing backup file %s: File owner mismatch"
+#~ msgstr ""
+#~ "Gặp lỗi khi ghi tập tin sao lưu %s: chủ sở hữu tập tin không tương ứng"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
new file mode 100644
index 0000000..8488fd4
--- /dev/null
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 0000000..9488e7c
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,2039 @@
+# Simplified Chinese Messages for the nano editor
+# Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# LI Daobing <lidaobing@gmail.com>, 2007, 2008, 2009.
+# Aron Xu <happyaron.xu@gmail.com>, 2009, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 2.2.4pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2010-04-07 17:10+0800\n"
+"Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
+"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "跳至目录"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "å·²å–消"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "在é™åˆ¶æ¨¡å¼ä¸­æ— æ³•è·³è‡³%s 外部"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "读å–%s 出错:%s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "无法上移一个目录"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(目录)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr "(父目录)"
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "æœç´¢"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [区分大å°å†™]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [正则表示å¼]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [å‘åŽæœç´¢]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "已从头æœç´¢"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "这是惟一出现之处"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "没有当å‰æœç´¢æ¨¡å¼"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "无法æ’å…¥%s 外部的文件"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "无多余文件缓冲区å¯å¯ç”¨"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "切æ¢è‡³%s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "新缓冲区"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "已读å–%lu è¡Œ(转æ¢è‡ªDOS 与Mac æ ¼å¼)"
+
+#: src/files.c:638
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "已读å–%lu è¡Œ(转æ¢è‡ªDOS 与Mac æ ¼å¼- 警告:无写入æƒé™)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "已读å–%lu è¡Œ (转æ¢è‡ªMac æ ¼å¼)"
+
+#: src/files.c:648
+#, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "已读å–%lu è¡Œ (转æ¢è‡ªMac æ ¼å¼- 警告:无写入æƒé™)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "已读å–%lu è¡Œ (转æ¢è‡ªDOS æ ¼å¼)"
+
+#: src/files.c:658
+#, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "已读å–%lu è¡Œ (转æ¢è‡ªDOS æ ¼å¼- 警告:无写入æƒé™)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "已读å–%lu è¡Œ"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] "已读å–%lu è¡Œ(警告:无写入æƒé™)"
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "正在读å–文件"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "新文件"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "找ä¸åˆ°\"%s\""
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" 是一个目录"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" 是一个设备文件"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "在新缓冲区中执行的命令 [从%s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "执行的命令 [从%s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "è¦æ’入新缓冲区的文件 [从%s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "è¦æ’入的文件 [从%s] "
+
+#: src/files.c:1077
+msgid "Key invalid in non-multibuffer mode"
+msgstr "éžå¤šé‡ç¼“冲区模å¼ä¸­æ­¤æŒ‰é”®æ— æ•ˆ"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "无法写入%s 外部"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "--nofollow 设定下,无法å‰å¼•æˆ–附加至符å·è¿žç»“æ¡£"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "写入备份文件%s 出错:%s"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "太多备份文件?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "写入%s 出错:%s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "写入临时文件%s 出错"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "已写入%lu 行"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS æ ¼å¼]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac æ ¼å¼]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [备份]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "å‰å¼•é€‰æ‹©éƒ¨ä»½äºŽæ–‡ä»¶"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "附加选择部份至文件"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "写入选择部份至文件"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "è¦å‰å¼•äºŽçš„文件å"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "è¦é™„加至的文件å"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "è¦å†™å…¥çš„文件å"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "文件已存在,è¦è¦†ç›–å—?"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "以ä¸åŒçš„å称存档?"
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr "在您打开文件åŽæ–‡ä»¶å·²è¢«æ”¹å˜ï¼Œæ˜¯å¦ç»§ç»­ä¿å­˜ï¼Ÿ"
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(更多)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"按下回车键继续å¯åŠ¨ nano\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "å–消"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "替æ¢"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "ä¸æ›¿æ¢"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "区分大å°å†™"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "å‘åŽæœç´¢"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "正则表达å¼"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+msgid "PrevHstory"
+msgstr "å‰ä¸€è®°å½•"
+
+#: src/global.c:452
+msgid "NextHstory"
+msgstr "åŽä¸€è®°å½•"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "跳至文字"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+msgid "WhereIs Next"
+msgstr "何处是下一个"
+
+#: src/global.c:457
+msgid "First File"
+msgstr "首文件"
+
+#: src/global.c:458
+msgid "Last File"
+msgstr "末文件"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "文件选å•"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS æ ¼å¼"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac æ ¼å¼"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "附加"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "å‰å¼•"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "备份文件"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "执行命令"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "跳至目录"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "求助"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "离开"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "æœç´¢"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "上页"
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "下页"
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "首行"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "尾行"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "æš‚åœ"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "段è½å¼€å¤´"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "段è½ç»“å°¾"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "全部对é½"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "刷新"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "æ’入文件"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "跳行"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "对é½å½“å‰æ®µè½"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "å–消当å‰åŠŸèƒ½"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr "显示帮助"
+
+#: src/global.c:509
+msgid "Close the current file buffer / Exit from nano"
+msgstr "关闭当å‰æ–‡ä»¶ç¼“冲区 / 离开 nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "离开 nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "写入当å‰æ–‡ä»¶è‡³ç£ç›˜"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "æ’入其他文件至当å‰æ–‡ä»¶"
+
+#: src/global.c:519
+msgid "Search for a string or a regular expression"
+msgstr "查找字符串或正则表示å¼"
+
+#: src/global.c:520
+msgid "Go to previous screen"
+msgstr "跳至å‰ä¸€å±"
+
+#: src/global.c:521
+msgid "Go to next screen"
+msgstr "跳至åŽä¸€å±"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "剪切当å‰è¿™è¡Œå¹¶å­˜è‡³å‰ªè´´æ¿"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "从剪贴æ¿ç²˜è´´è‡³å½“å‰è¡Œ"
+
+#: src/global.c:527
+msgid "Display the position of the cursor"
+msgstr "显示光标ä½ç½®"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "å°è¯•è¿è¡Œæ‹¼å†™æ£€æŸ¥"
+
+#: src/global.c:531
+msgid "Replace a string or a regular expression"
+msgstr "替æ¢å­—符串或正则表示å¼"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "跳至指定行与列ä½ç½®"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "标记游标所在文字"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "é‡å¤ä¸Šæ¬¡æœç´¢"
+
+#: src/global.c:537
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "æ‹·è´å½“å‰è¡Œè‡³å‰ªè´´æ¿"
+
+#: src/global.c:538
+msgid "Indent the current line"
+msgstr "缩进当å‰è¡Œ"
+
+#: src/global.c:539
+msgid "Unindent the current line"
+msgstr "å–消缩进当å‰è¡Œ"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr "撤销上次æ“作"
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr "é‡åšæ’¤é”€çš„æ“作"
+
+#: src/global.c:543
+msgid "Go forward one character"
+msgstr "å‘å‰è·³ä¸€å­—符"
+
+#: src/global.c:544
+msgid "Go back one character"
+msgstr "å‘åŽè·³ä¸€å­—符"
+
+#: src/global.c:546
+msgid "Go forward one word"
+msgstr "å‘å‰è·³ä¸€ä¸ªè¯"
+
+#: src/global.c:547
+msgid "Go back one word"
+msgstr "å‘åŽè·³ä¸€ä¸ªè¯"
+
+#: src/global.c:549
+msgid "Go to previous line"
+msgstr "跳至å‰ä¸€è¡Œ"
+
+#: src/global.c:550
+msgid "Go to next line"
+msgstr "跳至åŽä¸€è¡Œ"
+
+#: src/global.c:551
+msgid "Go to beginning of current line"
+msgstr "跳至当å‰è¡Œé¦–"
+
+#: src/global.c:552
+msgid "Go to end of current line"
+msgstr "跳至当å‰è¡Œå°¾"
+
+#: src/global.c:555
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "跳至当å‰æ®µè½å¼€å¤´ï¼Œå¦‚已在段è½å¼€å¤´ï¼Œåˆ™è°ƒè‡³ä¸Šä¸€æ®µè½èµ·å§‹å¤„"
+
+#: src/global.c:557
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "跳至当å‰æ®µè½ç»“尾,如已在段è½ç»“尾,则调至下一段è½ç»“å°¾"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "跳至文件第一行"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "跳至文件最åŽä¸€è¡Œ"
+
+#: src/global.c:564
+msgid "Go to the matching bracket"
+msgstr "移动至对应括å·"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "å‘上å·åŠ¨ä¸€è¡Œä½†ä¸å·åŠ¨æ¸¸æ ‡"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "å‘下å·åŠ¨ä¸€è¡Œä½†ä¸å·åŠ¨æ¸¸æ ‡"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "切æ¢è‡³ä¸Šä¸ªæ–‡ä»¶ç¼“冲区"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "切æ¢è‡³ä¸‹ä¸ªæ–‡ä»¶ç¼“冲区"
+
+#: src/global.c:577
+msgid "Insert the next keystroke verbatim"
+msgstr "æ’入下一按键原型"
+
+#: src/global.c:579
+msgid "Insert a tab at the cursor position"
+msgstr "æ’入制表符于游标ä½ç½®"
+
+#: src/global.c:581
+msgid "Insert a newline at the cursor position"
+msgstr "æ’入新行于游标ä½ç½®"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "删除游标之下的字符"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "删除游标左侧的字符"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "从游标ä½ç½®å‰ªåˆ‡è‡³æ–‡ä»¶ç»“å°¾"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "对é½æ•´ä¸ªæ–‡ä»¶"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "计算字数ã€è¡Œæ•°ä¸Žå­—符数"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "é‡æ–°æ˜¾ç¤ºå½“å‰ç”»é¢"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr "æš‚åœç¼–辑器(如果å¯ç”¨äº†æš‚åœ)"
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr "切æ¢æŸ¥æ‰¾çš„区分大å°å†™é€‰é¡¹"
+
+#: src/global.c:605
+msgid "Reverse the direction of the search"
+msgstr "å转æœç´¢æ–¹å‘"
+
+#: src/global.c:609
+msgid "Toggle the use of regular expressions"
+msgstr "切æ¢ä½¿ç”¨æ­£åˆ™è¡¨ç¤ºå¼"
+
+#: src/global.c:613
+msgid "Recall the previous search/replace string"
+msgstr "编辑å‰æ¬¡æœç´¢/替æ¢å­—符串"
+
+#: src/global.c:615
+msgid "Recall the next search/replace string"
+msgstr "编辑下次æœç´¢/替æ¢å­—符串"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "打开文件选å•"
+
+#: src/global.c:621
+msgid "Toggle the use of DOS format"
+msgstr "切æ¢ä½¿ç”¨DOS æ ¼å¼"
+
+#: src/global.c:622
+msgid "Toggle the use of Mac format"
+msgstr "切æ¢ä½¿ç”¨Mac æ ¼å¼"
+
+#: src/global.c:624
+msgid "Toggle appending"
+msgstr "切æ¢è¿½åŠ "
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr "切æ¢å‰ç½®æ’å…¥"
+
+#: src/global.c:628
+msgid "Toggle backing up of the original file"
+msgstr "切æ¢å‚¨å­˜æ—¢æœ‰æ–‡ä»¶çš„备份"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "执行外部命令"
+
+#: src/global.c:633
+msgid "Toggle the use of a new buffer"
+msgstr "切æ¢ä½¿ç”¨æ–°ç¼“冲区"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "从文件选å•ç¦»å¼€"
+
+#: src/global.c:638
+msgid "Go to the first file in the list"
+msgstr "跳至文件第一列"
+
+#: src/global.c:640
+msgid "Go to the last file in the list"
+msgstr "跳至文件最åŽä¸€åˆ—"
+
+#: src/global.c:641
+msgid "Go to the next file in the list"
+msgstr "跳至列表中的下一个文件"
+
+#: src/global.c:642
+msgid "Go to the previous file in the list"
+msgstr "跳至列表中的å‰ä¸€ä¸ªæ–‡ä»¶"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "跳至目录"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "关闭"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "写入"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "对é½"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "读档"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "剪切文字"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "还原对é½"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+msgid "UnCut Text"
+msgstr "还原剪切"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "游标ä½ç½®"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "拼写检查"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "标记文字"
+
+#: src/global.c:777
+msgid "Copy Text"
+msgstr "å¤åˆ¶æ–‡å­—"
+
+#: src/global.c:780
+msgid "Indent Text"
+msgstr "缩进文字"
+
+#: src/global.c:783
+msgid "Unindent Text"
+msgstr "å–消缩进"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr "撤销"
+
+#: src/global.c:790
+msgid "Redo"
+msgstr "é‡åš"
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "å‘å‰"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "å‘åŽ"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "åŽä¸€ä¸ªå­—"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "å‰ä¸€ä¸ªå­—"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "上行"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "下行"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "顶端"
+
+#: src/global.c:833
+msgid "End"
+msgstr "尾端"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "寻找其他括å·"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "å‘上å·åŠ¨"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "å‘下å·åŠ¨"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "上个文件"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "下个文件"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "原形输入"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "制表符"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "回车"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "删除"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "退格"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "删至末端"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "字数统计"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "辅助模å¼"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "æŒç»­æ˜¾ç¤ºæ¸¸æ ‡ä½ç½®"
+
+#: src/global.c:1371
+msgid "Use of one more line for editing"
+msgstr "编辑时使用多一行"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "平滑å¼å·åŠ¨ç”»é¢"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "显示空格"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "语法色彩高亮"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "智能HOME 键"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "自动缩进"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "剪切至行尾"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "长行转æ¢"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "已输入制表符至空白的转æ¢"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "备份文件"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "多é‡æ–‡ä»¶ç¼“冲区"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "鼠标支æŒ"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "ä¸ä»Ž DOS/Mac æ ¼å¼è½¬æ¢"
+
+#: src/global.c:1397
+msgid "Suspension"
+msgstr "æš‚åœ"
+
+#: src/global.c:1399
+msgid "Soft line wrapping"
+msgstr "软æ¢è¡Œ"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"æœç´¢å‘½ä»¤è¾…助说明\n"
+"\n"
+" 首先输入您想è¦æœç´¢çš„字符串或字符,然åŽæŒ‰ä¸‹å›žè½¦é”®ã€‚如果存在ç€ç¬¦åˆæ‚¨æ‰€è¾“入的文"
+"字,画é¢å°±ä¼šæ›´æ–°åˆ°æœ€åˆä¹Žæœç´¢å­—符串的ä½ç½®ã€‚\n"
+"\n"
+"最近一次æœç´¢çš„字符串将会显示在æœç´¢æ示符åŽçš„括å·ä¸­ã€‚ä¸è¾“入任何文字而直接按下"
+"回车键则会é‡å¤ä½¿ç”¨æœ€è¿‘一次的æœç´¢æ¡ä»¶ã€‚"
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"如果您已ç»ç”¨æ ‡è®°é€‰æ‹©äº†ä¸€æ®µæ–‡å­—并进行æœç´¢æ›¿æ¢ï¼Œå°±åªæœ‰åœ¨é€‰æ‹©æ–‡å­—中符åˆè€…将会被"
+"替æ¢ã€‚\n"
+"\n"
+" 以下的功能键å¯ç”¨äºŽæœç´¢æ¨¡å¼ï¼š\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"跳行辅助说明\n"
+"\n"
+" 首先输入您想去的行数编å·å¹¶æŒ‰ä¸‹å›žè½¦é”®ã€‚如果文章中的行数比您所输入少,您将会被"
+"带至文件的最åŽä¸€è¡Œã€‚\n"
+"\n"
+" 以下的功能键å¯ç”¨äºŽè·³è¡Œæ¨¡å¼ï¼š\n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"æ’入文件辅助说明\n"
+"\n"
+" 先把文件的å称键入,它将会æ’入在当å‰ç¼“冲区的游标所在之处。\n"
+"\n"
+" 如果您所编译的 nano 支æŒå¤šé‡æ–‡ä»¶ç¼“冲区,并且将此功能以命令列旗标-F 或--"
+"multibufferã€Meta-F 开关,或者 nanorc 文件æ¥å¯åŠ¨çš„è¯ï¼Œæ‰€æ’入的文件 将会被载入"
+"å¦å¤–的缓冲区中 (利用 Meta-< å’Œ > 在文件缓冲区间切æ¢)。 "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"如果您需è¦å¦ä¸€ä¸ªç©ºçš„缓冲区,那就ä¸è¦è¾“入任何文件å,或是在æ示符å·åŽé”®å…¥ä¸€ä¸ª"
+"ä¸å­˜åœ¨çš„文件å,然åŽæŒ‰ä¸‹å›žè½¦é”®ã€‚\n"
+"\n"
+" 以下的功能键å¯ç”¨äºŽæ’入文件模å¼ï¼š\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"写入文件辅助说明\n"
+"\n"
+" 先键入您想è¦ä»¥æ­¤æ¥å‚¨å­˜å½“å‰æ–‡ä»¶çš„å称,并按下回车键æ¥å‚¨å­˜æ–‡ä»¶ã€‚\n"
+"\n"
+" 如果已ç»ç”¨æ ‡è®°é€‰æ‹©äº†æ–‡å­—,那么您将会被æ示,åªå‚¨å­˜æ ‡è®°éƒ¨ä»½åˆ°å¦å¤–的档案。为了"
+"é™ä½Žå½“å‰æ–‡ä»¶åªè¢«å…¶ä¸­éƒ¨ä»½è¦†ç›–的机会,在此模å¼ä¸‹ï¼Œå½“å‰çš„文件åä¸ä¼šæˆä¸ºé»˜è®¤"
+"值。\n"
+"\n"
+" 以下的功能键å¯ç”¨äºŽå†™å…¥æ–‡ä»¶æ¨¡å¼ï¼š\n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"文件选å•è¾…助说明\n"
+"\n"
+" 文件选å•æ˜¯ç”¨æ¥è§†è§‰åŒ–æµè§ˆç›®å½•ç»“构,以选å–è¦è¯»å‡ºæˆ–写入的文件。您å¯ä»¥ 使用上下"
+"å·¦å³é”®æˆ–上页/下页æ¥æµè§ˆï¼Œå¹¶ç”¨S 或回车键æ¥é€‰å–所è¦çš„文件或者进入所选的目录。è¦"
+"跳到上层时,选择在文件列表顶端å为 \"..\" 的目录。\n"
+"\n"
+" 以下的功能键å¯ç”¨äºŽæ–‡ä»¶é€‰å•ï¼š\n"
+"\n"
+
+#: src/help.c:302
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"æœç´¢å‘½ä»¤è¾…助说明\n"
+"\n"
+" 首先输入您想è¦æœç´¢çš„字符串或字符,然åŽæŒ‰ä¸‹å›žè½¦é”®ã€‚如果存在著 符åˆæ‚¨æ‰€è¾“入的"
+"文字,画é¢å°±ä¼šæ›´æ–°åˆ°æœ€åˆä¹Žæœç´¢å­—符串的ä½ç½®ã€‚\n"
+"\n"
+" 最近一次æœç´¢çš„字符串将会显示在æœç´¢æ示符å·åŽé¢çš„括å·ä¸­ã€‚ä¸è¾“入任何文字而直接"
+"按下回车键则会é‡å¤æœ€è¿‘一次的æœç´¢æ¡ä»¶ã€‚\n"
+"\n"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+"在æœç´¢æ¨¡å¼å¯ä½¿ç”¨å¦‚下的功能键:\n"
+"\n"
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"跳至目录辅助说明\n"
+"\n"
+" 先输入您想è¦æµè§ˆçš„目录å称。\n"
+"\n"
+" 如果制表符补全的功能没有被关闭,您å¯ä»¥åˆ©ç”¨åˆ¶è¡¨ç¬¦(å°è¯•)自动补全目录å称。\n"
+"\n"
+" 以下的功能键å¯ç”¨äºŽè·³è‡³ç›®å½•æ¨¡å¼ï¼š\n"
+"\n"
+
+#: src/help.c:328
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"拼写检查辅助说明\n"
+"\n"
+" 拼写检查程åºä¼šæ£€æŸ¥å½“å‰æ–‡ä»¶ä¸­æ‰€æœ‰æ–‡å­—的拼法。当é‡åˆ°ä¸€ä¸ªæœªçŸ¥çš„字,它会 被标记"
+"èµ·æ¥ï¼Œå¹¶è®©æ‚¨ç¼–辑替代文字。对于当å‰æ–‡ä»¶ä¸­æ¯ä¸€ä¸ªæ‹¼é”™çš„字,都会显示 替æ¢çš„æ示;"
+"或者,如果已ç»ç”¨æ ‡è®°é€‰æ‹©äº†æ–‡å­—çš„è¯ï¼Œé‚£å°±åªä½œç”¨äºŽé€‰å–的文字之中。\n"
+"\n"
+" 以下的功能键å¯ç”¨äºŽæ‹¼å†™æ£€æŸ¥æ¨¡å¼ï¼š\n"
+"\n"
+
+#: src/help.c:343
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"执行命令辅助说明\n"
+"\n"
+" 本选å•å…许您将shell 执行的命令输出结果,æ’入当å‰çš„缓冲区(或是多é‡ç¼“冲区模å¼"
+"下的新缓冲区)。如果您需è¦å¦ä¸€ä¸ªç©ºç™½ç¼“冲区,就ä¸è¦è¾“入任何命令。\n"
+"\n"
+" 以下的功能键å¯ç”¨äºŽæ‰§è¡Œå‘½ä»¤æ¨¡å¼ï¼š\n"
+"\n"
+
+#: src/help.c:356
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"nano 辅助说明\n"
+"\n"
+" nano 编辑器是设计æ¥åœ¨åŠŸèƒ½æ€§åŠæ˜“用性方é¢ï¼Œæ¨¡ä»¿åŽç››é¡¿å¤§å­¦çš„Pico 文字编辑器。它"
+"包括四个主è¦éƒ¨ä»½ï¼šé¡¶è¡Œæ˜¾ç¤ºç¨‹åºç‰ˆæœ¬ã€å½“å‰è¢«ç¼–辑的文件å, 以åŠæ˜¯å¦è¿™æ–‡ä»¶å·²ç»æ›´"
+"动过。接ç€æ˜¯ä¸»è¦ç¼–辑区,显示正在编辑的文件。状æ€è¡Œä½äºŽå€’数第三行,用æ¥æ˜¾ç¤ºé‡"
+"è¦çš„ä¿¡æ¯ã€‚底部的两行则显示编辑器中最常用到的快æ·é”®ã€‚\n"
+"\n"
+" "
+
+#: src/help.c:366
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"å¿«æ·é”®çš„è®°å·å®šä¹‰å¦‚下:控制键组(Control-key) åºåˆ—是以一个 \"帽å­\" (caret, ^)"
+"符å·æ¥è¡¨ç¤ºï¼Œå®ƒå¯ä»¥é€šè¿‡Ctrl键或是按两次Esc é”®æ¥è¾“入。脱离键组(Escape-key) åºåˆ—"
+"是以\"中介\" (Meta, M) 符å·è¡¨ç¤ºï¼Œå®ƒå¯ä»¥ä¾ç…§æ‚¨çš„键盘设定,利用Esc,Alt 或Meta "
+"æ¥è¾“入。"
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"å¦å¤–,按Esc 两次之åŽå†é”®å…¥ä»Ž000 到255 之间的三ä½æ•°å­—,则会输入该ASCII ç å¯¹åº”"
+"的字符。下列按键组åˆå¯ç”¨äºŽä¸»è¦ç¼–辑区,替代按键则显示于括å·å†…“\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "å¯ç”¨/关闭"
+
+#: src/nano.c:587
+msgid "Key invalid in view mode"
+msgstr "观看模å¼ä¸­æ­¤æŒ‰é”®æ— æ•ˆ"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"缓冲内容已写入 %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"缓冲内容未写入至 %s:%s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"缓冲区未写入:%s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "窗å£å°ºå¯¸å¯¹ nano æ¥è¯´å¤ªå°äº†...\n"
+
+#: src/nano.c:816
+#, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"用法: nano [选项] [[+è¡Œ,列] 文件å]...\n"
+"\n"
+
+#: src/nano.c:819
+#, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "选项\t\tGNU 长选项\t\tæ„义\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "选项\t\tæ„义\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "显示此信æ¯"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+行,列"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "从所指列数与行数开始"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "å¯ç”¨æ™ºèƒ½ HOME é”®"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "储存既有文件的备份"
+
+#: src/nano.c:830
+msgid "-C <dir>"
+msgstr "-C <目录>"
+
+#: src/nano.c:830
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=<目录>"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "用以储存独一备份文件的目录"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr "用粗体替代颜色å转"
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "将已输入的制表符转æ¢ä¸ºç©ºç™½"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "å¯ç”¨å¤šé‡æ–‡ä»¶ç¼“冲区功能"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "记录与读å–æœç´¢/替æ¢çš„历å²å­—符串"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "ä¸è¦å‚考nanorc 文件"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "修正数字键区按键混淆问题"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "ä¸è¦å°†æ¢è¡ŒåŠ åˆ°æ–‡ä»¶æœ«ç«¯"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "ä¸è¦ä»Ž DOS/Mac æ ¼å¼è½¬æ¢"
+
+#: src/nano.c:858
+msgid "Use one more line for editing"
+msgstr "编辑时多使用一行"
+
+#: src/nano.c:860
+msgid "-Q <str>"
+msgstr "-Q <字符串>"
+
+#: src/nano.c:860
+msgid "--quotestr=<str>"
+msgstr "--quotestr=<字符串>"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "引用代表字符串"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "é™åˆ¶æ¨¡å¼"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr "按行滚动而ä¸æ˜¯åŠå±"
+
+#: src/nano.c:868
+msgid "-T <#cols>"
+msgstr "-T <#列数>"
+
+#: src/nano.c:868
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=<#列数>"
+
+#: src/nano.c:869
+msgid "Set width of a tab to #cols columns"
+msgstr "设定制表符宽度为 #列数"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "状æ€è¡Œå¿«é€Ÿé—ªåŠ¨"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "显示版本资讯并离开"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "更正确地侦测å•å­—边界"
+
+#: src/nano.c:880
+msgid "-Y <str>"
+msgstr "-Y <字符串>"
+
+#: src/nano.c:880
+msgid "--syntax=<str>"
+msgstr "--syntax=<字符串>"
+
+#: src/nano.c:881
+msgid "Syntax definition to use for coloring"
+msgstr "用于加亮的语法定义"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "æŒç»­æ˜¾ç¤ºæ¸¸æ ‡ä½ç½®"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "修正退格键/删除键混淆问题"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "自动缩进新行"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "从游标剪切至行尾"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "ä¸è¦ä¾ç…§ç¬¦å·è¿žç»“,而是覆盖"
+
+#: src/nano.c:894
+msgid "Enable the use of the mouse"
+msgstr "å¯ç”¨é¼ æ ‡åŠŸèƒ½"
+
+#: src/nano.c:897
+msgid "-o <dir>"
+msgstr "-o <目录>"
+
+#: src/nano.c:897
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=<目录>"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "设定æ“作目录"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "ä¿ç•™XON (^Q) å’ŒXOFF (^S) 按键"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr "沉默忽略å¯åŠ¨é—®é¢˜, 比如rc 文件错误"
+
+#: src/nano.c:905
+msgid "-r <#cols>"
+msgstr "-r <#列数>"
+
+#: src/nano.c:905
+msgid "--fill=<#cols>"
+msgstr "--fill=<#列数>"
+
+#: src/nano.c:906
+msgid "Set wrapping point at column #cols"
+msgstr "设定折行宽度为 #列数"
+
+#: src/nano.c:909
+msgid "-s <prog>"
+msgstr "-s <程åº>"
+
+#: src/nano.c:909
+msgid "--speller=<prog>"
+msgstr "--speller=<程åº>"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "å¯ç”¨æ›¿ä»£çš„拼写检查程åº"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "离开时自动储存,ä¸è¦æ示"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr "å…许通用撤销[试验性特性]"
+
+#: src/nano.c:918
+msgid "View mode (read-only)"
+msgstr "查看(åªè¯»)模å¼"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "ä¸è¦è‡ªåŠ¨æ¢è¡Œ"
+
+#: src/nano.c:922
+msgid "Don't show the two help lines"
+msgstr "ä¸è¦æ˜¾ç¤ºè¾…助区"
+
+#: src/nano.c:923
+msgid "Enable suspension"
+msgstr "å¯ç”¨æš‚åœåŠŸèƒ½"
+
+#: src/nano.c:924
+msgid "Enable soft line wrapping"
+msgstr "å¯ç”¨è½¯æ¢è¡Œ"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(忽略,为与Pico 相容)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano 版本%s (编译于%s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " 电å­é‚®ä»¶: nano@nano-editor.org\t\t网页: http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" 编译选项:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "对ä¸èµ·ï¼Œæ­¤åŠŸèƒ½çš„支æŒä»¥ç¦ç”¨"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "储存更动过的缓冲区å—(回答 \"No\" 会撤销修改)?"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr "对ä¸èµ·ï¼Œæ— æ³•ä»Žé”®ç›˜è®¾å¤‡é‡æ–°æ‰“开标准输入\n"
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr "正在从标准输入读入,å¯ç”¨ ^C 中断\n"
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "接收到SIGHUP 或SIGTERM\n"
+
+#: src/nano.c:1204
+#, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "使用\"fg\" 返回nano\n"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "å·²å¯ç”¨"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "å·²ç¦ç”¨"
+
+#: src/nano.c:1548 src/winio.c:1256
+msgid "Unknown Command"
+msgstr "未知命令"
+
+#: src/nano.c:1674
+msgid "XON ignored, mumble mumble"
+msgstr "忽略XON,嗯嗯。"
+
+#: src/nano.c:1679
+msgid "XOFF ignored, mumble mumble"
+msgstr "忽略XOFF,嗯嗯。"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "所è¦æ±‚的制表符宽度%s 无效"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "所è¦æ±‚的填满行数\"%s\" 无效"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Yy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Aa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "是"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "全部"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "å¦"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "在%s(第%lu è¡Œ)中å‘生错误:"
+
+#: src/rcfile.c:185
+#, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "å‚æ•°%s 有未å°é—­çš„ \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "正则表示å¼å­—符串必须以 \" 字符开始åŠç»“æŸ"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "éžæ³•çš„æ­£åˆ™è¡¨ç¤ºå¼ \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "缺少语法å称"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "\"none\" 语法已被ä¿ç•™"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "\"default\" 语法必须ä¸å«ä»»ä½•å‰¯æ–‡ä»¶å"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+msgid "Missing key name"
+msgstr "缺少键å称"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr "键绑定必须以\"^\", \"M\" 或 \"F\" 开始"
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr "必须指定键绑定到的函数"
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr "必须指定键绑定到的èœå•(或 \"all\")"
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr "无法映射åå­—\"%s\" 到一个函数"
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr "无法映射åå­—\"%s\" 到一个èœå•"
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr "对ä¸èµ·ï¼Œé”®\"%s\" 属éžæ³•ç»‘定"
+
+#: src/rcfile.c:625
+#, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"颜色 %s 无法识别。\n"
+"有效的颜色是 \"green\"(绿)ã€\"red\"(红)ã€\"blue\"(è“)ã€\n"
+"\"white\"(白)ã€\"yellow\"(黄)ã€\"cyan\"(é’)ã€\"magenta\"(ç‘°)å’Œ\n"
+"\"black\"(黑),选择性的å‰ç½®å­— \"bright\"(明亮) \n"
+"å¯ç”¨äºŽå‰æ™¯è‰²ã€‚"
+
+#: src/rcfile.c:647
+msgid "Cannot add a color command without a syntax command"
+msgstr "无法直接增加颜色而没有语法行"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "缺少颜色å称"
+
+#: src/rcfile.c:672
+#, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "背景色%s ä¸å¯ä¸ºæ˜Žäº®"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "缺少正则表示å¼å­—符串"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" è¦æ±‚对应的\"end=\""
+
+#: src/rcfile.c:804
+msgid "Cannot add a header regex without a syntax command"
+msgstr "无法直接增加头部正则表达å¼è€Œæ²¡æœ‰è¯­æ³•è¡Œ"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr "严é‡é”™è¯¯; 没有键映射到函数 \"%s\""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr "正在退出。如果您想调整您的nanorc 设置,请使用nano 的-I 选项。\n"
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr "命令\"%s\" 被ç¦æ­¢åœ¨åŒ…å«æ–‡ä»¶ä¸­ä½¿ç”¨"
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr "语法\"%s\" 没有color 命令"
+
+#: src/rcfile.c:966
+#, c-format
+msgid "Command \"%s\" not understood"
+msgstr "无法识别\"%s\" 命令"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "缺少旗标"
+
+#: src/rcfile.c:994
+#, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "选项%s 需è¦å‚æ•°"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "选项并éžæ­£ç¡®çš„多字节字符串"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "需è¦éžç©ºæ ¼å­—符"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "需è¦ä¸¤ä¸ªå•è¡Œå­—符"
+
+#: src/rcfile.c:1114
+#, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "无法解除旗标 %s 设定"
+
+#: src/rcfile.c:1123
+#, c-format
+msgid "Unknown flag \"%s\""
+msgstr "未知旗标 %s"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "我找ä¸åˆ°æˆ‘的家目录ï¼å“‡ï¼"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "找ä¸åˆ° \"%.*s%s\""
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " 在标记中(替æ¢)"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (替æ¢)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "替æ¢è¿™ä¸ªï¼Ÿ"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "替æ¢æˆ‘"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "已替æ¢%lu 处"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "输入列å·ï¼Œè¡Œå·"
+
+#: src/search.c:1061
+msgid "Invalid line or column number"
+msgstr "无效的列å·æˆ–è¡Œå·"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "并éžä¸€ä¸ªæ‹¬å·"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "无对应括å·"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "标记设定"
+
+#: src/text.c:58
+msgid "Mark Unset"
+msgstr "标记解除"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr "没有å¯æ’¤é”€çš„æ“作ï¼"
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr "内部错误:无法匹é…è¡Œ %d。请ä¿å­˜æ‚¨çš„工作"
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr "文字增加"
+
+#: src/text.c:475 src/text.c:613
+msgid "text delete"
+msgstr "文本删除"
+
+#: src/text.c:489 src/text.c:628
+msgid "line wrap"
+msgstr "自动æ¢è¡Œ"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr "è¡Œåˆå¹¶"
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr "文字剪切"
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr "å–消剪切"
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr "æ¢è¡Œç¬¦"
+
+#: src/text.c:532 src/text.c:665
+msgid "text insert"
+msgstr "文本æ’å…¥"
+
+#: src/text.c:550 src/text.c:659
+msgid "text replace"
+msgstr "文本替æ¢"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr "内部错误:未知类型。请ä¿å­˜æ‚¨çš„工作"
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr "已撤销æ“作(%s)"
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr "没有å¯é‡åšçš„æ“作ï¼"
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr "内部错误:é‡åšè®¾ç½®å¤±è´¥ã€‚请ä¿å­˜æ‚¨çš„工作"
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr "å·²é‡åšæ“作(%s)"
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "管线功能无效"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "执行功能无效"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr "内部错误:无法é…ç½®å–消剪切。请ä¿å­˜æ‚¨çš„工作"
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr "内部错误:未知类型。请ä¿å­˜æ‚¨çš„工作。"
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "ä¸è‰¯å¼•ç”¨å­—符串%s:%s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "现在å¯ä»¥è¿˜åŽŸå¯¹é½ï¼"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "编辑替代文字"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "无法建立管线功能"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "正在建立错字列表,请ç¨å¾…..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "无法得知管线缓冲区大å°"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "è¿è¡Œ \"spell\" 错误"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "è¿è¡Œ \"sort -f\" 错误"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "è¿è¡Œ \"uniq\" 错误"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "拼写检查结æŸ"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "è¿è¡Œ \"%s\" 错误"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "拼写检查失败:%s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "拼写检查失败:%s:%s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%s字数: %lu 行数: %ld 字符数: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "于选择部份:"
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano 已耗尽内存ï¼"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr "Unicode 输入"
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "已更改"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "查看"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "目录:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "文件:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "行 %ld/%ld (%d%%),列 %lu/%lu (%d%%),字符 %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "nano 文本编辑器"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "版本"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "æ¥è‡ªäºŽ:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "特别感谢:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "自由软体基金会"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "ncurses 部份:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "以åŠå…¶ä»–我们ä¸è®°å¾—的人..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "谢谢您使用 nanoï¼"
+
+#~ msgid "Error writing backup file %s: File owner mismatch"
+#~ msgstr "写入备份文件%s 出错:文件所有者ä¸åŒ¹é…"
+
+#~ msgid "line split"
+#~ msgstr "行分割"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
new file mode 100644
index 0000000..e766811
--- /dev/null
+++ b/po/zh_TW.gmo
Binary files differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644
index 0000000..ff4f42e
--- /dev/null
+++ b/po/zh_TW.po
@@ -0,0 +1,2178 @@
+# Traditional Chinese Messages for the nano editor
+# Copyright (C) 2004, 05 Free Software Foundation, Inc.
+# This file is distributed under the same license as the nano package.
+# Wei-Lun Chao <chaoweilun@pcmail.com.tw>, 2004, 05
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nano 1.3.10pre2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-22 06:34-0500\n"
+"PO-Revision-Date: 2005-12-13 09:33+0800\n"
+"Last-Translator: Wei-Lun Chao <chaoweilun@pcmail.com.tw>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/browser.c:220
+msgid "Go To Directory"
+msgstr "跳至目錄"
+
+#: src/browser.c:233 src/browser.c:830 src/files.c:860 src/files.c:2048
+#: src/nano.c:1060 src/search.c:220 src/search.c:314 src/search.c:975
+#: src/search.c:1040
+msgid "Cancelled"
+msgstr "å·²å–消"
+
+#: src/browser.c:266 src/browser.c:314
+#, c-format
+msgid "Can't go outside of %s in restricted mode"
+msgstr "在é™åˆ¶æ¨¡å¼ä¸­ç„¡æ³•è‡³ %s 外部"
+
+#: src/browser.c:277 src/browser.c:324 src/browser.c:347 src/files.c:722
+#: src/files.c:731 src/files.c:1540 src/files.c:1659 src/files.c:1711
+#: src/files.c:1732 src/files.c:1855 src/files.c:2691 src/rcfile.c:568
+#: src/rcfile.c:1204
+#, c-format
+msgid "Error reading %s: %s"
+msgstr "è®€å– %s 時發生錯誤: %s"
+
+#: src/browser.c:303
+msgid "Can't move up a directory"
+msgstr "無法上移一個目錄"
+
+#. TRANSLATORS: Try to keep this at most 7
+#. * characters.
+#: src/browser.c:665 src/browser.c:674
+msgid "(dir)"
+msgstr "(目錄)"
+
+#. TRANSLATORS: Try to keep this at most 12
+#. * characters.
+#: src/browser.c:671
+msgid "(parent dir)"
+msgstr ""
+
+#: src/browser.c:801 src/search.c:185
+msgid "Search"
+msgstr "æœå°‹"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:805 src/search.c:189
+msgid " [Case Sensitive]"
+msgstr " [符åˆå¤§å°å¯«]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:811 src/search.c:195
+msgid " [Regexp]"
+msgstr " [æ­£è¦è¡¨ç¤ºå¼]"
+
+#. TRANSLATORS: This string is just a modifier for the search
+#. * prompt; no grammar is implied.
+#: src/browser.c:817 src/search.c:201
+msgid " [Backwards]"
+msgstr " [å‘後æœå°‹]"
+
+#: src/browser.c:909 src/browser.c:917 src/search.c:395
+msgid "Search Wrapped"
+msgstr "已從頭æœå°‹"
+
+#: src/browser.c:1006 src/browser.c:1039 src/search.c:514 src/search.c:517
+#: src/search.c:574 src/search.c:577
+msgid "This is the only occurrence"
+msgstr "這是惟一出ç¾ä¹‹è™•"
+
+#: src/browser.c:1042 src/search.c:583
+msgid "No current search pattern"
+msgstr "沒有符åˆç›®å‰æœå°‹å½¢å¼è€…"
+
+#: src/files.c:125
+#, c-format
+msgid "Can't insert file from outside of %s"
+msgstr "無法æ’å…¥ %s 外部的檔案"
+
+#: src/files.c:234
+msgid "No more open file buffers"
+msgstr "無多餘檔案緩è¡å€å¯é–‹å•Ÿ"
+
+#: src/files.c:250
+#, c-format
+msgid "Switched to %s"
+msgstr "切æ›è‡³ %s"
+
+#: src/files.c:251 src/global.c:469 src/winio.c:2168
+msgid "New Buffer"
+msgstr "æ–°ç·©è¡å€"
+
+#: src/files.c:633
+#, c-format
+msgid "Read %lu line (Converted from DOS and Mac format)"
+msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
+msgstr[0] "å·²è®€å– %lu 列 (轉檔自 DOS 與 Mac æ ¼å¼)"
+
+#: src/files.c:638
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS and Mac format - Warning: No write "
+"permission)"
+msgstr[0] "å·²è®€å– %lu 列 (轉檔自 DOS 與 Mac æ ¼å¼)"
+
+#: src/files.c:644
+#, c-format
+msgid "Read %lu line (Converted from Mac format)"
+msgid_plural "Read %lu lines (Converted from Mac format)"
+msgstr[0] "å·²è®€å– %lu 列 (轉檔自 Mac æ ¼å¼)"
+
+#: src/files.c:648
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from Mac format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from Mac format - Warning: No write permission)"
+msgstr[0] "å·²è®€å– %lu 列 (轉檔自 Mac æ ¼å¼)"
+
+#: src/files.c:654
+#, c-format
+msgid "Read %lu line (Converted from DOS format)"
+msgid_plural "Read %lu lines (Converted from DOS format)"
+msgstr[0] "å·²è®€å– %lu 列 (轉檔自 DOS æ ¼å¼)"
+
+#: src/files.c:658
+#, fuzzy, c-format
+msgid ""
+"Read %lu line (Converted from DOS format - Warning: No write permission)"
+msgid_plural ""
+"Read %lu lines (Converted from DOS format - Warning: No write permission)"
+msgstr[0] "å·²è®€å– %lu 列 (轉檔自 DOS æ ¼å¼)"
+
+#: src/files.c:664
+#, c-format
+msgid "Read %lu line"
+msgid_plural "Read %lu lines"
+msgstr[0] "å·²è®€å– %lu 列"
+
+#: src/files.c:667
+#, c-format
+msgid "Read %lu line ( Warning: No write permission)"
+msgid_plural "Read %lu lines (Warning: No write permission)"
+msgstr[0] ""
+
+#: src/files.c:700 src/files.c:736
+msgid "Reading File"
+msgstr "正在讀å–檔案"
+
+#: src/files.c:706
+msgid "New File"
+msgstr "新檔案"
+
+#: src/files.c:709
+#, c-format
+msgid "\"%s\" not found"
+msgstr "找ä¸åˆ° \"%s\""
+
+#: src/files.c:717 src/rcfile.c:559 src/rcfile.c:1154 src/rcfile.c:1195
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr "\"%s\" 是一個目錄"
+
+#: src/files.c:718 src/rcfile.c:560 src/rcfile.c:1155 src/rcfile.c:1196
+#, fuzzy, c-format
+msgid "\"%s\" is a device file"
+msgstr "\"%s\" 是一個è£ç½®æª”案"
+
+#: src/files.c:817
+#, c-format
+msgid "Command to execute in new buffer [from %s] "
+msgstr "在新緩è¡å€ä¸­åŸ·è¡Œçš„命令 [從 %s] "
+
+#: src/files.c:819
+#, c-format
+msgid "Command to execute [from %s] "
+msgstr "執行的命令 [從 %s] "
+
+#: src/files.c:825
+#, c-format
+msgid "File to insert into new buffer [from %s] "
+msgstr "所è¦æ’入新緩è¡å€çš„檔案 [從 %s] "
+
+#: src/files.c:827
+#, c-format
+msgid "File to insert [from %s] "
+msgstr "所è¦æ’入的檔案 [從 %s] "
+
+#: src/files.c:1077
+#, fuzzy
+msgid "Key invalid in non-multibuffer mode"
+msgstr "éžå¤šé‡ç·©è¡å€æ¨¡å¼ä¸­æ­¤æŒ‰éµç„¡æ•ˆ"
+
+#: src/files.c:1486
+#, c-format
+msgid "Can't write outside of %s"
+msgstr "無法寫入 %s 外部"
+
+#: src/files.c:1501
+msgid "Cannot prepend or append to a symlink with --nofollow set"
+msgstr "--nofollow 設定下,無法å‰å¼•æˆ–附加至符號連çµæª”"
+
+#: src/files.c:1581 src/files.c:1603 src/files.c:1621 src/files.c:1632
+#: src/files.c:1640 src/files.c:1667
+#, fuzzy, c-format
+msgid "Error writing backup file %s: %s"
+msgstr "寫入暫存檔案 %s 時發生錯誤"
+
+#: src/files.c:1582 src/nano.c:701
+msgid "Too many backup files?"
+msgstr "太多備份檔案?"
+
+#: src/files.c:1687 src/files.c:1744 src/files.c:1763 src/files.c:1775
+#: src/files.c:1799 src/files.c:1817 src/files.c:1827 src/files.c:1863
+#: src/files.c:1868 src/files.c:2764 src/files.c:2773
+#, c-format
+msgid "Error writing %s: %s"
+msgstr "寫入 %s 時發生錯誤: %s"
+
+#: src/files.c:1721 src/text.c:2929 src/text.c:2941
+#, c-format
+msgid "Error writing temp file: %s"
+msgstr "寫入暫存檔案 %s 時發生錯誤"
+
+#: src/files.c:1900
+#, c-format
+msgid "Wrote %lu line"
+msgid_plural "Wrote %lu lines"
+msgstr[0] "已寫入 %lu 列"
+
+#: src/files.c:2004
+msgid " [DOS Format]"
+msgstr " [DOS æ ¼å¼]"
+
+#: src/files.c:2005
+msgid " [Mac Format]"
+msgstr " [Mac æ ¼å¼]"
+
+#: src/files.c:2007
+msgid " [Backup]"
+msgstr " [備份]"
+
+#: src/files.c:2015
+msgid "Prepend Selection to File"
+msgstr "å‰å¼•é¸æ“‡éƒ¨ä»½æ–¼æª”案"
+
+#: src/files.c:2016
+msgid "Append Selection to File"
+msgstr "附加é¸æ“‡éƒ¨ä»½è‡³æª”案"
+
+#: src/files.c:2017
+msgid "Write Selection to File"
+msgstr "寫入é¸æ“‡éƒ¨ä»½è‡³æª”案"
+
+#: src/files.c:2020
+msgid "File Name to Prepend to"
+msgstr "è¦å‰å¼•æ–¼çš„檔案å稱"
+
+#: src/files.c:2021
+msgid "File Name to Append to"
+msgstr "è¦é™„加至的檔案å稱"
+
+#: src/files.c:2022
+msgid "File Name to Write"
+msgstr "è¦å¯«å…¥çš„檔案å稱"
+
+#: src/files.c:2153
+msgid "File exists, OVERWRITE ? "
+msgstr "檔案已存在,è¦è¦†å¯«å—Žï¼Ÿ"
+
+#: src/files.c:2162
+msgid "Save file under DIFFERENT NAME ? "
+msgstr "以ä¸åŒçš„å稱存檔?"
+
+#: src/files.c:2173
+msgid "File was modified since you opened it, continue saving ? "
+msgstr ""
+
+#: src/files.c:2611
+msgid "(more)"
+msgstr "(更多)"
+
+#: src/files.c:2694 src/rcfile.c:1220
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Press Enter to continue starting nano.\n"
+msgstr ""
+"\n"
+"按下輸入éµç¹¼çºŒå•Ÿå‹• nano\n"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:415 src/prompt.c:1288
+msgid "Cancel"
+msgstr "å–消"
+
+#: src/global.c:416
+msgid "Replace"
+msgstr "ç½®æ›"
+
+#: src/global.c:417
+msgid "No Replace"
+msgstr "ä¸ç½®æ›"
+
+#: src/global.c:420
+msgid "Case Sens"
+msgstr "ä¾å¤§å°å¯«"
+
+#: src/global.c:421
+msgid "Backwards"
+msgstr "å‘後æœå°‹"
+
+#: src/global.c:425
+msgid "Regexp"
+msgstr "æ­£è¦è¡¨ç¤º"
+
+#. TRANSLATORS: Try to keep the next five strings at most 10 characters.
+#: src/global.c:451
+#, fuzzy
+msgid "PrevHstory"
+msgstr "æ­·å²è¨˜éŒ„"
+
+#: src/global.c:452
+#, fuzzy
+msgid "NextHstory"
+msgstr "æ­·å²è¨˜éŒ„"
+
+#: src/global.c:453
+msgid "Go To Text"
+msgstr "跳至文字"
+
+#. TRANSLATORS: Try to keep the next three strings at most 12 characters.
+#: src/global.c:455
+#, fuzzy
+msgid "WhereIs Next"
+msgstr "何處是下一個"
+
+#: src/global.c:457
+#, fuzzy
+msgid "First File"
+msgstr "首列"
+
+#: src/global.c:458
+#, fuzzy
+msgid "Last File"
+msgstr "尾列"
+
+#. TRANSLATORS: Try to keep the next nine strings at most 16 characters.
+#: src/global.c:460
+msgid "To Files"
+msgstr "檔案é¸å–®"
+
+#: src/global.c:462
+msgid "DOS Format"
+msgstr "DOS æ ¼å¼"
+
+#: src/global.c:463
+msgid "Mac Format"
+msgstr "Mac æ ¼å¼"
+
+#: src/global.c:464
+msgid "Append"
+msgstr "附加"
+
+#: src/global.c:465
+msgid "Prepend"
+msgstr "å‰å¼•"
+
+#: src/global.c:466
+msgid "Backup File"
+msgstr "備份檔案"
+
+#: src/global.c:467
+msgid "Execute Command"
+msgstr "執行命令"
+
+#: src/global.c:471
+msgid "Go To Dir"
+msgstr "跳至目錄"
+
+#. TRANSLATORS: Try to keep the following strings at most 10 characters.
+#: src/global.c:480
+msgid "Get Help"
+msgstr "求助"
+
+#: src/global.c:481
+msgid "Exit"
+msgstr "離開"
+
+#: src/global.c:482
+msgid "Where Is"
+msgstr "æœå°‹"
+
+#: src/global.c:483
+msgid "Prev Page"
+msgstr "上é "
+
+#: src/global.c:484
+msgid "Next Page"
+msgstr "下é "
+
+#: src/global.c:485
+msgid "First Line"
+msgstr "首列"
+
+#: src/global.c:486
+msgid "Last Line"
+msgstr "尾列"
+
+#: src/global.c:487
+msgid "Suspend"
+msgstr "æš«åœ"
+
+#: src/global.c:489
+msgid "Beg of Par"
+msgstr "段è½é–‹é ­"
+
+#: src/global.c:490
+msgid "End of Par"
+msgstr "段è½çµå°¾"
+
+#: src/global.c:491
+msgid "FullJstify"
+msgstr "全部å°é½Š"
+
+#: src/global.c:493
+msgid "Refresh"
+msgstr "é‡æ–°é¡¯ç¤º"
+
+#: src/global.c:495
+msgid "Insert File"
+msgstr "æ’入檔案"
+
+#: src/global.c:497
+msgid "Go To Line"
+msgstr "跳列"
+
+#: src/global.c:500
+msgid "Justify the current paragraph"
+msgstr "å°é½Šç›®å‰æ®µè½"
+
+#. TRANSLATORS: The next long series of strings are shortcut descriptions;
+#. * they are best kept shorter than 56 characters, but may be longer.
+#: src/global.c:505
+msgid "Cancel the current function"
+msgstr "å–消目å‰åŠŸèƒ½"
+
+#: src/global.c:506
+msgid "Display this help text"
+msgstr ""
+
+#: src/global.c:509
+#, fuzzy
+msgid "Close the current file buffer / Exit from nano"
+msgstr "關閉目å‰æª”案緩è¡å€ä¸¦é›¢é–‹ nano"
+
+#: src/global.c:511
+msgid "Exit from nano"
+msgstr "離開 nano"
+
+#: src/global.c:515
+msgid "Write the current file to disk"
+msgstr "寫入目å‰æª”案至ç£ç¢Ÿ"
+
+#: src/global.c:517
+msgid "Insert another file into the current one"
+msgstr "æ’入它檔至目å‰æª”案"
+
+#: src/global.c:519
+#, fuzzy
+msgid "Search for a string or a regular expression"
+msgstr "使用正è¦è¡¨ç¤ºå¼"
+
+#: src/global.c:520
+#, fuzzy
+msgid "Go to previous screen"
+msgstr "跳至å‰ä¸€ç•«é¢"
+
+#: src/global.c:521
+#, fuzzy
+msgid "Go to next screen"
+msgstr "跳至後一畫é¢"
+
+#: src/global.c:523
+msgid "Cut the current line and store it in the cutbuffer"
+msgstr "剪下目å‰é€™åˆ—並存至剪貼簿"
+
+#: src/global.c:525
+msgid "Uncut from the cutbuffer into the current line"
+msgstr "從剪貼簿還原至目å‰é€™åˆ—"
+
+#: src/global.c:527
+#, fuzzy
+msgid "Display the position of the cursor"
+msgstr "顯示游標ä½ç½®"
+
+#: src/global.c:529
+msgid "Invoke the spell checker, if available"
+msgstr "嘗試呼å«æ‹¼å­—檢查"
+
+#: src/global.c:531
+#, fuzzy
+msgid "Replace a string or a regular expression"
+msgstr "使用正è¦è¡¨ç¤ºå¼"
+
+#: src/global.c:532
+msgid "Go to line and column number"
+msgstr "跳至指定列與行ä½ç½®"
+
+#: src/global.c:534
+msgid "Mark text at the cursor position"
+msgstr "標記游標所在文字"
+
+#: src/global.c:535
+msgid "Repeat last search"
+msgstr "é‡è¦†ä¸Šæ¬¡æœå°‹"
+
+#: src/global.c:537
+#, fuzzy
+msgid "Copy the current line and store it in the cutbuffer"
+msgstr "剪下目å‰é€™åˆ—並存至剪貼簿"
+
+#: src/global.c:538
+#, fuzzy
+msgid "Indent the current line"
+msgstr "附加至目å‰æª”案"
+
+#: src/global.c:539
+#, fuzzy
+msgid "Unindent the current line"
+msgstr "附加至目å‰æª”案"
+
+#: src/global.c:540
+msgid "Undo the last operation"
+msgstr ""
+
+#: src/global.c:541
+msgid "Redo the last undone operation"
+msgstr ""
+
+#: src/global.c:543
+#, fuzzy
+msgid "Go forward one character"
+msgstr "å‘å‰è·³ä¸€å­—å…ƒ"
+
+#: src/global.c:544
+#, fuzzy
+msgid "Go back one character"
+msgstr "å‘後跳一字元"
+
+#: src/global.c:546
+#, fuzzy
+msgid "Go forward one word"
+msgstr "å‘å‰è·³ä¸€å€‹å­—"
+
+#: src/global.c:547
+#, fuzzy
+msgid "Go back one word"
+msgstr "å‘後跳一個字"
+
+#: src/global.c:549
+#, fuzzy
+msgid "Go to previous line"
+msgstr "跳至å‰ä¸€åˆ—"
+
+#: src/global.c:550
+#, fuzzy
+msgid "Go to next line"
+msgstr "跳至後一列"
+
+#: src/global.c:551
+#, fuzzy
+msgid "Go to beginning of current line"
+msgstr "跳至目å‰åˆ—首"
+
+#: src/global.c:552
+#, fuzzy
+msgid "Go to end of current line"
+msgstr "跳至目å‰åˆ—å°¾"
+
+#: src/global.c:555
+#, fuzzy
+msgid "Go to beginning of paragraph; then of previous paragraph"
+msgstr "跳至目å‰æ®µè½é–‹é ­"
+
+#: src/global.c:557
+#, fuzzy
+msgid "Go just beyond end of paragraph; then of next paragraph"
+msgstr "跳至目å‰æ®µè½çµå°¾"
+
+#: src/global.c:560
+msgid "Go to the first line of the file"
+msgstr "跳至檔案第一列"
+
+#: src/global.c:562
+msgid "Go to the last line of the file"
+msgstr "跳至檔案最後一列"
+
+#: src/global.c:564
+#, fuzzy
+msgid "Go to the matching bracket"
+msgstr "ç„¡å°æ‡‰æ‹¬è™Ÿ"
+
+#: src/global.c:566
+msgid "Scroll up one line without scrolling the cursor"
+msgstr "å‘上æ²å‹•ä¸€åˆ—但ä¸æ²å‹•æ¸¸æ¨™"
+
+#: src/global.c:568
+msgid "Scroll down one line without scrolling the cursor"
+msgstr "å‘下æ²å‹•ä¸€åˆ—但ä¸æ²å‹•æ¸¸æ¨™"
+
+#: src/global.c:572
+msgid "Switch to the previous file buffer"
+msgstr "切æ›è‡³ä¸Šå€‹æª”案緩è¡å€"
+
+#: src/global.c:574
+msgid "Switch to the next file buffer"
+msgstr "切æ›è‡³ä¸‹å€‹æª”案緩è¡å€"
+
+#: src/global.c:577
+#, fuzzy
+msgid "Insert the next keystroke verbatim"
+msgstr "æ’入字元原形"
+
+#: src/global.c:579
+#, fuzzy
+msgid "Insert a tab at the cursor position"
+msgstr "æ’入跳格字元於游標ä½ç½®"
+
+#: src/global.c:581
+#, fuzzy
+msgid "Insert a newline at the cursor position"
+msgstr "æ’å…¥æ›åˆ—字元於游標ä½ç½®"
+
+#: src/global.c:583
+msgid "Delete the character under the cursor"
+msgstr "刪除游標之下的字元"
+
+#: src/global.c:585
+msgid "Delete the character to the left of the cursor"
+msgstr "刪除游標左å´çš„å­—å…ƒ"
+
+#: src/global.c:588
+msgid "Cut from the cursor position to the end of the file"
+msgstr "從游標ä½ç½®å‰ªä¸‹è‡³æª”案çµå°¾"
+
+#: src/global.c:591
+msgid "Justify the entire file"
+msgstr "å°é½Šæ•´å€‹æª”案"
+
+#: src/global.c:595
+msgid "Count the number of words, lines, and characters"
+msgstr "計算字數ã€åˆ—數與字元數"
+
+#: src/global.c:598
+msgid "Refresh (redraw) the current screen"
+msgstr "é‡æ–°é¡¯ç¤ºç›®å‰ç•«é¢"
+
+#: src/global.c:600
+msgid "Suspend the editor (if suspend is enabled)"
+msgstr ""
+
+#: src/global.c:603
+msgid "Toggle the case sensitivity of the search"
+msgstr ""
+
+#: src/global.c:605
+#, fuzzy
+msgid "Reverse the direction of the search"
+msgstr "顯示游標ä½ç½®"
+
+#: src/global.c:609
+#, fuzzy
+msgid "Toggle the use of regular expressions"
+msgstr "使用正è¦è¡¨ç¤ºå¼"
+
+#: src/global.c:613
+#, fuzzy
+msgid "Recall the previous search/replace string"
+msgstr "編輯å‰æ¬¡æœå°‹/ç½®æ›å­—串"
+
+#: src/global.c:615
+#, fuzzy
+msgid "Recall the next search/replace string"
+msgstr "編輯å‰æ¬¡æœå°‹/ç½®æ›å­—串"
+
+#: src/global.c:618
+msgid "Go to file browser"
+msgstr "呼å«æª”案é¸å–®"
+
+#: src/global.c:621
+#, fuzzy
+msgid "Toggle the use of DOS format"
+msgstr "以 DOS æ ¼å¼å¯«å…¥æª”案"
+
+#: src/global.c:622
+#, fuzzy
+msgid "Toggle the use of Mac format"
+msgstr "以 Mac æ ¼å¼å¯«å…¥æª”案"
+
+#: src/global.c:624
+#, fuzzy
+msgid "Toggle appending"
+msgstr "長列轉æ›"
+
+#: src/global.c:625
+msgid "Toggle prepending"
+msgstr ""
+
+#: src/global.c:628
+#, fuzzy
+msgid "Toggle backing up of the original file"
+msgstr "儲存既有檔案的備份"
+
+#: src/global.c:629
+msgid "Execute external command"
+msgstr "執行外部命令"
+
+#: src/global.c:633
+#, fuzzy
+msgid "Toggle the use of a new buffer"
+msgstr "無法得知管線緩è¡å€å¤§å°"
+
+#: src/global.c:636
+msgid "Exit from the file browser"
+msgstr "從檔案é¸å–®é›¢é–‹"
+
+#: src/global.c:638
+#, fuzzy
+msgid "Go to the first file in the list"
+msgstr "跳至檔案第一列"
+
+#: src/global.c:640
+#, fuzzy
+msgid "Go to the last file in the list"
+msgstr "跳至檔案最後一列"
+
+#: src/global.c:641
+#, fuzzy
+msgid "Go to the next file in the list"
+msgstr "跳至後一列"
+
+#: src/global.c:642
+#, fuzzy
+msgid "Go to the previous file in the list"
+msgstr "跳至å‰ä¸€åˆ—"
+
+#: src/global.c:643
+msgid "Go to directory"
+msgstr "跳至目錄"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:670
+msgid "Close"
+msgstr "關閉"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:679
+msgid "WriteOut"
+msgstr "寫入"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:684
+msgid "Justify"
+msgstr "å°é½Š"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:696
+msgid "Read File"
+msgstr "讀檔"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:713
+msgid "Cut Text"
+msgstr "剪下文字"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:718
+msgid "UnJustify"
+msgstr "還原å°é½Š"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:723
+#, fuzzy
+msgid "UnCut Text"
+msgstr "還原剪下"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:728 src/global.c:755
+msgid "Cur Pos"
+msgstr "游標ä½ç½®"
+
+#. TRANSLATORS: Try to keep this at most 10 characters.
+#: src/global.c:737
+msgid "To Spell"
+msgstr "拼字檢查"
+
+#: src/global.c:771
+msgid "Mark Text"
+msgstr "標記文字"
+
+#: src/global.c:777
+#, fuzzy
+msgid "Copy Text"
+msgstr "剪下文字"
+
+#: src/global.c:780
+#, fuzzy
+msgid "Indent Text"
+msgstr "剪下文字"
+
+#: src/global.c:783
+#, fuzzy
+msgid "Unindent Text"
+msgstr "還原剪下"
+
+#: src/global.c:787
+msgid "Undo"
+msgstr ""
+
+#: src/global.c:790
+msgid "Redo"
+msgstr ""
+
+#: src/global.c:796 src/global.c:800
+msgid "Forward"
+msgstr "å‘å‰"
+
+#: src/global.c:806 src/global.c:810
+msgid "Back"
+msgstr "å‘後"
+
+#: src/global.c:817
+msgid "Next Word"
+msgstr "後一個字"
+
+#: src/global.c:820
+msgid "Prev Word"
+msgstr "å‰ä¸€å€‹å­—"
+
+#: src/global.c:824
+msgid "Prev Line"
+msgstr "上列"
+
+#: src/global.c:827
+msgid "Next Line"
+msgstr "下列"
+
+#: src/global.c:830
+msgid "Home"
+msgstr "頂端"
+
+#: src/global.c:833
+msgid "End"
+msgstr "尾端"
+
+#: src/global.c:845
+msgid "Find Other Bracket"
+msgstr "尋找其他括號"
+
+#: src/global.c:848
+msgid "Scroll Up"
+msgstr "å‘上æ²å‹•"
+
+#: src/global.c:851
+msgid "Scroll Down"
+msgstr "å‘下æ²å‹•"
+
+#: src/global.c:856
+msgid "Previous File"
+msgstr "上個檔案"
+
+#: src/global.c:858
+msgid "Next File"
+msgstr "下個檔案"
+
+#. TRANSLATORS: This is displayed when the next keystroke will be
+#. * inserted verbatim.
+#: src/global.c:862 src/text.c:3045
+msgid "Verbatim Input"
+msgstr "原形輸入"
+
+#: src/global.c:867
+msgid "Tab"
+msgstr "跳格éµ"
+
+#: src/global.c:870
+msgid "Enter"
+msgstr "輸入éµ"
+
+#: src/global.c:873
+msgid "Delete"
+msgstr "刪除éµ"
+
+#: src/global.c:876
+msgid "Backspace"
+msgstr "退格éµ"
+
+#: src/global.c:893
+msgid "CutTillEnd"
+msgstr "刪至末端"
+
+#: src/global.c:906
+msgid "Word Count"
+msgstr "計算字數"
+
+#: src/global.c:1367
+msgid "Help mode"
+msgstr "輔助模å¼"
+
+#: src/global.c:1369
+msgid "Constant cursor position display"
+msgstr "æŒçºŒé¡¯ç¤ºæ¸¸æ¨™ä½ç½®"
+
+#: src/global.c:1371
+#, fuzzy
+msgid "Use of one more line for editing"
+msgstr "編輯時使用更多空間"
+
+#: src/global.c:1373
+msgid "Smooth scrolling"
+msgstr "平滑å¼æ²å‹•ç•«é¢"
+
+#: src/global.c:1375
+msgid "Whitespace display"
+msgstr "顯示空格"
+
+#: src/global.c:1377
+msgid "Color syntax highlighting"
+msgstr "語法色彩標示"
+
+#: src/global.c:1379
+msgid "Smart home key"
+msgstr "智慧型 HOME 按éµ"
+
+#: src/global.c:1381
+msgid "Auto indent"
+msgstr "自動縮排"
+
+#: src/global.c:1383
+msgid "Cut to end"
+msgstr "剪下至列尾"
+
+#: src/global.c:1385
+msgid "Long line wrapping"
+msgstr "長列轉æ›"
+
+#: src/global.c:1387
+msgid "Conversion of typed tabs to spaces"
+msgstr "已輸入跳格符號至空白的轉æ›"
+
+#: src/global.c:1389
+msgid "Backup files"
+msgstr "備份檔案"
+
+#: src/global.c:1391
+msgid "Multiple file buffers"
+msgstr "多é‡æª”案緩è¡å€"
+
+#: src/global.c:1393
+msgid "Mouse support"
+msgstr "滑鼠支æ´"
+
+#: src/global.c:1395
+msgid "No conversion from DOS/Mac format"
+msgstr "ä¸å¾ž DOS/Mac æ ¼å¼è½‰æª”"
+
+#: src/global.c:1397
+#, fuzzy
+msgid "Suspension"
+msgstr "æš«åœ"
+
+#: src/global.c:1399
+#, fuzzy
+msgid "Soft line wrapping"
+msgstr "長列轉æ›"
+
+#: src/help.c:236
+msgid ""
+"Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search. "
+msgstr ""
+"æœå°‹å‘½ä»¤è¼”助說明\n"
+"\n"
+" 首先輸入您想è¦æœå°‹çš„å­—ä¸²æˆ–å­—å…ƒï¼Œç„¶å¾ŒæŒ‰ä¸‹è¼¸å…¥éµ (Enter)。如果存在著 符åˆæ‚¨æ‰€"
+"輸入的文字,畫é¢å°±æœƒæ›´æ–°åˆ°æœ€åˆä¹Žæœå°‹å­—串的ä½ç½®ã€‚\n"
+"\n"
+" å‰æ¬¡æœå°‹çš„字串將會顯示在 æœå°‹: æ示符號後é¢çš„括號中。ä¸è¼¸å…¥ä»»ä½•æ–‡å­— 而直接按"
+"下輸入éµå‰‡æœƒå±¥è¡Œå‰æ¬¡çš„æœå°‹ã€‚"
+
+#: src/help.c:245
+msgid ""
+"If you have selected text with the mark and then search to replace, only "
+"matches in the selected text will be replaced.\n"
+"\n"
+" The following function keys are available in Search mode:\n"
+"\n"
+msgstr ""
+"如果您已經用標記é¸æ“‡äº†ä¸€æ®µæ–‡å­— 並進行æœå°‹æ›¿æ›ï¼Œå°±åªæœ‰åœ¨é¸æ“‡æ–‡å­—中符åˆè€…將會被"
+"替æ›ã€‚\n"
+"\n"
+" 以下的功能éµå¯ç”¨æ–¼æœå°‹æ¨¡å¼:\n"
+"\n"
+
+#: src/help.c:251
+msgid ""
+"Go To Line Help Text\n"
+"\n"
+" Enter the line number that you wish to go to and hit Enter. If there are "
+"fewer lines of text than the number you entered, you will be brought to the "
+"last line of the file.\n"
+"\n"
+" The following function keys are available in Go To Line mode:\n"
+"\n"
+msgstr ""
+"跳列輔助說明\n"
+"\n"
+" é¦–å…ˆè¼¸å…¥æ‚¨æƒ³åŽ»çš„åˆ—æ•¸ç·¨è™Ÿä¸¦æŒ‰ä¸‹è¼¸å…¥éµ (Enter)。如果文章中的列數比您所輸 å…¥è¦"
+"少,您將會被帶至檔案的最後一列。\n"
+"\n"
+" 以下的功能éµå¯ç”¨æ–¼è·³åˆ—模å¼: \n"
+"\n"
+
+#: src/help.c:260
+msgid ""
+"Insert File Help Text\n"
+"\n"
+" Type in the name of a file to be inserted into the current file buffer at "
+"the current cursor location.\n"
+"\n"
+" If you have compiled nano with multiple file buffer support, and enable "
+"multiple file buffers with the -F or --multibuffer command line flags, the "
+"Meta-F toggle, or a nanorc file, inserting a file will cause it to be loaded "
+"into a separate buffer (use Meta-< and > to switch between file buffers). "
+msgstr ""
+"æ’入檔案輔助說明\n"
+"\n"
+" 先把檔案的å稱éµå…¥ï¼Œå®ƒå°‡æœƒæ’入在目å‰ç·©è¡å€çš„游標所在之處。\n"
+"\n"
+" 如果您所編譯的 nano 支æ´å¤šé‡æª”案緩è¡å€ï¼Œä¸¦ä¸”將此功能以命令列旗標 -F 或 --"
+"multibufferã€Meta-F 開關,或者 nanorc 檔案來啟動的話,所æ’入的檔案 將會被載入"
+"å¦å¤–çš„ç·©è¡å€ä¸­ (利用 Meta-< å’Œ > 在檔案緩è¡å€é–“切æ›)。 "
+
+#: src/help.c:269
+msgid ""
+"If you need another blank buffer, do not enter any filename, or type in a "
+"nonexistent filename at the prompt and press Enter.\n"
+"\n"
+" The following function keys are available in Insert File mode:\n"
+"\n"
+msgstr ""
+"如果您需è¦å¦ä¸€å€‹ç©ºçš„ç·©è¡å€ï¼Œé‚£å°±ä¸è¦è¼¸å…¥ä»»ä½•æª”å,或是在æç¤ºç¬¦è™Ÿå¾Œéµ å…¥ä¸€å€‹ä¸"
+"存在的檔å,然後按下輸入éµã€‚\n"
+"\n"
+" 以下的功能éµå¯ç”¨æ–¼æ’入檔案模å¼:\n"
+"\n"
+
+#: src/help.c:275
+msgid ""
+"Write File Help Text\n"
+"\n"
+" Type the name that you wish to save the current file as and press Enter to "
+"save the file.\n"
+"\n"
+" If you have selected text with the mark, you will be prompted to save only "
+"the selected portion to a separate file. To reduce the chance of "
+"overwriting the current file with just a portion of it, the current filename "
+"is not the default in this mode.\n"
+"\n"
+" The following function keys are available in Write File mode:\n"
+"\n"
+msgstr ""
+"寫入檔案輔助說明\n"
+"\n"
+" å…ˆéµå…¥æ‚¨æƒ³è¦ä»¥æ­¤ä¾†å„²å­˜ç›®å‰æª”案的å稱,並按下輸入éµä¾†å„²å­˜æª”案。\n"
+"\n"
+" 如果已經用標記é¸æ“‡äº†æ–‡å­—,那麼您將會被æ示,åªå„²å­˜æ¨™è¨˜éƒ¨ä»½åˆ°å¦å¤–的檔 案。為"
+"了é™ä½Žç›®å‰æª”案åªè¢«å…¶ä¸­éƒ¨ä»½è¦†å¯«çš„機會,在此模å¼ä¸‹ï¼Œç›®å‰çš„檔åä¸æœƒ æˆç‚ºé è¨­"
+"值。\n"
+"\n"
+" 以下的功能éµå¯ç”¨æ–¼å¯«å…¥æª”案模å¼: \n"
+"\n"
+
+#: src/help.c:289
+msgid ""
+"File Browser Help Text\n"
+"\n"
+" The file browser is used to visually browse the directory structure to "
+"select a file for reading or writing. You may use the arrow keys or Page Up/"
+"Down to browse through the files, and S or Enter to choose the selected file "
+"or enter the selected directory. To move up one level, select the directory "
+"called \"..\" at the top of the file list.\n"
+"\n"
+" The following function keys are available in the file browser:\n"
+"\n"
+msgstr ""
+"檔案é¸å–®è¼”助說明\n"
+"\n"
+" 檔案é¸å–®æ˜¯ç”¨ä¾†è¦–覺化ç€è¦½ç›®éŒ„çµæ§‹ï¼Œä»¥é¸å–è¦è®€å‡ºæˆ–寫入的檔案。您å¯ä»¥ 使用上下"
+"å·¦å³éµæˆ–上é /下é ä¾†ç€è¦½ï¼Œä¸¦ç”¨ S 或輸入éµä¾†é¸å–所è¦çš„檔案或者 進入所é¸çš„目錄。"
+"è¦è·³åˆ°ä¸Šå±¤æ™‚,é¸æ“‡åœ¨æª”案列表頂端å為 \"..\" 的目錄。\n"
+"\n"
+" 以下的功能éµå¯ç”¨æ–¼æª”案é¸å–®: \n"
+"\n"
+
+#: src/help.c:302
+#, fuzzy
+msgid ""
+"Browser Search Command Help Text\n"
+"\n"
+" Enter the words or characters you would like to search for, and then press "
+"Enter. If there is a match for the text you entered, the screen will be "
+"updated to the location of the nearest match for the search string.\n"
+"\n"
+" The previous search string will be shown in brackets after the search "
+"prompt. Hitting Enter without entering any text will perform the previous "
+"search.\n"
+"\n"
+msgstr ""
+"æœå°‹å‘½ä»¤è¼”助說明\n"
+"\n"
+" 首先輸入您想è¦æœå°‹çš„å­—ä¸²æˆ–å­—å…ƒï¼Œç„¶å¾ŒæŒ‰ä¸‹è¼¸å…¥éµ (Enter)。如果存在著 符åˆæ‚¨æ‰€"
+"輸入的文字,畫é¢å°±æœƒæ›´æ–°åˆ°æœ€åˆä¹Žæœå°‹å­—串的ä½ç½®ã€‚\n"
+"\n"
+" å‰æ¬¡æœå°‹çš„字串將會顯示在 æœå°‹: æ示符號後é¢çš„括號中。ä¸è¼¸å…¥ä»»ä½•æ–‡å­— 而直接按"
+"下輸入éµå‰‡æœƒå±¥è¡Œå‰æ¬¡çš„æœå°‹ã€‚"
+
+#: src/help.c:311
+msgid ""
+" The following function keys are available in Browser Search mode:\n"
+"\n"
+msgstr ""
+
+#: src/help.c:315
+msgid ""
+"Browser Go To Directory Help Text\n"
+"\n"
+" Enter the name of the directory you would like to browse to.\n"
+"\n"
+" If tab completion has not been disabled, you can use the Tab key to "
+"(attempt to) automatically complete the directory name.\n"
+"\n"
+" The following function keys are available in Browser Go To Directory mode:\n"
+"\n"
+msgstr ""
+"跳至目錄輔助說明\n"
+"\n"
+" 先輸入您想è¦ç€è¦½çš„目錄å稱。\n"
+"\n"
+" 如果跳格補正的功能沒有被關閉,您å¯ä»¥åˆ©ç”¨è·³æ ¼éµ (TAB) 去 (嘗試) 自動 補正目錄"
+"å稱。\n"
+"\n"
+" 以下的功能éµå¯ç”¨æ–¼è·³è‡³ç›®éŒ„模å¼: \n"
+"\n"
+
+#: src/help.c:328
+#, fuzzy
+msgid ""
+"Spell Check Help Text\n"
+"\n"
+" The spell checker checks the spelling of all text in the current file. "
+"When an unknown word is encountered, it is highlighted and a replacement can "
+"be edited. It will then prompt to replace every instance of the given "
+"misspelled word in the current file, or, if you have selected text with the "
+"mark, in the selected text.\n"
+"\n"
+" The following function keys are available in Spell Check mode:\n"
+"\n"
+msgstr ""
+"拼字檢查輔助說明\n"
+"\n"
+" 拼字檢查程å¼æœƒæª¢æŸ¥ç›®å‰æª”案中所有文字的拼法。當é‡åˆ°ä¸€å€‹æœªçŸ¥çš„字,它會 被標記"
+"起來,並讓您編輯替代文字。å°æ–¼ç›®å‰æª”案中æ¯ä¸€å€‹æ‹¼éŒ¯çš„字,都會顯示 ç½®æ›çš„æ示;"
+"或者,如果已經用標記é¸æ“‡äº†æ–‡å­—的話,那就åªä½œç”¨æ–¼é¸å–的文字 之中。\n"
+"\n"
+" 以下的功能éµå¯ç”¨æ–¼æ‹¼å­—檢查模å¼: \n"
+"\n"
+
+#: src/help.c:343
+#, fuzzy
+msgid ""
+"Execute Command Help Text\n"
+"\n"
+" This mode allows you to insert the output of a command run by the shell "
+"into the current buffer (or a new buffer in multiple file buffer mode). If "
+"you need another blank buffer, do not enter any command.\n"
+"\n"
+" The following function keys are available in Execute Command mode:\n"
+"\n"
+msgstr ""
+"執行命令輔助說明\n"
+"\n"
+" 本é¸å–®å…許您將 shell 執行的命令輸出çµæžœï¼Œæ’入目å‰çš„ç·©è¡å€ (或是多é‡ç·©è¡ å€æ¨¡"
+"å¼ä¸‹çš„æ–°ç·©è¡å€)。如果您需è¦å¦ä¸€å€‹ç©ºç™½ç·©è¡å€ï¼Œå°±ä¸è¦è¼¸å…¥ä»»ä½•å‘½ä»¤ã€‚\n"
+"\n"
+" 以下的功能éµå¯ç”¨æ–¼åŸ·è¡Œå‘½ä»¤æ¨¡å¼: \n"
+"\n"
+
+#: src/help.c:356
+#, fuzzy
+msgid ""
+"Main nano help text\n"
+"\n"
+" The nano editor is designed to emulate the functionality and ease-of-use of "
+"the UW Pico text editor. There are four main sections of the editor. The "
+"top line shows the program version, the current filename being edited, and "
+"whether or not the file has been modified. Next is the main editor window "
+"showing the file being edited. The status line is the third line from the "
+"bottom and shows important messages. "
+msgstr ""
+"nano 輔助說明\n"
+"\n"
+" nano 編輯器是設計來在功能性åŠæ˜“用性方é¢ï¼Œæ¨¡ä»¿è¯ç››é “大學的 Pico 文字 編輯器。"
+"它å«æœ‰å››å€‹ä¸»è¦éƒ¨ä»½:頂列顯示程å¼ç‰ˆæœ¬ã€ç›®å‰è¢«ç·¨è¼¯çš„檔案å稱, 以åŠæ˜¯å¦é€™æª”案已"
+"經更動éŽã€‚接著是主è¦ç·¨è¼¯å€ï¼Œé¡¯ç¤ºæ­£åœ¨ç·¨è¼¯çš„檔案。狀態 列ä½æ–¼å€’數第三列,用來顯"
+"示é‡è¦çš„訊æ¯ã€‚底部的兩列則顯示編輯器中最常用 到的快æ·éµã€‚\n"
+"\n"
+" "
+
+#: src/help.c:366
+#, fuzzy
+msgid ""
+"The bottom two lines show the most commonly used shortcuts in the editor.\n"
+"\n"
+" The notation for shortcuts is as follows: Control-key sequences are notated "
+"with a caret (^) symbol and can be entered either by using the Control "
+"(Ctrl) key or pressing the Escape (Esc) key twice. Escape-key sequences are "
+"notated with the Meta (M-) symbol and can be entered using either the Esc, "
+"Alt, or Meta key depending on your keyboard setup. "
+msgstr ""
+"å¿«æ·éµçš„記號定義如下:控制éµçµ„ (Control-key) åºåˆ—是以一個 \"帽å­\" (caret, "
+"^) 符號來表示,它å¯ä»¥è—‰ç”±æŽ§åˆ¶éµ (Ctrl) æˆ–æ˜¯æŒ‰å…©æ¬¡è„«é›¢éµ (Esc) 來輸入。脫離éµ"
+"組 (Escape-key) åºåˆ—是以 \"中介\" (Meta, M) 符號表示,它 å¯ä»¥ä¾ç…§æ‚¨çš„éµç›¤è¨­"
+"定,利用 Esc,Alt 或 Meta 來輸入。"
+
+#: src/help.c:375
+msgid ""
+"Also, pressing Esc twice and then typing a three-digit decimal number from "
+"000 to 255 will enter the character with the corresponding value. The "
+"following keystrokes are available in the main editor window. Alternative "
+"keys are shown in parentheses:\n"
+"\n"
+msgstr ""
+"å¦å¤–,按 Esc 兩次 之後å†éµå…¥å¾ž 000 到 255 之間的三ä½æ•¸å­—,則會輸入該 ASCII 碼"
+"å°æ‡‰çš„å­— 元。下列按éµçµ„åˆå¯ç”¨æ–¼ä¸»è¦ç·¨è¼¯å€ï¼Œæ›¿ä»£æŒ‰éµå‰‡é¡¯ç¤ºæ–¼æ‹¬å¼§å…§:\n"
+"\n"
+
+#: src/help.c:407 src/help.c:483
+msgid "enable/disable"
+msgstr "開啟/關閉"
+
+#: src/nano.c:587
+#, fuzzy
+msgid "Key invalid in view mode"
+msgstr "觀看模å¼ä¸­æ­¤æŒ‰éµç„¡æ•ˆ"
+
+#: src/nano.c:695
+#, c-format
+msgid ""
+"\n"
+"Buffer written to %s\n"
+msgstr ""
+"\n"
+"ç·©è¡å€å·²å¯«å…¥ %s\n"
+
+#: src/nano.c:697
+#, c-format
+msgid ""
+"\n"
+"Buffer not written to %s: %s\n"
+msgstr ""
+"\n"
+"ç·©è¡å€æœªå¯«å…¥è‡³ %s: %s\n"
+
+#: src/nano.c:700
+#, c-format
+msgid ""
+"\n"
+"Buffer not written: %s\n"
+msgstr ""
+"\n"
+"ç·©è¡å€æœªå¯«å…¥: %s\n"
+
+#: src/nano.c:723
+msgid "Window size is too small for nano...\n"
+msgstr "è¦–çª—å°ºå¯¸å° nano 來說太å°äº†...\n"
+
+#: src/nano.c:816
+#, fuzzy, c-format
+msgid ""
+"Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n"
+"\n"
+msgstr ""
+"用法: nano [+列數,行數] [é¸é …] [檔案å稱]\n"
+"\n"
+
+#: src/nano.c:819
+#, fuzzy, c-format
+msgid "Option\t\tGNU long option\t\tMeaning\n"
+msgstr "é¸é …\t\tGNU é•·é¸é …\t\tæ„義\n"
+
+#: src/nano.c:821
+#, c-format
+msgid "Option\t\tMeaning\n"
+msgstr "é¸é …\t\tæ„義\n"
+
+#: src/nano.c:824
+msgid "Show this message"
+msgstr "顯示此訊æ¯"
+
+#: src/nano.c:825
+msgid "+LINE,COLUMN"
+msgstr "+列數,行數"
+
+#: src/nano.c:826
+msgid "Start at line LINE, column COLUMN"
+msgstr "從所指列數與行數開始"
+
+#: src/nano.c:828
+msgid "Enable smart home key"
+msgstr "開啟智慧型 HOME 按éµåŠŸèƒ½"
+
+#: src/nano.c:829
+msgid "Save backups of existing files"
+msgstr "儲存既有檔案的備份"
+
+#: src/nano.c:830
+#, fuzzy
+msgid "-C <dir>"
+msgstr "-C [目錄]"
+
+#: src/nano.c:830
+#, fuzzy
+msgid "--backupdir=<dir>"
+msgstr "--backupdir=[目錄]"
+
+#: src/nano.c:831
+msgid "Directory for saving unique backup files"
+msgstr "用以儲存ç¨ä¸€å‚™ä»½æª”案的目錄"
+
+#: src/nano.c:834
+msgid "Use bold instead of reverse video text"
+msgstr ""
+
+#: src/nano.c:837
+msgid "Convert typed tabs to spaces"
+msgstr "將已輸入的跳格符號轉æ›ç‚ºç©ºç™½"
+
+#: src/nano.c:840
+msgid "Enable multiple file buffers"
+msgstr "開啟多é‡æª”案緩è¡å€åŠŸèƒ½"
+
+#: src/nano.c:845
+msgid "Log & read search/replace string history"
+msgstr "è¨˜éŒ„èˆ‡è®€å– æœå°‹/ç½®æ› çš„æ­·å²å­—串"
+
+#: src/nano.c:848
+msgid "Don't look at nanorc files"
+msgstr "ä¸è¦åƒè€ƒ nanorc 檔案"
+
+#: src/nano.c:851
+msgid "Fix numeric keypad key confusion problem"
+msgstr "修正數字éµå€æŒ‰éµæ··æ·†å•é¡Œ"
+
+#: src/nano.c:853
+msgid "Don't add newlines to the ends of files"
+msgstr "ä¸è¦å°‡æ›åˆ—加到檔案末端"
+
+#: src/nano.c:856
+msgid "Don't convert files from DOS/Mac format"
+msgstr "ä¸è¦å¾ž DOS/Mac æ ¼å¼è½‰æª”"
+
+#: src/nano.c:858
+#, fuzzy
+msgid "Use one more line for editing"
+msgstr "編輯時使用更多空間"
+
+#: src/nano.c:860
+#, fuzzy
+msgid "-Q <str>"
+msgstr "-Q [字串]"
+
+#: src/nano.c:860
+#, fuzzy
+msgid "--quotestr=<str>"
+msgstr "--quotestr=[字串]"
+
+#: src/nano.c:861
+msgid "Quoting string"
+msgstr "引用代表字串"
+
+#: src/nano.c:863
+msgid "Restricted mode"
+msgstr "é™åˆ¶æ¨¡å¼"
+
+#: src/nano.c:866
+msgid "Scroll by line instead of half-screen"
+msgstr ""
+
+#: src/nano.c:868
+#, fuzzy
+msgid "-T <#cols>"
+msgstr "-T [#行數]"
+
+#: src/nano.c:868
+#, fuzzy
+msgid "--tabsize=<#cols>"
+msgstr "--tabsize=[#行數]"
+
+#: src/nano.c:869
+#, fuzzy
+msgid "Set width of a tab to #cols columns"
+msgstr "設定跳格寬度為 #行數"
+
+#: src/nano.c:871
+msgid "Do quick statusbar blanking"
+msgstr "狀態列快速閃動"
+
+#: src/nano.c:874
+msgid "Print version information and exit"
+msgstr "顯示版本資訊並離開"
+
+#: src/nano.c:877
+msgid "Detect word boundaries more accurately"
+msgstr "更正確地åµæ¸¬å–®å­—é‚Šç•Œ"
+
+#: src/nano.c:880
+#, fuzzy
+msgid "-Y <str>"
+msgstr "-Y [字串]"
+
+#: src/nano.c:880
+#, fuzzy
+msgid "--syntax=<str>"
+msgstr "--syntax=[字串]"
+
+#: src/nano.c:881
+#, fuzzy
+msgid "Syntax definition to use for coloring"
+msgstr "字串åšç‚ºèªžæ³•å®šç¾©"
+
+#: src/nano.c:883
+msgid "Constantly show cursor position"
+msgstr "æŒçºŒé¡¯ç¤ºæ¸¸æ¨™ä½ç½®"
+
+#: src/nano.c:885
+msgid "Fix Backspace/Delete confusion problem"
+msgstr "修正 退格éµ/åˆªé™¤éµ æ··æ·†å•é¡Œ"
+
+#: src/nano.c:888
+msgid "Automatically indent new lines"
+msgstr "自動縮排新列"
+
+#: src/nano.c:889
+msgid "Cut from cursor to end of line"
+msgstr "從游標剪下至列尾"
+
+#: src/nano.c:892
+msgid "Don't follow symbolic links, overwrite"
+msgstr "ä¸è¦ä¾ç…§ç¬¦è™Ÿé€£çµï¼Œè€Œæ˜¯è¦†å¯«"
+
+#: src/nano.c:894
+#, fuzzy
+msgid "Enable the use of the mouse"
+msgstr "開啟滑鼠功能"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "-o <dir>"
+msgstr "-o [目錄]"
+
+#: src/nano.c:897
+#, fuzzy
+msgid "--operatingdir=<dir>"
+msgstr "--operatingdir=[目錄]"
+
+#: src/nano.c:898
+msgid "Set operating directory"
+msgstr "設定æ“作目錄"
+
+#: src/nano.c:901
+msgid "Preserve XON (^Q) and XOFF (^S) keys"
+msgstr "ä¿ç•™ XON (^Q) å’Œ XOFF (^S) 按éµ"
+
+#: src/nano.c:903
+msgid "Silently ignore startup issues like rc file errors"
+msgstr ""
+
+#: src/nano.c:905
+#, fuzzy
+msgid "-r <#cols>"
+msgstr "-r [#行數]"
+
+#: src/nano.c:905
+#, fuzzy
+msgid "--fill=<#cols>"
+msgstr "--fill=[#行數] "
+
+#: src/nano.c:906
+#, fuzzy
+msgid "Set wrapping point at column #cols"
+msgstr "設定跳格寬度為 #行數"
+
+#: src/nano.c:909
+#, fuzzy
+msgid "-s <prog>"
+msgstr "-s [程å¼]"
+
+#: src/nano.c:909
+#, fuzzy
+msgid "--speller=<prog>"
+msgstr "--speller=[程å¼]"
+
+#: src/nano.c:910
+msgid "Enable alternate speller"
+msgstr "啟用替代的拼字檢查程å¼"
+
+#: src/nano.c:913
+msgid "Auto save on exit, don't prompt"
+msgstr "離開時自動儲存,ä¸è¦æ示"
+
+#: src/nano.c:915
+msgid "Allow generic undo [EXPERIMENTAL]"
+msgstr ""
+
+#: src/nano.c:918
+#, fuzzy
+msgid "View mode (read-only)"
+msgstr "觀看 (唯讀) 模å¼"
+
+#: src/nano.c:920
+msgid "Don't wrap long lines"
+msgstr "ä¸è¦è‡ªå‹•æ›åˆ—"
+
+#: src/nano.c:922
+#, fuzzy
+msgid "Don't show the two help lines"
+msgstr "ä¸è¦é¡¯ç¤ºè¼”助å€"
+
+#: src/nano.c:923
+#, fuzzy
+msgid "Enable suspension"
+msgstr "é–‹å•Ÿæš«åœåŠŸèƒ½"
+
+#: src/nano.c:924
+#, fuzzy
+msgid "Enable soft line wrapping"
+msgstr "長列轉æ›"
+
+#: src/nano.c:928
+msgid "(ignored, for Pico compatibility)"
+msgstr "(忽略,為了與 Pico 相容)"
+
+#: src/nano.c:938
+#, c-format
+msgid " GNU nano version %s (compiled %s, %s)\n"
+msgstr " GNU nano 版本 %s (編譯於 %s, %s)\n"
+
+#: src/nano.c:943
+#, c-format
+msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org/"
+msgstr " é›»å­éƒµä»¶: nano@nano-editor.org\t\t網é : http://www.nano-editor.org/"
+
+#: src/nano.c:944
+#, c-format
+msgid ""
+"\n"
+" Compiled options:"
+msgstr ""
+"\n"
+" 編譯é¸é …:"
+
+#: src/nano.c:1022
+msgid "Sorry, support for this function has been disabled"
+msgstr "抱歉,已經關閉此功能的支æ´"
+
+#: src/nano.c:1044
+msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
+msgstr "儲存更動éŽçš„ç·©è¡å€å—Ž (回答 \"No\" 會撤銷修改)?"
+
+#: src/nano.c:1088
+msgid "Couldn't reopen stdin from keyboard, sorry\n"
+msgstr ""
+
+#: src/nano.c:1114
+#, c-format
+msgid "Reading from stdin, ^C to abort\n"
+msgstr ""
+
+#: src/nano.c:1182
+msgid "Received SIGHUP or SIGTERM\n"
+msgstr "接收到 SIGHUP 或 SIGTERM\n"
+
+#: src/nano.c:1204
+#, fuzzy, c-format
+msgid "Use \"fg\" to return to nano.\n"
+msgstr "利用 \"fg\" 來回到 nano"
+
+#: src/nano.c:1386
+msgid "enabled"
+msgstr "é–‹å•Ÿ"
+
+#: src/nano.c:1387
+msgid "disabled"
+msgstr "關閉"
+
+#: src/nano.c:1548 src/winio.c:1256
+#, fuzzy
+msgid "Unknown Command"
+msgstr "旗標 %s 無法辨識"
+
+#: src/nano.c:1674
+#, fuzzy
+msgid "XON ignored, mumble mumble"
+msgstr "忽略 XON,嗯嗯。"
+
+#: src/nano.c:1679
+#, fuzzy
+msgid "XOFF ignored, mumble mumble"
+msgstr "忽略 XOFF,嗯嗯。"
+
+#: src/nano.c:2209 src/rcfile.c:1100
+#, fuzzy, c-format
+msgid "Requested tab size \"%s\" is invalid"
+msgstr "所è¦æ±‚的跳格寬度 %s 無效"
+
+#: src/nano.c:2268 src/rcfile.c:1025
+#, fuzzy, c-format
+msgid "Requested fill size \"%s\" is invalid"
+msgstr "所è¦æ±‚的填滿行數 %s 無效"
+
+#. TRANSLATORS: For the next three strings, if possible, specify
+#. * the single-byte shortcuts for both your language and English.
+#. * For example, in French: "OoYy" for "Oui".
+#: src/prompt.c:1259
+msgid "Yy"
+msgstr "Yy"
+
+#: src/prompt.c:1260
+msgid "Nn"
+msgstr "Nn"
+
+#: src/prompt.c:1261
+msgid "Aa"
+msgstr "Aa"
+
+#: src/prompt.c:1275
+msgid "Yes"
+msgstr "是"
+
+#: src/prompt.c:1280
+msgid "All"
+msgstr "全部"
+
+#: src/prompt.c:1285
+msgid "No"
+msgstr "å¦"
+
+#: src/rcfile.c:130
+#, c-format
+msgid "Error in %s on line %lu: "
+msgstr "在 %s (ä½æ–¼ç¬¬ %lu 列) 中發生錯誤: "
+
+#: src/rcfile.c:185
+#, fuzzy, c-format
+msgid "Argument '%s' has an unterminated \""
+msgstr "引數 %s 有未å°é–‰çš„ \""
+
+#: src/rcfile.c:212 src/rcfile.c:264 src/rcfile.c:711 src/rcfile.c:768
+#: src/rcfile.c:821
+msgid "Regex strings must begin and end with a \" character"
+msgstr "æ­£è¦è¡¨ç¤ºå¼å­—串必須以 \" 字元開始åŠçµæŸ"
+
+#: src/rcfile.c:238 src/search.c:62
+#, c-format
+msgid "Bad regex \"%s\": %s"
+msgstr "ä¸è‰¯çš„æ­£è¦è¡¨ç¤ºå¼ \"%s\": %s"
+
+#: src/rcfile.c:258
+msgid "Missing syntax name"
+msgstr "缺少語法å稱"
+
+#: src/rcfile.c:316
+msgid "The \"none\" syntax is reserved"
+msgstr "\"none\" 語法已被ä¿ç•™"
+
+#: src/rcfile.c:323
+msgid "The \"default\" syntax must take no extensions"
+msgstr "\"default\" 語法必須ä¸å«ä»»ä½•å‰¯æª”å"
+
+#: src/rcfile.c:386 src/rcfile.c:483
+#, fuzzy
+msgid "Missing key name"
+msgstr "缺少語法å稱"
+
+#: src/rcfile.c:398 src/rcfile.c:499
+msgid "keybindings must begin with \"^\", \"M\", or \"F\""
+msgstr ""
+
+#: src/rcfile.c:407
+msgid "Must specify function to bind key to"
+msgstr ""
+
+#: src/rcfile.c:418 src/rcfile.c:510
+msgid "Must specify menu to bind key to (or \"all\")"
+msgstr ""
+
+#: src/rcfile.c:426
+#, c-format
+msgid "Could not map name \"%s\" to a function"
+msgstr ""
+
+#: src/rcfile.c:432 src/rcfile.c:517
+#, c-format
+msgid "Could not map name \"%s\" to a menu"
+msgstr ""
+
+#: src/rcfile.c:454
+#, c-format
+msgid "Sorry, keystr \"%s\" is an illegal binding"
+msgstr ""
+
+#: src/rcfile.c:625
+#, fuzzy, c-format
+msgid ""
+"Color \"%s\" not understood.\n"
+"Valid colors are \"green\", \"red\", \"blue\",\n"
+"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+"\"black\", with the optional prefix \"bright\"\n"
+"for foreground colors."
+msgstr ""
+"é¡è‰² %s 無法辨識。\n"
+"有效的é¡è‰²æ˜¯ \"green\"(綠)ã€\"red\"(ç´…)ã€\"blue\"(è—)ã€\n"
+"\"white\"(白)ã€\"yellow\"(黃)ã€\"cyan\"(é’)ã€\"magenta\"(ç‘°) å’Œ \n"
+"\"black\"(黑),é¸æ“‡æ€§çš„å‰ç½®å­— \"bright\"(明亮) \n"
+"å¯ç”¨æ–¼å‰æ™¯è‰²ã€‚"
+
+#: src/rcfile.c:647
+#, fuzzy
+msgid "Cannot add a color command without a syntax command"
+msgstr "無法直接增加é¡è‰²è€Œæ²’有語法列"
+
+#: src/rcfile.c:652
+msgid "Missing color name"
+msgstr "缺少é¡è‰²å稱"
+
+#: src/rcfile.c:672
+#, fuzzy, c-format
+msgid "Background color \"%s\" cannot be bright"
+msgstr "背景色 %s ä¸å¯ç‚ºæ˜Žäº®"
+
+#: src/rcfile.c:690 src/rcfile.c:809
+msgid "Missing regex string"
+msgstr "缺少正è¦è¡¨ç¤ºå¼å­—串"
+
+#: src/rcfile.c:762
+msgid "\"start=\" requires a corresponding \"end=\""
+msgstr "\"start=\" è¦æ±‚å°æ‡‰çš„ \"end=\""
+
+#: src/rcfile.c:804
+#, fuzzy
+msgid "Cannot add a header regex without a syntax command"
+msgstr "無法直接增加é¡è‰²è€Œæ²’有語法列"
+
+#: src/rcfile.c:874
+#, c-format
+msgid "Fatal error: no keys mapped for function \"%s\""
+msgstr ""
+
+#: src/rcfile.c:876
+msgid ""
+"Exiting. Please use nano with the -I option if needed to adjust your nanorc "
+"settings\n"
+msgstr ""
+
+#: src/rcfile.c:926 src/rcfile.c:935 src/rcfile.c:945
+#, c-format
+msgid "Command \"%s\" not allowed in included file"
+msgstr ""
+
+#: src/rcfile.c:951 src/rcfile.c:1128
+#, c-format
+msgid "Syntax \"%s\" has no color commands"
+msgstr ""
+
+#: src/rcfile.c:966
+#, fuzzy, c-format
+msgid "Command \"%s\" not understood"
+msgstr "無法辨識 %s 命令"
+
+#: src/rcfile.c:972
+msgid "Missing flag"
+msgstr "缺少旗標"
+
+#: src/rcfile.c:994
+#, fuzzy, c-format
+msgid "Option \"%s\" requires an argument"
+msgstr "é¸é … %s è¦æ±‚引數"
+
+#: src/rcfile.c:1012
+msgid "Option is not a valid multibyte string"
+msgstr "é¸é …並éžæ­£ç¢ºçš„多ä½å…ƒå­—串"
+
+#: src/rcfile.c:1038 src/rcfile.c:1066 src/rcfile.c:1075
+msgid "Non-blank characters required"
+msgstr "需è¦éžç©ºæ ¼å­—å…ƒ"
+
+#: src/rcfile.c:1048
+msgid "Two single-column characters required"
+msgstr "需è¦å…©å€‹å–®è¡Œå­—å…ƒ"
+
+#: src/rcfile.c:1114
+#, fuzzy, c-format
+msgid "Cannot unset flag \"%s\""
+msgstr "無法解除旗標 %s 設定"
+
+#: src/rcfile.c:1123
+#, fuzzy, c-format
+msgid "Unknown flag \"%s\""
+msgstr "旗標 %s 無法辨識"
+
+#: src/rcfile.c:1182
+msgid "I can't find my home directory! Wah!"
+msgstr "我找ä¸åˆ°æˆ‘的家目錄ï¼å“‡ï¼"
+
+#: src/search.c:96
+#, c-format
+msgid "\"%.*s%s\" not found"
+msgstr "找ä¸åˆ° \"%.*s%s\""
+
+#: src/search.c:205
+msgid " (to replace) in selection"
+msgstr " 在標記中(ç½®æ›)"
+
+#: src/search.c:207
+msgid " (to replace)"
+msgstr " (ç½®æ›)"
+
+#: src/search.c:784
+msgid "Replace this instance?"
+msgstr "ç½®æ›é€™å€‹ï¼Ÿ"
+
+#: src/search.c:962
+msgid "Replace with"
+msgstr "以此置æ›"
+
+#: src/search.c:1004
+#, c-format
+msgid "Replaced %lu occurrence"
+msgid_plural "Replaced %lu occurrences"
+msgstr[0] "å·²ç½®æ› %lu 處"
+
+#: src/search.c:1034
+msgid "Enter line number, column number"
+msgstr "輸入列號,行號"
+
+#: src/search.c:1061
+#, fuzzy
+msgid "Invalid line or column number"
+msgstr "輸入列號,行號"
+
+#: src/search.c:1214
+msgid "Not a bracket"
+msgstr "並éžä¸€å€‹æ‹¬è™Ÿ"
+
+#: src/search.c:1281
+msgid "No matching bracket"
+msgstr "ç„¡å°æ‡‰æ‹¬è™Ÿ"
+
+#: src/text.c:54
+msgid "Mark Set"
+msgstr "標記設定"
+
+#: src/text.c:58
+#, fuzzy
+msgid "Mark Unset"
+msgstr "標記解除"
+
+#: src/text.c:443
+msgid "Nothing in undo buffer!"
+msgstr ""
+
+#: src/text.c:455 src/text.c:593
+#, c-format
+msgid "Internal error: can't match line %d. Please save your work"
+msgstr ""
+
+#: src/text.c:466 src/text.c:603
+msgid "text add"
+msgstr ""
+
+#: src/text.c:475 src/text.c:613
+#, fuzzy
+msgid "text delete"
+msgstr "下個檔案"
+
+#: src/text.c:489 src/text.c:628
+#, fuzzy
+msgid "line wrap"
+msgstr "長列轉æ›"
+
+#: src/text.c:503 src/text.c:636
+msgid "line join"
+msgstr ""
+
+#: src/text.c:514 src/text.c:651
+msgid "text cut"
+msgstr ""
+
+#: src/text.c:518 src/text.c:655
+msgid "text uncut"
+msgstr ""
+
+#: src/text.c:522 src/text.c:622
+msgid "line break"
+msgstr ""
+
+#: src/text.c:532 src/text.c:665
+#, fuzzy
+msgid "text insert"
+msgstr "下列"
+
+#: src/text.c:550 src/text.c:659
+#, fuzzy
+msgid "text replace"
+msgstr " (ç½®æ›)"
+
+#: src/text.c:557 src/text.c:671
+msgid "Internal error: unknown type. Please save your work"
+msgstr ""
+
+#: src/text.c:563
+#, c-format
+msgid "Undid action (%s)"
+msgstr ""
+
+#: src/text.c:578
+msgid "Nothing to re-do!"
+msgstr ""
+
+#: src/text.c:582
+msgid "Internal error: Redo setup failed. Please save your work"
+msgstr ""
+
+#: src/text.c:676
+#, c-format
+msgid "Redid action (%s)"
+msgstr ""
+
+#: src/text.c:766
+msgid "Could not pipe"
+msgstr "管線功能無效"
+
+#: src/text.c:793 src/text.c:2636 src/text.c:2788
+msgid "Could not fork"
+msgstr "執行功能無效"
+
+#: src/text.c:941
+msgid "Internal error: can't setup uncut. Please save your work."
+msgstr ""
+
+#: src/text.c:950
+msgid "Internal error: unknown type. Please save your work."
+msgstr ""
+
+#: src/text.c:1870
+#, c-format
+msgid "Bad quote string %s: %s"
+msgstr "ä¸è‰¯å¼•ç”¨å­—串 %s: %s"
+
+#: src/text.c:2267
+msgid "Can now UnJustify!"
+msgstr "ç¾åœ¨å¯ä»¥é‚„原å°é½Šï¼"
+
+#: src/text.c:2462
+msgid "Edit a replacement"
+msgstr "編輯替代文字"
+
+#: src/text.c:2548
+msgid "Could not create pipe"
+msgstr "無法建立管線功能"
+
+#: src/text.c:2550
+msgid "Creating misspelled word list, please wait..."
+msgstr "正在建立錯字列表,請ç¨å¾…..."
+
+#: src/text.c:2642
+msgid "Could not get size of pipe buffer"
+msgstr "無法得知管線緩è¡å€å¤§å°"
+
+#: src/text.c:2693
+msgid "Error invoking \"spell\""
+msgstr "å‘¼å« \"spell\" 錯誤"
+
+#: src/text.c:2696
+msgid "Error invoking \"sort -f\""
+msgstr "å‘¼å« \"sort -f\" 錯誤"
+
+#: src/text.c:2699
+msgid "Error invoking \"uniq\""
+msgstr "å‘¼å« \"uniq\" 錯誤"
+
+#: src/text.c:2756 src/text.c:2965
+msgid "Finished checking spelling"
+msgstr "拼字檢查çµæŸ"
+
+#: src/text.c:2815
+#, c-format
+msgid "Error invoking \"%s\""
+msgstr "å‘¼å« \"%s\" 錯誤"
+
+#: src/text.c:2960
+#, c-format
+msgid "Spell checking failed: %s"
+msgstr "拼字檢查失敗: %s"
+
+#: src/text.c:2962
+#, c-format
+msgid "Spell checking failed: %s: %s"
+msgstr "拼字檢查失敗: %s: %s"
+
+#: src/text.c:3030
+#, c-format
+msgid "%sWords: %lu Lines: %ld Chars: %lu"
+msgstr "%s字數: %lu 列數: %ld 字元數: %lu"
+
+#: src/text.c:3031
+msgid "In Selection: "
+msgstr "æ–¼é¸æ“‡éƒ¨ä»½: "
+
+#: src/utils.c:405 src/utils.c:417
+msgid "nano is out of memory!"
+msgstr "nano 已耗盡記憶體ï¼"
+
+#. TRANSLATORS: This is displayed during the input of a
+#. * six-digit hexadecimal Unicode character code.
+#: src/winio.c:1557
+msgid "Unicode Input"
+msgstr ""
+
+#: src/winio.c:2149 src/winio.c:2153
+msgid "Modified"
+msgstr "已更動"
+
+#: src/winio.c:2150
+msgid "View"
+msgstr "觀看"
+
+#: src/winio.c:2164
+msgid "DIR:"
+msgstr "目錄:"
+
+#: src/winio.c:2171
+msgid "File:"
+msgstr "檔案:"
+
+#: src/winio.c:3360
+#, c-format
+msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"
+msgstr "列 %ld/%ld (%d%%), 行 %lu/%lu (%d%%), 字元 %lu/%lu (%d%%)"
+
+#: src/winio.c:3492
+msgid "The nano text editor"
+msgstr "nano 文字編輯器"
+
+#: src/winio.c:3493
+msgid "version"
+msgstr "版本"
+
+#: src/winio.c:3494
+msgid "Brought to you by:"
+msgstr "來自於:"
+
+#: src/winio.c:3495
+msgid "Special thanks to:"
+msgstr "特別感è¬:"
+
+#: src/winio.c:3496
+msgid "The Free Software Foundation"
+msgstr "自由軟體基金會"
+
+#: src/winio.c:3497
+msgid "For ncurses:"
+msgstr "ncurses 部份:"
+
+#: src/winio.c:3498
+msgid "and anyone else we forgot..."
+msgstr "以åŠå…¶ä»–我們ä¸è¨˜å¾—的人..."
+
+#: src/winio.c:3499
+msgid "Thank you for using nano!"
+msgstr "è¬è¬æ‚¨ä½¿ç”¨ nanoï¹—"
+
+#~ msgid "Prepending to %s failed: %s"
+#~ msgstr "å‰å¼•æ–¼ %s 時失敗: %s"
+
+#~ msgid "Invoke the help menu"
+#~ msgstr "呼å«è¼”助說明"
+
+#~ msgid "Search for text within the editor"
+#~ msgstr "æœå°‹ç·¨è¼¯å™¨ä¸­æ–‡å­—"
+
+#~ msgid "Replace text within the editor"
+#~ msgstr "ç½®æ›ç·¨è¼¯å™¨ä¸­æ–‡å­—"
+
+#~ msgid "Find matching bracket"
+#~ msgstr "尋找å°æ‡‰æ‹¬è™Ÿ"
+
+#~ msgid "Make the current search/replace case (in)sensitive"
+#~ msgstr "使目å‰æœå°‹èˆ‡ç½®æ›(ä¸)å€åˆ†å¤§å°å¯«"
+
+#~ msgid "Make the current search/replace go backwards"
+#~ msgstr "使目å‰æœå°‹èˆ‡ç½®æ›å‘後進行"
+
+#~ msgid "Prepend to the current file"
+#~ msgstr "å‰å¼•æ–¼ç›®å‰æª”案"
+
+#~ msgid "Back up original file when saving"
+#~ msgstr "存檔時備份原始檔案"
+
+#~ msgid "Insert into new buffer"
+#~ msgstr "æ’入新的緩è¡å€"
+
+#~ msgid "Space"
+#~ msgstr "Space"
+
+#~ msgid ""
+#~ "Usage: nano [+LINE,COLUMN] [GNU long option] [option] [file]\n"
+#~ "\n"
+#~ msgstr ""
+#~ "用法: nano [+列數,行數] [GNU é•·é¸é …] [é¸é …] [檔案å稱]\n"
+#~ "\n"
+
+#~ msgid "Use more space for editing"
+#~ msgstr "編輯時使用更多空間"
+
+#~ msgid "Set fill cols to (wrap lines at) #cols"
+#~ msgstr "設定行數填滿 (æ›åˆ—) æ–¼ #行數"
+
+#~ msgid "Duplicate syntax name %s"
+#~ msgstr "é‡è¦†çš„語法å稱 %s"
+
+#~ msgid "Come on, be reasonable"
+#~ msgstr "別這樣,ç†æ€§ä¸€é»ž"
+
+#~ msgid "Could not create temp file: %s"
+#~ msgstr "無法建立暫存檔案: %s"
+
+#~ msgid "Refusing zero-length regex match"
+#~ msgstr "拒絕符åˆé•·åº¦ç‚ºé›¶çš„æ­£è¦è¡¨ç¤ºå¼"
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..f0b21c0
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,30 @@
+localedir = $(datadir)/locale
+INCLUDES = -DLOCALEDIR=\"$(localedir)\" -DSYSCONFDIR=\"$(sysconfdir)\"
+
+ACLOCAL_AMFLAGS = -I m4
+
+bin_PROGRAMS = nano
+nano_SOURCES = browser.c \
+ chars.c \
+ color.c \
+ cut.c \
+ files.c \
+ global.c \
+ help.c \
+ move.c \
+ nano.c \
+ nano.h \
+ prompt.c \
+ proto.h \
+ rcfile.c \
+ search.c \
+ text.c \
+ utils.c \
+ winio.c
+
+nano_LDADD = @GLIB_LIBS@ @LIBINTL@
+
+install-exec-hook:
+ cd $(DESTDIR)$(bindir) && rm -f rnano && $(LN_S) nano rnano
+uninstall-hook:
+ cd $(DESTDIR)$(bindir) && rm -f rnano
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..acb3389
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,536 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+bin_PROGRAMS = nano$(EXEEXT)
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glib-2.0.m4 \
+ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_nano_OBJECTS = browser.$(OBJEXT) chars.$(OBJEXT) color.$(OBJEXT) \
+ cut.$(OBJEXT) files.$(OBJEXT) global.$(OBJEXT) help.$(OBJEXT) \
+ move.$(OBJEXT) nano.$(OBJEXT) prompt.$(OBJEXT) \
+ rcfile.$(OBJEXT) search.$(OBJEXT) text.$(OBJEXT) \
+ utils.$(OBJEXT) winio.$(OBJEXT)
+nano_OBJECTS = $(am_nano_OBJECTS)
+nano_DEPENDENCIES =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(nano_SOURCES)
+DIST_SOURCES = $(nano_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURSES_LIB = @CURSES_LIB@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GMSGFMT = @GMSGFMT@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKGDATADIR = @PKGDATADIR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = $(datadir)/locale
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = -DLOCALEDIR=\"$(localedir)\" -DSYSCONFDIR=\"$(sysconfdir)\"
+ACLOCAL_AMFLAGS = -I m4
+nano_SOURCES = browser.c \
+ chars.c \
+ color.c \
+ cut.c \
+ files.c \
+ global.c \
+ help.c \
+ move.c \
+ nano.c \
+ nano.h \
+ prompt.c \
+ proto.h \
+ rcfile.c \
+ search.c \
+ text.c \
+ utils.c \
+ winio.c
+
+nano_LDADD = @GLIB_LIBS@ @LIBINTL@
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p; \
+ then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+nano$(EXEEXT): $(nano_OBJECTS) $(nano_DEPENDENCIES)
+ @rm -f nano$(EXEEXT)
+ $(LINK) $(nano_OBJECTS) $(nano_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/browser.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chars.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cut.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/files.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/global.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/help.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nano.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prompt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rcfile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/search.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winio.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
+.MAKE: install-am install-exec-am install-strip uninstall-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic ctags distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-exec-hook install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-binPROGRAMS \
+ uninstall-hook
+
+
+install-exec-hook:
+ cd $(DESTDIR)$(bindir) && rm -f rnano && $(LN_S) nano rnano
+uninstall-hook:
+ cd $(DESTDIR)$(bindir) && rm -f rnano
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/browser.c b/src/browser.c
new file mode 100644
index 0000000..c43796b
--- /dev/null
+++ b/src/browser.c
@@ -0,0 +1,1078 @@
+/* $Id: browser.c 4461 2009-12-09 17:09:37Z astyanax $ */
+/**************************************************************************
+ * browser.c *
+ * *
+ * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 *
+ * Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+
+#ifndef DISABLE_BROWSER
+
+static char **filelist = NULL;
+ /* The list of files to display in the file browser. */
+static size_t filelist_len = 0;
+ /* The number of files in the list. */
+static int width = 0;
+ /* The number of files that we can display per line. */
+static int longest = 0;
+ /* The number of columns in the longest filename in the list. */
+static size_t selected = 0;
+ /* The currently selected filename in the list. This variable
+ * is zero-based. */
+static bool search_last_file = FALSE;
+ /* Have we gone past the last file while searching? */
+
+/* Our main file browser function. path is the tilde-expanded path we
+ * start browsing from. */
+char *do_browser(char *path, DIR *dir)
+{
+ char *retval = NULL;
+ int kbinput;
+ bool meta_key, func_key, old_const_update = ISSET(CONST_UPDATE);
+ bool abort = FALSE;
+ /* Whether we should abort the file browser. */
+ char *prev_dir = NULL;
+ /* The directory we were in, if any, before backing up via
+ * browsing to "..". */
+ char *ans = NULL;
+ /* The last answer the user typed at the statusbar prompt. */
+ size_t old_selected;
+ /* The selected file we had before the current selected file. */
+ const sc *s;
+ const subnfunc *f;
+
+ curs_set(0);
+ blank_statusbar();
+#if !defined(DISABLE_HELP) || !defined(DISABLE_MOUSE)
+ currmenu = MBROWSER;
+#endif
+ bottombars(MBROWSER);
+ wnoutrefresh(bottomwin);
+
+ UNSET(CONST_UPDATE);
+
+ ans = mallocstrcpy(NULL, "");
+
+ change_browser_directory:
+ /* We go here after we select a new directory. */
+
+ /* Start with no key pressed. */
+ kbinput = ERR;
+
+ path = mallocstrassn(path, get_full_path(path));
+
+ assert(path != NULL && path[strlen(path) - 1] == '/');
+
+ /* Get the file list, and set longest and width in the process. */
+ browser_init(path, dir);
+
+ assert(filelist != NULL);
+
+ /* Sort the file list. */
+ qsort(filelist, filelist_len, sizeof(char *), diralphasort);
+
+ /* If prev_dir isn't NULL, select the directory saved in it, and
+ * then blow it away. */
+ if (prev_dir != NULL) {
+ browser_select_filename(prev_dir);
+
+ free(prev_dir);
+ prev_dir = NULL;
+ /* Otherwise, select the first file or directory in the list. */
+ } else
+ selected = 0;
+
+ old_selected = (size_t)-1;
+
+ titlebar(path);
+
+ while (!abort) {
+ struct stat st;
+ int i;
+ size_t fileline = selected / width;
+ /* The line number the selected file is on. */
+ char *new_path;
+ /* The path we switch to at the "Go to Directory"
+ * prompt. */
+
+ /* Display the file list if we don't have a key, or if the
+ * selected file has changed, and set width in the process. */
+ if (kbinput == ERR || old_selected != selected)
+ browser_refresh();
+
+ old_selected = selected;
+
+ kbinput = get_kbinput(edit, &meta_key, &func_key);
+
+#ifndef DISABLE_MOUSE
+ if (kbinput == KEY_MOUSE) {
+
+ int mouse_x, mouse_y;
+
+ /* We can click on the edit window to select a
+ * filename. */
+ if (get_mouseinput(&mouse_x, &mouse_y, TRUE) == 0 &&
+ wmouse_trafo(edit, &mouse_y, &mouse_x, FALSE)) {
+ /* longest is the width of each column. There
+ * are two spaces between each column. */
+ selected = (fileline / editwinrows) *
+ (editwinrows * width) + (mouse_y *
+ width) + (mouse_x / (longest + 2));
+
+ /* If they clicked beyond the end of a row,
+ * select the filename at the end of that
+ * row. */
+ if (mouse_x > width * (longest + 2))
+ selected--;
+
+ /* If we're off the screen, select the last
+ * filename. */
+ if (selected > filelist_len - 1)
+ selected = filelist_len - 1;
+
+ /* If we selected the same filename as last
+ * time, put back the Enter key so that it's
+ * read in. */
+ if (old_selected == selected)
+ unget_kbinput(sc_seq_or(DO_ENTER, 0), FALSE, FALSE);
+ }
+ }
+#endif /* !DISABLE_MOUSE */
+
+ parse_browser_input(&kbinput, &meta_key, &func_key);
+ s = get_shortcut(MBROWSER, &kbinput, &meta_key, &func_key);
+ if (!s)
+ continue;
+ f = sctofunc((sc *) s);
+ if (!f)
+ break;
+
+ if (f->scfunc == TOTAL_REFRESH) {
+ total_redraw();
+ } else if (f->scfunc == DO_HELP_VOID) {
+#ifndef DISABLE_HELP
+ do_browser_help();
+ curs_set(0);
+#else
+ nano_disabled_msg();
+#endif
+ /* Search for a filename. */
+ } else if (f->scfunc == DO_SEARCH) {
+ curs_set(1);
+ do_filesearch();
+ curs_set(0);
+ /* Search for another filename. */
+ } else if (f->scfunc == DO_RESEARCH) {
+ do_fileresearch();
+ } else if (f->scfunc == DO_PAGE_UP) {
+ if (selected >= (editwinrows + fileline % editwinrows) *
+ width)
+ selected -= (editwinrows + fileline % editwinrows) *
+ width;
+ else
+ selected = 0;
+ } else if (f->scfunc == DO_PAGE_DOWN) {
+ selected += (editwinrows - fileline % editwinrows) *
+ width;
+ if (selected > filelist_len - 1)
+ selected = filelist_len - 1;
+ } else if (f->scfunc == FIRST_FILE_MSG) {
+ if (meta_key)
+ selected = 0;
+ } else if (f->scfunc == LAST_FILE_MSG) {
+ if (meta_key)
+ selected = filelist_len - 1;
+ /* Go to a specific directory. */
+ } else if (f->scfunc == GOTO_DIR_MSG) {
+ curs_set(1);
+
+ i = do_prompt(TRUE,
+#ifndef DISABLE_TABCOMP
+ FALSE,
+#endif
+ MGOTODIR, ans,
+ &meta_key, &func_key,
+#ifndef NANO_TINY
+ NULL,
+#endif
+ browser_refresh, N_("Go To Directory"));
+
+ curs_set(0);
+#if !defined(DISABLE_HELP) || !defined(DISABLE_MOUSE)
+ currmenu = MBROWSER;
+#endif
+ bottombars(MBROWSER);
+
+ /* If the directory begins with a newline (i.e. an
+ * encoded null), treat it as though it's blank. */
+ if (i < 0 || *answer == '\n') {
+ /* We canceled. Indicate that on the statusbar, and
+ * blank out ans, since we're done with it. */
+ statusbar(_("Cancelled"));
+ ans = mallocstrcpy(ans, "");
+ continue;
+ } else if (i != 0) {
+ /* Put back the "Go to Directory" key and save
+ * answer in ans, so that the file list is displayed
+ * again, the prompt is displayed again, and what we
+ * typed before at the prompt is displayed again. */
+ unget_kbinput(sc_seq_or(DO_GOTOLINECOLUMN_VOID, 0), FALSE, FALSE);
+ ans = mallocstrcpy(ans, answer);
+ continue;
+ }
+
+ /* We have a directory. Blank out ans, since we're done
+ * with it. */
+ ans = mallocstrcpy(ans, "");
+
+ /* Convert newlines to nulls, just before we go to the
+ * directory. */
+ sunder(answer);
+ align(&answer);
+
+ new_path = real_dir_from_tilde(answer);
+
+ if (new_path[0] != '/') {
+ new_path = charealloc(new_path, strlen(path) +
+ strlen(answer) + 1);
+ sprintf(new_path, "%s%s", path, answer);
+ }
+
+#ifndef DISABLE_OPERATINGDIR
+ if (check_operating_dir(new_path, FALSE)) {
+ statusbar(
+ _("Can't go outside of %s in restricted mode"),
+ operating_dir);
+ free(new_path);
+ continue;
+ }
+#endif
+
+ dir = opendir(new_path);
+ if (dir == NULL) {
+ /* We can't open this directory for some reason.
+ * Complain. */
+ statusbar(_("Error reading %s: %s"), answer,
+ strerror(errno));
+ beep();
+ free(new_path);
+ continue;
+ }
+
+ /* Start over again with the new path value. */
+ free(path);
+ path = new_path;
+ goto change_browser_directory;
+ } else if (f->scfunc == DO_UP_VOID) {
+ if (selected >= width)
+ selected -= width;
+ } else if (f->scfunc == DO_LEFT) {
+ if (selected > 0)
+ selected--;
+ } else if (f->scfunc == DO_DOWN_VOID) {
+ if (selected + width <= filelist_len - 1)
+ selected += width;
+ } else if (f->scfunc == DO_RIGHT) {
+ if (selected < filelist_len - 1)
+ selected++;
+ } else if (f->scfunc == DO_ENTER) {
+ /* We can't move up from "/". */
+ if (strcmp(filelist[selected], "/..") == 0) {
+ statusbar(_("Can't move up a directory"));
+ beep();
+ continue;
+ }
+
+#ifndef DISABLE_OPERATINGDIR
+ /* Note: The selected file can be outside the operating
+ * directory if it's ".." or if it's a symlink to a
+ * directory outside the operating directory. */
+ if (check_operating_dir(filelist[selected], FALSE)) {
+ statusbar(
+ _("Can't go outside of %s in restricted mode"),
+ operating_dir);
+ beep();
+ continue;
+ }
+#endif
+
+ if (stat(filelist[selected], &st) == -1) {
+ /* We can't open this file for some reason.
+ * Complain. */
+ statusbar(_("Error reading %s: %s"),
+ filelist[selected], strerror(errno));
+ beep();
+ continue;
+ }
+
+ /* If we've successfully opened a file, we're done, so
+ * get out. */
+ if (!S_ISDIR(st.st_mode)) {
+ retval = mallocstrcpy(NULL, filelist[selected]);
+ abort = TRUE;
+ continue;
+ /* If we've successfully opened a directory, and it's
+ * "..", save the current directory in prev_dir, so that
+ * we can select it later. */
+ } else if (strcmp(tail(filelist[selected]), "..") == 0)
+ prev_dir = mallocstrcpy(NULL,
+ striponedir(filelist[selected]));
+
+ dir = opendir(filelist[selected]);
+ if (dir == NULL) {
+ /* We can't open this directory for some reason.
+ * Complain. */
+ statusbar(_("Error reading %s: %s"),
+ filelist[selected], strerror(errno));
+ beep();
+ continue;
+ }
+
+ path = mallocstrcpy(path, filelist[selected]);
+
+ /* Start over again with the new path value. */
+ goto change_browser_directory;
+ /* Abort the file browser. */
+ } else if (f->scfunc == DO_EXIT) {
+ abort = TRUE;
+ }
+ }
+ titlebar(NULL);
+ edit_refresh();
+ curs_set(1);
+ if (old_const_update)
+ SET(CONST_UPDATE);
+
+ free(path);
+ free(ans);
+
+ free_chararray(filelist, filelist_len);
+ filelist = NULL;
+ filelist_len = 0;
+
+ return retval;
+}
+
+/* The file browser front end. We check to see if inpath has a
+ * directory in it. If it does, we start do_browser() from there.
+ * Otherwise, we start do_browser() from the current directory. */
+char *do_browse_from(const char *inpath)
+{
+ struct stat st;
+ char *path;
+ /* This holds the tilde-expanded version of inpath. */
+ DIR *dir = NULL;
+
+ assert(inpath != NULL);
+
+ path = real_dir_from_tilde(inpath);
+
+ /* Perhaps path is a directory. If so, we'll pass it to
+ * do_browser(). Or perhaps path is a directory / a file. If so,
+ * we'll try stripping off the last path element and passing it to
+ * do_browser(). Or perhaps path doesn't have a directory portion
+ * at all. If so, we'll just pass the current directory to
+ * do_browser(). */
+ if (stat(path, &st) == -1 || !S_ISDIR(st.st_mode)) {
+ path = mallocstrassn(path, striponedir(path));
+
+ if (stat(path, &st) == -1 || !S_ISDIR(st.st_mode)) {
+ free(path);
+
+ path = charalloc(PATH_MAX + 1);
+ path = getcwd(path, PATH_MAX + 1);
+
+ if (path != NULL)
+ align(&path);
+ }
+ }
+
+#ifndef DISABLE_OPERATINGDIR
+ /* If the resulting path isn't in the operating directory, use
+ * the operating directory instead. */
+ if (check_operating_dir(path, FALSE))
+ path = mallocstrcpy(path, operating_dir);
+#endif
+
+ if (path != NULL)
+ dir = opendir(path);
+
+ /* If we can't open the path, get out. */
+ if (dir == NULL) {
+ if (path != NULL)
+ free(path);
+ beep();
+ return NULL;
+ }
+
+ return do_browser(path, dir);
+}
+
+/* Set filelist to the list of files contained in the directory path,
+ * set filelist_len to the number of files in that list, set longest to
+ * the width in columns of the longest filename in that list (between 15
+ * and COLS), and set width to the number of files that we can display
+ * per line. longest needs to be at least 15 columns in order to
+ * display ".. (parent dir)", as Pico does. Assume path exists and is a
+ * directory. */
+void browser_init(const char *path, DIR *dir)
+{
+ const struct dirent *nextdir;
+ size_t i = 0, path_len = strlen(path);
+ int col = 0;
+ /* The maximum number of columns that the filenames will take
+ * up. */
+ int line = 0;
+ /* The maximum number of lines that the filenames will take
+ * up. */
+ int filesperline = 0;
+ /* The number of files that we can display per line. */
+
+ assert(path != NULL && path[strlen(path) - 1] == '/' && dir != NULL);
+
+ /* Set longest to zero, just before we initialize it. */
+ longest = 0;
+
+ while ((nextdir = readdir(dir)) != NULL) {
+ size_t d_len;
+
+ /* Don't show the "." entry. */
+ if (strcmp(nextdir->d_name, ".") == 0)
+ continue;
+
+ d_len = strlenpt(nextdir->d_name);
+ if (d_len > longest)
+ longest = (d_len > COLS) ? COLS : d_len;
+
+ i++;
+ }
+
+ rewinddir(dir);
+
+ /* Put 10 columns' worth of blank space between columns of filenames
+ * in the list whenever possible, as Pico does. */
+ longest += 10;
+
+ if (filelist != NULL)
+ free_chararray(filelist, filelist_len);
+
+ filelist_len = i;
+
+ filelist = (char **)nmalloc(filelist_len * sizeof(char *));
+
+ i = 0;
+
+ while ((nextdir = readdir(dir)) != NULL && i < filelist_len) {
+ /* Don't show the "." entry. */
+ if (strcmp(nextdir->d_name, ".") == 0)
+ continue;
+
+ filelist[i] = charalloc(path_len + strlen(nextdir->d_name) + 1);
+ sprintf(filelist[i], "%s%s", path, nextdir->d_name);
+
+ i++;
+ }
+
+ /* Maybe the number of files in the directory changed between the
+ * first time we scanned and the second. i is the actual length of
+ * filelist, so record it. */
+ filelist_len = i;
+
+ closedir(dir);
+
+ /* Make sure longest is between 15 and COLS. */
+ if (longest < 15)
+ longest = 15;
+ if (longest > COLS)
+ longest = COLS;
+
+ /* Set width to zero, just before we initialize it. */
+ width = 0;
+
+ for (i = 0; i < filelist_len && line < editwinrows; i++) {
+ /* Calculate the number of columns one filename will take up. */
+ col += longest;
+ filesperline++;
+
+ /* Add some space between the columns. */
+ col += 2;
+
+ /* If the next entry isn't going to fit on the current line,
+ * move to the next line. */
+ if (col > COLS - longest) {
+ line++;
+ col = 0;
+
+ /* If width isn't initialized yet, and we've taken up more
+ * than one line, it means that width is equal to
+ * filesperline. */
+ if (width == 0)
+ width = filesperline;
+ }
+ }
+
+ /* If width isn't initialized yet, and we've taken up only one line,
+ * it means that width is equal to longest. */
+ if (width == 0)
+ width = longest;
+}
+
+/* Determine the shortcut key corresponding to the values of kbinput
+ * (the key itself), meta_key (whether the key is a meta sequence), and
+ * func_key (whether the key is a function key), if any. In the
+ * process, convert certain non-shortcut keys into their corresponding
+ * shortcut keys. */
+void parse_browser_input(int *kbinput, bool *meta_key, bool *func_key)
+{
+ get_shortcut(MBROWSER, kbinput, meta_key, func_key);
+
+ /* Pico compatibility. */
+ if (!*meta_key) {
+ switch (*kbinput) {
+ case ' ':
+ *kbinput = sc_seq_or(DO_PAGE_DOWN, 0);
+ break;
+ case '-':
+ *kbinput = sc_seq_or(DO_PAGE_UP, 0);
+ break;
+ case '?':
+#ifndef DISABLE_HELP
+ *kbinput = sc_seq_or(DO_HELP_VOID, 0);
+#endif
+ break;
+ /* Cancel equivalent to Exit here. */
+ case 'E':
+ case 'e':
+ *kbinput = sc_seq_or(DO_EXIT, 0);
+ break;
+ case 'G':
+ case 'g':
+ *kbinput = sc_seq_or(GOTO_DIR_MSG, 0);
+ break;
+ case 'S':
+ case 's':
+ *kbinput = sc_seq_or(DO_ENTER, 0);
+ break;
+ case 'W':
+ case 'w':
+ *kbinput = sc_seq_or(DO_SEARCH, 0);
+ break;
+ }
+ }
+}
+
+/* Set width to the number of files that we can display per line, if
+ * necessary, and display the list of files. */
+void browser_refresh(void)
+{
+ static int uimax_digits = -1;
+ size_t i;
+ int col = 0;
+ /* The maximum number of columns that the filenames will take
+ * up. */
+ int line = 0;
+ /* The maximum number of lines that the filenames will take
+ * up. */
+ char *foo;
+ /* The file information that we'll display. */
+
+ if (uimax_digits == -1)
+ uimax_digits = digits(UINT_MAX);
+
+ blank_edit();
+
+ wmove(edit, 0, 0);
+
+ i = width * editwinrows * ((selected / width) / editwinrows);
+
+ for (; i < filelist_len && line < editwinrows; i++) {
+ struct stat st;
+ const char *filetail = tail(filelist[i]);
+ /* The filename we display, minus the path. */
+ size_t filetaillen = strlenpt(filetail);
+ /* The length of the filename in columns. */
+ size_t foolen;
+ /* The length of the file information in columns. */
+ int foomaxlen = 7;
+ /* The maximum length of the file information in
+ * columns: seven for "--", "(dir)", or the file size,
+ * and 12 for "(parent dir)". */
+ bool dots = (COLS >= 15 && filetaillen >= longest -
+ foomaxlen - 1);
+ /* Do we put an ellipsis before the filename? Don't set
+ * this to TRUE if we have fewer than 15 columns (i.e.
+ * one column for padding, plus seven columns for a
+ * filename other than ".."). */
+ char *disp = display_string(filetail, dots ? filetaillen -
+ longest + foomaxlen + 4 : 0, longest, FALSE);
+ /* If we put an ellipsis before the filename, reserve
+ * one column for padding, plus seven columns for "--",
+ * "(dir)", or the file size, plus three columns for the
+ * ellipsis. */
+
+ /* Start highlighting the currently selected file or
+ * directory. */
+ if (i == selected)
+ wattron(edit, reverse_attr);
+
+ blank_line(edit, line, col, longest);
+
+ /* If dots is TRUE, we will display something like
+ * "...ename". */
+ if (dots)
+ mvwaddstr(edit, line, col, "...");
+ mvwaddstr(edit, line, dots ? col + 3 : col, disp);
+
+ free(disp);
+
+ col += longest;
+
+ /* Show information about the file. We don't want to report
+ * file sizes for links, so we use lstat(). */
+ if (lstat(filelist[i], &st) == -1 || S_ISLNK(st.st_mode)) {
+ /* If the file doesn't exist (i.e. it's been deleted while
+ * the file browser is open), or it's a symlink that doesn't
+ * point to a directory, display "--". */
+ if (stat(filelist[i], &st) == -1 || !S_ISDIR(st.st_mode))
+ foo = mallocstrcpy(NULL, "--");
+ /* If the file is a symlink that points to a directory,
+ * display it as a directory. */
+ else
+ /* TRANSLATORS: Try to keep this at most 7
+ * characters. */
+ foo = mallocstrcpy(NULL, _("(dir)"));
+ } else if (S_ISDIR(st.st_mode)) {
+ /* If the file is a directory, display it as such. */
+ if (strcmp(filetail, "..") == 0) {
+ /* TRANSLATORS: Try to keep this at most 12
+ * characters. */
+ foo = mallocstrcpy(NULL, _("(parent dir)"));
+ foomaxlen = 12;
+ } else
+ foo = mallocstrcpy(NULL, _("(dir)"));
+ } else {
+ unsigned long result = st.st_size;
+ char modifier;
+
+ foo = charalloc(uimax_digits + 4);
+
+ /* Bytes. */
+ if (st.st_size < (1 << 10))
+ modifier = ' ';
+ /* Kilobytes. */
+ else if (st.st_size < (1 << 20)) {
+ result >>= 10;
+ modifier = 'K';
+ /* Megabytes. */
+ } else if (st.st_size < (1 << 30)) {
+ result >>= 20;
+ modifier = 'M';
+ /* Gigabytes. */
+ } else {
+ result >>= 30;
+ modifier = 'G';
+ }
+
+ sprintf(foo, "%4lu %cB", result, modifier);
+ }
+
+ /* Make sure foo takes up no more than foomaxlen columns. */
+ foolen = strlenpt(foo);
+ if (foolen > foomaxlen) {
+ null_at(&foo, actual_x(foo, foomaxlen));
+ foolen = foomaxlen;
+ }
+
+ mvwaddstr(edit, line, col - foolen, foo);
+
+ /* Finish highlighting the currently selected file or
+ * directory. */
+ if (i == selected)
+ wattroff(edit, reverse_attr);
+
+ free(foo);
+
+ /* Add some space between the columns. */
+ col += 2;
+
+ /* If the next entry isn't going to fit on the current line,
+ * move to the next line. */
+ if (col > COLS - longest) {
+ line++;
+ col = 0;
+ }
+
+ wmove(edit, line, col);
+ }
+
+ wnoutrefresh(edit);
+}
+
+/* Look for needle. If we find it, set selected to its location. Note
+ * that needle must be an exact match for a file in the list. The
+ * return value specifies whether we found anything. */
+bool browser_select_filename(const char *needle)
+{
+ size_t currselected;
+ bool found = FALSE;
+
+ for (currselected = 0; currselected < filelist_len;
+ currselected++) {
+ if (strcmp(filelist[currselected], needle) == 0) {
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (found)
+ selected = currselected;
+
+ return found;
+}
+
+/* Set up the system variables for a filename search. Return -1 if the
+ * search should be canceled (due to Cancel, a blank search string, or a
+ * failed regcomp()), return 0 on success, and return 1 on rerun calling
+ * program. */
+int filesearch_init(void)
+{
+ int i = 0;
+ char *buf;
+ bool meta_key, func_key;
+ const sc *s;
+ static char *backupstring = NULL;
+ /* The search string we'll be using. */
+
+ /* If backupstring doesn't exist, initialize it to "". */
+ if (backupstring == NULL)
+ backupstring = mallocstrcpy(NULL, "");
+
+ /* We display the search prompt below. If the user types a partial
+ * search string and then Replace or a toggle, we will return to
+ * do_search() or do_replace() and be called again. In that case,
+ * we should put the same search string back up. */
+
+ search_init_globals();
+
+ if (last_search[0] != '\0') {
+ char *disp = display_string(last_search, 0, COLS / 3, FALSE);
+
+ buf = charalloc(strlen(disp) + 7);
+ /* We use (COLS / 3) here because we need to see more on the
+ * line. */
+ sprintf(buf, " [%s%s]", disp,
+ (strlenpt(last_search) > COLS / 3) ? "..." : "");
+ free(disp);
+ } else
+ buf = mallocstrcpy(NULL, "");
+
+ /* This is now one simple call. It just does a lot. */
+ i = do_prompt(FALSE,
+#ifndef DISABLE_TABCOMP
+ TRUE,
+#endif
+ MWHEREISFILE, backupstring,
+ &meta_key, &func_key,
+#ifndef NANO_TINY
+ &search_history,
+#endif
+ browser_refresh, "%s%s%s%s%s%s", _("Search"),
+#ifndef NANO_TINY
+ /* This string is just a modifier for the search prompt; no
+ * grammar is implied. */
+ ISSET(CASE_SENSITIVE) ? _(" [Case Sensitive]") :
+#endif
+ "",
+#ifdef HAVE_REGEX_H
+ /* This string is just a modifier for the search prompt; no
+ * grammar is implied. */
+ ISSET(USE_REGEXP) ? _(" [Regexp]") :
+#endif
+ "",
+#ifndef NANO_TINY
+ /* This string is just a modifier for the search prompt; no
+ * grammar is implied. */
+ ISSET(BACKWARDS_SEARCH) ? _(" [Backwards]") :
+#endif
+ "", "", buf);
+
+ /* Release buf now that we don't need it anymore. */
+ free(buf);
+
+ free(backupstring);
+ backupstring = NULL;
+
+ /* Cancel any search, or just return with no previous search. */
+ if (i == -1 || (i < 0 && *last_search == '\0') || (i == 0 &&
+ *answer == '\0')) {
+ statusbar(_("Cancelled"));
+ return -1;
+ } else {
+ s = get_shortcut(MBROWSER, &i, &meta_key, &func_key);
+ if (i == -2 || i == 0) {
+#ifdef HAVE_REGEX_H
+ /* Use last_search if answer is an empty string, or
+ * answer if it isn't. */
+ if (ISSET(USE_REGEXP) && !regexp_init((i == -2) ?
+ last_search : answer))
+ return -1;
+#endif
+ } else
+#ifndef NANO_TINY
+ if (s && s->scfunc == CASE_SENS_MSG) {
+ TOGGLE(CASE_SENSITIVE);
+ backupstring = mallocstrcpy(backupstring, answer);
+ return 1;
+ } else if (s && s->scfunc == BACKWARDS_MSG) {
+ TOGGLE(BACKWARDS_SEARCH);
+ backupstring = mallocstrcpy(backupstring, answer);
+ return 1;
+ } else
+#endif
+#ifdef HAVE_REGEX_H
+ if (s && s->scfunc == REGEXP_MSG) {
+ TOGGLE(USE_REGEXP);
+ backupstring = mallocstrcpy(backupstring, answer);
+ return 1;
+ } else
+#endif
+ return -1;
+ }
+
+ return 0;
+}
+
+/* Look for needle. If no_sameline is TRUE, skip over selected when
+ * looking for needle. begin is the location of the filename where we
+ * first started searching. The return value specifies whether we found
+ * anything. */
+bool findnextfile(bool no_sameline, size_t begin, const char *needle)
+{
+ size_t currselected = selected;
+ /* The location in the current file list of the match we
+ * find. */
+ const char *filetail = tail(filelist[currselected]);
+ /* The filename we display, minus the path. */
+ const char *rev_start = filetail, *found = NULL;
+
+#ifndef NANO_TINY
+ if (ISSET(BACKWARDS_SEARCH))
+ rev_start += strlen(rev_start);
+#endif
+
+ /* Look for needle in the current filename we're searching. */
+ while (TRUE) {
+ found = strstrwrapper(filetail, needle, rev_start);
+
+ /* We've found a potential match. If we're not allowed to find
+ * a match on the same filename we started on and this potential
+ * match is on that line, continue searching. */
+ if (found != NULL && (!no_sameline || currselected != begin))
+ break;
+
+ /* We've finished processing the filenames, so get out. */
+ if (search_last_file) {
+ not_found_msg(needle);
+ return FALSE;
+ }
+
+ /* Move to the previous or next filename in the list. If we've
+ * reached the start or end of the list, wrap around. */
+#ifndef NANO_TINY
+ if (ISSET(BACKWARDS_SEARCH)) {
+ if (currselected > 0)
+ currselected--;
+ else {
+ currselected = filelist_len - 1;
+ statusbar(_("Search Wrapped"));
+ }
+ } else {
+#endif
+ if (currselected < filelist_len - 1)
+ currselected++;
+ else {
+ currselected = 0;
+ statusbar(_("Search Wrapped"));
+ }
+#ifndef NANO_TINY
+ }
+#endif
+
+ /* We've reached the original starting file. */
+ if (currselected == begin)
+ search_last_file = TRUE;
+
+ filetail = tail(filelist[currselected]);
+
+ rev_start = filetail;
+#ifndef NANO_TINY
+ if (ISSET(BACKWARDS_SEARCH))
+ rev_start += strlen(rev_start);
+#endif
+ }
+
+ /* We've definitely found something. */
+ selected = currselected;
+
+ return TRUE;
+}
+
+/* Clear the flag indicating that a search reached the last file in the
+ * list. We need to do this just before a new search. */
+void findnextfile_wrap_reset(void)
+{
+ search_last_file = FALSE;
+}
+
+/* Abort the current filename search. Clean up by setting the current
+ * shortcut list to the browser shortcut list, displaying it, and
+ * decompiling the compiled regular expression we used in the last
+ * search, if any. */
+void filesearch_abort(void)
+{
+ currmenu = MBROWSER;
+ bottombars(MBROWSER);
+#ifdef HAVE_REGEX_H
+ regexp_cleanup();
+#endif
+}
+
+/* Search for a filename. */
+void do_filesearch(void)
+{
+ size_t begin = selected;
+ int i;
+ bool didfind;
+
+ i = filesearch_init();
+ if (i == -1) /* Cancel, blank search string, or regcomp()
+ * failed. */
+ filesearch_abort();
+#if !defined(NANO_TINY) || defined(HAVE_REGEX_H)
+ else if (i == 1) /* Case Sensitive, Backwards, or Regexp search
+ * toggle. */
+ do_filesearch();
+#endif
+
+ if (i != 0)
+ return;
+
+ /* If answer is now "", copy last_search into answer. */
+ if (*answer == '\0')
+ answer = mallocstrcpy(answer, last_search);
+ else
+ last_search = mallocstrcpy(last_search, answer);
+
+#ifndef NANO_TINY
+ /* If answer is not "", add this search string to the search history
+ * list. */
+ if (answer[0] != '\0')
+ update_history(&search_history, answer);
+#endif
+
+ findnextfile_wrap_reset();
+ didfind = findnextfile(FALSE, begin, answer);
+
+ /* Check to see if there's only one occurrence of the string and
+ * we're on it now. */
+ if (selected == begin && didfind) {
+ /* Do the search again, skipping over the current line. We
+ * should only end up back at the same position if the string
+ * isn't found again, in which case it's the only occurrence. */
+ didfind = findnextfile(TRUE, begin, answer);
+ if (selected == begin && !didfind)
+ statusbar(_("This is the only occurrence"));
+ }
+
+ filesearch_abort();
+}
+
+/* Search for the last filename without prompting. */
+void do_fileresearch(void)
+{
+ size_t begin = selected;
+ bool didfind;
+
+ search_init_globals();
+
+ if (last_search[0] != '\0') {
+#ifdef HAVE_REGEX_H
+ /* Since answer is "", use last_search! */
+ if (ISSET(USE_REGEXP) && !regexp_init(last_search))
+ return;
+#endif
+
+ findnextfile_wrap_reset();
+ didfind = findnextfile(FALSE, begin, answer);
+
+ /* Check to see if there's only one occurrence of the string and
+ * we're on it now. */
+ if (selected == begin && didfind) {
+ /* Do the search again, skipping over the current line. We
+ * should only end up back at the same position if the
+ * string isn't found again, in which case it's the only
+ * occurrence. */
+ didfind = findnextfile(TRUE, begin, answer);
+ if (selected == begin && !didfind)
+ statusbar(_("This is the only occurrence"));
+ }
+ } else
+ statusbar(_("No current search pattern"));
+
+ filesearch_abort();
+}
+
+/* Select the first file in the list. */
+void do_first_file(void)
+{
+ selected = 0;
+}
+
+/* Select the last file in the list. */
+void do_last_file(void)
+{
+ selected = filelist_len - 1;
+}
+
+/* Strip one directory from the end of path, and return the stripped
+ * path. The returned string is dynamically allocated, and should be
+ * freed. */
+char *striponedir(const char *path)
+{
+ char *retval, *tmp;
+
+ assert(path != NULL);
+
+ retval = mallocstrcpy(NULL, path);
+
+ tmp = strrchr(retval, '/');
+
+ if (tmp != NULL)
+ null_at(&retval, tmp - retval);
+
+ return retval;
+}
+
+#endif /* !DISABLE_BROWSER */
diff --git a/src/chars.c b/src/chars.c
new file mode 100644
index 0000000..7d56117
--- /dev/null
+++ b/src/chars.c
@@ -0,0 +1,963 @@
+/* $Id: chars.c 4453 2009-12-02 03:36:22Z astyanax $ */
+/**************************************************************************
+ * chars.c *
+ * *
+ * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 *
+ * Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <string.h>
+#include <ctype.h>
+
+#ifdef ENABLE_UTF8
+#ifdef HAVE_WCHAR_H
+#include <wchar.h>
+#endif
+#ifdef HAVE_WCTYPE_H
+#include <wctype.h>
+#endif
+
+static bool use_utf8 = FALSE;
+ /* Whether we've enabled UTF-8 support. */
+static const wchar_t bad_wchar = 0xFFFD;
+ /* If we get an invalid multibyte sequence, we treat it as
+ * Unicode FFFD (Replacement Character), unless we're searching
+ * for a match to it. */
+static const char *const bad_mbchar = "\xEF\xBF\xBD";
+static const int bad_mbchar_len = 3;
+
+/* Enable UTF-8 support. */
+void utf8_init(void)
+{
+ use_utf8 = TRUE;
+}
+
+/* Is UTF-8 support enabled? */
+bool using_utf8(void)
+{
+ return use_utf8;
+}
+#endif
+
+#ifndef HAVE_ISBLANK
+/* This function is equivalent to isblank(). */
+bool nisblank(int c)
+{
+ return isspace(c) && (c == '\t' || !is_cntrl_char(c));
+}
+#endif
+
+#if !defined(HAVE_ISWBLANK) && defined(ENABLE_UTF8)
+/* This function is equivalent to iswblank(). */
+bool niswblank(wchar_t wc)
+{
+ return iswspace(wc) && (wc == '\t' || !is_cntrl_wchar(wc));
+}
+#endif
+
+/* Return TRUE if the value of c is in byte range, and FALSE
+ * otherwise. */
+bool is_byte(int c)
+{
+ return ((unsigned int)c == (unsigned char)c);
+}
+
+static void mbtowc_reset(void)
+{
+ IGNORE_CALL_RESULT(mbtowc(NULL, NULL, 0));
+}
+
+static void wctomb_reset(void)
+{
+ IGNORE_CALL_RESULT(wctomb(NULL, 0));
+}
+
+/* This function is equivalent to isalnum() for multibyte characters. */
+bool is_alnum_mbchar(const char *c)
+{
+ assert(c != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ wchar_t wc;
+
+ if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
+ mbtowc_reset();
+ wc = bad_wchar;
+ }
+
+ return iswalnum(wc);
+ } else
+#endif
+ return isalnum((unsigned char)*c);
+}
+
+/* This function is equivalent to isblank() for multibyte characters. */
+bool is_blank_mbchar(const char *c)
+{
+ assert(c != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ wchar_t wc;
+
+ if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
+ mbtowc_reset();
+ wc = bad_wchar;
+ }
+
+ return iswblank(wc);
+ } else
+#endif
+ return isblank((unsigned char)*c);
+}
+
+/* This function is equivalent to iscntrl(), except in that it only
+ * handles non-high-bit control characters. */
+bool is_ascii_cntrl_char(int c)
+{
+ return (0 <= c && c < 32);
+}
+
+/* This function is equivalent to iscntrl(), except in that it also
+ * handles high-bit control characters. */
+bool is_cntrl_char(int c)
+{
+ return (-128 <= c && c < -96) || (0 <= c && c < 32) ||
+ (127 <= c && c < 160);
+}
+
+#ifdef ENABLE_UTF8
+/* This function is equivalent to iscntrl() for wide characters, except
+ * in that it also handles wide control characters with their high bits
+ * set. */
+bool is_cntrl_wchar(wchar_t wc)
+{
+ return (0 <= wc && wc < 32) || (127 <= wc && wc < 160);
+}
+#endif
+
+/* This function is equivalent to iscntrl() for multibyte characters,
+ * except in that it also handles multibyte control characters with
+ * their high bits set. */
+bool is_cntrl_mbchar(const char *c)
+{
+ assert(c != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ wchar_t wc;
+
+ if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
+ mbtowc_reset();
+ wc = bad_wchar;
+ }
+
+ return is_cntrl_wchar(wc);
+ } else
+#endif
+ return is_cntrl_char((unsigned char)*c);
+}
+
+/* This function is equivalent to ispunct() for multibyte characters. */
+bool is_punct_mbchar(const char *c)
+{
+ assert(c != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ wchar_t wc;
+ int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
+
+ if (c_mb_len < 0) {
+ mbtowc_reset();
+ wc = bad_wchar;
+ }
+
+ return iswpunct(wc);
+ } else
+#endif
+ return ispunct((unsigned char)*c);
+}
+
+/* Return TRUE for a multibyte character found in a word (currently only
+ * an alphanumeric or punctuation character, and only the latter if
+ * allow_punct is TRUE) and FALSE otherwise. */
+bool is_word_mbchar(const char *c, bool allow_punct)
+{
+ assert(c != NULL);
+
+ return is_alnum_mbchar(c) || (allow_punct ? is_punct_mbchar(c) :
+ FALSE);
+}
+
+/* c is a control character. It displays as ^@, ^?, or ^[ch], where ch
+ * is (c + 64). We return that character. */
+char control_rep(char c)
+{
+ assert(is_cntrl_char(c));
+
+ /* Treat newlines embedded in a line as encoded nulls. */
+ if (c == '\n')
+ return '@';
+ else if (c == NANO_CONTROL_8)
+ return '?';
+ else
+ return c + 64;
+}
+
+#ifdef ENABLE_UTF8
+/* c is a wide control character. It displays as ^@, ^?, or ^[ch],
+ * where ch is (c + 64). We return that wide character. */
+wchar_t control_wrep(wchar_t wc)
+{
+ assert(is_cntrl_wchar(wc));
+
+ /* Treat newlines embedded in a line as encoded nulls. */
+ if (wc == '\n')
+ return '@';
+ else if (wc == NANO_CONTROL_8)
+ return '?';
+ else
+ return wc + 64;
+}
+#endif
+
+/* c is a multibyte control character. It displays as ^@, ^?, or ^[ch],
+ * where ch is (c + 64). We return that multibyte character. If crep
+ * is an invalid multibyte sequence, it will be replaced with Unicode
+ * 0xFFFD (Replacement Character). */
+char *control_mbrep(const char *c, char *crep, int *crep_len)
+{
+ assert(c != NULL && crep != NULL && crep_len != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ wchar_t wc;
+
+ if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
+ mbtowc_reset();
+ *crep_len = bad_mbchar_len;
+ strncpy(crep, bad_mbchar, *crep_len);
+ } else {
+ *crep_len = wctomb(crep, control_wrep(wc));
+
+ if (*crep_len < 0) {
+ wctomb_reset();
+ *crep_len = 0;
+ }
+ }
+ } else {
+#endif
+ *crep_len = 1;
+ *crep = control_rep(*c);
+#ifdef ENABLE_UTF8
+ }
+#endif
+
+ return crep;
+}
+
+/* c is a multibyte non-control character. We return that multibyte
+ * character. If crep is an invalid multibyte sequence, it will be
+ * replaced with Unicode 0xFFFD (Replacement Character). */
+char *mbrep(const char *c, char *crep, int *crep_len)
+{
+ assert(c != NULL && crep != NULL && crep_len != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ wchar_t wc;
+
+ /* Reject invalid Unicode characters. */
+ if (mbtowc(&wc, c, MB_CUR_MAX) < 0 || !is_valid_unicode(wc)) {
+ mbtowc_reset();
+ *crep_len = bad_mbchar_len;
+ strncpy(crep, bad_mbchar, *crep_len);
+ } else {
+ *crep_len = wctomb(crep, wc);
+
+ if (*crep_len < 0) {
+ wctomb_reset();
+ *crep_len = 0;
+ }
+ }
+ } else {
+#endif
+ *crep_len = 1;
+ *crep = *c;
+#ifdef ENABLE_UTF8
+ }
+#endif
+
+ return crep;
+}
+
+/* This function is equivalent to wcwidth() for multibyte characters. */
+int mbwidth(const char *c)
+{
+ assert(c != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ wchar_t wc;
+ int width;
+
+ if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
+ mbtowc_reset();
+ wc = bad_wchar;
+ }
+
+ width = wcwidth(wc);
+
+ if (width == -1) {
+ wc = bad_wchar;
+ width = wcwidth(wc);
+ }
+
+ return width;
+ } else
+#endif
+ return 1;
+}
+
+/* Return the maximum width in bytes of a multibyte character. */
+int mb_cur_max(void)
+{
+ return
+#ifdef ENABLE_UTF8
+ use_utf8 ? MB_CUR_MAX :
+#endif
+ 1;
+}
+
+/* Convert the Unicode value in chr to a multibyte character with the
+ * same wide character value as chr, if possible. If the conversion
+ * succeeds, return the (dynamically allocated) multibyte character and
+ * its length. Otherwise, return an undefined (dynamically allocated)
+ * multibyte character and a length of zero. */
+char *make_mbchar(long chr, int *chr_mb_len)
+{
+ char *chr_mb;
+
+ assert(chr_mb_len != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ chr_mb = charalloc(MB_CUR_MAX);
+ *chr_mb_len = wctomb(chr_mb, (wchar_t)chr);
+
+ /* Reject invalid Unicode characters. */
+ if (*chr_mb_len < 0 || !is_valid_unicode((wchar_t)chr)) {
+ wctomb_reset();
+ *chr_mb_len = 0;
+ }
+ } else {
+#endif
+ *chr_mb_len = 1;
+ chr_mb = mallocstrncpy(NULL, (char *)&chr, 1);
+#ifdef ENABLE_UTF8
+ }
+#endif
+
+ return chr_mb;
+}
+
+/* Parse a multibyte character from buf. Return the number of bytes
+ * used. If chr isn't NULL, store the multibyte character in it. If
+ * col isn't NULL, store the new display width in it. If *buf is '\t',
+ * we expect col to have the current display width. */
+int parse_mbchar(const char *buf, char *chr, size_t *col)
+{
+ int buf_mb_len;
+
+ assert(buf != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ /* Get the number of bytes in the multibyte character. */
+ buf_mb_len = mblen(buf, MB_CUR_MAX);
+
+ /* If buf contains an invalid multibyte character, only
+ * interpret buf's first byte. */
+ if (buf_mb_len < 0) {
+ IGNORE_CALL_RESULT(mblen(NULL, 0));
+ buf_mb_len = 1;
+ } else if (buf_mb_len == 0)
+ buf_mb_len++;
+
+ /* Save the multibyte character in chr. */
+ if (chr != NULL) {
+ int i;
+
+ for (i = 0; i < buf_mb_len; i++)
+ chr[i] = buf[i];
+ }
+
+ /* Save the column width of the wide character in col. */
+ if (col != NULL) {
+ /* If we have a tab, get its width in columns using the
+ * current value of col. */
+ if (*buf == '\t')
+ *col += tabsize - *col % tabsize;
+ /* If we have a control character, get its width using one
+ * column for the "^" that will be displayed in front of it,
+ * and the width in columns of its visible equivalent as
+ * returned by control_mbrep(). */
+ else if (is_cntrl_mbchar(buf)) {
+ char *ctrl_buf_mb = charalloc(MB_CUR_MAX);
+ int ctrl_buf_mb_len;
+
+ (*col)++;
+
+ ctrl_buf_mb = control_mbrep(buf, ctrl_buf_mb,
+ &ctrl_buf_mb_len);
+
+ *col += mbwidth(ctrl_buf_mb);
+
+ free(ctrl_buf_mb);
+ /* If we have a normal character, get its width in columns
+ * normally. */
+ } else
+ *col += mbwidth(buf);
+ }
+ } else {
+#endif
+ /* Get the number of bytes in the byte character. */
+ buf_mb_len = 1;
+
+ /* Save the byte character in chr. */
+ if (chr != NULL)
+ *chr = *buf;
+
+ if (col != NULL) {
+ /* If we have a tab, get its width in columns using the
+ * current value of col. */
+ if (*buf == '\t')
+ *col += tabsize - *col % tabsize;
+ /* If we have a control character, it's two columns wide:
+ * one column for the "^" that will be displayed in front of
+ * it, and one column for its visible equivalent as returned
+ * by control_mbrep(). */
+ else if (is_cntrl_char((unsigned char)*buf))
+ *col += 2;
+ /* If we have a normal character, it's one column wide. */
+ else
+ (*col)++;
+ }
+#ifdef ENABLE_UTF8
+ }
+#endif
+
+ return buf_mb_len;
+}
+
+/* Return the index in buf of the beginning of the multibyte character
+ * before the one at pos. */
+size_t move_mbleft(const char *buf, size_t pos)
+{
+ size_t pos_prev = pos;
+
+ assert(buf != NULL && pos <= strlen(buf));
+
+ /* There is no library function to move backward one multibyte
+ * character. Here is the naive, O(pos) way to do it. */
+ while (TRUE) {
+ int buf_mb_len = parse_mbchar(buf + pos - pos_prev, NULL, NULL);
+
+ if (pos_prev <= buf_mb_len)
+ break;
+
+ pos_prev -= buf_mb_len;
+ }
+
+ return pos - pos_prev;
+}
+
+/* Return the index in buf of the beginning of the multibyte character
+ * after the one at pos. */
+size_t move_mbright(const char *buf, size_t pos)
+{
+ return pos + parse_mbchar(buf + pos, NULL, NULL);
+}
+
+#ifndef HAVE_STRCASECMP
+/* This function is equivalent to strcasecmp(). */
+int nstrcasecmp(const char *s1, const char *s2)
+{
+ return strncasecmp(s1, s2, (size_t)-1);
+}
+#endif
+
+/* This function is equivalent to strcasecmp() for multibyte strings. */
+int mbstrcasecmp(const char *s1, const char *s2)
+{
+ return mbstrncasecmp(s1, s2, (size_t)-1);
+}
+
+#ifndef HAVE_STRNCASECMP
+/* This function is equivalent to strncasecmp(). */
+int nstrncasecmp(const char *s1, const char *s2, size_t n)
+{
+ if (s1 == s2)
+ return 0;
+
+ assert(s1 != NULL && s2 != NULL);
+
+ for (; *s1 != '\0' && *s2 != '\0' && n > 0; s1++, s2++, n--) {
+ if (tolower(*s1) != tolower(*s2))
+ break;
+ }
+
+ return (n > 0) ? tolower(*s1) - tolower(*s2) : 0;
+}
+#endif
+
+/* This function is equivalent to strncasecmp() for multibyte
+ * strings. */
+int mbstrncasecmp(const char *s1, const char *s2, size_t n)
+{
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ char *s1_mb, *s2_mb;
+ wchar_t ws1, ws2;
+
+ if (s1 == s2)
+ return 0;
+
+ assert(s1 != NULL && s2 != NULL);
+
+ s1_mb = charalloc(MB_CUR_MAX);
+ s2_mb = charalloc(MB_CUR_MAX);
+
+ for (; *s1 != '\0' && *s2 != '\0' && n > 0; s1 +=
+ move_mbright(s1, 0), s2 += move_mbright(s2, 0), n--) {
+ bool bad_s1_mb = FALSE, bad_s2_mb = FALSE;
+ int s1_mb_len, s2_mb_len;
+
+ s1_mb_len = parse_mbchar(s1, s1_mb, NULL);
+
+ if (mbtowc(&ws1, s1_mb, s1_mb_len) < 0) {
+ mbtowc_reset();
+ ws1 = (unsigned char)*s1_mb;
+ bad_s1_mb = TRUE;
+ }
+
+ s2_mb_len = parse_mbchar(s2, s2_mb, NULL);
+
+ if (mbtowc(&ws2, s2_mb, s2_mb_len) < 0) {
+ mbtowc_reset();
+ ws2 = (unsigned char)*s2_mb;
+ bad_s2_mb = TRUE;
+ }
+
+ if (bad_s1_mb != bad_s2_mb || towlower(ws1) !=
+ towlower(ws2))
+ break;
+ }
+
+ free(s1_mb);
+ free(s2_mb);
+
+ return (n > 0) ? towlower(ws1) - towlower(ws2) : 0;
+ } else
+#endif
+ return strncasecmp(s1, s2, n);
+}
+
+#ifndef HAVE_STRCASESTR
+/* This function is equivalent to strcasestr(). */
+char *nstrcasestr(const char *haystack, const char *needle)
+{
+ size_t haystack_len, needle_len;
+
+ assert(haystack != NULL && needle != NULL);
+
+ if (*needle == '\0')
+ return (char *)haystack;
+
+ haystack_len = strlen(haystack);
+ needle_len = strlen(needle);
+
+ for (; *haystack != '\0' && haystack_len >= needle_len; haystack++,
+ haystack_len--) {
+ if (strncasecmp(haystack, needle, needle_len) == 0)
+ return (char *)haystack;
+ }
+
+ return NULL;
+}
+#endif
+
+/* This function is equivalent to strcasestr() for multibyte strings. */
+char *mbstrcasestr(const char *haystack, const char *needle)
+{
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ size_t haystack_len, needle_len;
+
+ assert(haystack != NULL && needle != NULL);
+
+ if (*needle == '\0')
+ return (char *)haystack;
+
+ haystack_len = mbstrlen(haystack);
+ needle_len = mbstrlen(needle);
+
+ for (; *haystack != '\0' && haystack_len >= needle_len;
+ haystack += move_mbright(haystack, 0), haystack_len--) {
+ if (mbstrncasecmp(haystack, needle, needle_len) == 0)
+ return (char *)haystack;
+ }
+
+ return NULL;
+ } else
+#endif
+ return strcasestr(haystack, needle);
+}
+
+#if !defined(NANO_TINY) || !defined(DISABLE_TABCOMP)
+/* This function is equivalent to strstr(), except in that it scans the
+ * string in reverse, starting at rev_start. */
+char *revstrstr(const char *haystack, const char *needle, const char
+ *rev_start)
+{
+ size_t rev_start_len, needle_len;
+
+ assert(haystack != NULL && needle != NULL && rev_start != NULL);
+
+ if (*needle == '\0')
+ return (char *)rev_start;
+
+ needle_len = strlen(needle);
+
+ if (strlen(haystack) < needle_len)
+ return NULL;
+
+ rev_start_len = strlen(rev_start);
+
+ for (; rev_start >= haystack; rev_start--, rev_start_len++) {
+ if (rev_start_len >= needle_len && strncmp(rev_start, needle,
+ needle_len) == 0)
+ return (char *)rev_start;
+ }
+
+ return NULL;
+}
+#endif /* !NANO_TINY || !DISABLE_TABCOMP */
+
+#ifndef NANO_TINY
+/* This function is equivalent to strcasestr(), except in that it scans
+ * the string in reverse, starting at rev_start. */
+char *revstrcasestr(const char *haystack, const char *needle, const char
+ *rev_start)
+{
+ size_t rev_start_len, needle_len;
+
+ assert(haystack != NULL && needle != NULL && rev_start != NULL);
+
+ if (*needle == '\0')
+ return (char *)rev_start;
+
+ needle_len = strlen(needle);
+
+ if (strlen(haystack) < needle_len)
+ return NULL;
+
+ rev_start_len = strlen(rev_start);
+
+ for (; rev_start >= haystack; rev_start--, rev_start_len++) {
+ if (rev_start_len >= needle_len && strncasecmp(rev_start,
+ needle, needle_len) == 0)
+ return (char *)rev_start;
+ }
+
+ return NULL;
+}
+
+/* This function is equivalent to strcasestr() for multibyte strings,
+ * except in that it scans the string in reverse, starting at
+ * rev_start. */
+char *mbrevstrcasestr(const char *haystack, const char *needle, const
+ char *rev_start)
+{
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ bool begin_line = FALSE;
+ size_t rev_start_len, needle_len;
+
+ assert(haystack != NULL && needle != NULL && rev_start != NULL);
+
+ if (*needle == '\0')
+ return (char *)rev_start;
+
+ needle_len = mbstrlen(needle);
+
+ if (mbstrlen(haystack) < needle_len)
+ return NULL;
+
+ rev_start_len = mbstrlen(rev_start);
+
+ while (!begin_line) {
+ if (rev_start_len >= needle_len && mbstrncasecmp(rev_start,
+ needle, needle_len) == 0)
+ return (char *)rev_start;
+
+ if (rev_start == haystack)
+ begin_line = TRUE;
+ else {
+ rev_start = haystack + move_mbleft(haystack, rev_start -
+ haystack);
+ rev_start_len++;
+ }
+ }
+
+ return NULL;
+ } else
+#endif
+ return revstrcasestr(haystack, needle, rev_start);
+}
+#endif /* !NANO_TINY */
+
+/* This function is equivalent to strlen() for multibyte strings. */
+size_t mbstrlen(const char *s)
+{
+ return mbstrnlen(s, (size_t)-1);
+}
+
+#ifndef HAVE_STRNLEN
+/* This function is equivalent to strnlen(). */
+size_t nstrnlen(const char *s, size_t maxlen)
+{
+ size_t n = 0;
+
+ assert(s != NULL);
+
+ for (; *s != '\0' && maxlen > 0; s++, maxlen--, n++)
+ ;
+
+ return n;
+}
+#endif
+
+/* This function is equivalent to strnlen() for multibyte strings. */
+size_t mbstrnlen(const char *s, size_t maxlen)
+{
+ assert(s != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ size_t n = 0;
+
+ for (; *s != '\0' && maxlen > 0; s += move_mbright(s, 0),
+ maxlen--, n++)
+ ;
+
+ return n;
+ } else
+#endif
+ return strnlen(s, maxlen);
+}
+
+#if !defined(NANO_TINY) || !defined(DISABLE_JUSTIFY)
+/* This function is equivalent to strchr() for multibyte strings. */
+char *mbstrchr(const char *s, const char *c)
+{
+ assert(s != NULL && c != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ bool bad_s_mb = FALSE, bad_c_mb = FALSE;
+ char *s_mb = charalloc(MB_CUR_MAX);
+ const char *q = s;
+ wchar_t ws, wc;
+ int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
+
+ if (c_mb_len < 0) {
+ mbtowc_reset();
+ wc = (unsigned char)*c;
+ bad_c_mb = TRUE;
+ }
+
+ while (*s != '\0') {
+ int s_mb_len = parse_mbchar(s, s_mb, NULL);
+
+ if (mbtowc(&ws, s_mb, s_mb_len) < 0) {
+ mbtowc_reset();
+ ws = (unsigned char)*s;
+ bad_s_mb = TRUE;
+ }
+
+ if (bad_s_mb == bad_c_mb && ws == wc)
+ break;
+
+ s += s_mb_len;
+ q += s_mb_len;
+ }
+
+ free(s_mb);
+
+ if (*s == '\0')
+ q = NULL;
+
+ return (char *)q;
+ } else
+#endif
+ return strchr(s, *c);
+}
+#endif /* !NANO_TINY || !DISABLE_JUSTIFY */
+
+#ifndef NANO_TINY
+/* This function is equivalent to strpbrk() for multibyte strings. */
+char *mbstrpbrk(const char *s, const char *accept)
+{
+ assert(s != NULL && accept != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ for (; *s != '\0'; s += move_mbright(s, 0)) {
+ if (mbstrchr(accept, s) != NULL)
+ return (char *)s;
+ }
+
+ return NULL;
+ } else
+#endif
+ return strpbrk(s, accept);
+}
+
+/* This function is equivalent to strpbrk(), except in that it scans the
+ * string in reverse, starting at rev_start. */
+char *revstrpbrk(const char *s, const char *accept, const char
+ *rev_start)
+{
+ assert(s != NULL && accept != NULL && rev_start != NULL);
+
+ for (; rev_start >= s; rev_start--) {
+ const char *q = (*rev_start == '\0') ? NULL : strchr(accept,
+ *rev_start);
+
+ if (q != NULL)
+ return (char *)rev_start;
+ }
+
+ return NULL;
+}
+
+/* This function is equivalent to strpbrk() for multibyte strings,
+ * except in that it scans the string in reverse, starting at
+ * rev_start. */
+char *mbrevstrpbrk(const char *s, const char *accept, const char
+ *rev_start)
+{
+ assert(s != NULL && accept != NULL && rev_start != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ bool begin_line = FALSE;
+
+ while (!begin_line) {
+ const char *q = (*rev_start == '\0') ? NULL :
+ mbstrchr(accept, rev_start);
+
+ if (q != NULL)
+ return (char *)rev_start;
+
+ if (rev_start == s)
+ begin_line = TRUE;
+ else
+ rev_start = s + move_mbleft(s, rev_start - s);
+ }
+
+ return NULL;
+ } else
+#endif
+ return revstrpbrk(s, accept, rev_start);
+}
+#endif /* !NANO_TINY */
+
+#if defined(ENABLE_NANORC) && (!defined(NANO_TINY) || !defined(DISABLE_JUSTIFY))
+/* Return TRUE if the string s contains one or more blank characters,
+ * and FALSE otherwise. */
+bool has_blank_chars(const char *s)
+{
+ assert(s != NULL);
+
+ for (; *s != '\0'; s++) {
+ if (isblank(*s))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+/* Return TRUE if the multibyte string s contains one or more blank
+ * multibyte characters, and FALSE otherwise. */
+bool has_blank_mbchars(const char *s)
+{
+ assert(s != NULL);
+
+#ifdef ENABLE_UTF8
+ if (use_utf8) {
+ bool retval = FALSE;
+ char *chr_mb = charalloc(MB_CUR_MAX);
+
+ for (; *s != '\0'; s += move_mbright(s, 0)) {
+ parse_mbchar(s, chr_mb, NULL);
+
+ if (is_blank_mbchar(chr_mb)) {
+ retval = TRUE;
+ break;
+ }
+ }
+
+ free(chr_mb);
+
+ return retval;
+ } else
+#endif
+ return has_blank_chars(s);
+}
+#endif /* ENABLE_NANORC && (!NANO_TINY || !DISABLE_JUSTIFY) */
+
+#ifdef ENABLE_UTF8
+/* Return TRUE if wc is valid Unicode, and FALSE otherwise. */
+bool is_valid_unicode(wchar_t wc)
+{
+ return ((0 <= wc && wc <= 0x10FFFF) && (wc <= 0xD7FF || 0xE000 <=
+ wc) && (wc <= 0xFDCF || 0xFDF0 <= wc) && ((wc & 0xFFFF) <=
+ 0xFFFD));
+}
+#endif
+
+#ifdef ENABLE_NANORC
+/* Check if the string s is a valid multibyte string. Return TRUE if it
+ * is, and FALSE otherwise. */
+bool is_valid_mbstring(const char *s)
+{
+ assert(s != NULL);
+
+ return
+#ifdef ENABLE_UTF8
+ use_utf8 ? (mbstowcs(NULL, s, 0) != (size_t)-1) :
+#endif
+ TRUE;
+}
+#endif /* ENABLE_NANORC */
diff --git a/src/color.c b/src/color.c
new file mode 100644
index 0000000..9d7ecff
--- /dev/null
+++ b/src/color.c
@@ -0,0 +1,360 @@
+/* $Id: color.c 4453 2009-12-02 03:36:22Z astyanax $ */
+/**************************************************************************
+ * color.c *
+ * *
+ * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 *
+ * Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <stdio.h>
+#include <string.h>
+
+#ifdef ENABLE_COLOR
+
+/* For each syntax list entry, go through the list of colors and assign
+ * the color pairs. */
+void set_colorpairs(void)
+{
+ const syntaxtype *this_syntax = syntaxes;
+
+ for (; this_syntax != NULL; this_syntax = this_syntax->next) {
+ colortype *this_color = this_syntax->color;
+ int color_pair = 1;
+
+ for (; this_color != NULL; this_color = this_color->next) {
+ const colortype *beforenow = this_syntax->color;
+
+ for (; beforenow != this_color &&
+ (beforenow->fg != this_color->fg ||
+ beforenow->bg != this_color->bg ||
+ beforenow->bright != this_color->bright);
+ beforenow = beforenow->next)
+ ;
+
+ if (beforenow != this_color)
+ this_color->pairnum = beforenow->pairnum;
+ else {
+ this_color->pairnum = color_pair;
+ color_pair++;
+ }
+ }
+ }
+}
+
+/* Initialize the color information. */
+void color_init(void)
+{
+ assert(openfile != NULL);
+
+ if (has_colors()) {
+ const colortype *tmpcolor;
+#ifdef HAVE_USE_DEFAULT_COLORS
+ bool defok;
+#endif
+
+ start_color();
+
+#ifdef HAVE_USE_DEFAULT_COLORS
+ /* Use the default colors, if available. */
+ defok = (use_default_colors() != ERR);
+#endif
+
+ for (tmpcolor = openfile->colorstrings; tmpcolor != NULL;
+ tmpcolor = tmpcolor->next) {
+ short foreground = tmpcolor->fg, background = tmpcolor->bg;
+ if (foreground == -1) {
+#ifdef HAVE_USE_DEFAULT_COLORS
+ if (!defok)
+#endif
+ foreground = COLOR_WHITE;
+ }
+
+ if (background == -1) {
+#ifdef HAVE_USE_DEFAULT_COLORS
+ if (!defok)
+#endif
+ background = COLOR_BLACK;
+ }
+
+ init_pair(tmpcolor->pairnum, foreground, background);
+
+#ifdef DEBUG
+ fprintf(stderr, "init_pair(): fg = %hd, bg = %hd\n", tmpcolor->fg, tmpcolor->bg);
+#endif
+ }
+ }
+}
+
+/* Update the color information based on the current filename. */
+void color_update(void)
+{
+ syntaxtype *tmpsyntax;
+ syntaxtype *defsyntax = NULL;
+ colortype *tmpcolor, *defcolor = NULL;
+
+ assert(openfile != NULL);
+
+ openfile->syntax = NULL;
+ openfile->colorstrings = NULL;
+
+ /* If we specified a syntax override string, use it. */
+ if (syntaxstr != NULL) {
+ /* If the syntax override is "none", it's the same as not having
+ * a syntax at all, so get out. */
+ if (strcmp(syntaxstr, "none") == 0)
+ return;
+
+ for (tmpsyntax = syntaxes; tmpsyntax != NULL;
+ tmpsyntax = tmpsyntax->next) {
+ if (strcmp(tmpsyntax->desc, syntaxstr) == 0) {
+ openfile->syntax = tmpsyntax;
+ openfile->colorstrings = tmpsyntax->color;
+ }
+
+ if (openfile->colorstrings != NULL)
+ break;
+ }
+ }
+
+ /* If we didn't specify a syntax override string, or if we did and
+ * there was no syntax by that name, get the syntax based on the
+ * file extension, and then look in the header. */
+ if (openfile->colorstrings == NULL) {
+ for (tmpsyntax = syntaxes; tmpsyntax != NULL;
+ tmpsyntax = tmpsyntax->next) {
+ exttype *e;
+
+ /* If this is the default syntax, it has no associated
+ * extensions, which we've checked for elsewhere. Skip over
+ * it here, but keep track of its color regexes. */
+ if (strcmp(tmpsyntax->desc, "default") == 0) {
+ defsyntax = tmpsyntax;
+ defcolor = tmpsyntax->color;
+ continue;
+ }
+
+ for (e = tmpsyntax->extensions; e != NULL; e = e->next) {
+ bool not_compiled = (e->ext == NULL);
+
+ /* e->ext_regex has already been checked for validity
+ * elsewhere. Compile its specified regex if we haven't
+ * already. */
+ if (not_compiled) {
+ e->ext = (regex_t *)nmalloc(sizeof(regex_t));
+ regcomp(e->ext, fixbounds(e->ext_regex), REG_EXTENDED);
+ }
+
+ /* Set colorstrings if we matched the extension
+ * regex. */
+ if (regexec(e->ext, openfile->filename, 0, NULL,
+ 0) == 0) {
+ openfile->syntax = tmpsyntax;
+ openfile->colorstrings = tmpsyntax->color;
+ }
+
+ if (openfile->colorstrings != NULL)
+ break;
+
+ /* Decompile e->ext_regex's specified regex if we aren't
+ * going to use it. */
+ if (not_compiled) {
+ regfree(e->ext);
+ free(e->ext);
+ e->ext = NULL;
+ }
+ }
+ }
+
+ /* If we haven't matched anything yet, try the headers */
+ if (openfile->colorstrings == NULL) {
+#ifdef DEBUG
+ fprintf(stderr, "No match for file extensions, looking at headers...\n");
+#endif
+ for (tmpsyntax = syntaxes; tmpsyntax != NULL;
+ tmpsyntax = tmpsyntax->next) {
+ exttype *e;
+
+ for (e = tmpsyntax->headers; e != NULL; e = e->next) {
+ bool not_compiled = (e->ext == NULL);
+
+ /* e->ext_regex has already been checked for validity
+ * elsewhere. Compile its specified regex if we haven't
+ * already. */
+ if (not_compiled) {
+ e->ext = (regex_t *)nmalloc(sizeof(regex_t));
+ regcomp(e->ext, fixbounds(e->ext_regex), REG_EXTENDED);
+ }
+
+ /* Set colorstrings if we matched the extension
+ * regex. */
+#ifdef DEBUG
+ fprintf(stderr, "Comparing header regex \"%s\" to fileage \"%s\"...\n", e->ext_regex, openfile->fileage->data);
+#endif
+ if (regexec(e->ext, openfile->fileage->data, 0, NULL, 0) == 0) {
+ openfile->syntax = tmpsyntax;
+ openfile->colorstrings = tmpsyntax->color;
+ }
+
+ if (openfile->colorstrings != NULL)
+ break;
+
+ /* Decompile e->ext_regex's specified regex if we aren't
+ * going to use it. */
+ if (not_compiled) {
+ regfree(e->ext);
+ free(e->ext);
+ e->ext = NULL;
+ }
+ }
+ }
+ }
+ }
+
+
+ /* If we didn't get a syntax based on the file extension, and we
+ * have a default syntax, use it. */
+ if (openfile->colorstrings == NULL && defcolor != NULL) {
+ openfile->syntax = defsyntax;
+ openfile->colorstrings = defcolor;
+ }
+
+ for (tmpcolor = openfile->colorstrings; tmpcolor != NULL;
+ tmpcolor = tmpcolor->next) {
+ /* tmpcolor->start_regex and tmpcolor->end_regex have already
+ * been checked for validity elsewhere. Compile their specified
+ * regexes if we haven't already. */
+ if (tmpcolor->start == NULL) {
+ tmpcolor->start = (regex_t *)nmalloc(sizeof(regex_t));
+ regcomp(tmpcolor->start, fixbounds(tmpcolor->start_regex),
+ REG_EXTENDED | (tmpcolor->icase ? REG_ICASE : 0));
+ }
+
+ if (tmpcolor->end_regex != NULL && tmpcolor->end == NULL) {
+ tmpcolor->end = (regex_t *)nmalloc(sizeof(regex_t));
+ regcomp(tmpcolor->end, fixbounds(tmpcolor->end_regex),
+ REG_EXTENDED | (tmpcolor->icase ? REG_ICASE : 0));
+ }
+ }
+}
+
+/* Reset the multicolor info cache for records for any lines which need
+ to be recalculated */
+void reset_multis_after(filestruct *fileptr, int mindex)
+{
+ filestruct *oof;
+ for (oof = fileptr->next; oof != NULL; oof = oof->next) {
+ alloc_multidata_if_needed(oof);
+ if (oof->multidata == NULL)
+ continue;
+ if (oof->multidata[mindex] != CNONE)
+ oof->multidata[mindex] = -1;
+ else
+ break;
+ }
+ for (; oof != NULL; oof = oof->next) {
+ alloc_multidata_if_needed(oof);
+ if (oof->multidata == NULL)
+ continue;
+ if (oof->multidata[mindex] == CNONE)
+ oof->multidata[mindex] = -1;
+ else
+ break;
+ }
+ edit_refresh_needed = TRUE;
+}
+
+void reset_multis_before(filestruct *fileptr, int mindex)
+{
+ filestruct *oof;
+ for (oof = fileptr->prev; oof != NULL; oof = oof->prev) {
+ alloc_multidata_if_needed(oof);
+ if (oof->multidata == NULL)
+ continue;
+ if (oof->multidata[mindex] != CNONE)
+ oof->multidata[mindex] = -1;
+ else
+ break;
+ }
+ for (; oof != NULL; oof = oof->prev) {
+ alloc_multidata_if_needed(oof);
+ if (oof->multidata == NULL)
+ continue;
+ if (oof->multidata[mindex] == CNONE)
+ oof->multidata[mindex] = -1;
+ else
+ break;
+ }
+
+ edit_refresh_needed = TRUE;
+}
+
+/* Reset one multiline regex info */
+void reset_multis_for_id(filestruct *fileptr, int num)
+{
+ reset_multis_before(fileptr, num);
+ reset_multis_after(fileptr, num);
+ fileptr->multidata[num] = -1;
+}
+
+/* Reset multi line strings around a filestruct ptr, trying to be smart about stopping
+ force = reset everything regardless, useful when we don't know how much screen state
+ has changed */
+void reset_multis(filestruct *fileptr, bool force)
+{
+ int nobegin, noend;
+ regmatch_t startmatch, endmatch;
+ const colortype *tmpcolor = openfile->colorstrings;
+
+ if (!openfile->syntax)
+ return;
+
+ for (; tmpcolor != NULL; tmpcolor = tmpcolor->next) {
+
+ /* If it's not a multi-line regex, amscray */
+ if (tmpcolor->end == NULL)
+ continue;
+
+ alloc_multidata_if_needed(fileptr);
+ if (force == TRUE) {
+ reset_multis_for_id(fileptr, tmpcolor->id);
+ continue;
+ }
+
+ /* Figure out where the first begin and end are to determine if
+ things changed drastically for the precalculated multi values */
+ nobegin = regexec(tmpcolor->start, fileptr->data, 1, &startmatch, 0);
+ noend = regexec(tmpcolor->end, fileptr->data, 1, &endmatch, 0);
+ if (fileptr->multidata[tmpcolor->id] == CWHOLELINE) {
+ if (nobegin && noend)
+ continue;
+ } else if (fileptr->multidata[tmpcolor->id] == CNONE) {
+ if (nobegin && noend)
+ continue;
+ } else if (fileptr->multidata[tmpcolor->id] & CBEGINBEFORE && !noend
+ && (nobegin || endmatch.rm_eo > startmatch.rm_eo)) {
+ reset_multis_after(fileptr, tmpcolor->id);
+ continue;
+ }
+
+ /* If we got here assume the worst */
+ reset_multis_for_id(fileptr, tmpcolor->id);
+ }
+}
+#endif /* ENABLE_COLOR */
diff --git a/src/cut.c b/src/cut.c
new file mode 100644
index 0000000..8c21c8e
--- /dev/null
+++ b/src/cut.c
@@ -0,0 +1,291 @@
+/* $Id: cut.c 4453 2009-12-02 03:36:22Z astyanax $ */
+/**************************************************************************
+ * cut.c *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <string.h>
+#include <stdio.h>
+
+static bool keep_cutbuffer = FALSE;
+ /* Should we keep the contents of the cutbuffer? */
+ /* Pointer to the end of the cutbuffer. */
+
+/* Indicate that we should no longer keep the contents of the
+ * cutbuffer. */
+void cutbuffer_reset(void)
+{
+ keep_cutbuffer = FALSE;
+}
+
+/* If we aren't on the last line of the file, move all the text of the
+ * current line, plus the newline at the end, into the cutbuffer. If we
+ * are, move all of the text of the current line into the cutbuffer. In
+ * both cases, set the current place we want to the beginning of the
+ * current line. */
+void cut_line(void)
+{
+ if (openfile->current != openfile->filebot)
+ move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, 0,
+ openfile->current->next, 0);
+ else
+ move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, 0,
+ openfile->current, strlen(openfile->current->data));
+ openfile->placewewant = 0;
+}
+
+#ifndef NANO_TINY
+/* Move all currently marked text into the cutbuffer, and set the
+ * current place we want to where the text used to start. */
+void cut_marked(void)
+{
+ filestruct *top, *bot;
+ size_t top_x, bot_x;
+
+ mark_order((const filestruct **)&top, &top_x,
+ (const filestruct **)&bot, &bot_x, NULL);
+
+ move_to_filestruct(&cutbuffer, &cutbottom, top, top_x, bot, bot_x);
+ openfile->placewewant = xplustabs();
+}
+
+/* If we aren't at the end of the current line, move all the text from
+ * the current cursor position to the end of the current line, not
+ * counting the newline at the end, into the cutbuffer. If we are, and
+ * we're not on the last line of the file, move the newline at the end
+ * into the cutbuffer, and set the current place we want to where the
+ * newline used to be. */
+void cut_to_eol(void)
+{
+ size_t data_len = strlen(openfile->current->data);
+
+ assert(openfile->current_x <= data_len);
+
+ if (openfile->current_x < data_len)
+ /* If we're not at the end of the line, move all the text from
+ * the current position up to it, not counting the newline at
+ * the end, into the cutbuffer. */
+ move_to_filestruct(&cutbuffer, &cutbottom, openfile->current,
+ openfile->current_x, openfile->current, data_len);
+ else if (openfile->current != openfile->filebot) {
+ /* If we're at the end of the line, and it isn't the last line
+ * of the file, move all the text from the current position up
+ * to the beginning of the next line, i.e. the newline at the
+ * end, into the cutbuffer. */
+ move_to_filestruct(&cutbuffer, &cutbottom, openfile->current,
+ openfile->current_x, openfile->current->next, 0);
+ openfile->placewewant = xplustabs();
+ }
+}
+
+/* Move all the text from the current cursor position to the end of the
+ * file into the cutbuffer. */
+void cut_to_eof(void)
+{
+ move_to_filestruct(&cutbuffer, &cutbottom, openfile->current,
+ openfile->current_x, openfile->filebot,
+ strlen(openfile->filebot->data));
+}
+#endif /* !NANO_TINY */
+
+/* Move text from the current filestruct into the cutbuffer. If
+ * copy_text is TRUE, copy the text back into the filestruct afterward.
+ * If cut_till_end is TRUE, move all text from the current cursor
+ * position to the end of the file into the cutbuffer. */
+void do_cut_text(
+#ifndef NANO_TINY
+ bool copy_text, bool cut_till_end, bool undoing
+#else
+ void
+#endif
+ )
+{
+#ifndef NANO_TINY
+ filestruct *cb_save = NULL;
+ /* The current end of the cutbuffer, before we add text to
+ * it. */
+ size_t cb_save_len = 0;
+ /* The length of the string at the current end of the cutbuffer,
+ * before we add text to it. */
+ bool old_no_newlines = ISSET(NO_NEWLINES);
+#endif
+
+ assert(openfile->current != NULL && openfile->current->data != NULL);
+
+ /* If keep_cutbuffer is FALSE and the cutbuffer isn't empty, blow
+ * away the text in the cutbuffer. */
+ if (!keep_cutbuffer && cutbuffer != NULL) {
+ free_filestruct(cutbuffer);
+ cutbuffer = NULL;
+#ifdef DEBUG
+ fprintf(stderr, "Blew away cutbuffer =)\n");
+#endif
+ }
+
+#ifndef NANO_TINY
+ if (copy_text) {
+ if (cutbuffer != NULL) {
+ /* If the cutbuffer isn't empty, save where it currently
+ * ends. This is where we'll add the new text. */
+ cb_save = cutbottom;
+ cb_save_len = strlen(cutbottom->data);
+ }
+
+ /* Set NO_NEWLINES to TRUE, so that we don't disturb the last
+ * line of the file when moving text to the cutbuffer. */
+ SET(NO_NEWLINES);
+ }
+#endif
+
+ /* Set keep_cutbuffer to TRUE, so that the text we're going to move
+ * into the cutbuffer will be added to the text already in the
+ * cutbuffer instead of replacing it. */
+ keep_cutbuffer = TRUE;
+
+#ifndef NANO_TINY
+
+ if (cut_till_end) {
+ /* If cut_till_end is TRUE, move all text up to the end of the
+ * file into the cutbuffer. */
+ cut_to_eof();
+ } else if (openfile->mark_set) {
+ /* If the mark is on, move the marked text to the cutbuffer, and
+ * turn the mark off. */
+ cut_marked();
+ openfile->mark_set = FALSE;
+ } else if (ISSET(CUT_TO_END))
+ /* If the CUT_TO_END flag is set, move all text up to the end of
+ * the line into the cutbuffer. */
+ cut_to_eol();
+ else
+#endif
+ /* Move the entire line into the cutbuffer. */
+ cut_line();
+
+#ifndef NANO_TINY
+ if (copy_text) {
+ /* Copy the text in the cutbuffer, starting at its saved end if
+ * there is one, back into the filestruct. This effectively
+ * uncuts the text we just cut without marking the file as
+ * modified. */
+ if (cutbuffer != NULL) {
+ if (cb_save != NULL) {
+ cb_save->data += cb_save_len;
+ copy_from_filestruct(cb_save, cutbottom);
+ cb_save->data -= cb_save_len;
+ } else
+ copy_from_filestruct(cutbuffer, cutbottom);
+
+ /* Set the current place we want to where the text from the
+ * cutbuffer ends. */
+ openfile->placewewant = xplustabs();
+ }
+
+ /* Set NO_NEWLINES back to what it was before, since we're done
+ * disturbing the text. */
+ if (!old_no_newlines)
+ UNSET(NO_NEWLINES);
+ } else if (!undoing)
+ update_undo(CUT);
+#endif
+ /* Leave the text in the cutbuffer, and mark the file as
+ * modified. */
+ set_modified();
+
+ /* Update the screen. */
+ edit_refresh_needed = TRUE;
+
+#ifdef ENABLE_COLOR
+ reset_multis(openfile->current, FALSE);
+#endif
+
+#ifdef DEBUG
+ dump_filestruct(cutbuffer);
+#endif
+}
+
+/* Move text from the current filestruct into the cutbuffer. */
+void do_cut_text_void(void)
+{
+#ifndef NANO_TINY
+ add_undo(CUT);
+#endif
+ do_cut_text(
+#ifndef NANO_TINY
+ FALSE, FALSE, FALSE
+#endif
+ );
+}
+
+#ifndef NANO_TINY
+/* Move text from the current filestruct into the cutbuffer, and copy it
+ * back into the filestruct afterward. */
+void do_copy_text(void)
+{
+ do_cut_text(TRUE, FALSE, FALSE);
+}
+
+/* Cut from the current cursor position to the end of the file. */
+void do_cut_till_end(void)
+{
+#ifndef NANO_TINY
+ add_undo(CUT);
+#endif
+ do_cut_text(FALSE, TRUE, FALSE);
+}
+#endif /* !NANO_TINY */
+
+/* Copy text from the cutbuffer into the current filestruct. */
+void do_uncut_text(void)
+{
+ assert(openfile->current != NULL && openfile->current->data != NULL);
+
+ /* If the cutbuffer is empty, get out. */
+ if (cutbuffer == NULL)
+ return;
+
+#ifndef NANO_TINY
+ update_undo(UNCUT);
+#endif
+
+ /* Add a copy of the text in the cutbuffer to the current filestruct
+ * at the current cursor position. */
+ copy_from_filestruct(cutbuffer, cutbottom);
+
+ /* Set the current place we want to where the text from the
+ * cutbuffer ends. */
+ openfile->placewewant = xplustabs();
+
+ /* Mark the file as modified. */
+ set_modified();
+
+ /* Update the screen. */
+ edit_refresh_needed = TRUE;
+
+#ifdef ENABLE_COLOR
+ reset_multis(openfile->current, FALSE);
+#endif
+
+#ifdef DEBUG
+ dump_filestruct_reverse();
+#endif
+}
diff --git a/src/files.c b/src/files.c
new file mode 100644
index 0000000..c5b9d6a
--- /dev/null
+++ b/src/files.c
@@ -0,0 +1,2782 @@
+/* $Id: files.c 4520 2010-11-12 06:23:14Z astyanax $ */
+/**************************************************************************
+ * files.c *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <utime.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <ctype.h>
+#include <pwd.h>
+
+/* Add an entry to the openfile openfilestruct. This should only be
+ * called from open_buffer(). */
+void make_new_buffer(void)
+{
+ /* If there are no entries in openfile, make the first one and
+ * move to it. */
+ if (openfile == NULL) {
+ openfile = make_new_opennode();
+ splice_opennode(openfile, openfile, openfile);
+ /* Otherwise, make a new entry for openfile, splice it in after
+ * the current entry, and move to it. */
+ } else {
+ splice_opennode(openfile, make_new_opennode(), openfile->next);
+ openfile = openfile->next;
+ }
+
+ /* Initialize the new buffer. */
+ initialize_buffer();
+}
+
+/* Initialize the current entry of the openfile openfilestruct. */
+void initialize_buffer(void)
+{
+ assert(openfile != NULL);
+
+ openfile->filename = mallocstrcpy(NULL, "");
+
+ initialize_buffer_text();
+
+ openfile->current_x = 0;
+ openfile->placewewant = 0;
+ openfile->current_y = 0;
+
+ openfile->modified = FALSE;
+#ifndef NANO_TINY
+ openfile->mark_set = FALSE;
+
+ openfile->mark_begin = NULL;
+ openfile->mark_begin_x = 0;
+
+ openfile->fmt = NIX_FILE;
+
+ openfile->current_stat = NULL;
+ openfile->undotop = NULL;
+ openfile->current_undo = NULL;
+#endif
+#ifdef ENABLE_COLOR
+ openfile->colorstrings = NULL;
+#endif
+}
+
+/* Initialize the text of the current entry of the openfile
+ * openfilestruct. */
+void initialize_buffer_text(void)
+{
+ assert(openfile != NULL);
+
+ openfile->fileage = make_new_node(NULL);
+ openfile->fileage->data = mallocstrcpy(NULL, "");
+
+ openfile->filebot = openfile->fileage;
+ openfile->edittop = openfile->fileage;
+ openfile->current = openfile->fileage;
+
+#ifdef ENABLE_COLOR
+ openfile->fileage->multidata = NULL;
+#endif
+
+ openfile->totsize = 0;
+}
+
+/* If it's not "", filename is a file to open. We make a new buffer, if
+ * necessary, and then open and read the file, if applicable. */
+void open_buffer(const char *filename, bool undoable)
+{
+ bool new_buffer = (openfile == NULL
+#ifdef ENABLE_MULTIBUFFER
+ || ISSET(MULTIBUFFER)
+#endif
+ );
+ /* Whether we load into this buffer or a new one. */
+ FILE *f;
+ int rc;
+ /* rc == -2 means that we have a new file. -1 means that the
+ * open() failed. 0 means that the open() succeeded. */
+
+ assert(filename != NULL);
+
+#ifndef DISABLE_OPERATINGDIR
+ if (check_operating_dir(filename, FALSE)) {
+ statusbar(_("Can't insert file from outside of %s"),
+ operating_dir);
+ return;
+ }
+#endif
+
+ /* If the filename isn't blank, open the file. Otherwise, treat it
+ * as a new file. */
+ rc = (filename[0] != '\0') ? open_file(filename, new_buffer, &f) :
+ -2;
+
+ /* If we're loading into a new buffer, add a new entry to
+ * openfile. */
+ if (new_buffer)
+ make_new_buffer();
+
+ /* If we have a file, and we're loading into a new buffer, update
+ * the filename. */
+ if (rc != -1 && new_buffer)
+ openfile->filename = mallocstrcpy(openfile->filename, filename);
+
+ /* If we have a non-new file, read it in. Then, if the buffer has
+ * no stat, update the stat, if applicable. */
+ if (rc > 0) {
+ read_file(f, rc, filename, undoable, new_buffer);
+#ifndef NANO_TINY
+ if (openfile->current_stat == NULL) {
+ openfile->current_stat =
+ (struct stat *)nmalloc(sizeof(struct stat));
+ stat(filename, openfile->current_stat);
+ }
+#endif
+ }
+
+ /* If we have a file, and we're loading into a new buffer, move back
+ * to the beginning of the first line of the buffer. */
+ if (rc != -1 && new_buffer) {
+ openfile->current = openfile->fileage;
+ openfile->current_x = 0;
+ openfile->placewewant = 0;
+ }
+
+#ifdef ENABLE_COLOR
+ /* If we're loading into a new buffer, update the colors to account
+ * for it, if applicable. */
+ if (new_buffer)
+ color_update();
+#endif
+}
+
+#ifndef DISABLE_SPELLER
+/* If it's not "", filename is a file to open. We blow away the text of
+ * the current buffer, and then open and read the file, if
+ * applicable. Note that we skip the operating directory test when
+ * doing this. */
+void replace_buffer(const char *filename)
+{
+ FILE *f;
+ int rc;
+ /* rc == -2 means that we have a new file. -1 means that the
+ * open() failed. 0 means that the open() succeeded. */
+
+ assert(filename != NULL);
+
+ /* If the filename isn't blank, open the file. Otherwise, treat it
+ * as a new file. */
+ rc = (filename[0] != '\0') ? open_file(filename, TRUE, &f) : -2;
+
+ /* Reinitialize the text of the current buffer. */
+ free_filestruct(openfile->fileage);
+ initialize_buffer_text();
+
+ /* If we have a non-new file, read it in. */
+ if (rc > 0)
+ read_file(f, rc, filename, FALSE, TRUE);
+
+ /* Move back to the beginning of the first line of the buffer. */
+ openfile->current = openfile->fileage;
+ openfile->current_x = 0;
+ openfile->placewewant = 0;
+}
+#endif /* !DISABLE_SPELLER */
+
+/* Update the screen to account for the current buffer. */
+void display_buffer(void)
+{
+ /* Update the titlebar, since the filename may have changed. */
+ titlebar(NULL);
+
+#ifdef ENABLE_COLOR
+ /* Make sure we're using the buffer's associated colors, if
+ * applicable. */
+ color_init();
+#endif
+
+ /* Update the edit window. */
+ edit_refresh();
+}
+
+#ifdef ENABLE_MULTIBUFFER
+/* Switch to the next file buffer if next_buf is TRUE. Otherwise,
+ * switch to the previous file buffer. */
+void switch_to_prevnext_buffer(bool next_buf)
+{
+ assert(openfile != NULL);
+
+ /* If only one file buffer is open, indicate it on the statusbar and
+ * get out. */
+ if (openfile == openfile->next) {
+ statusbar(_("No more open file buffers"));
+ return;
+ }
+
+ /* Switch to the next or previous file buffer, depending on the
+ * value of next_buf. */
+ openfile = next_buf ? openfile->next : openfile->prev;
+
+#ifdef DEBUG
+ fprintf(stderr, "filename is %s\n", openfile->filename);
+#endif
+
+ /* Update the screen to account for the current buffer. */
+ display_buffer();
+
+ /* Indicate the switch on the statusbar. */
+ statusbar(_("Switched to %s"),
+ ((openfile->filename[0] == '\0') ? _("New Buffer") :
+ openfile->filename));
+
+#ifdef DEBUG
+ dump_filestruct(openfile->current);
+#endif
+}
+
+/* Switch to the previous entry in the openfile filebuffer. */
+void switch_to_prev_buffer_void(void)
+{
+ switch_to_prevnext_buffer(FALSE);
+}
+
+/* Switch to the next entry in the openfile filebuffer. */
+void switch_to_next_buffer_void(void)
+{
+ switch_to_prevnext_buffer(TRUE);
+}
+
+/* Delete an entry from the openfile filebuffer, and switch to the one
+ * after it. Return TRUE on success, or FALSE if there are no more open
+ * file buffers. */
+bool close_buffer(void)
+{
+ assert(openfile != NULL);
+
+ /* If only one file buffer is open, get out. */
+ if (openfile == openfile->next)
+ return FALSE;
+
+ /* Switch to the next file buffer. */
+ switch_to_next_buffer_void();
+
+ /* Close the file buffer we had open before. */
+ unlink_opennode(openfile->prev);
+
+ display_main_list();
+
+ return TRUE;
+}
+#endif /* ENABLE_MULTIBUFFER */
+
+/* A bit of a copy and paste from open_file(), is_file_writable()
+ * just checks whether the file is appendable as a quick
+ * permissions check, and we tend to err on the side of permissiveness
+ * (reporting TRUE when it might be wrong) to not fluster users
+ * editing on odd filesystems by printing incorrect warnings.
+ */
+int is_file_writable(const char *filename)
+{
+ struct stat fileinfo, fileinfo2;
+ int fd;
+ FILE *f;
+ char *full_filename;
+ bool ans = TRUE;
+
+
+ if (ISSET(VIEW_MODE))
+ return TRUE;
+
+ assert(filename != NULL);
+
+ /* Get the specified file's full path. */
+ full_filename = get_full_path(filename);
+
+ /* Okay, if we can't stat the path due to a component's
+ permissions, just try the relative one */
+ if (full_filename == NULL
+ || (stat(full_filename, &fileinfo) == -1 && stat(filename, &fileinfo2) != -1))
+ full_filename = mallocstrcpy(NULL, filename);
+
+ if ((fd = open(full_filename, O_WRONLY | O_CREAT | O_APPEND, S_IRUSR |
+ S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)) == -1
+ || (f = fdopen(fd, "a")) == NULL)
+ ans = FALSE;
+ else
+ fclose(f);
+ close(fd);
+
+ free(full_filename);
+ return ans;
+}
+
+/* We make a new line of text from buf. buf is length buf_len. If
+ * first_line_ins is TRUE, then we put the new line at the top of the
+ * file. Otherwise, we assume prevnode is the last line of the file,
+ * and put our line after prevnode. */
+filestruct *read_line(char *buf, filestruct *prevnode, bool
+ *first_line_ins, size_t buf_len)
+{
+ filestruct *fileptr = (filestruct *)nmalloc(sizeof(filestruct));
+
+ /* Convert nulls to newlines. buf_len is the string's real
+ * length. */
+ unsunder(buf, buf_len);
+
+ assert(openfile->fileage != NULL && strlen(buf) == buf_len);
+
+ fileptr->data = mallocstrcpy(NULL, buf);
+
+#ifndef NANO_TINY
+ /* If it's a DOS file ("\r\n"), and file conversion isn't disabled,
+ * strip the '\r' part from fileptr->data. */
+ if (!ISSET(NO_CONVERT) && buf_len > 0 && buf[buf_len - 1] == '\r')
+ fileptr->data[buf_len - 1] = '\0';
+#endif
+
+#ifdef ENABLE_COLOR
+ fileptr->multidata = NULL;
+#endif
+
+ if (*first_line_ins) {
+ /* Special case: We're inserting with the cursor on the first
+ * line. */
+ fileptr->prev = NULL;
+ fileptr->next = openfile->fileage;
+ fileptr->lineno = 1;
+ if (*first_line_ins) {
+ *first_line_ins = FALSE;
+ /* If we're inserting into the first line of the file, then
+ * we want to make sure that our edit buffer stays on the
+ * first line and that fileage stays up to date. */
+ openfile->edittop = fileptr;
+ } else
+ openfile->filebot = fileptr;
+ openfile->fileage = fileptr;
+ } else {
+ assert(prevnode != NULL);
+
+ fileptr->prev = prevnode;
+ fileptr->next = NULL;
+ fileptr->lineno = prevnode->lineno + 1;
+ prevnode->next = fileptr;
+ }
+
+ return fileptr;
+}
+
+/* Read an open file into the current buffer. f should be set to the
+ * open file, and filename should be set to the name of the file.
+ * undoable means do we want to create undo records to try and undo this.
+ * Will also attempt to check file writability if fd > 0 and checkwritable == TRUE
+ */
+void read_file(FILE *f, int fd, const char *filename, bool undoable, bool checkwritable)
+{
+ size_t num_lines = 0;
+ /* The number of lines in the file. */
+ size_t len = 0;
+ /* The length of the current line of the file. */
+ size_t i = 0;
+ /* The position in the current line of the file. */
+ size_t bufx = MAX_BUF_SIZE;
+ /* The size of each chunk of the file that we read. */
+ char input = '\0';
+ /* The current input character. */
+ char *buf;
+ /* The buffer where we store chunks of the file. */
+ filestruct *fileptr = openfile->current;
+ /* The current line of the file. */
+ bool first_line_ins = FALSE;
+ /* Whether we're inserting with the cursor on the first line. */
+ int input_int;
+ /* The current value we read from the file, whether an input
+ * character or EOF. */
+ bool writable = TRUE;
+ /* Is the file writable (if we care) */
+#ifndef NANO_TINY
+ int format = 0;
+ /* 0 = *nix, 1 = DOS, 2 = Mac, 3 = both DOS and Mac. */
+#endif
+
+ assert(openfile->fileage != NULL && openfile->current != NULL);
+
+ buf = charalloc(bufx);
+ buf[0] = '\0';
+
+#ifndef NANO_TINY
+ if (undoable)
+ add_undo(INSERT);
+#endif
+
+ if (openfile->current == openfile->fileage)
+ first_line_ins = TRUE;
+ else
+ fileptr = openfile->current->prev;
+
+ /* Read the entire file into the filestruct. */
+ while ((input_int = getc(f)) != EOF) {
+ input = (char)input_int;
+
+ /* If it's a *nix file ("\n") or a DOS file ("\r\n"), and file
+ * conversion isn't disabled, handle it! */
+ if (input == '\n') {
+#ifndef NANO_TINY
+ /* If it's a DOS file or a DOS/Mac file ('\r' before '\n' on
+ * the first line if we think it's a *nix file, or on any
+ * line otherwise), and file conversion isn't disabled,
+ * handle it! */
+ if (!ISSET(NO_CONVERT) && (num_lines == 0 || format != 0) &&
+ i > 0 && buf[i - 1] == '\r') {
+ if (format == 0 || format == 2)
+ format++;
+ }
+#endif
+
+ /* Read in the line properly. */
+ fileptr = read_line(buf, fileptr, &first_line_ins, len);
+
+ /* Reset the line length in preparation for the next
+ * line. */
+ len = 0;
+
+ num_lines++;
+ buf[0] = '\0';
+ i = 0;
+#ifndef NANO_TINY
+ /* If it's a Mac file ('\r' without '\n' on the first line if we
+ * think it's a *nix file, or on any line otherwise), and file
+ * conversion isn't disabled, handle it! */
+ } else if (!ISSET(NO_CONVERT) && (num_lines == 0 ||
+ format != 0) && i > 0 && buf[i - 1] == '\r') {
+ /* If we currently think the file is a *nix file, set format
+ * to Mac. If we currently think the file is a DOS file,
+ * set format to both DOS and Mac. */
+ if (format == 0 || format == 1)
+ format += 2;
+
+ /* Read in the line properly. */
+ fileptr = read_line(buf, fileptr, &first_line_ins, len);
+
+ /* Reset the line length in preparation for the next line.
+ * Since we've already read in the next character, reset it
+ * to 1 instead of 0. */
+ len = 1;
+
+ num_lines++;
+ buf[0] = input;
+ buf[1] = '\0';
+ i = 1;
+#endif
+ } else {
+ /* Calculate the total length of the line. It might have
+ * nulls in it, so we can't just use strlen() here. */
+ len++;
+
+ /* Now we allocate a bigger buffer MAX_BUF_SIZE characters
+ * at a time. If we allocate a lot of space for one line,
+ * we may indeed have to use a buffer this big later on, so
+ * we don't decrease it at all. We do free it at the end,
+ * though. */
+ if (i >= bufx - 1) {
+ bufx += MAX_BUF_SIZE;
+ buf = charealloc(buf, bufx);
+ }
+
+ buf[i] = input;
+ buf[i + 1] = '\0';
+ i++;
+ }
+ }
+
+ /* Perhaps this could use some better handling. */
+ if (ferror(f))
+ nperror(filename);
+ fclose(f);
+ if (fd > 0 && checkwritable) {
+ close(fd);
+ writable = is_file_writable(filename);
+ }
+
+#ifndef NANO_TINY
+ /* If file conversion isn't disabled and the last character in this
+ * file is '\r', read it in properly as a Mac format line. */
+ if (len == 0 && !ISSET(NO_CONVERT) && input == '\r') {
+ len = 1;
+
+ buf[0] = input;
+ buf[1] = '\0';
+ }
+#endif
+
+ /* Did we not get a newline and still have stuff to do? */
+ if (len > 0) {
+#ifndef NANO_TINY
+ /* If file conversion isn't disabled and the last character in
+ * this file is '\r', set format to Mac if we currently think
+ * the file is a *nix file, or to both DOS and Mac if we
+ * currently think the file is a DOS file. */
+ if (!ISSET(NO_CONVERT) && buf[len - 1] == '\r' &&
+ (format == 0 || format == 1))
+ format += 2;
+#endif
+
+ /* Read in the last line properly. */
+ fileptr = read_line(buf, fileptr, &first_line_ins, len);
+ num_lines++;
+ }
+
+ free(buf);
+
+ /* If we didn't get a file and we don't already have one, open a
+ * blank buffer. */
+ if (fileptr == NULL)
+ open_buffer("", FALSE);
+
+ /* Attach the file we got to the filestruct. If we got a file of
+ * zero bytes, don't do anything. */
+ if (num_lines > 0) {
+ /* If the file we got doesn't end in a newline, tack its last
+ * line onto the beginning of the line at current. */
+ if (len > 0) {
+ size_t current_len = strlen(openfile->current->data);
+
+ /* Adjust the current x-coordinate to compensate for the
+ * change in the current line. */
+ if (num_lines == 1)
+ openfile->current_x += len;
+ else
+ openfile->current_x = len;
+
+ /* Tack the text at fileptr onto the beginning of the text
+ * at current. */
+ openfile->current->data =
+ charealloc(openfile->current->data, len +
+ current_len + 1);
+ charmove(openfile->current->data + len,
+ openfile->current->data, current_len + 1);
+ strncpy(openfile->current->data, fileptr->data, len);
+
+ /* Don't destroy fileage, edittop, or filebot! */
+ if (fileptr == openfile->fileage)
+ openfile->fileage = openfile->current;
+ if (fileptr == openfile->edittop)
+ openfile->edittop = openfile->current;
+ if (fileptr == openfile->filebot)
+ openfile->filebot = openfile->current;
+
+ /* Move fileptr back one line and blow away the old fileptr,
+ * since its text has been saved. */
+ fileptr = fileptr->prev;
+ if (fileptr != NULL) {
+ if (fileptr->next != NULL)
+ free(fileptr->next);
+ }
+ }
+
+ /* Attach the line at current after the line at fileptr. */
+ if (fileptr != NULL) {
+ fileptr->next = openfile->current;
+ openfile->current->prev = fileptr;
+ }
+
+ /* Renumber starting with the last line of the file we
+ * inserted. */
+ renumber(openfile->current);
+ }
+
+ openfile->totsize += get_totsize(openfile->fileage,
+ openfile->filebot);
+
+ /* If the NO_NEWLINES flag isn't set, and text has been added to
+ * the magicline (i.e. a file that doesn't end in a newline has been
+ * inserted at the end of the current buffer), add a new magicline,
+ * and move the current line down to it. */
+ if (!ISSET(NO_NEWLINES) && openfile->filebot->data[0] != '\0') {
+ new_magicline();
+ openfile->current = openfile->filebot;
+ openfile->current_x = 0;
+ }
+
+ /* Set the current place we want to the end of the last line of the
+ * file we inserted. */
+ openfile->placewewant = xplustabs();
+
+#ifndef NANO_TINY
+ if (undoable)
+ update_undo(INSERT);
+
+ if (format == 3) {
+ if (writable)
+ statusbar(
+ P_("Read %lu line (Converted from DOS and Mac format)",
+ "Read %lu lines (Converted from DOS and Mac format)",
+ (unsigned long)num_lines), (unsigned long)num_lines);
+ else
+ statusbar(
+ P_("Read %lu line (Converted from DOS and Mac format - Warning: No write permission)",
+ "Read %lu lines (Converted from DOS and Mac format - Warning: No write permission)",
+ (unsigned long)num_lines), (unsigned long)num_lines);
+ } else if (format == 2) {
+ openfile->fmt = MAC_FILE;
+ if (writable)
+ statusbar(P_("Read %lu line (Converted from Mac format)",
+ "Read %lu lines (Converted from Mac format)",
+ (unsigned long)num_lines), (unsigned long)num_lines);
+ else
+ statusbar(P_("Read %lu line (Converted from Mac format - Warning: No write permission)",
+ "Read %lu lines (Converted from Mac format - Warning: No write permission)",
+ (unsigned long)num_lines), (unsigned long)num_lines);
+ } else if (format == 1) {
+ openfile->fmt = DOS_FILE;
+ if (writable)
+ statusbar(P_("Read %lu line (Converted from DOS format)",
+ "Read %lu lines (Converted from DOS format)",
+ (unsigned long)num_lines), (unsigned long)num_lines);
+ else
+ statusbar(P_("Read %lu line (Converted from DOS format - Warning: No write permission)",
+ "Read %lu lines (Converted from DOS format - Warning: No write permission)",
+ (unsigned long)num_lines), (unsigned long)num_lines);
+ } else
+#endif
+ if (writable)
+ statusbar(P_("Read %lu line", "Read %lu lines",
+ (unsigned long)num_lines), (unsigned long)num_lines);
+ else
+ statusbar(P_("Read %lu line ( Warning: No write permission)",
+ "Read %lu lines (Warning: No write permission)",
+ (unsigned long)num_lines), (unsigned long)num_lines);
+}
+
+/* Open the file (and decide if it exists). If newfie is TRUE, display
+ * "New File" if the file is missing. Otherwise, say "[filename] not
+ * found".
+ *
+ * Return -2 if we say "New File", -1 if the file isn't opened, and the
+ * fd opened otherwise. The file might still have an error while reading
+ * with a 0 return value. *f is set to the opened file. */
+int open_file(const char *filename, bool newfie, FILE **f)
+{
+ struct stat fileinfo, fileinfo2;
+ int fd;
+ char *full_filename;
+
+ assert(filename != NULL && f != NULL);
+
+ /* Get the specified file's full path. */
+ full_filename = get_full_path(filename);
+
+ /* Okay, if we can't stat the path due to a component's
+ permissions, just try the relative one */
+ if (full_filename == NULL
+ || (stat(full_filename, &fileinfo) == -1 && stat(filename, &fileinfo2) != -1))
+ full_filename = mallocstrcpy(NULL, filename);
+
+ if (stat(full_filename, &fileinfo) == -1) {
+ /* Well, maybe we can open the file even if the OS
+ says its not there */
+ if ((fd = open(filename, O_RDONLY)) != -1) {
+ statusbar(_("Reading File"));
+ free(full_filename);
+ return 0;
+ }
+
+ if (newfie) {
+ statusbar(_("New File"));
+ return -2;
+ }
+ statusbar(_("\"%s\" not found"), filename);
+ beep();
+ return -1;
+ } else if (S_ISDIR(fileinfo.st_mode) || S_ISCHR(fileinfo.st_mode) ||
+ S_ISBLK(fileinfo.st_mode)) {
+ /* Don't open directories, character files, or block files.
+ * Sorry, /dev/sndstat! */
+ statusbar(S_ISDIR(fileinfo.st_mode) ?
+ _("\"%s\" is a directory") :
+ _("\"%s\" is a device file"), filename);
+ beep();
+ return -1;
+ } else if ((fd = open(full_filename, O_RDONLY)) == -1) {
+ statusbar(_("Error reading %s: %s"), filename,
+ strerror(errno));
+ beep();
+ return -1;
+ } else {
+ /* The file is A-OK. Open it. */
+ *f = fdopen(fd, "rb");
+
+ if (*f == NULL) {
+ statusbar(_("Error reading %s: %s"), filename,
+ strerror(errno));
+ beep();
+ close(fd);
+ } else
+ statusbar(_("Reading File"));
+ }
+
+ free(full_filename);
+
+ return fd;
+}
+
+/* This function will return the name of the first available extension
+ * of a filename (starting with [name][suffix], then [name][suffix].1,
+ * etc.). Memory is allocated for the return value. If no writable
+ * extension exists, we return "". */
+char *get_next_filename(const char *name, const char *suffix)
+{
+ static int ulmax_digits = -1;
+ unsigned long i = 0;
+ char *buf;
+ size_t namelen, suffixlen;
+
+ assert(name != NULL && suffix != NULL);
+
+ if (ulmax_digits == -1)
+ ulmax_digits = digits(ULONG_MAX);
+
+ namelen = strlen(name);
+ suffixlen = strlen(suffix);
+
+ buf = charalloc(namelen + suffixlen + ulmax_digits + 2);
+ sprintf(buf, "%s%s", name, suffix);
+
+ while (TRUE) {
+ struct stat fs;
+
+ if (stat(buf, &fs) == -1)
+ return buf;
+ if (i == ULONG_MAX)
+ break;
+
+ i++;
+ sprintf(buf + namelen + suffixlen, ".%lu", i);
+ }
+
+ /* We get here only if there is no possible save file. Blank out
+ * the filename to indicate this. */
+ null_at(&buf, 0);
+
+ return buf;
+}
+
+/* Insert a file into a new buffer if the MULTIBUFFER flag is set, or
+ * into the current buffer if it isn't. If execute is TRUE, insert the
+ * output of an executed command instead of a file. */
+void do_insertfile(
+#ifndef NANO_TINY
+ bool execute
+#else
+ void
+#endif
+ )
+{
+ int i;
+ const char *msg;
+ char *ans = mallocstrcpy(NULL, "");
+ /* The last answer the user typed at the statusbar prompt. */
+ filestruct *edittop_save = openfile->edittop;
+ size_t current_x_save = openfile->current_x;
+ ssize_t current_y_save = openfile->current_y;
+ bool edittop_inside = FALSE, meta_key = FALSE, func_key = FALSE;
+ const sc *s;
+#ifndef NANO_TINY
+ bool right_side_up = FALSE, single_line = FALSE;
+#endif
+
+ currmenu = MINSERTFILE;
+
+ while (TRUE) {
+#ifndef NANO_TINY
+ if (execute) {
+ msg =
+#ifdef ENABLE_MULTIBUFFER
+ ISSET(MULTIBUFFER) ?
+ _("Command to execute in new buffer [from %s] ") :
+#endif
+ _("Command to execute [from %s] ");
+ } else {
+#endif
+ msg =
+#ifdef ENABLE_MULTIBUFFER
+ ISSET(MULTIBUFFER) ?
+ _("File to insert into new buffer [from %s] ") :
+#endif
+ _("File to insert [from %s] ");
+#ifndef NANO_TINY
+ }
+#endif
+
+ i = do_prompt(TRUE,
+#ifndef DISABLE_TABCOMP
+ TRUE,
+#endif
+#ifndef NANO_TINY
+ execute ? MEXTCMD :
+#endif
+ MINSERTFILE, ans,
+ &meta_key, &func_key,
+#ifndef NANO_TINY
+ NULL,
+#endif
+ edit_refresh, msg,
+#ifndef DISABLE_OPERATINGDIR
+ operating_dir != NULL && strcmp(operating_dir,
+ ".") != 0 ? operating_dir :
+#endif
+ "./");
+
+ /* If we're in multibuffer mode and the filename or command is
+ * blank, open a new buffer instead of canceling. If the
+ * filename or command begins with a newline (i.e. an encoded
+ * null), treat it as though it's blank. */
+ if (i == -1 || ((i == -2 || *answer == '\n')
+#ifdef ENABLE_MULTIBUFFER
+ && !ISSET(MULTIBUFFER)
+#endif
+ )) {
+ statusbar(_("Cancelled"));
+ break;
+ } else {
+ size_t pww_save = openfile->placewewant;
+
+ ans = mallocstrcpy(ans, answer);
+
+ s = get_shortcut(currmenu, &i, &meta_key, &func_key);
+
+#ifndef NANO_TINY
+#ifdef ENABLE_MULTIBUFFER
+
+ if (s && s->scfunc == NEW_BUFFER_MSG) {
+ /* Don't allow toggling if we're in view mode. */
+ if (!ISSET(VIEW_MODE))
+ TOGGLE(MULTIBUFFER);
+ continue;
+ } else
+#endif
+ if (s && s->scfunc == EXT_CMD_MSG) {
+ execute = !execute;
+ continue;
+ }
+#ifndef DISABLE_BROWSER
+ else
+#endif
+#endif /* !NANO_TINY */
+
+#ifndef DISABLE_BROWSER
+ if (s && s->scfunc == TO_FILES_MSG) {
+ char *tmp = do_browse_from(answer);
+
+ if (tmp == NULL)
+ continue;
+
+ /* We have a file now. Indicate this. */
+ free(answer);
+ answer = tmp;
+
+ i = 0;
+ }
+#endif
+
+ /* If we don't have a file yet, go back to the statusbar
+ * prompt. */
+ if (i != 0
+#ifdef ENABLE_MULTIBUFFER
+ && (i != -2 || !ISSET(MULTIBUFFER))
+#endif
+ )
+ continue;
+
+#ifndef NANO_TINY
+ /* Keep track of whether the mark begins inside the
+ * partition and will need adjustment. */
+ if (openfile->mark_set) {
+ filestruct *top, *bot;
+ size_t top_x, bot_x;
+
+ mark_order((const filestruct **)&top, &top_x,
+ (const filestruct **)&bot, &bot_x,
+ &right_side_up);
+
+ single_line = (top == bot);
+ }
+#endif
+
+#ifdef ENABLE_MULTIBUFFER
+ if (!ISSET(MULTIBUFFER)) {
+#endif
+ /* If we're not inserting into a new buffer, partition
+ * the filestruct so that it contains no text and hence
+ * looks like a new buffer, and keep track of whether
+ * the top of the edit window is inside the
+ * partition. */
+ filepart = partition_filestruct(openfile->current,
+ openfile->current_x, openfile->current,
+ openfile->current_x);
+ edittop_inside =
+ (openfile->edittop == openfile->fileage);
+#ifdef ENABLE_MULTIBUFFER
+ }
+#endif
+
+ /* Convert newlines to nulls, just before we insert the file
+ * or execute the command. */
+ sunder(answer);
+ align(&answer);
+
+#ifndef NANO_TINY
+ if (execute) {
+#ifdef ENABLE_MULTIBUFFER
+ if (ISSET(MULTIBUFFER))
+ /* Open a blank buffer. */
+ open_buffer("", FALSE);
+#endif
+
+ /* Save the command's output in the current buffer. */
+ execute_command(answer);
+
+#ifdef ENABLE_MULTIBUFFER
+ if (ISSET(MULTIBUFFER)) {
+ /* Move back to the beginning of the first line of
+ * the buffer. */
+ openfile->current = openfile->fileage;
+ openfile->current_x = 0;
+ openfile->placewewant = 0;
+ }
+#endif
+ } else {
+#endif /* !NANO_TINY */
+ /* Make sure the path to the file specified in answer is
+ * tilde-expanded. */
+ answer = mallocstrassn(answer,
+ real_dir_from_tilde(answer));
+
+ /* Save the file specified in answer in the current
+ * buffer. */
+ open_buffer(answer, TRUE);
+#ifndef NANO_TINY
+ }
+#endif
+
+#ifdef ENABLE_MULTIBUFFER
+ if (ISSET(MULTIBUFFER))
+ /* Update the screen to account for the current
+ * buffer. */
+ display_buffer();
+ else
+#endif
+ {
+ filestruct *top_save = openfile->fileage;
+
+ /* If we were at the top of the edit window before, set
+ * the saved value of edittop to the new top of the edit
+ * window. */
+ if (edittop_inside)
+ edittop_save = openfile->fileage;
+
+ /* Update the current x-coordinate to account for the
+ * number of characters inserted on the current line.
+ * If the mark begins inside the partition, adjust the
+ * mark coordinates to compensate for the change in the
+ * current line. */
+ openfile->current_x = strlen(openfile->filebot->data);
+ if (openfile->fileage == openfile->filebot) {
+#ifndef NANO_TINY
+ if (openfile->mark_set) {
+ openfile->mark_begin = openfile->current;
+ if (!right_side_up)
+ openfile->mark_begin_x +=
+ openfile->current_x;
+ }
+#endif
+ openfile->current_x += current_x_save;
+ }
+#ifndef NANO_TINY
+ else if (openfile->mark_set) {
+ if (!right_side_up) {
+ if (single_line) {
+ openfile->mark_begin = openfile->current;
+ openfile->mark_begin_x -= current_x_save;
+ } else
+ openfile->mark_begin_x -=
+ openfile->current_x;
+ }
+ }
+#endif
+
+ /* Update the current y-coordinate to account for the
+ * number of lines inserted. */
+ openfile->current_y += current_y_save;
+
+ /* Unpartition the filestruct so that it contains all
+ * the text again. Note that we've replaced the
+ * non-text originally in the partition with the text in
+ * the inserted file/executed command output. */
+ unpartition_filestruct(&filepart);
+
+ /* Renumber starting with the beginning line of the old
+ * partition. */
+ renumber(top_save);
+
+ /* Restore the old edittop. */
+ openfile->edittop = edittop_save;
+
+ /* Restore the old place we want. */
+ openfile->placewewant = pww_save;
+
+ /* Mark the file as modified. */
+ set_modified();
+
+ /* Update the screen. */
+ edit_refresh();
+ }
+
+ break;
+ }
+ }
+ shortcut_init(FALSE);
+
+ free(ans);
+}
+
+/* Insert a file into a new buffer or the current buffer, depending on
+ * whether the MULTIBUFFER flag is set. If we're in view mode, only
+ * allow inserting a file into a new buffer. */
+void do_insertfile_void(void)
+{
+
+ if (ISSET(RESTRICTED)) {
+ nano_disabled_msg();
+ return;
+ }
+
+#ifdef ENABLE_MULTIBUFFER
+ if (ISSET(VIEW_MODE) && !ISSET(MULTIBUFFER))
+ statusbar(_("Key invalid in non-multibuffer mode"));
+ else
+#endif
+ do_insertfile(
+#ifndef NANO_TINY
+ FALSE
+#endif
+ );
+
+ display_main_list();
+}
+
+/* When passed "[relative path]" or "[relative path][filename]" in
+ * origpath, return "[full path]" or "[full path][filename]" on success,
+ * or NULL on error. Do this if the file doesn't exist but the relative
+ * path does, since the file could exist in memory but not yet on disk).
+ * Don't do this if the relative path doesn't exist, since we won't be
+ * able to go there. */
+char *get_full_path(const char *origpath)
+{
+ struct stat fileinfo;
+ char *d_here, *d_there, *d_there_file = NULL;
+ const char *last_slash;
+ bool path_only;
+
+ if (origpath == NULL)
+ return NULL;
+
+ /* Get the current directory. If it doesn't exist, back up and try
+ * again until we get a directory that does, and use that as the
+ * current directory. */
+ d_here = charalloc(PATH_MAX + 1);
+ d_here = getcwd(d_here, PATH_MAX + 1);
+
+ while (d_here == NULL) {
+ if (chdir("..") == -1)
+ break;
+
+ d_here = getcwd(d_here, PATH_MAX + 1);
+ }
+
+ /* If we succeeded, canonicalize it in d_here. */
+ if (d_here != NULL) {
+ align(&d_here);
+
+ /* If the current directory isn't "/", tack a slash onto the end
+ * of it. */
+ if (strcmp(d_here, "/") != 0) {
+ d_here = charealloc(d_here, strlen(d_here) + 2);
+ strcat(d_here, "/");
+ }
+ /* Otherwise, set d_here to "". */
+ } else
+ d_here = mallocstrcpy(NULL, "");
+
+ d_there = real_dir_from_tilde(origpath);
+
+ /* If stat()ing d_there fails, assume that d_there refers to a new
+ * file that hasn't been saved to disk yet. Set path_only to TRUE
+ * if d_there refers to a directory, and FALSE otherwise. */
+ path_only = (stat(d_there, &fileinfo) != -1 &&
+ S_ISDIR(fileinfo.st_mode));
+
+ /* If path_only is TRUE, make sure d_there ends in a slash. */
+ if (path_only) {
+ size_t d_there_len = strlen(d_there);
+
+ if (d_there[d_there_len - 1] != '/') {
+ d_there = charealloc(d_there, d_there_len + 2);
+ strcat(d_there, "/");
+ }
+ }
+
+ /* Search for the last slash in d_there. */
+ last_slash = strrchr(d_there, '/');
+
+ /* If we didn't find one, then make sure the answer is in the format
+ * "d_here/d_there". */
+ if (last_slash == NULL) {
+ assert(!path_only);
+
+ d_there_file = d_there;
+ d_there = d_here;
+ } else {
+ /* If path_only is FALSE, then save the filename portion of the
+ * answer (everything after the last slash) in d_there_file. */
+ if (!path_only)
+ d_there_file = mallocstrcpy(NULL, last_slash + 1);
+
+ /* Remove the filename portion of the answer from d_there. */
+ null_at(&d_there, last_slash - d_there + 1);
+
+ /* Go to the path specified in d_there. */
+ if (chdir(d_there) == -1) {
+ free(d_there);
+ d_there = NULL;
+ } else {
+ free(d_there);
+
+ /* Get the full path. */
+ d_there = charalloc(PATH_MAX + 1);
+ d_there = getcwd(d_there, PATH_MAX + 1);
+
+ /* If we succeeded, canonicalize it in d_there. */
+ if (d_there != NULL) {
+ align(&d_there);
+
+ /* If the current directory isn't "/", tack a slash onto
+ * the end of it. */
+ if (strcmp(d_there, "/") != 0) {
+ d_there = charealloc(d_there, strlen(d_there) + 2);
+ strcat(d_there, "/");
+ }
+ } else
+ /* Otherwise, set path_only to TRUE, so that we clean up
+ * correctly, free all allocated memory, and return
+ * NULL. */
+ path_only = TRUE;
+
+ /* Finally, go back to the path specified in d_here,
+ * where we were before. We don't check for a chdir()
+ * error, since we can do nothing if we get one. */
+ IGNORE_CALL_RESULT(chdir(d_here));
+
+ /* Free d_here, since we're done using it. */
+ free(d_here);
+ }
+ }
+
+ /* At this point, if path_only is FALSE and d_there isn't NULL,
+ * d_there contains the path portion of the answer and d_there_file
+ * contains the filename portion of the answer. If this is the
+ * case, tack the latter onto the end of the former. d_there will
+ * then contain the complete answer. */
+ if (!path_only && d_there != NULL) {
+ d_there = charealloc(d_there, strlen(d_there) +
+ strlen(d_there_file) + 1);
+ strcat(d_there, d_there_file);
+ }
+
+ /* Free d_there_file, since we're done using it. */
+ if (d_there_file != NULL)
+ free(d_there_file);
+
+ return d_there;
+}
+
+/* Return the full version of path, as returned by get_full_path(). On
+ * error, if path doesn't reference a directory, or if the directory
+ * isn't writable, return NULL. */
+char *check_writable_directory(const char *path)
+{
+ char *full_path = get_full_path(path);
+
+ /* If get_full_path() fails, return NULL. */
+ if (full_path == NULL)
+ return NULL;
+
+ /* If we can't write to path or path isn't a directory, return
+ * NULL. */
+ if (access(full_path, W_OK) != 0 ||
+ full_path[strlen(full_path) - 1] != '/') {
+ free(full_path);
+ return NULL;
+ }
+
+ /* Otherwise, return the full path. */
+ return full_path;
+}
+
+/* This function calls mkstemp(($TMPDIR|P_tmpdir|/tmp/)"nano.XXXXXX").
+ * On success, it returns the malloc()ed filename and corresponding FILE
+ * stream, opened in "r+b" mode. On error, it returns NULL for the
+ * filename and leaves the FILE stream unchanged. */
+char *safe_tempfile(FILE **f)
+{
+ char *full_tempdir = NULL;
+ const char *tmpdir_env;
+ int fd;
+ mode_t original_umask = 0;
+
+ assert(f != NULL);
+
+ /* If $TMPDIR is set, set tempdir to it, run it through
+ * get_full_path(), and save the result in full_tempdir. Otherwise,
+ * leave full_tempdir set to NULL. */
+ tmpdir_env = getenv("TMPDIR");
+ if (tmpdir_env != NULL)
+ full_tempdir = check_writable_directory(tmpdir_env);
+
+ /* If $TMPDIR is unset, empty, or not a writable directory, and
+ * full_tempdir is NULL, try P_tmpdir instead. */
+ if (full_tempdir == NULL)
+ full_tempdir = check_writable_directory(P_tmpdir);
+
+ /* if P_tmpdir is NULL, use /tmp. */
+ if (full_tempdir == NULL)
+ full_tempdir = mallocstrcpy(NULL, "/tmp/");
+
+ full_tempdir = charealloc(full_tempdir, strlen(full_tempdir) + 12);
+ strcat(full_tempdir, "nano.XXXXXX");
+
+ original_umask = umask(0);
+ umask(S_IRWXG | S_IRWXO);
+
+ fd = mkstemp(full_tempdir);
+
+ if (fd != -1)
+ *f = fdopen(fd, "r+b");
+ else {
+ free(full_tempdir);
+ full_tempdir = NULL;
+ }
+
+ umask(original_umask);
+
+ return full_tempdir;
+}
+
+#ifndef DISABLE_OPERATINGDIR
+/* Initialize full_operating_dir based on operating_dir. */
+void init_operating_dir(void)
+{
+ assert(full_operating_dir == NULL);
+
+ if (operating_dir == NULL)
+ return;
+
+ full_operating_dir = get_full_path(operating_dir);
+
+ /* If get_full_path() failed or the operating directory is
+ * inaccessible, unset operating_dir. */
+ if (full_operating_dir == NULL || chdir(full_operating_dir) == -1) {
+ free(full_operating_dir);
+ full_operating_dir = NULL;
+ free(operating_dir);
+ operating_dir = NULL;
+ }
+}
+
+/* Check to see if we're inside the operating directory. Return FALSE
+ * if we are, or TRUE otherwise. If allow_tabcomp is TRUE, allow
+ * incomplete names that would be matches for the operating directory,
+ * so that tab completion will work. */
+bool check_operating_dir(const char *currpath, bool allow_tabcomp)
+{
+ /* full_operating_dir is global for memory cleanup. It should have
+ * already been initialized by init_operating_dir(). Also, a
+ * relative operating directory path will only be handled properly
+ * if this is done. */
+
+ char *fullpath;
+ bool retval = FALSE;
+ const char *whereami1, *whereami2 = NULL;
+
+ /* If no operating directory is set, don't bother doing anything. */
+ if (operating_dir == NULL)
+ return FALSE;
+
+ assert(full_operating_dir != NULL);
+
+ fullpath = get_full_path(currpath);
+
+ /* If fullpath is NULL, it means some directory in the path doesn't
+ * exist or is unreadable. If allow_tabcomp is FALSE, then currpath
+ * is what the user typed somewhere. We don't want to report a
+ * non-existent directory as being outside the operating directory,
+ * so we return FALSE. If allow_tabcomp is TRUE, then currpath
+ * exists, but is not executable. So we say it isn't in the
+ * operating directory. */
+ if (fullpath == NULL)
+ return allow_tabcomp;
+
+ whereami1 = strstr(fullpath, full_operating_dir);
+ if (allow_tabcomp)
+ whereami2 = strstr(full_operating_dir, fullpath);
+
+ /* If both searches failed, we're outside the operating directory.
+ * Otherwise, check the search results. If the full operating
+ * directory path is not at the beginning of the full current path
+ * (for normal usage) and vice versa (for tab completion, if we're
+ * allowing it), we're outside the operating directory. */
+ if (whereami1 != fullpath && whereami2 != full_operating_dir)
+ retval = TRUE;
+ free(fullpath);
+
+ /* Otherwise, we're still inside it. */
+ return retval;
+}
+#endif
+
+#ifndef NANO_TINY
+void init_backup_dir(void)
+{
+ char *full_backup_dir;
+
+ if (backup_dir == NULL)
+ return;
+
+ full_backup_dir = get_full_path(backup_dir);
+
+ /* If get_full_path() failed or the backup directory is
+ * inaccessible, unset backup_dir. */
+ if (full_backup_dir == NULL ||
+ full_backup_dir[strlen(full_backup_dir) - 1] != '/') {
+ free(full_backup_dir);
+ free(backup_dir);
+ backup_dir = NULL;
+ } else {
+ free(backup_dir);
+ backup_dir = full_backup_dir;
+ }
+}
+#endif
+
+/* Read from inn, write to out. We assume inn is opened for reading,
+ * and out for writing. We return 0 on success, -1 on read error, or -2
+ * on write error. */
+int copy_file(FILE *inn, FILE *out)
+{
+ int retval = 0;
+ char buf[BUFSIZ];
+ size_t charsread;
+
+ assert(inn != NULL && out != NULL && inn != out);
+
+ do {
+ charsread = fread(buf, sizeof(char), BUFSIZ, inn);
+ if (charsread == 0 && ferror(inn)) {
+ retval = -1;
+ break;
+ }
+ if (fwrite(buf, sizeof(char), charsread, out) < charsread) {
+ retval = -2;
+ break;
+ }
+ } while (charsread > 0);
+
+ if (fclose(inn) == EOF)
+ retval = -1;
+ if (fclose(out) == EOF)
+ retval = -2;
+
+ return retval;
+}
+
+/* Write a file out to disk. If f_open isn't NULL, we assume that it is
+ * a stream associated with the file, and we don't try to open it
+ * ourselves. If tmp is TRUE, we set the umask to disallow anyone else
+ * from accessing the file, we don't set the filename to its name, and
+ * we don't print out how many lines we wrote on the statusbar.
+ *
+ * tmp means we are writing a temporary file in a secure fashion. We
+ * use it when spell checking or dumping the file on an error. If
+ * append is APPEND, it means we are appending instead of overwriting.
+ * If append is PREPEND, it means we are prepending instead of
+ * overwriting. If nonamechange is TRUE, we don't change the current
+ * filename. nonamechange is ignored if tmp is FALSE, we're appending,
+ * or we're prepending.
+ *
+ * Return TRUE on success or FALSE on error. */
+bool write_file(const char *name, FILE *f_open, bool tmp, append_type
+ append, bool nonamechange)
+{
+ bool retval = FALSE;
+ /* Instead of returning in this function, you should always
+ * set retval and then goto cleanup_and_exit. */
+ size_t lineswritten = 0;
+ const filestruct *fileptr = openfile->fileage;
+ int fd;
+ /* The file descriptor we use. */
+ mode_t original_umask = 0;
+ /* Our umask, from when nano started. */
+ bool realexists;
+ /* The result of stat(). TRUE if the file exists, FALSE
+ * otherwise. If name is a link that points nowhere, realexists
+ * is FALSE. */
+ struct stat st;
+ /* The status fields filled in by stat(). */
+ bool anyexists;
+ /* The result of lstat(). The same as realexists, unless name
+ * is a link. */
+ struct stat lst;
+ /* The status fields filled in by lstat(). */
+ char *realname;
+ /* name after tilde expansion. */
+ FILE *f = NULL;
+ /* The actual file, realname, we are writing to. */
+ char *tempname = NULL;
+ /* The temp file name we write to on prepend. */
+ int backup_cflags;
+
+ assert(name != NULL);
+
+ if (*name == '\0')
+ return -1;
+
+ if (f_open != NULL)
+ f = f_open;
+
+ if (!tmp)
+ titlebar(NULL);
+
+ realname = real_dir_from_tilde(name);
+
+#ifndef DISABLE_OPERATINGDIR
+ /* If we're writing a temporary file, we're probably going outside
+ * the operating directory, so skip the operating directory test. */
+ if (!tmp && check_operating_dir(realname, FALSE)) {
+ statusbar(_("Can't write outside of %s"), operating_dir);
+ goto cleanup_and_exit;
+ }
+#endif
+
+ anyexists = (lstat(realname, &lst) != -1);
+
+ /* If the temp file exists and isn't already open, give up. */
+ if (tmp && anyexists && f_open == NULL)
+ goto cleanup_and_exit;
+
+ /* If NOFOLLOW_SYMLINKS is set, it doesn't make sense to prepend or
+ * append to a symlink. Here we warn about the contradiction. */
+ if (ISSET(NOFOLLOW_SYMLINKS) && anyexists && S_ISLNK(lst.st_mode)) {
+ statusbar(
+ _("Cannot prepend or append to a symlink with --nofollow set"));
+ goto cleanup_and_exit;
+ }
+
+ /* Save the state of the file at the end of the symlink (if there is
+ * one). */
+ realexists = (stat(realname, &st) != -1);
+
+#ifndef NANO_TINY
+ /* if we have not stat()d this file before (say, the user just
+ * specified it interactively), stat and save the value
+ * or else we will chase null pointers when we do
+ * modtime checks, preserve file times, etc. during backup */
+ if (openfile->current_stat == NULL && !tmp && realexists)
+ stat(realname, openfile->current_stat);
+
+ /* We backup only if the backup toggle is set, the file isn't
+ * temporary, and the file already exists. Furthermore, if we
+ * aren't appending, prepending, or writing a selection, we backup
+ * only if the file has not been modified by someone else since nano
+ * opened it. */
+ if (ISSET(BACKUP_FILE) && !tmp && realexists && ((append !=
+ OVERWRITE || openfile->mark_set) || (openfile->current_stat &&
+ openfile->current_stat->st_mtime == st.st_mtime))) {
+ int backup_fd;
+ FILE *backup_file;
+ char *backupname;
+ struct utimbuf filetime;
+ int copy_status;
+
+ /* Save the original file's access and modification times. */
+ filetime.actime = openfile->current_stat->st_atime;
+ filetime.modtime = openfile->current_stat->st_mtime;
+
+ if (f_open == NULL) {
+ /* Open the original file to copy to the backup. */
+ f = fopen(realname, "rb");
+
+ if (f == NULL) {
+ statusbar(_("Error reading %s: %s"), realname,
+ strerror(errno));
+ beep();
+ /* If we can't read from the original file, go on, since
+ * only saving the original file is better than saving
+ * nothing. */
+ goto skip_backup;
+ }
+ }
+
+ /* If backup_dir is set, we set backupname to
+ * backup_dir/backupname~[.number], where backupname is the
+ * canonicalized absolute pathname of realname with every '/'
+ * replaced with a '!'. This means that /home/foo/file is
+ * backed up in backup_dir/!home!foo!file~[.number]. */
+ if (backup_dir != NULL) {
+ char *backuptemp = get_full_path(realname);
+
+ if (backuptemp == NULL)
+ /* If get_full_path() failed, we don't have a
+ * canonicalized absolute pathname, so just use the
+ * filename portion of the pathname. We use tail() so
+ * that e.g. ../backupname will be backed up in
+ * backupdir/backupname~ instead of
+ * backupdir/../backupname~. */
+ backuptemp = mallocstrcpy(NULL, tail(realname));
+ else {
+ size_t i = 0;
+
+ for (; backuptemp[i] != '\0'; i++) {
+ if (backuptemp[i] == '/')
+ backuptemp[i] = '!';
+ }
+ }
+
+ backupname = charalloc(strlen(backup_dir) +
+ strlen(backuptemp) + 1);
+ sprintf(backupname, "%s%s", backup_dir, backuptemp);
+ free(backuptemp);
+ backuptemp = get_next_filename(backupname, "~");
+ if (*backuptemp == '\0') {
+ statusbar(_("Error writing backup file %s: %s"), backupname,
+ _("Too many backup files?"));
+ free(backuptemp);
+ free(backupname);
+ /* If we can't write to the backup, DONT go on, since
+ whatever caused the backup file to fail (e.g. disk
+ full may well cause the real file write to fail, which
+ means we could lose both the backup and the original! */
+ goto cleanup_and_exit;
+ } else {
+ free(backupname);
+ backupname = backuptemp;
+ }
+ } else {
+ backupname = charalloc(strlen(realname) + 2);
+ sprintf(backupname, "%s~", realname);
+ }
+
+ /* First, unlink any existing backups. Next, open the backup
+ file with O_CREAT and O_EXCL. If it succeeds, we
+ have a file descriptor to a new backup file. */
+ if (unlink(backupname) < 0 && errno != ENOENT && !ISSET(INSECURE_BACKUP)) {
+ statusbar(_("Error writing backup file %s: %s"), backupname,
+ strerror(errno));
+ free(backupname);
+ goto cleanup_and_exit;
+ }
+
+ if (ISSET(INSECURE_BACKUP))
+ backup_cflags = O_WRONLY | O_CREAT | O_APPEND;
+ else
+ backup_cflags = O_WRONLY | O_CREAT | O_EXCL | O_APPEND;
+
+ backup_fd = open(backupname, backup_cflags,
+ S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+ /* Now we've got a safe file stream. If the previous open()
+ call failed, this will return NULL. */
+ backup_file = fdopen(backup_fd, "wb");
+
+ if (backup_fd < 0 || backup_file == NULL) {
+ statusbar(_("Error writing backup file %s: %s"), backupname,
+ strerror(errno));
+ free(backupname);
+ goto cleanup_and_exit;
+ }
+
+ /* We shouldn't worry about chown()ing something if we're not
+ root, since it's likely to fail! */
+ if (geteuid() == NANO_ROOT_UID && fchown(backup_fd,
+ openfile->current_stat->st_uid, openfile->current_stat->st_gid) == -1
+ && !ISSET(INSECURE_BACKUP)) {
+ statusbar(_("Error writing backup file %s: %s"), backupname,
+ strerror(errno));
+ free(backupname);
+ fclose(backup_file);
+ goto cleanup_and_exit;
+ }
+
+ if (fchmod(backup_fd, openfile->current_stat->st_mode) == -1 && !ISSET(INSECURE_BACKUP)) {
+ statusbar(_("Error writing backup file %s: %s"), backupname,
+ strerror(errno));
+ free(backupname);
+ fclose(backup_file);
+ /* If we can't write to the backup, DONT go on, since
+ whatever caused the backup file to fail (e.g. disk
+ full may well cause the real file write to fail, which
+ means we could lose both the backup and the original! */
+ goto cleanup_and_exit;
+ }
+
+#ifdef DEBUG
+ fprintf(stderr, "Backing up %s to %s\n", realname, backupname);
+#endif
+
+ /* Copy the file. */
+ copy_status = copy_file(f, backup_file);
+
+ if (copy_status != 0) {
+ statusbar(_("Error reading %s: %s"), realname,
+ strerror(errno));
+ beep();
+ goto cleanup_and_exit;
+ }
+
+ /* And set its metadata. */
+ if (utime(backupname, &filetime) == -1 && !ISSET(INSECURE_BACKUP)) {
+ statusbar(_("Error writing backup file %s: %s"), backupname,
+ strerror(errno));
+ /* If we can't write to the backup, DONT go on, since
+ whatever caused the backup file to fail (e.g. disk
+ full may well cause the real file write to fail, which
+ means we could lose both the backup and the original! */
+ goto cleanup_and_exit;
+ }
+
+ free(backupname);
+ }
+
+ skip_backup:
+#endif /* !NANO_TINY */
+
+ /* If NOFOLLOW_SYMLINKS is set and the file is a link, we aren't
+ * doing prepend or append. So we delete the link first, and just
+ * overwrite. */
+ if (ISSET(NOFOLLOW_SYMLINKS) && anyexists && S_ISLNK(lst.st_mode) &&
+ unlink(realname) == -1) {
+ statusbar(_("Error writing %s: %s"), realname, strerror(errno));
+ goto cleanup_and_exit;
+ }
+
+ if (f_open == NULL) {
+ original_umask = umask(0);
+
+ /* If we create a temp file, we don't let anyone else access it.
+ * We create a temp file if tmp is TRUE. */
+ if (tmp)
+ umask(S_IRWXG | S_IRWXO);
+ else
+ umask(original_umask);
+ }
+
+ /* If we're prepending, copy the file to a temp file. */
+ if (append == PREPEND) {
+ int fd_source;
+ FILE *f_source = NULL;
+
+ if (f == NULL) {
+ f = fopen(realname, "rb");
+
+ if (f == NULL) {
+ statusbar(_("Error reading %s: %s"), realname,
+ strerror(errno));
+ beep();
+ goto cleanup_and_exit;
+ }
+ }
+
+ tempname = safe_tempfile(&f);
+
+ if (tempname == NULL) {
+ statusbar(_("Error writing temp file: %s"),
+ strerror(errno));
+ goto cleanup_and_exit;
+ }
+
+ if (f_open == NULL) {
+ fd_source = open(realname, O_RDONLY | O_CREAT, S_IRUSR | S_IWUSR);
+
+ if (fd_source != -1) {
+ f_source = fdopen(fd_source, "rb");
+ if (f_source == NULL) {
+ statusbar(_("Error reading %s: %s"), realname,
+ strerror(errno));
+ beep();
+ close(fd_source);
+ fclose(f);
+ unlink(tempname);
+ goto cleanup_and_exit;
+ }
+ }
+ }
+
+ if (copy_file(f_source, f) != 0) {
+ statusbar(_("Error writing %s: %s"), tempname,
+ strerror(errno));
+ unlink(tempname);
+ goto cleanup_and_exit;
+ }
+ }
+
+ if (f_open == NULL) {
+ /* Now open the file in place. Use O_EXCL if tmp is TRUE. This
+ * is copied from joe, because wiggy says so *shrug*. */
+ fd = open(realname, O_WRONLY | O_CREAT | ((append == APPEND) ?
+ O_APPEND : (tmp ? O_EXCL : O_TRUNC)), S_IRUSR |
+ S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+
+ /* Set the umask back to the user's original value. */
+ umask(original_umask);
+
+ /* If we couldn't open the file, give up. */
+ if (fd == -1) {
+ statusbar(_("Error writing %s: %s"), realname,
+ strerror(errno));
+
+ /* tempname has been set only if we're prepending. */
+ if (tempname != NULL)
+ unlink(tempname);
+ goto cleanup_and_exit;
+ }
+
+ f = fdopen(fd, (append == APPEND) ? "ab" : "wb");
+
+ if (f == NULL) {
+ statusbar(_("Error writing %s: %s"), realname,
+ strerror(errno));
+ close(fd);
+ goto cleanup_and_exit;
+ }
+ }
+
+ /* There might not be a magicline. There won't be when writing out
+ * a selection. */
+ assert(openfile->fileage != NULL && openfile->filebot != NULL);
+
+ while (fileptr != NULL) {
+ size_t data_len = strlen(fileptr->data), size;
+
+ /* Convert newlines to nulls, just before we write to disk. */
+ sunder(fileptr->data);
+
+ size = fwrite(fileptr->data, sizeof(char), data_len, f);
+
+ /* Convert nulls to newlines. data_len is the string's real
+ * length. */
+ unsunder(fileptr->data, data_len);
+
+ if (size < data_len) {
+ statusbar(_("Error writing %s: %s"), realname,
+ strerror(errno));
+ fclose(f);
+ goto cleanup_and_exit;
+ }
+
+ /* If we're on the last line of the file, don't write a newline
+ * character after it. If the last line of the file is blank,
+ * this means that zero bytes are written, in which case we
+ * don't count the last line in the total lines written. */
+ if (fileptr == openfile->filebot) {
+ if (fileptr->data[0] == '\0')
+ lineswritten--;
+ } else {
+#ifndef NANO_TINY
+ if (openfile->fmt == DOS_FILE || openfile->fmt ==
+ MAC_FILE) {
+ if (putc('\r', f) == EOF) {
+ statusbar(_("Error writing %s: %s"), realname,
+ strerror(errno));
+ fclose(f);
+ goto cleanup_and_exit;
+ }
+ }
+
+ if (openfile->fmt != MAC_FILE) {
+#endif
+ if (putc('\n', f) == EOF) {
+ statusbar(_("Error writing %s: %s"), realname,
+ strerror(errno));
+ fclose(f);
+ goto cleanup_and_exit;
+ }
+#ifndef NANO_TINY
+ }
+#endif
+ }
+
+ fileptr = fileptr->next;
+ lineswritten++;
+ }
+
+ /* If we're prepending, open the temp file, and append it to f. */
+ if (append == PREPEND) {
+ int fd_source;
+ FILE *f_source = NULL;
+
+ fd_source = open(tempname, O_RDONLY | O_CREAT, S_IRUSR | S_IWUSR);
+
+ if (fd_source != -1) {
+ f_source = fdopen(fd_source, "rb");
+ if (f_source == NULL)
+ close(fd_source);
+ }
+
+ if (f_source == NULL) {
+ statusbar(_("Error reading %s: %s"), tempname,
+ strerror(errno));
+ beep();
+ fclose(f);
+ goto cleanup_and_exit;
+ }
+
+ if (copy_file(f_source, f) == -1 || unlink(tempname) == -1) {
+ statusbar(_("Error writing %s: %s"), realname,
+ strerror(errno));
+ goto cleanup_and_exit;
+ }
+ } else if (fclose(f) != 0) {
+ statusbar(_("Error writing %s: %s"), realname,
+ strerror(errno));
+ goto cleanup_and_exit;
+ }
+
+ if (!tmp && append == OVERWRITE) {
+ if (!nonamechange) {
+ openfile->filename = mallocstrcpy(openfile->filename,
+ realname);
+#ifdef ENABLE_COLOR
+ /* We might have changed the filename, so update the colors
+ * to account for it, and then make sure we're using
+ * them. */
+ color_update();
+ color_init();
+
+ /* If color syntaxes are available and turned on, we need to
+ * call edit_refresh(). */
+ if (openfile->colorstrings != NULL &&
+ !ISSET(NO_COLOR_SYNTAX))
+ edit_refresh();
+#endif
+ }
+
+#ifndef NANO_TINY
+ /* Update current_stat to reference the file as it is now. */
+ if (openfile->current_stat == NULL)
+ openfile->current_stat =
+ (struct stat *)nmalloc(sizeof(struct stat));
+ stat(realname, openfile->current_stat);
+#endif
+
+ statusbar(P_("Wrote %lu line", "Wrote %lu lines",
+ (unsigned long)lineswritten),
+ (unsigned long)lineswritten);
+ openfile->modified = FALSE;
+ titlebar(NULL);
+ }
+
+ retval = TRUE;
+
+ cleanup_and_exit:
+ free(realname);
+ if (tempname != NULL)
+ free(tempname);
+
+ return retval;
+}
+
+#ifndef NANO_TINY
+/* Write a marked selection from a file out to disk. Return TRUE on
+ * success or FALSE on error. */
+bool write_marked_file(const char *name, FILE *f_open, bool tmp,
+ append_type append)
+{
+ bool retval;
+ bool old_modified = openfile->modified;
+ /* write_file() unsets the modified flag. */
+ bool added_magicline = FALSE;
+ /* Whether we added a magicline after filebot. */
+ filestruct *top, *bot;
+ size_t top_x, bot_x;
+
+ assert(openfile->mark_set);
+
+ /* Partition the filestruct so that it contains only the marked
+ * text. */
+ mark_order((const filestruct **)&top, &top_x,
+ (const filestruct **)&bot, &bot_x, NULL);
+ filepart = partition_filestruct(top, top_x, bot, bot_x);
+
+ /* Handle the magicline if the NO_NEWLINES flag isn't set. If the
+ * line at filebot is blank, treat it as the magicline and hence the
+ * end of the file. Otherwise, add a magicline and treat it as the
+ * end of the file. */
+ if (!ISSET(NO_NEWLINES) &&
+ (added_magicline = (openfile->filebot->data[0] != '\0')))
+ new_magicline();
+
+ retval = write_file(name, f_open, tmp, append, TRUE);
+
+ /* If the NO_NEWLINES flag isn't set, and we added a magicline,
+ * remove it now. */
+ if (!ISSET(NO_NEWLINES) && added_magicline)
+ remove_magicline();
+
+ /* Unpartition the filestruct so that it contains all the text
+ * again. */
+ unpartition_filestruct(&filepart);
+
+ if (old_modified)
+ set_modified();
+
+ return retval;
+}
+#endif /* !NANO_TINY */
+
+/* Write the current file to disk. If the mark is on, write the current
+ * marked selection to disk. If exiting is TRUE, write the file to disk
+ * regardless of whether the mark is on, and without prompting if the
+ * TEMP_FILE flag is set. Return TRUE on success or FALSE on error. */
+bool do_writeout(bool exiting)
+{
+ int i;
+ append_type append = OVERWRITE;
+ char *ans;
+ /* The last answer the user typed at the statusbar prompt. */
+#ifdef NANO_EXTRA
+ static bool did_credits = FALSE;
+#endif
+ bool retval = FALSE, meta_key = FALSE, func_key = FALSE;
+ const sc *s;
+
+ currmenu = MWRITEFILE;
+
+ if (exiting && openfile->filename[0] != '\0' && ISSET(TEMP_FILE)) {
+ retval = write_file(openfile->filename, NULL, FALSE, OVERWRITE,
+ FALSE);
+
+ /* Write succeeded. */
+ if (retval)
+ return retval;
+ }
+
+ ans = mallocstrcpy(NULL,
+#ifndef NANO_TINY
+ (!exiting && openfile->mark_set) ? "" :
+#endif
+ openfile->filename);
+
+ while (TRUE) {
+ const char *msg;
+#ifndef NANO_TINY
+ const char *formatstr, *backupstr;
+
+ formatstr = (openfile->fmt == DOS_FILE) ?
+ _(" [DOS Format]") : (openfile->fmt == MAC_FILE) ?
+ _(" [Mac Format]") : "";
+
+ backupstr = ISSET(BACKUP_FILE) ? _(" [Backup]") : "";
+
+ /* If we're using restricted mode, don't display the "Write
+ * Selection to File" prompt. This function is disabled, since
+ * it allows reading from or writing to files not specified on
+ * the command line. */
+ if (!ISSET(RESTRICTED) && !exiting && openfile->mark_set)
+ msg = (append == PREPEND) ?
+ _("Prepend Selection to File") : (append == APPEND) ?
+ _("Append Selection to File") :
+ _("Write Selection to File");
+ else
+#endif /* !NANO_TINY */
+ msg = (append == PREPEND) ? _("File Name to Prepend to") :
+ (append == APPEND) ? _("File Name to Append to") :
+ _("File Name to Write");
+
+ /* If we're using restricted mode, the filename isn't blank,
+ * and we're at the "Write File" prompt, disable tab
+ * completion. */
+ i = do_prompt(!ISSET(RESTRICTED) ||
+ openfile->filename[0] == '\0',
+#ifndef DISABLE_TABCOMP
+ TRUE,
+#endif
+ MWRITEFILE, ans,
+ &meta_key, &func_key,
+#ifndef NANO_TINY
+ NULL,
+#endif
+ edit_refresh, "%s%s%s", msg,
+#ifndef NANO_TINY
+ formatstr, backupstr
+#else
+ "", ""
+#endif
+ );
+
+ /* If the filename or command begins with a newline (i.e. an
+ * encoded null), treat it as though it's blank. */
+ if (i < 0 || *answer == '\n') {
+ statusbar(_("Cancelled"));
+ retval = FALSE;
+ break;
+ } else {
+ ans = mallocstrcpy(ans, answer);
+ s = get_shortcut(currmenu, &i, &meta_key, &func_key);
+
+#ifndef DISABLE_BROWSER
+ if (s && s->scfunc == TO_FILES_MSG) {
+ char *tmp = do_browse_from(answer);
+
+ if (tmp == NULL)
+ continue;
+
+ /* We have a file now. Indicate this. */
+ free(answer);
+ answer = tmp;
+ } else
+#endif /* !DISABLE_BROWSER */
+#ifndef NANO_TINY
+ if (s && s->scfunc == DOS_FORMAT_MSG) {
+ openfile->fmt = (openfile->fmt == DOS_FILE) ? NIX_FILE :
+ DOS_FILE;
+ continue;
+ } else if (s && s->scfunc == MAC_FORMAT_MSG) {
+ openfile->fmt = (openfile->fmt == MAC_FILE) ? NIX_FILE :
+ MAC_FILE;
+ continue;
+ } else if (s && s->scfunc == BACKUP_FILE_MSG) {
+ TOGGLE(BACKUP_FILE);
+ continue;
+ } else
+#endif /* !NANO_TINY */
+ if (s && s->scfunc == PREPEND_MSG) {
+ append = (append == PREPEND) ? OVERWRITE : PREPEND;
+ continue;
+ } else if (s && s->scfunc == APPEND_MSG) {
+ append = (append == APPEND) ? OVERWRITE : APPEND;
+ continue;
+ } else if (s && s->scfunc == DO_HELP_VOID) {
+ continue;
+ }
+
+#ifdef DEBUG
+ fprintf(stderr, "filename is %s\n", answer);
+#endif
+
+#ifdef NANO_EXTRA
+ /* If the current file has been modified, we've pressed
+ * Ctrl-X at the edit window to exit, we've pressed "y" at
+ * the "Save modified buffer" prompt to save, we've entered
+ * "zzy" as the filename to save under (hence "xyzzy"), and
+ * this is the first time we've done this, show an Easter
+ * egg. Display the credits. */
+ if (!did_credits && exiting && !ISSET(TEMP_FILE) &&
+ strcasecmp(answer, "zzy") == 0) {
+ do_credits();
+ did_credits = TRUE;
+ retval = FALSE;
+ break;
+ }
+#endif
+
+ if (append == OVERWRITE) {
+ size_t answer_len = strlen(answer);
+ bool name_exists, do_warning;
+ char *full_answer, *full_filename;
+ struct stat st;
+
+ /* Convert newlines to nulls, just before we get the
+ * full path. */
+ sunder(answer);
+
+ full_answer = get_full_path(answer);
+ full_filename = get_full_path(openfile->filename);
+ name_exists = (stat((full_answer == NULL) ? answer :
+ full_answer, &st) != -1);
+ if (openfile->filename[0] == '\0')
+ do_warning = name_exists;
+ else
+ do_warning = (strcmp((full_answer == NULL) ?
+ answer : full_answer, (full_filename == NULL) ?
+ openfile->filename : full_filename) != 0);
+
+ /* Convert nulls to newlines. answer_len is the
+ * string's real length. */
+ unsunder(answer, answer_len);
+
+ if (full_filename != NULL)
+ free(full_filename);
+ if (full_answer != NULL)
+ free(full_answer);
+
+ if (do_warning) {
+ /* If we're using restricted mode, we aren't allowed
+ * to overwrite an existing file with the current
+ * file. We also aren't allowed to change the name
+ * of the current file if it has one, because that
+ * would allow reading from or writing to files not
+ * specified on the command line. */
+ if (ISSET(RESTRICTED))
+ continue;
+
+ if (name_exists) {
+ i = do_yesno_prompt(FALSE,
+ _("File exists, OVERWRITE ? "));
+ if (i == 0 || i == -1)
+ continue;
+ } else
+#ifndef NANO_TINY
+ if (exiting || !openfile->mark_set)
+#endif
+ {
+ i = do_yesno_prompt(FALSE,
+ _("Save file under DIFFERENT NAME ? "));
+ if (i == 0 || i == -1)
+ continue;
+ }
+ }
+#ifndef NANO_TINY
+ /* Complain if the file exists, the name hasn't changed, and the
+ stat information we had before does not match what we have now */
+ else if (name_exists && openfile->current_stat && (openfile->current_stat->st_mtime < st.st_mtime ||
+ openfile->current_stat->st_dev != st.st_dev || openfile->current_stat->st_ino != st.st_ino)) {
+ i = do_yesno_prompt(FALSE,
+ _("File was modified since you opened it, continue saving ? "));
+ if (i == 0 || i == -1)
+ continue;
+ }
+#endif
+
+ }
+
+ /* Convert newlines to nulls, just before we save the
+ * file. */
+ sunder(answer);
+ align(&answer);
+
+ /* Here's where we allow the selected text to be written to
+ * a separate file. If we're using restricted mode, this
+ * function is disabled, since it allows reading from or
+ * writing to files not specified on the command line. */
+ retval =
+#ifndef NANO_TINY
+ (!ISSET(RESTRICTED) && !exiting && openfile->mark_set) ?
+ write_marked_file(answer, NULL, FALSE, append) :
+#endif
+ write_file(answer, NULL, FALSE, append, FALSE);
+
+ break;
+ }
+ }
+
+ free(ans);
+
+ return retval;
+}
+
+/* Write the current file to disk. If the mark is on, write the current
+ * marked selection to disk. */
+void do_writeout_void(void)
+{
+ do_writeout(FALSE);
+ display_main_list();
+}
+
+/* Return a malloc()ed string containing the actual directory, used to
+ * convert ~user/ and ~/ notation. */
+char *real_dir_from_tilde(const char *buf)
+{
+ char *retval;
+
+ assert(buf != NULL);
+
+ if (*buf == '~') {
+ size_t i = 1;
+ char *tilde_dir;
+
+ /* Figure out how much of the string we need to compare. */
+ for (; buf[i] != '/' && buf[i] != '\0'; i++)
+ ;
+
+ /* Get the home directory. */
+ if (i == 1) {
+ get_homedir();
+ tilde_dir = mallocstrcpy(NULL, homedir);
+ } else {
+ const struct passwd *userdata;
+
+ tilde_dir = mallocstrncpy(NULL, buf, i + 1);
+ tilde_dir[i] = '\0';
+
+ do {
+ userdata = getpwent();
+ } while (userdata != NULL && strcmp(userdata->pw_name,
+ tilde_dir + 1) != 0);
+ endpwent();
+ if (userdata != NULL)
+ tilde_dir = mallocstrcpy(tilde_dir, userdata->pw_dir);
+ }
+
+ retval = charalloc(strlen(tilde_dir) + strlen(buf + i) + 1);
+ sprintf(retval, "%s%s", tilde_dir, buf + i);
+
+ free(tilde_dir);
+ } else
+ retval = mallocstrcpy(NULL, buf);
+
+ return retval;
+}
+
+#if !defined(DISABLE_TABCOMP) || !defined(DISABLE_BROWSER)
+/* Our sort routine for file listings. Sort alphabetically and
+ * case-insensitively, and sort directories before filenames. */
+int diralphasort(const void *va, const void *vb)
+{
+ struct stat fileinfo;
+ const char *a = *(const char *const *)va;
+ const char *b = *(const char *const *)vb;
+ bool aisdir = stat(a, &fileinfo) != -1 && S_ISDIR(fileinfo.st_mode);
+ bool bisdir = stat(b, &fileinfo) != -1 && S_ISDIR(fileinfo.st_mode);
+
+ if (aisdir && !bisdir)
+ return -1;
+ if (!aisdir && bisdir)
+ return 1;
+
+ /* Standard function brain damage: We should be sorting
+ * alphabetically and case-insensitively according to the current
+ * locale, but there's no standard strcasecoll() function, so we
+ * have to use multibyte strcasecmp() instead, */
+ return mbstrcasecmp(a, b);
+}
+
+/* Free the memory allocated for array, which should contain len
+ * elements. */
+void free_chararray(char **array, size_t len)
+{
+ assert(array != NULL);
+
+ for (; len > 0; len--)
+ free(array[len - 1]);
+ free(array);
+}
+#endif
+
+#ifndef DISABLE_TABCOMP
+/* Is the given path a directory? */
+bool is_dir(const char *buf)
+{
+ char *dirptr;
+ struct stat fileinfo;
+ bool retval;
+
+ assert(buf != NULL);
+
+ dirptr = real_dir_from_tilde(buf);
+
+ retval = (stat(dirptr, &fileinfo) != -1 &&
+ S_ISDIR(fileinfo.st_mode));
+
+ free(dirptr);
+
+ return retval;
+}
+
+/* These functions, username_tab_completion(), cwd_tab_completion()
+ * (originally exe_n_cwd_tab_completion()), and input_tab(), were
+ * adapted from busybox 0.46 (cmdedit.c). Here is the notice from that
+ * file, with the copyright years updated:
+ *
+ * Termios command line History and Editting, originally
+ * intended for NetBSD sh (ash)
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ * Main code: Adam Rogoyski <rogoyski@cs.utexas.edu>
+ * Etc: Dave Cinege <dcinege@psychosis.com>
+ * Majorly adjusted/re-written for busybox:
+ * Erik Andersen <andersee@debian.org>
+ *
+ * You may use this code as you wish, so long as the original author(s)
+ * are attributed in any redistributions of the source code.
+ * This code is 'as is' with no warranty.
+ * This code may safely be consumed by a BSD or GPL license. */
+
+/* We consider the first buf_len characters of buf for ~username tab
+ * completion. */
+char **username_tab_completion(const char *buf, size_t *num_matches,
+ size_t buf_len)
+{
+ char **matches = NULL;
+ const struct passwd *userdata;
+
+ assert(buf != NULL && num_matches != NULL && buf_len > 0);
+
+ *num_matches = 0;
+
+ while ((userdata = getpwent()) != NULL) {
+ if (strncmp(userdata->pw_name, buf + 1, buf_len - 1) == 0) {
+ /* Cool, found a match. Add it to the list. This makes a
+ * lot more sense to me (Chris) this way... */
+
+#ifndef DISABLE_OPERATINGDIR
+ /* ...unless the match exists outside the operating
+ * directory, in which case just go to the next match. */
+ if (check_operating_dir(userdata->pw_dir, TRUE))
+ continue;
+#endif
+
+ matches = (char **)nrealloc(matches, (*num_matches + 1) *
+ sizeof(char *));
+ matches[*num_matches] =
+ charalloc(strlen(userdata->pw_name) + 2);
+ sprintf(matches[*num_matches], "~%s", userdata->pw_name);
+ ++(*num_matches);
+ }
+ }
+ endpwent();
+
+ return matches;
+}
+
+/* We consider the first buf_len characters of buf for filename tab
+ * completion. */
+char **cwd_tab_completion(const char *buf, bool allow_files, size_t
+ *num_matches, size_t buf_len)
+{
+ char *dirname = mallocstrcpy(NULL, buf), *filename;
+#ifndef DISABLE_OPERATINGDIR
+ size_t dirnamelen;
+#endif
+ size_t filenamelen;
+ char **matches = NULL;
+ DIR *dir;
+ const struct dirent *nextdir;
+
+ assert(dirname != NULL && num_matches != NULL);
+
+ *num_matches = 0;
+ null_at(&dirname, buf_len);
+
+ /* Okie, if there's a / in the buffer, strip out the directory
+ * part. */
+ filename = strrchr(dirname, '/');
+ if (filename != NULL) {
+ char *tmpdirname = filename + 1;
+
+ filename = mallocstrcpy(NULL, tmpdirname);
+ *tmpdirname = '\0';
+ tmpdirname = dirname;
+ dirname = real_dir_from_tilde(dirname);
+ free(tmpdirname);
+ } else {
+ filename = dirname;
+ dirname = mallocstrcpy(NULL, "./");
+ }
+
+ assert(dirname[strlen(dirname) - 1] == '/');
+
+ dir = opendir(dirname);
+
+ if (dir == NULL) {
+ /* Don't print an error, just shut up and return. */
+ beep();
+ free(filename);
+ free(dirname);
+ return NULL;
+ }
+
+#ifndef DISABLE_OPERATINGDIR
+ dirnamelen = strlen(dirname);
+#endif
+ filenamelen = strlen(filename);
+
+ while ((nextdir = readdir(dir)) != NULL) {
+ bool skip_match = FALSE;
+
+#ifdef DEBUG
+ fprintf(stderr, "Comparing \'%s\'\n", nextdir->d_name);
+#endif
+ /* See if this matches. */
+ if (strncmp(nextdir->d_name, filename, filenamelen) == 0 &&
+ (*filename == '.' || (strcmp(nextdir->d_name, ".") !=
+ 0 && strcmp(nextdir->d_name, "..") != 0))) {
+ /* Cool, found a match. Add it to the list. This makes a
+ * lot more sense to me (Chris) this way... */
+
+ char *tmp = charalloc(strlen(dirname) +
+ strlen(nextdir->d_name) + 1);
+ sprintf(tmp, "%s%s", dirname, nextdir->d_name);
+
+#ifndef DISABLE_OPERATINGDIR
+ /* ...unless the match exists outside the operating
+ * directory, in which case just go to the next match. */
+ if (check_operating_dir(tmp, TRUE))
+ skip_match = TRUE;
+#endif
+
+ /* ...or unless the match isn't a directory and allow_files
+ * isn't set, in which case just go to the next match. */
+ if (!allow_files && !is_dir(tmp))
+ skip_match = TRUE;
+
+ free(tmp);
+
+ if (skip_match)
+ continue;
+
+ matches = (char **)nrealloc(matches, (*num_matches + 1) *
+ sizeof(char *));
+ matches[*num_matches] = mallocstrcpy(NULL, nextdir->d_name);
+ ++(*num_matches);
+ }
+ }
+
+ closedir(dir);
+ free(dirname);
+ free(filename);
+
+ return matches;
+}
+
+/* Do tab completion. place refers to how much the statusbar cursor
+ * position should be advanced. refresh_func is the function we will
+ * call to refresh the edit window. */
+char *input_tab(char *buf, bool allow_files, size_t *place, bool
+ *lastwastab, void (*refresh_func)(void), bool *list)
+{
+ size_t num_matches = 0, buf_len;
+ char **matches = NULL;
+
+ assert(buf != NULL && place != NULL && *place <= strlen(buf) && lastwastab != NULL && refresh_func != NULL && list != NULL);
+
+ *list = FALSE;
+
+ /* If the word starts with `~' and there is no slash in the word,
+ * then try completing this word as a username. */
+ if (*place > 0 && *buf == '~') {
+ const char *bob = strchr(buf, '/');
+
+ if (bob == NULL || bob >= buf + *place)
+ matches = username_tab_completion(buf, &num_matches,
+ *place);
+ }
+
+ /* Match against files relative to the current working directory. */
+ if (matches == NULL)
+ matches = cwd_tab_completion(buf, allow_files, &num_matches,
+ *place);
+
+ buf_len = strlen(buf);
+
+ if (num_matches == 0 || *place != buf_len)
+ beep();
+ else {
+ size_t match, common_len = 0;
+ char *mzero;
+ const char *lastslash = revstrstr(buf, "/", buf + *place);
+ size_t lastslash_len = (lastslash == NULL) ? 0 :
+ lastslash - buf + 1;
+ char *match1_mb = charalloc(mb_cur_max() + 1);
+ char *match2_mb = charalloc(mb_cur_max() + 1);
+ int match1_mb_len, match2_mb_len;
+
+ while (TRUE) {
+ for (match = 1; match < num_matches; match++) {
+ /* Get the number of single-byte characters that all the
+ * matches have in common. */
+ match1_mb_len = parse_mbchar(matches[0] + common_len,
+ match1_mb, NULL);
+ match2_mb_len = parse_mbchar(matches[match] +
+ common_len, match2_mb, NULL);
+ match1_mb[match1_mb_len] = '\0';
+ match2_mb[match2_mb_len] = '\0';
+ if (strcmp(match1_mb, match2_mb) != 0)
+ break;
+ }
+
+ if (match < num_matches || matches[0][common_len] == '\0')
+ break;
+
+ common_len += parse_mbchar(buf + common_len, NULL, NULL);
+ }
+
+ free(match1_mb);
+ free(match2_mb);
+
+ mzero = charalloc(lastslash_len + common_len + 1);
+
+ strncpy(mzero, buf, lastslash_len);
+ strncpy(mzero + lastslash_len, matches[0], common_len);
+
+ common_len += lastslash_len;
+ mzero[common_len] = '\0';
+
+ assert(common_len >= *place);
+
+ if (num_matches == 1 && is_dir(mzero)) {
+ mzero[common_len++] = '/';
+
+ assert(common_len > *place);
+ }
+
+ if (num_matches > 1 && (common_len != *place || !*lastwastab))
+ beep();
+
+ /* If there is more of a match to display on the statusbar, show
+ * it. We reset lastwastab to FALSE: it requires pressing Tab
+ * twice in succession with no statusbar changes to see a match
+ * list. */
+ if (common_len != *place) {
+ *lastwastab = FALSE;
+ buf = charealloc(buf, common_len + buf_len - *place + 1);
+ charmove(buf + common_len, buf + *place, buf_len -
+ *place + 1);
+ strncpy(buf, mzero, common_len);
+ *place = common_len;
+ } else if (!*lastwastab || num_matches < 2)
+ *lastwastab = TRUE;
+ else {
+ int longest_name = 0, ncols, editline = 0;
+
+ /* Now we show a list of the available choices. */
+ assert(num_matches > 1);
+
+ /* Sort the list. */
+ qsort(matches, num_matches, sizeof(char *), diralphasort);
+
+ for (match = 0; match < num_matches; match++) {
+ common_len = strnlenpt(matches[match], COLS - 1);
+
+ if (common_len > COLS - 1) {
+ longest_name = COLS - 1;
+ break;
+ }
+
+ if (common_len > longest_name)
+ longest_name = common_len;
+ }
+
+ assert(longest_name <= COLS - 1);
+
+ /* Each column will be (longest_name + 2) columns wide, i.e.
+ * two spaces between columns, except that there will be
+ * only one space after the last column. */
+ ncols = (COLS + 1) / (longest_name + 2);
+
+ /* Blank the edit window, and print the matches out
+ * there. */
+ blank_edit();
+ wmove(edit, 0, 0);
+
+ /* Disable el cursor. */
+ curs_set(0);
+
+ for (match = 0; match < num_matches; match++) {
+ char *disp;
+
+ wmove(edit, editline, (longest_name + 2) *
+ (match % ncols));
+
+ if (match % ncols == 0 &&
+ editline == editwinrows - 1 &&
+ num_matches - match > ncols) {
+ waddstr(edit, _("(more)"));
+ break;
+ }
+
+ disp = display_string(matches[match], 0, longest_name,
+ FALSE);
+ waddstr(edit, disp);
+ free(disp);
+
+ if ((match + 1) % ncols == 0)
+ editline++;
+ }
+
+ wnoutrefresh(edit);
+ *list = TRUE;
+ }
+
+ free(mzero);
+ }
+
+ free_chararray(matches, num_matches);
+
+ /* Only refresh the edit window if we don't have a list of filename
+ * matches on it. */
+ if (!*list)
+ refresh_func();
+
+ /* Enable el cursor. */
+ curs_set(1);
+
+ return buf;
+}
+#endif /* !DISABLE_TABCOMP */
+
+/* Only print the last part of a path. Isn't there a shell command for
+ * this? */
+const char *tail(const char *foo)
+{
+ const char *tmp = strrchr(foo, '/');
+
+ if (tmp == NULL)
+ tmp = foo;
+ else
+ tmp++;
+
+ return tmp;
+}
+
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+/* Return $HOME/.nano_history, or NULL if we can't find the home
+ * directory. The string is dynamically allocated, and should be
+ * freed. */
+char *histfilename(void)
+{
+ char *nanohist = NULL;
+
+ if (homedir != NULL) {
+ size_t homelen = strlen(homedir);
+
+ nanohist = charalloc(homelen + 15);
+ strcpy(nanohist, homedir);
+ strcpy(nanohist + homelen, "/.nano_history");
+ }
+
+ return nanohist;
+}
+
+/* Load histories from ~/.nano_history. */
+void load_history(void)
+{
+ char *nanohist = histfilename();
+
+ /* Assume do_rcfile() has reported a missing home directory. */
+ if (nanohist != NULL) {
+ FILE *hist = fopen(nanohist, "rb");
+
+ if (hist == NULL) {
+ if (errno != ENOENT) {
+ /* Don't save history when we quit. */
+ UNSET(HISTORYLOG);
+ rcfile_error(N_("Error reading %s: %s"), nanohist,
+ strerror(errno));
+ fprintf(stderr,
+ _("\nPress Enter to continue starting nano.\n"));
+ while (getchar() != '\n')
+ ;
+ }
+ } else {
+ /* Load a history list (first the search history, then the
+ * replace history) from the oldest entry to the newest.
+ * Assume the last history entry is a blank line. */
+ filestruct **history = &search_history;
+ char *line = NULL;
+ size_t buf_len = 0;
+ ssize_t read;
+
+ while ((read = getline(&line, &buf_len, hist)) >= 0) {
+ if (read > 0 && line[read - 1] == '\n') {
+ read--;
+ line[read] = '\0';
+ }
+ if (read > 0) {
+ unsunder(line, read);
+ update_history(history, line);
+ } else
+ history = &replace_history;
+ }
+
+ fclose(hist);
+ free(line);
+ }
+ free(nanohist);
+ }
+}
+
+/* Write the lines of a history list, starting with the line at h, to
+ * the open file at hist. Return TRUE if the write succeeded, and FALSE
+ * otherwise. */
+bool writehist(FILE *hist, filestruct *h)
+{
+ filestruct *p;
+
+ /* Write a history list from the oldest entry to the newest. Assume
+ * the last history entry is a blank line. */
+ for (p = h; p != NULL; p = p->next) {
+ size_t p_len = strlen(p->data);
+
+ sunder(p->data);
+
+ if (fwrite(p->data, sizeof(char), p_len, hist) < p_len ||
+ putc('\n', hist) == EOF)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Save histories to ~/.nano_history. */
+void save_history(void)
+{
+ char *nanohist;
+
+ /* Don't save unchanged or empty histories. */
+ if (!history_has_changed() || (searchbot->lineno == 1 &&
+ replacebot->lineno == 1))
+ return;
+
+ nanohist = histfilename();
+
+ if (nanohist != NULL) {
+ FILE *hist = fopen(nanohist, "wb");
+
+ if (hist == NULL)
+ rcfile_error(N_("Error writing %s: %s"), nanohist,
+ strerror(errno));
+ else {
+ /* Make sure no one else can read from or write to the
+ * history file. */
+ chmod(nanohist, S_IRUSR | S_IWUSR);
+
+ if (!writehist(hist, searchage) || !writehist(hist,
+ replaceage))
+ rcfile_error(N_("Error writing %s: %s"), nanohist,
+ strerror(errno));
+
+ fclose(hist);
+ }
+
+ free(nanohist);
+ }
+}
+#endif /* !NANO_TINY && ENABLE_NANORC */
diff --git a/src/global.c b/src/global.c
new file mode 100644
index 0000000..ae14a49
--- /dev/null
+++ b/src/global.c
@@ -0,0 +1,1800 @@
+/* $Id: global.c 4520 2010-11-12 06:23:14Z astyanax $ */
+/**************************************************************************
+ * global.c *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <ctype.h>
+#include <string.h>
+#include <strings.h>
+#include "assert.h"
+
+/* Global variables. */
+#ifndef NANO_TINY
+sigjmp_buf jump_buf;
+ /* Used to return to either main() or the unjustify routine in
+ * do_justify() after a SIGWINCH. */
+bool jump_buf_main = FALSE;
+ /* Have we set jump_buf so that we return to main() after a
+ * SIGWINCH? */
+#endif
+
+#ifndef DISABLE_WRAPJUSTIFY
+ssize_t fill = 0;
+ /* The column where we will wrap lines. */
+ssize_t wrap_at = -CHARS_FROM_EOL;
+ /* The position where we will wrap lines. fill is equal to this
+ * if it's greater than zero, and equal to (COLS + this) if it
+ * isn't. */
+#endif
+
+char *last_search = NULL;
+ /* The last string we searched for. */
+char *last_replace = NULL;
+ /* The last replacement string we searched for. */
+
+unsigned flags[4] = {0, 0, 0, 0};
+ /* Our flag containing the states of all global options. */
+WINDOW *topwin;
+ /* The top portion of the window, where we display the version
+ * number of nano, the name of the current file, and whether the
+ * current file has been modified. */
+WINDOW *edit;
+ /* The middle portion of the window, i.e. the edit window, where
+ * we display the current file we're editing. */
+WINDOW *bottomwin;
+ /* The bottom portion of the window, where we display statusbar
+ * messages, the statusbar prompt, and a list of shortcuts. */
+int editwinrows = 0;
+ /* How many rows does the edit window take up? */
+int maxrows = 0;
+ /* How many usable lines are there (due to soft wrapping) */
+
+filestruct *cutbuffer = NULL;
+ /* The buffer where we store cut text. */
+filestruct *cutbottom = NULL;
+#ifndef DISABLE_JUSTIFY
+filestruct *jusbuffer = NULL;
+ /* The buffer where we store unjustified text. */
+#endif
+partition *filepart = NULL;
+ /* The partition where we store a portion of the current
+ * file. */
+openfilestruct *openfile = NULL;
+ /* The list of all open file buffers. */
+
+#ifndef NANO_TINY
+char *matchbrackets = NULL;
+ /* The opening and closing brackets that can be found by bracket
+ * searches. */
+#endif
+
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+char *whitespace = NULL;
+ /* The characters used when displaying the first characters of
+ * tabs and spaces. */
+int whitespace_len[2];
+ /* The length of these characters. */
+#endif
+
+#ifndef DISABLE_JUSTIFY
+char *punct = NULL;
+ /* The closing punctuation that can end sentences. */
+char *brackets = NULL;
+ /* The closing brackets that can follow closing punctuation and
+ * can end sentences. */
+char *quotestr = NULL;
+ /* The quoting string. The default value is set in main(). */
+#ifdef HAVE_REGEX_H
+regex_t quotereg;
+ /* The compiled regular expression from the quoting string. */
+int quoterc;
+ /* Whether it was compiled successfully. */
+char *quoteerr = NULL;
+ /* The error message, if it didn't. */
+#else
+size_t quotelen;
+ /* The length of the quoting string in bytes. */
+#endif
+#endif
+
+bool nodelay_mode = FALSE;
+ /* Are we in nodelay mode (checking for a cancel wile doing something */
+
+char *answer = NULL;
+ /* The answer string used by the statusbar prompt. */
+
+ssize_t tabsize = -1;
+ /* The width of a tab in spaces. The default value is set in
+ * main(). */
+
+#ifndef NANO_TINY
+char *backup_dir = NULL;
+ /* The directory where we store backup files. */
+#endif
+#ifndef DISABLE_OPERATINGDIR
+char *operating_dir = NULL;
+ /* The relative path to the operating directory, which we can't
+ * move outside of. */
+char *full_operating_dir = NULL;
+ /* The full path to it. */
+#endif
+
+#ifndef DISABLE_SPELLER
+char *alt_speller = NULL;
+ /* The command to use for the alternate spell checker. */
+#endif
+
+#ifdef ENABLE_COLOR
+syntaxtype *syntaxes = NULL;
+ /* The global list of color syntaxes. */
+char *syntaxstr = NULL;
+ /* The color syntax name specified on the command line. */
+
+#endif
+
+bool edit_refresh_needed = NULL;
+ /* Did a command mangle enough of the buffer refresh that we
+ should repaint the screen */
+
+const shortcut *currshortcut;
+ /* The current shortcut list we're using. */
+int currmenu;
+ /* The currently loaded menu */
+
+sc *sclist = NULL;
+ /* New shortcut key struct */
+subnfunc *allfuncs = NULL;
+ /* New struct for the function list */
+
+#ifndef NANO_TINY
+filestruct *search_history = NULL;
+ /* The search string history list. */
+filestruct *searchage = NULL;
+ /* The top of the search string history list. */
+filestruct *searchbot = NULL;
+ /* The bottom of the search string history list. */
+filestruct *replace_history = NULL;
+ /* The replace string history list. */
+filestruct *replaceage = NULL;
+ /* The top of the replace string history list. */
+filestruct *replacebot = NULL;
+ /* The bottom of the replace string history list. */
+#endif
+
+/* Regular expressions. */
+#ifdef HAVE_REGEX_H
+regex_t search_regexp;
+ /* The compiled regular expression to use in searches. */
+regmatch_t regmatches[10];
+ /* The match positions for parenthetical subexpressions, 10
+ * maximum, used in regular expression searches. */
+#endif
+
+int reverse_attr = A_REVERSE;
+ /* The curses attribute we use for reverse video. */
+
+char *homedir = NULL;
+ /* The user's home directory, from $HOME or /etc/passwd. */
+
+/* Return the number of entries in the shortcut list s for a given menu. */
+size_t length_of_list(int menu)
+{
+ subnfunc *f;
+ size_t i = 0;
+
+ for (f = allfuncs; f != NULL; f = f->next)
+ if ((f->menus & menu) != 0
+#ifndef DISABLE_HELP
+ && strlen(f->help) > 0
+#endif
+ ) {
+ i++;
+ }
+ return i;
+}
+
+/* Set type of function based on the string */
+function_type strtokeytype(const char *str)
+{
+ if (str[0] == 'M' || str[0] == 'm')
+ return META;
+ else if (str[0] == '^')
+ return CONTROL;
+ else if (str[0] == 'F' || str[0] == 'F')
+ return FKEY;
+ else
+ return RAW;
+}
+
+/* Add a string to the new function list strict.
+ Does not allow updates, yet anyway */
+void add_to_funcs(short func, int menus, const char *desc, const char *help,
+ bool blank_after, bool viewok)
+{
+ subnfunc *f;
+
+ if (allfuncs == NULL) {
+ allfuncs = (subnfunc *) nmalloc(sizeof(subnfunc));
+ f = allfuncs;
+ } else {
+ for (f = allfuncs; f->next != NULL; f = f->next)
+ ;
+ f->next = (subnfunc *)nmalloc(sizeof(subnfunc));
+ f = f->next;
+ }
+ f->next = NULL;
+ f->scfunc = func;
+ f->menus = menus;
+ f->desc = desc;
+ f->viewok = viewok;
+#ifndef DISABLE_HELP
+ f->help = help;
+ f->blank_after = blank_after;
+#endif
+
+#ifdef DEBUG
+ fprintf(stderr, "Added func \"%s\"", f->desc);
+#endif
+}
+
+const sc *first_sc_for(int menu, short func) {
+ const sc *s;
+ const sc *metasc = NULL;
+
+ for (s = sclist; s != NULL; s = s->next) {
+ if ((s->menu & menu) && s->scfunc == func) {
+ /* try to use a meta sequence as a last resort. Otherwise
+ we will run into problems when we try and handle things like
+ the arrow keys, home, etc, if for some reason the user bound
+ them to a meta sequence first *shrug* */
+ if (s->type == META) {
+ metasc = s;
+ continue;
+ } /* otherwise it was something else, use it */
+ return s;
+ }
+ }
+
+ /* If we're here we may have found only meta sequences, if so use one */
+ if (metasc)
+ return metasc;
+
+#ifdef DEBUG
+ fprintf(stderr, "Whoops, returning null given func %ld in menu %d\n", (long) func, menu);
+#endif
+ /* Otherwise... */
+ return NULL;
+}
+
+
+/* Add a string to the new shortcut list implementation
+ Allows updates to existing entries in the list */
+void add_to_sclist(int menu, const char *scstring, short func, int toggle, int execute)
+{
+ sc *s;
+
+ if (sclist == NULL) {
+ sclist = (sc *) nmalloc(sizeof(sc));
+ s = sclist;
+ s->next = NULL;
+ } else {
+ for (s = sclist; s->next != NULL; s = s->next)
+ if (s->menu == menu && s->keystr == scstring)
+ break;
+
+ if (s->menu != menu || s->keystr != scstring) { /* i.e. this is not a replace... */
+#ifdef DEBUG
+ fprintf(stderr, "No match found...\n");
+#endif
+ s->next = (sc *)nmalloc(sizeof(sc));
+ s = s->next;
+ s->next = NULL;
+ }
+ }
+
+ s->type = strtokeytype(scstring);
+ s->menu = menu;
+ s->toggle = toggle;
+ s->keystr = (char *) scstring;
+ s->scfunc = func;
+ s->execute = execute;
+ assign_keyinfo(s);
+
+#ifdef DEBUG
+ fprintf(stderr, "list val = %d\n", (int) s->menu);
+ fprintf(stderr, "Hey, set sequence to %d for shortcut \"%s\"\n", s->seq, scstring);
+#endif
+}
+
+/* Return the given menu's first shortcut sequence, or the default value
+ (2nd arg). Assumes currmenu for the menu to check*/
+int sc_seq_or (short func, int defaultval)
+{
+ const sc *s = first_sc_for(currmenu, func);
+
+ if (s)
+ return s->seq;
+ /* else */
+ return defaultval;
+
+}
+
+/* Assign the info to the shortcut struct
+ Assumes keystr is already assigned, naturally */
+void assign_keyinfo(sc *s)
+{
+ if (s->type == CONTROL) {
+ assert(strlen(s->keystr) > 1);
+ s->seq = s->keystr[1] - 64;
+ } else if (s->type == META) {
+ assert(strlen(s->keystr) > 2);
+ s->seq = tolower((int) s->keystr[2]);
+ } else if (s->type == FKEY) {
+ assert(strlen(s->keystr) > 1);
+ s->seq = KEY_F0 + atoi(&s->keystr[1]);
+ } else /* raw */
+ s->seq = (int) s->keystr[0];
+
+ /* Override some keys which don't bind as nicely as we'd like */
+ if (s->type == CONTROL && (!strcasecmp(&s->keystr[1], "space")))
+ s->seq = 0;
+ else if (s->type == META && (!strcasecmp(&s->keystr[2], "space")))
+ s->seq = (int) ' ';
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "kup")))
+ s->seq = KEY_UP;
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "kdown")))
+ s->seq = KEY_DOWN;
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "kleft")))
+ s->seq = KEY_LEFT;
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "kright")))
+ s->seq = KEY_RIGHT;
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "kinsert")))
+ s->seq = KEY_IC;
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "kdel")))
+ s->seq = KEY_DC;
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "kbsp")))
+ s->seq = KEY_BACKSPACE;
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "kenter")))
+ s->seq = KEY_ENTER;
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "kpup")))
+ s->seq = KEY_PPAGE;
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "kpdown")))
+ s->seq = KEY_NPAGE;
+#ifdef KEY_HOME
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "khome")))
+ s->seq = KEY_HOME;
+#endif
+#ifdef KEY_END
+ else if (s->type == RAW && (!strcasecmp(s->keystr, "kend")))
+ s->seq = KEY_END;
+#endif
+
+}
+
+#ifdef DEBUG
+
+void print_sclist(void)
+{
+ sc *s;
+ const subnfunc *f;
+
+ for (s = sclist; s->next != NULL; s = s->next) {
+ f = sctofunc(s);
+ if (f)
+ fprintf(stderr, "Shortcut \"%s\", function: %s, menus %d\n", s->keystr, f->desc, f->menus);
+ else
+ fprintf(stderr, "Hmm, didnt find a func for \"%s\"\n", s->keystr);
+ }
+
+}
+#endif
+
+
+/* Stuff we need to make at least static here so we can access it below */
+/* TRANSLATORS: Try to keep the next five strings at most 10 characters. */
+const char *cancel_msg = N_("Cancel");
+const char *replace_msg = N_("Replace");
+const char *no_replace_msg = N_("No Replace");
+
+#ifndef NANO_TINY
+const char *case_sens_msg = N_("Case Sens");
+const char *backwards_msg = N_("Backwards");
+#endif
+
+#ifdef HAVE_REGEX_H
+const char *regexp_msg = N_("Regexp");
+#endif
+
+/* Stuff we want to just stun out if we're in TINY mode */
+#ifdef NANO_TINY
+const char *gototext_msg = "";
+const char *do_para_begin_msg = "";
+const char *do_para_end_msg = "";
+const char *case_sens_msg = "";
+const char *backwards_msg = "";
+const char *do_cut_till_end = "";
+const char *dos_format_msg = "";
+const char *mac_format_msg = "";
+const char *append_msg = "";
+const char *prepend_msg = "";
+const char *backup_file_msg = "";
+const char *to_files_msg = "";
+const char *first_file_msg = "";
+const char *whereis_next_msg = "";
+const char *last_file_msg = "";
+const char *new_buffer_msg = "";
+const char *goto_dir_msg;
+const char *ext_cmd_msg = "";
+
+#else
+/* TRANSLATORS: Try to keep the next five strings at most 10 characters. */
+const char *prev_history_msg = N_("PrevHstory");
+const char *next_history_msg = N_("NextHstory");
+const char *gototext_msg = N_("Go To Text");
+/* TRANSLATORS: Try to keep the next three strings at most 12 characters. */
+const char *whereis_next_msg = N_("WhereIs Next");
+#ifndef DISABLE_BROWSER
+const char *first_file_msg = N_("First File");
+const char *last_file_msg = N_("Last File");
+/* TRANSLATORS: Try to keep the next nine strings at most 16 characters. */
+const char *to_files_msg = N_("To Files");
+#endif
+const char *dos_format_msg = N_("DOS Format");
+const char *mac_format_msg = N_("Mac Format");
+const char *append_msg = N_("Append");
+const char *prepend_msg = N_("Prepend");
+const char *backup_file_msg = N_("Backup File");
+const char *ext_cmd_msg = N_("Execute Command");
+#ifdef ENABLE_MULTIBUFFER
+const char *new_buffer_msg = N_("New Buffer");
+#endif
+const char *goto_dir_msg = N_("Go To Dir");
+
+#endif /* NANO_TINY */
+
+/* Initialize all shortcut lists. If unjustify is TRUE, replace the
+ * Uncut shortcut in the main shortcut list with UnJustify. */
+void shortcut_init(bool unjustify)
+{
+ /* TRANSLATORS: Try to keep the following strings at most 10 characters. */
+ const char *get_help_msg = N_("Get Help");
+ const char *exit_msg = N_("Exit");
+ const char *whereis_msg = N_("Where Is");
+ const char *prev_page_msg = N_("Prev Page");
+ const char *next_page_msg = N_("Next Page");
+ const char *first_line_msg = N_("First Line");
+ const char *last_line_msg = N_("Last Line");
+ const char *suspend_msg = N_("Suspend");
+#ifndef DISABLE_JUSTIFY
+ const char *beg_of_par_msg = N_("Beg of Par");
+ const char *end_of_par_msg = N_("End of Par");
+ const char *fulljstify_msg = N_("FullJstify");
+#endif
+ const char *refresh_msg = N_("Refresh");
+#ifndef NANO_TINY
+ const char *insert_file_msg = N_("Insert File");
+#endif
+ const char *go_to_line_msg = N_("Go To Line");
+
+#ifndef DISABLE_JUSTIFY
+ const char *nano_justify_msg = N_("Justify the current paragraph");
+#endif
+#ifndef DISABLE_HELP
+ /* TRANSLATORS: The next long series of strings are shortcut descriptions;
+ * they are best kept shorter than 56 characters, but may be longer. */
+ const char *nano_cancel_msg = N_("Cancel the current function");
+ const char *nano_help_msg = N_("Display this help text");
+ const char *nano_exit_msg =
+#ifdef ENABLE_MULTIBUFFER
+ N_("Close the current file buffer / Exit from nano")
+#else
+ N_("Exit from nano")
+#endif
+ ;
+ const char *nano_writeout_msg =
+ N_("Write the current file to disk");
+ const char *nano_insert_msg =
+ N_("Insert another file into the current one");
+ const char *nano_whereis_msg =
+ N_("Search for a string or a regular expression");
+ const char *nano_prevpage_msg = N_("Go to previous screen");
+ const char *nano_nextpage_msg = N_("Go to next screen");
+ const char *nano_cut_msg =
+ N_("Cut the current line and store it in the cutbuffer");
+ const char *nano_uncut_msg =
+ N_("Uncut from the cutbuffer into the current line");
+ const char *nano_cursorpos_msg =
+ N_("Display the position of the cursor");
+ const char *nano_spell_msg =
+ N_("Invoke the spell checker, if available");
+ const char *nano_replace_msg =
+ N_("Replace a string or a regular expression");
+ const char *nano_gotoline_msg = N_("Go to line and column number");
+#ifndef NANO_TINY
+ const char *nano_mark_msg = N_("Mark text at the cursor position");
+ const char *nano_whereis_next_msg = N_("Repeat last search");
+ const char *nano_copy_msg =
+ N_("Copy the current line and store it in the cutbuffer");
+ const char *nano_indent_msg = N_("Indent the current line");
+ const char *nano_unindent_msg = N_("Unindent the current line");
+ const char *nano_undo_msg = N_("Undo the last operation");
+ const char *nano_redo_msg = N_("Redo the last undone operation");
+#endif
+ const char *nano_forward_msg = N_("Go forward one character");
+ const char *nano_back_msg = N_("Go back one character");
+#ifndef NANO_TINY
+ const char *nano_nextword_msg = N_("Go forward one word");
+ const char *nano_prevword_msg = N_("Go back one word");
+#endif
+ const char *nano_prevline_msg = N_("Go to previous line");
+ const char *nano_nextline_msg = N_("Go to next line");
+ const char *nano_home_msg = N_("Go to beginning of current line");
+ const char *nano_end_msg = N_("Go to end of current line");
+#ifndef DISABLE_JUSTIFY
+ const char *nano_parabegin_msg =
+ N_("Go to beginning of paragraph; then of previous paragraph");
+ const char *nano_paraend_msg =
+ N_("Go just beyond end of paragraph; then of next paragraph");
+#endif
+ const char *nano_firstline_msg =
+ N_("Go to the first line of the file");
+ const char *nano_lastline_msg =
+ N_("Go to the last line of the file");
+#ifndef NANO_TINY
+ const char *nano_bracket_msg = N_("Go to the matching bracket");
+ const char *nano_scrollup_msg =
+ N_("Scroll up one line without scrolling the cursor");
+ const char *nano_scrolldown_msg =
+ N_("Scroll down one line without scrolling the cursor");
+#endif
+#ifdef ENABLE_MULTIBUFFER
+ const char *nano_prevfile_msg =
+ N_("Switch to the previous file buffer");
+ const char *nano_nextfile_msg =
+ N_("Switch to the next file buffer");
+#endif
+ const char *nano_verbatim_msg =
+ N_("Insert the next keystroke verbatim");
+ const char *nano_tab_msg =
+ N_("Insert a tab at the cursor position");
+ const char *nano_enter_msg =
+ N_("Insert a newline at the cursor position");
+ const char *nano_delete_msg =
+ N_("Delete the character under the cursor");
+ const char *nano_backspace_msg =
+ N_("Delete the character to the left of the cursor");
+#ifndef NANO_TINY
+ const char *nano_cut_till_end_msg =
+ N_("Cut from the cursor position to the end of the file");
+#endif
+#ifndef DISABLE_JUSTIFY
+ const char *nano_fulljustify_msg = N_("Justify the entire file");
+#endif
+#ifndef NANO_TINY
+ const char *nano_wordcount_msg =
+ N_("Count the number of words, lines, and characters");
+#endif
+ const char *nano_refresh_msg =
+ N_("Refresh (redraw) the current screen");
+ const char *nano_suspend_msg =
+ N_("Suspend the editor (if suspend is enabled)");
+#ifndef NANO_TINY
+ const char *nano_case_msg =
+ N_("Toggle the case sensitivity of the search");
+ const char *nano_reverse_msg =
+ N_("Reverse the direction of the search");
+#endif
+#ifdef HAVE_REGEX_H
+ const char *nano_regexp_msg =
+ N_("Toggle the use of regular expressions");
+#endif
+#ifndef NANO_TINY
+ const char *nano_prev_history_msg =
+ N_("Recall the previous search/replace string");
+ const char *nano_next_history_msg =
+ N_("Recall the next search/replace string");
+#endif
+#ifndef DISABLE_BROWSER
+ const char *nano_tofiles_msg = N_("Go to file browser");
+#endif
+#ifndef NANO_TINY
+ const char *nano_dos_msg = N_("Toggle the use of DOS format");
+ const char *nano_mac_msg = N_("Toggle the use of Mac format");
+#endif
+ const char *nano_append_msg = N_("Toggle appending");
+ const char *nano_prepend_msg = N_("Toggle prepending");
+#ifndef NANO_TINY
+ const char *nano_backup_msg =
+ N_("Toggle backing up of the original file");
+ const char *nano_execute_msg = N_("Execute external command");
+#endif
+#if !defined(NANO_TINY) && defined(ENABLE_MULTIBUFFER)
+ const char *nano_multibuffer_msg =
+ N_("Toggle the use of a new buffer");
+#endif
+#ifndef DISABLE_BROWSER
+ const char *nano_exitbrowser_msg = N_("Exit from the file browser");
+ const char *nano_firstfile_msg =
+ N_("Go to the first file in the list");
+ const char *nano_lastfile_msg =
+ N_("Go to the last file in the list");
+ const char *nano_forwardfile_msg = N_("Go to the next file in the list");
+ const char *nano_backfile_msg = N_("Go to the previous file in the list");
+ const char *nano_gotodir_msg = N_("Go to directory");
+#endif
+#endif /* !DISABLE_HELP */
+
+#ifndef DISABLE_HELP
+#define IFSCHELP(help) help
+#else
+#define IFSCHELP(help) ""
+#endif
+
+ while (allfuncs != NULL) {
+ subnfunc *f = allfuncs;
+ allfuncs = (allfuncs)->next;
+ free(f);
+ }
+
+ add_to_funcs(DO_HELP_VOID,
+ (MMAIN|MWHEREIS|MREPLACE|MREPLACE2|MGOTOLINE|MWRITEFILE|MINSERTFILE|MEXTCMD|MSPELL|MBROWSER|MWHEREISFILE|MGOTODIR),
+ get_help_msg, IFSCHELP(nano_help_msg), FALSE, VIEW);
+
+ add_to_funcs( CANCEL_MSG,
+ (MWHEREIS|MREPLACE|MREPLACE2|MGOTOLINE|MWRITEFILE|MINSERTFILE|MEXTCMD|MSPELL|MWHEREISFILE|MGOTODIR|MYESNO),
+ cancel_msg, IFSCHELP(nano_cancel_msg), FALSE, VIEW);
+
+ add_to_funcs(DO_EXIT, MMAIN,
+#ifdef ENABLE_MULTIBUFFER
+ /* TRANSLATORS: Try to keep this at most 10 characters. */
+ openfile != NULL && openfile != openfile->next ? N_("Close") :
+#endif
+ exit_msg, IFSCHELP(nano_exit_msg), FALSE, VIEW);
+
+#ifndef DISABLE_BROWSER
+ add_to_funcs(DO_EXIT, MBROWSER, exit_msg, IFSCHELP(nano_exitbrowser_msg), FALSE, VIEW);
+#endif
+
+ /* TRANSLATORS: Try to keep this at most 10 characters. */
+ add_to_funcs(DO_WRITEOUT_VOID, MMAIN, N_("WriteOut"),
+ IFSCHELP(nano_writeout_msg), FALSE, NOVIEW);
+
+#ifndef DISABLE_JUSTIFY
+ /* TRANSLATORS: Try to keep this at most 10 characters. */
+ add_to_funcs(DO_JUSTIFY_VOID, MMAIN, N_("Justify"),
+ nano_justify_msg, TRUE, NOVIEW);
+#endif
+
+ /* We allow inserting files in view mode if multibuffers are
+ * available, so that we can view multiple files. If we're using
+ * restricted mode, inserting files is disabled, since it allows
+ * reading from or writing to files not specified on the command
+ * line. */
+
+ add_to_funcs(DO_INSERTFILE_VOID,
+ /* TRANSLATORS: Try to keep this at most 10 characters. */
+ MMAIN, N_("Read File"), IFSCHELP(nano_insert_msg), FALSE,
+#ifdef ENABLE_MULTIBUFFER
+ VIEW);
+#else
+ NOVIEW);
+#endif
+
+ add_to_funcs(DO_SEARCH, MMAIN|MBROWSER, whereis_msg,
+ IFSCHELP(nano_whereis_msg), FALSE, VIEW);
+
+ add_to_funcs(DO_PAGE_UP, MMAIN|MHELP|MBROWSER,
+ prev_page_msg, IFSCHELP(nano_prevpage_msg), FALSE, VIEW);
+ add_to_funcs(DO_PAGE_DOWN, MMAIN|MHELP|MBROWSER,
+ next_page_msg, IFSCHELP(nano_nextpage_msg), TRUE, VIEW);
+
+
+ /* TRANSLATORS: Try to keep this at most 10 characters. */
+ add_to_funcs(DO_CUT_TEXT_VOID, MMAIN, N_("Cut Text"), IFSCHELP(nano_cut_msg),
+ FALSE, NOVIEW);
+
+ if (unjustify)
+ /* TRANSLATORS: Try to keep this at most 10 characters. */
+ add_to_funcs(DO_UNCUT_TEXT, MMAIN, N_("UnJustify"), "",
+ FALSE, NOVIEW);
+
+ else
+ /* TRANSLATORS: Try to keep this at most 10 characters. */
+ add_to_funcs(DO_UNCUT_TEXT, MMAIN, N_("UnCut Text"), IFSCHELP(nano_uncut_msg),
+ FALSE, NOVIEW);
+
+#ifndef NANO_TINY
+ /* TRANSLATORS: Try to keep this at most 10 characters. */
+ add_to_funcs(DO_CURSORPOS_VOID, MMAIN, N_("Cur Pos"), IFSCHELP(nano_cursorpos_msg),
+ FALSE, VIEW);
+#endif
+
+ /* If we're using restricted mode, spell checking is disabled
+ * because it allows reading from or writing to files not specified
+ * on the command line. */
+#ifndef DISABLE_SPELLER
+ /* TRANSLATORS: Try to keep this at most 10 characters. */
+ add_to_funcs(DO_SPELL, MMAIN, N_("To Spell"), IFSCHELP(nano_spell_msg),
+ TRUE, NOVIEW);
+#endif
+
+ add_to_funcs(DO_FIRST_LINE,
+ (MMAIN|MWHEREIS|MREPLACE|MREPLACE2|MGOTOLINE),
+ first_line_msg, IFSCHELP(nano_firstline_msg), FALSE, VIEW);
+
+ add_to_funcs(DO_LAST_LINE,
+ (MMAIN|MWHEREIS|MREPLACE|MREPLACE2|MGOTOLINE),
+ last_line_msg, IFSCHELP(nano_lastline_msg), TRUE, VIEW);
+
+
+ add_to_funcs(DO_GOTOLINECOLUMN_VOID, (MMAIN|MWHEREIS),
+ go_to_line_msg, IFSCHELP(nano_gotoline_msg), FALSE, VIEW);
+
+#ifdef NANO_TINY
+ /* TRANSLATORS: Try to keep this at most 10 characters. */
+ add_to_funcs(DO_CURSORPOS_VOID, MMAIN, N_("Cur Pos"), IFSCHELP(nano_cursorpos_msg),
+ FALSE, VIEW);
+#endif
+
+
+ add_to_funcs(DO_REPLACE, (MMAIN|MWHEREIS), replace_msg, IFSCHELP(nano_replace_msg),
+
+#ifndef NANO_TINY
+ FALSE,
+#else
+ TRUE,
+#endif
+ NOVIEW);
+
+#ifndef NANO_TINY
+
+ add_to_funcs(DO_MARK, MMAIN, N_("Mark Text"),
+ IFSCHELP(nano_mark_msg), FALSE, VIEW);
+
+ add_to_funcs(DO_RESEARCH, (MMAIN|MBROWSER), whereis_next_msg,
+ IFSCHELP(nano_whereis_next_msg), TRUE, VIEW);
+
+ add_to_funcs(DO_COPY_TEXT, MMAIN, N_("Copy Text"),
+ IFSCHELP(nano_copy_msg), FALSE, NOVIEW);
+
+ add_to_funcs(DO_INDENT_VOID, MMAIN, N_("Indent Text"),
+ IFSCHELP(nano_indent_msg), FALSE, NOVIEW);
+
+ add_to_funcs(DO_UNINDENT, MMAIN, N_("Unindent Text"),
+ IFSCHELP(nano_unindent_msg), FALSE, NOVIEW);
+
+ if (ISSET(UNDOABLE)) {
+ add_to_funcs(DO_UNDO, MMAIN, N_("Undo"),
+ IFSCHELP(nano_undo_msg), FALSE, NOVIEW);
+
+ add_to_funcs(DO_REDO, MMAIN, N_("Redo"),
+ IFSCHELP(nano_redo_msg), TRUE, NOVIEW);
+ }
+
+#endif
+
+ add_to_funcs(DO_RIGHT, MMAIN, N_("Forward"), IFSCHELP(nano_forward_msg),
+ FALSE, VIEW);
+
+#ifndef DISABLE_BROWSER
+ add_to_funcs(DO_RIGHT, MBROWSER, N_("Forward"), IFSCHELP(nano_forwardfile_msg),
+ FALSE, VIEW);
+#endif
+
+ add_to_funcs(DO_RIGHT, MALL, "", "", FALSE, VIEW);
+
+ add_to_funcs(DO_LEFT, MMAIN, N_("Back"), IFSCHELP(nano_back_msg),
+ FALSE, VIEW);
+
+#ifndef DISABLE_BROWSER
+ add_to_funcs(DO_LEFT, MBROWSER, N_("Back"), IFSCHELP(nano_backfile_msg),
+ FALSE, VIEW);
+#endif
+
+ add_to_funcs(DO_LEFT, MALL, "", "", FALSE, VIEW);
+
+#ifndef NANO_TINY
+ add_to_funcs(DO_NEXT_WORD_VOID, MMAIN, N_("Next Word"),
+ IFSCHELP(nano_nextword_msg), FALSE, VIEW);
+
+ add_to_funcs(DO_PREV_WORD_VOID, MMAIN, N_("Prev Word"),
+ IFSCHELP(nano_prevword_msg), FALSE, VIEW);
+#endif
+
+ add_to_funcs(DO_UP_VOID, (MMAIN|MHELP|MBROWSER), N_("Prev Line"),
+ IFSCHELP(nano_prevline_msg), FALSE, VIEW);
+
+ add_to_funcs(DO_DOWN_VOID, (MMAIN|MHELP|MBROWSER), N_("Next Line"),
+ IFSCHELP(nano_nextline_msg), TRUE, VIEW);
+
+ add_to_funcs(DO_HOME, MMAIN, N_("Home"), IFSCHELP(nano_home_msg),
+ FALSE, VIEW);
+
+ add_to_funcs(DO_END, MMAIN, N_("End"), IFSCHELP(nano_end_msg),
+ FALSE, VIEW);
+
+#ifndef DISABLE_JUSTIFY
+ add_to_funcs(DO_PARA_BEGIN_VOID, (MMAIN|MWHEREIS), beg_of_par_msg,
+ IFSCHELP(nano_parabegin_msg), FALSE, VIEW);
+
+ add_to_funcs(DO_PARA_END_VOID, (MMAIN|MWHEREIS), end_of_par_msg,
+ IFSCHELP(nano_paraend_msg), FALSE, VIEW);
+#endif
+
+#ifndef NANO_TINY
+ add_to_funcs(DO_FIND_BRACKET, MMAIN, _("Find Other Bracket"),
+ IFSCHELP(nano_bracket_msg), FALSE, VIEW);
+
+ add_to_funcs(DO_SCROLL_UP, MMAIN, N_("Scroll Up"),
+ IFSCHELP(nano_scrollup_msg), FALSE, VIEW);
+
+ add_to_funcs(DO_SCROLL_DOWN, MMAIN, N_("Scroll Down"),
+ IFSCHELP(nano_scrolldown_msg), FALSE, VIEW);
+#endif
+
+#ifdef ENABLE_MULTIBUFFER
+ add_to_funcs(SWITCH_TO_PREV_BUFFER_VOID, MMAIN, _("Previous File"),
+ IFSCHELP(nano_prevfile_msg), FALSE, VIEW);
+ add_to_funcs(SWITCH_TO_NEXT_BUFFER_VOID, MMAIN, N_("Next File"),
+ IFSCHELP(nano_nextfile_msg), TRUE, VIEW);
+#endif
+
+ add_to_funcs(DO_VERBATIM_INPUT, MMAIN, N_("Verbatim Input"),
+ IFSCHELP(nano_verbatim_msg), FALSE, NOVIEW);
+ add_to_funcs(DO_VERBATIM_INPUT, MWHEREIS|MREPLACE|MREPLACE2|MEXTCMD|MSPELL,
+ "", "", FALSE, NOVIEW);
+
+ add_to_funcs(DO_TAB, MMAIN, N_("Tab"), IFSCHELP(nano_tab_msg),
+ FALSE, NOVIEW);
+ add_to_funcs(DO_TAB, MALL, "", "", FALSE, NOVIEW);
+ add_to_funcs(DO_ENTER, MMAIN, N_("Enter"), IFSCHELP(nano_enter_msg),
+ FALSE, NOVIEW);
+ add_to_funcs(DO_ENTER, MALL, "", "", FALSE, NOVIEW);
+ add_to_funcs(DO_DELETE, MMAIN, N_("Delete"), IFSCHELP(nano_delete_msg),
+ FALSE, NOVIEW);
+ add_to_funcs(DO_DELETE, MALL, "", "", FALSE, NOVIEW);
+ add_to_funcs(DO_BACKSPACE, MMAIN, N_("Backspace"), IFSCHELP(nano_backspace_msg),
+#ifndef NANO_TINY
+ FALSE,
+#else
+ TRUE,
+#endif
+ NOVIEW);
+
+ add_to_funcs(DO_BACKSPACE, MALL, "", "",
+#ifndef NANO_TINY
+ FALSE,
+#else
+ TRUE,
+#endif
+ NOVIEW);
+
+#ifndef NANO_TINY
+ add_to_funcs(DO_CUT_TILL_END, MMAIN, N_("CutTillEnd"),
+ IFSCHELP(nano_cut_till_end_msg), TRUE, NOVIEW);
+#endif
+
+ add_to_funcs(XON_COMPLAINT, MMAIN, "", "", FALSE, VIEW);
+ add_to_funcs(XOFF_COMPLAINT, MMAIN, "", "", FALSE, VIEW);
+
+#ifndef DISABLE_JUSTIFY
+ add_to_funcs(DO_FULL_JUSTIFY, (MMAIN|MWHEREIS), fulljstify_msg,
+ IFSCHELP(nano_fulljustify_msg), FALSE, NOVIEW);
+#endif
+
+#ifndef NANO_TINY
+ add_to_funcs(DO_WORDLINECHAR_COUNT, MMAIN, N_("Word Count"),
+ IFSCHELP(nano_wordcount_msg), FALSE, VIEW);
+#endif
+
+ add_to_funcs(TOTAL_REFRESH, (MMAIN|MHELP), refresh_msg,
+ IFSCHELP(nano_refresh_msg), FALSE, VIEW);
+
+ add_to_funcs(DO_SUSPEND_VOID, MMAIN, suspend_msg,
+ IFSCHELP(nano_suspend_msg), TRUE, VIEW);
+
+#ifndef NANO_TINY
+ add_to_funcs( CASE_SENS_MSG,
+ (MWHEREIS|MREPLACE|MWHEREISFILE),
+ case_sens_msg, IFSCHELP(nano_case_msg), FALSE, VIEW);
+
+ add_to_funcs( BACKWARDS_MSG,
+ (MWHEREIS|MREPLACE|MWHEREISFILE),
+ backwards_msg, IFSCHELP(nano_reverse_msg), FALSE, VIEW);
+#endif
+
+#ifdef HAVE_REGEX_H
+ add_to_funcs( REGEXP_MSG,
+ (MWHEREIS|MREPLACE|MWHEREISFILE),
+ regexp_msg, IFSCHELP(nano_regexp_msg), FALSE, VIEW);
+#endif
+
+#ifndef NANO_TINY
+ add_to_funcs( PREV_HISTORY_MSG,
+ (MWHEREIS|MREPLACE|MREPLACE2|MWHEREISFILE),
+ prev_history_msg, IFSCHELP(nano_prev_history_msg), FALSE, VIEW);
+
+ add_to_funcs( NEXT_HISTORY_MSG,
+ (MWHEREIS|MREPLACE|MREPLACE2|MWHEREISFILE),
+ next_history_msg, IFSCHELP(nano_next_history_msg), FALSE, VIEW);
+#endif
+
+ add_to_funcs( NO_REPLACE_MSG, MREPLACE,
+ no_replace_msg, IFSCHELP(nano_whereis_msg), FALSE, VIEW);
+
+ add_to_funcs( GOTOTEXT_MSG, MGOTOLINE,
+ gototext_msg, IFSCHELP(nano_whereis_msg), TRUE, VIEW);
+
+#ifndef DISABLE_BROWSER
+ if (!ISSET(RESTRICTED))
+ add_to_funcs( TO_FILES_MSG,
+ (MGOTOLINE|MINSERTFILE),
+ to_files_msg, IFSCHELP(nano_tofiles_msg), FALSE, VIEW);
+#endif
+
+#ifndef NANO_TINY
+ /* If we're using restricted mode, the DOS format, Mac format,
+ * append, prepend, and backup toggles are disabled. The first and
+ * second are useless since inserting files is disabled, the third
+ * and fourth are disabled because they allow writing to files not
+ * specified on the command line, and the fifth is useless since
+ * backups are disabled. */
+ if (!ISSET(RESTRICTED))
+ add_to_funcs( DOS_FORMAT_MSG, MWRITEFILE,
+ dos_format_msg, IFSCHELP(nano_dos_msg), FALSE, NOVIEW);
+
+ if (!ISSET(RESTRICTED))
+ add_to_funcs( MAC_FORMAT_MSG, MWRITEFILE,
+ mac_format_msg, IFSCHELP(nano_mac_msg), FALSE, NOVIEW);
+
+ if (!ISSET(RESTRICTED))
+ add_to_funcs( APPEND_MSG, MWRITEFILE,
+ append_msg, IFSCHELP(nano_append_msg), FALSE, NOVIEW);
+
+ if (!ISSET(RESTRICTED))
+ add_to_funcs( PREPEND_MSG, MWRITEFILE,
+ prepend_msg, IFSCHELP(nano_prepend_msg), FALSE, NOVIEW);
+
+ if (!ISSET(RESTRICTED))
+ add_to_funcs( BACKUP_FILE_MSG, MWRITEFILE,
+ backup_file_msg, IFSCHELP(nano_backup_msg), FALSE, NOVIEW);
+#endif
+
+#ifndef NANO_TINY
+ /* If we're using restricted mode, command execution is disabled.
+ * It's useless since inserting files is disabled. */
+ if (!ISSET(RESTRICTED))
+ add_to_funcs( EXT_CMD_MSG, MINSERTFILE,
+ ext_cmd_msg, IFSCHELP(nano_execute_msg), FALSE, NOVIEW);
+
+#ifdef ENABLE_MULTIBUFFER
+ /* If we're using restricted mode, the multibuffer toggle is
+ * disabled. It's useless since inserting files is disabled. */
+ if (!ISSET(RESTRICTED))
+ add_to_funcs( NEW_BUFFER_MSG, MINSERTFILE,
+ new_buffer_msg, IFSCHELP(nano_multibuffer_msg), FALSE, NOVIEW);
+#endif
+
+ add_to_funcs( INSERT_FILE_MSG, MEXTCMD,
+ insert_file_msg, IFSCHELP(nano_insert_msg), FALSE, VIEW);
+
+#ifdef ENABLE_MULTIBUFFER
+ add_to_funcs( NEW_BUFFER_MSG, MEXTCMD,
+ new_buffer_msg, IFSCHELP(nano_multibuffer_msg), FALSE, NOVIEW);
+#endif
+#endif
+
+#ifndef DISABLE_HELP
+ add_to_funcs( REFRESH_MSG, MHELP,
+ refresh_msg, nano_refresh_msg, FALSE, VIEW);
+
+ add_to_funcs(DO_EXIT, MHELP, exit_msg, IFSCHELP(nano_exit_msg), FALSE, VIEW);
+
+
+#endif
+
+#ifndef DISABLE_BROWSER
+
+ add_to_funcs( FIRST_FILE_MSG,
+ (MBROWSER|MWHEREISFILE),
+ first_file_msg, IFSCHELP(nano_firstfile_msg), FALSE, VIEW);
+
+ add_to_funcs( LAST_FILE_MSG,
+ (MBROWSER|MWHEREISFILE),
+ last_file_msg, IFSCHELP(nano_lastfile_msg), FALSE, VIEW);
+
+ add_to_funcs( GOTO_DIR_MSG, MBROWSER,
+ goto_dir_msg, IFSCHELP(nano_gotodir_msg), FALSE, VIEW);
+#endif
+
+ currmenu = MMAIN;
+
+ add_to_sclist(MMAIN|MWHEREIS|MREPLACE|MREPLACE2|MGOTOLINE|MWRITEFILE|MINSERTFILE|MEXTCMD|MSPELL|MBROWSER|MWHEREISFILE|MGOTODIR,
+ "^G", DO_HELP_VOID, 0, TRUE);
+ add_to_sclist(MMAIN|MWHEREIS|MREPLACE|MREPLACE2|MGOTOLINE|MWRITEFILE|MINSERTFILE|MEXTCMD|MSPELL|MBROWSER|MWHEREISFILE|MGOTODIR,
+ "F1", DO_HELP_VOID, 0, TRUE);
+ add_to_sclist(MMAIN|MHELP|MBROWSER, "^X", DO_EXIT, 0, TRUE);
+ add_to_sclist(MMAIN|MHELP|MBROWSER, "F2", DO_EXIT, 0, TRUE);
+ add_to_sclist(MMAIN, "^_", DO_GOTOLINECOLUMN_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "F13", DO_GOTOLINECOLUMN_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "M-G", DO_GOTOLINECOLUMN_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "^O", DO_WRITEOUT_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "F3", DO_WRITEOUT_VOID, 0, TRUE);
+#ifndef DISABLE_JUSTIFY
+ add_to_sclist(MMAIN, "^J", DO_JUSTIFY_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "F4", DO_JUSTIFY_VOID, 0, TRUE);
+#endif
+ add_to_sclist(MMAIN, "^R", DO_INSERTFILE_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "F5", DO_INSERTFILE_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "kinsert", DO_INSERTFILE_VOID, 0, TRUE);
+ add_to_sclist(MMAIN|MBROWSER, "^W", DO_SEARCH, 0, TRUE);
+ add_to_sclist(MMAIN|MBROWSER, "F6", DO_SEARCH, 0, TRUE);
+ add_to_sclist(MMAIN|MBROWSER|MHELP|MWHEREISFILE, "^Y", DO_PAGE_UP, 0, TRUE);
+ add_to_sclist(MMAIN|MBROWSER|MHELP|MWHEREISFILE, "F7", DO_PAGE_UP, 0, TRUE);
+ add_to_sclist(MMAIN|MBROWSER|MHELP|MWHEREISFILE, "kpup", DO_PAGE_UP, 0, TRUE);
+ add_to_sclist(MMAIN|MBROWSER|MHELP|MWHEREISFILE, "^V", DO_PAGE_DOWN, 0, TRUE);
+ add_to_sclist(MMAIN|MBROWSER|MHELP|MWHEREISFILE, "F8", DO_PAGE_DOWN, 0, TRUE);
+ add_to_sclist(MMAIN|MBROWSER|MHELP|MWHEREISFILE, "kpdown", DO_PAGE_DOWN, 0, TRUE);
+ add_to_sclist(MMAIN, "^K", DO_CUT_TEXT_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "F9", DO_CUT_TEXT_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "^U", DO_UNCUT_TEXT, 0, TRUE);
+ add_to_sclist(MMAIN, "F10", DO_UNCUT_TEXT, 0, TRUE);
+ add_to_sclist(MMAIN, "^C", DO_CURSORPOS_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "F11", DO_CURSORPOS_VOID, 0, TRUE);
+#ifndef DISABLE_SPELLER
+ add_to_sclist(MMAIN, "^T", DO_SPELL, 0, TRUE);
+ add_to_sclist(MMAIN, "F12", DO_SPELL, 0, TRUE);
+#endif
+ add_to_sclist(MMAIN, "^\\", DO_REPLACE, 0, TRUE);
+ add_to_sclist(MMAIN, "F14", DO_REPLACE, 0, TRUE);
+ add_to_sclist(MMAIN, "M-R", DO_REPLACE, 0, TRUE);
+ add_to_sclist(MWHEREIS, "^R", DO_REPLACE, 0, FALSE);
+ add_to_sclist(MREPLACE, "^R", NO_REPLACE_MSG, 0, FALSE);
+ add_to_sclist(MWHEREIS, "^T", DO_GOTOLINECOLUMN_VOID, 0, FALSE);
+#ifndef NANO_TINY
+ add_to_sclist(MMAIN, "^^", DO_MARK, 0, TRUE);
+ add_to_sclist(MMAIN, "F15", DO_MARK, 0, TRUE);
+ add_to_sclist(MMAIN, "M-A", DO_MARK, 0, TRUE);
+ add_to_sclist(MMAIN|MBROWSER, "M-W", DO_RESEARCH, 0, TRUE);
+ add_to_sclist(MMAIN|MBROWSER, "F16", DO_RESEARCH, 0, TRUE);
+ add_to_sclist(MMAIN, "M-^", DO_COPY_TEXT, 0, TRUE);
+ add_to_sclist(MMAIN, "M-6", DO_COPY_TEXT, 0, TRUE);
+ add_to_sclist(MMAIN, "M-}", DO_INDENT_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "M-{", DO_UNINDENT, 0, TRUE);
+ if (ISSET(UNDOABLE)) {
+ add_to_sclist(MMAIN, "M-U", DO_UNDO, 0, TRUE);
+ add_to_sclist(MMAIN, "M-E", DO_REDO, 0, TRUE);
+ }
+ add_to_sclist(MALL, "^F", DO_RIGHT, 0, TRUE);
+ add_to_sclist(MALL, "^B", DO_LEFT, 0, TRUE);
+ add_to_sclist(MMAIN, "^Space", DO_NEXT_WORD_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "M-Space", DO_PREV_WORD_VOID, 0, TRUE);
+#endif
+ add_to_sclist(MALL, "kright", DO_RIGHT, 0, TRUE);
+ add_to_sclist(MALL, "kleft", DO_LEFT, 0, TRUE);
+ add_to_sclist(MMAIN, "^Q", XON_COMPLAINT, 0, TRUE);
+ add_to_sclist(MMAIN, "^S", XOFF_COMPLAINT, 0, TRUE);
+ add_to_sclist(MMAIN|MHELP|MBROWSER, "^P", DO_UP_VOID, 0, TRUE);
+ add_to_sclist(MMAIN|MHELP|MBROWSER, "kup", DO_UP_VOID, 0, TRUE);
+ add_to_sclist(MMAIN|MHELP|MBROWSER, "^N", DO_DOWN_VOID, 0, TRUE);
+ add_to_sclist(MMAIN|MHELP|MBROWSER, "kdown", DO_DOWN_VOID, 0, TRUE);
+ add_to_sclist(MALL, "^A", DO_HOME, 0, TRUE);
+ add_to_sclist(MALL, "khome", DO_HOME, 0, TRUE);
+ add_to_sclist(MALL, "^E", DO_END, 0, TRUE);
+ add_to_sclist(MALL, "kend", DO_END, 0, TRUE);
+#ifndef NANO_TINY
+ add_to_sclist(MWHEREIS|MREPLACE|MREPLACE2|MWHEREISFILE, "^P", PREV_HISTORY_MSG, 0, FALSE);
+ add_to_sclist(MWHEREIS|MREPLACE|MREPLACE2|MWHEREISFILE, "kup", PREV_HISTORY_MSG, 0, FALSE);
+ add_to_sclist(MWHEREIS|MREPLACE|MREPLACE2|MWHEREISFILE, "^N", NEXT_HISTORY_MSG, 0, FALSE);
+ add_to_sclist(MWHEREIS|MREPLACE|MREPLACE2|MWHEREISFILE, "kdown", NEXT_HISTORY_MSG, 0, FALSE);
+#endif
+#ifndef DISABLE_JUSTIFY
+ add_to_sclist(MWHEREIS|MREPLACE|MREPLACE2,
+ "^W", DO_PARA_BEGIN_VOID, 0, TRUE);
+ add_to_sclist(MWHEREIS|MREPLACE|MREPLACE2,
+ "^O", DO_PARA_END_VOID, 0, TRUE);
+ add_to_sclist(MALL, "M-(", DO_PARA_BEGIN_VOID, 0, TRUE);
+ add_to_sclist(MALL, "M-9", DO_PARA_BEGIN_VOID, 0, TRUE);
+ add_to_sclist(MALL, "M-)", DO_PARA_END_VOID, 0, TRUE);
+ add_to_sclist(MALL, "M-0", DO_PARA_END_VOID, 0, TRUE);
+#endif
+ add_to_sclist(MWHEREIS,
+ "M-C", CASE_SENS_MSG, 0, FALSE);
+ add_to_sclist(MREPLACE,
+ "M-C", CASE_SENS_MSG, 0, FALSE);
+ add_to_sclist(MREPLACE2,
+ "M-C", CASE_SENS_MSG, 0, FALSE);
+ add_to_sclist(MWHEREIS|MREPLACE|MREPLACE2,
+ "M-B", BACKWARDS_MSG, 0, FALSE);
+ add_to_sclist(MWHEREIS|MREPLACE|MREPLACE2,
+ "M-R", REGEXP_MSG, 0, FALSE);
+
+ add_to_sclist(MMAIN, "M-\\", DO_FIRST_LINE, 0, TRUE);
+ add_to_sclist(MMAIN, "M-|", DO_FIRST_LINE, 0, TRUE);
+ add_to_sclist(MMAIN, "M-/", DO_LAST_LINE, 0, TRUE);
+ add_to_sclist(MMAIN, "M-?", DO_LAST_LINE, 0, TRUE);
+ add_to_sclist(MWHEREIS|MREPLACE|MREPLACE2|MGOTOLINE|MHELP,
+ "^Y", DO_FIRST_LINE, 0, TRUE);
+ add_to_sclist(MWHEREIS|MREPLACE|MREPLACE2|MGOTOLINE|MHELP,
+ "^V", DO_LAST_LINE, 0, TRUE);
+
+ add_to_sclist(MBROWSER|MWHEREISFILE, "M-\\", FIRST_FILE_MSG, 0, TRUE);
+ add_to_sclist(MBROWSER|MWHEREISFILE, "M-|", FIRST_FILE_MSG, 0, TRUE);
+ add_to_sclist(MBROWSER|MWHEREISFILE, "M-/", LAST_FILE_MSG, 0, TRUE);
+ add_to_sclist(MBROWSER|MWHEREISFILE, "M-?", LAST_FILE_MSG, 0, TRUE);
+ add_to_sclist(MBROWSER|MWHEREISFILE, "^_", GOTO_DIR_MSG, 0, TRUE);
+ add_to_sclist(MBROWSER|MWHEREISFILE, "F13", GOTO_DIR_MSG, 0, TRUE);
+ add_to_sclist(MBROWSER|MWHEREISFILE, "M-G", GOTO_DIR_MSG, 0, TRUE);
+#ifndef NANO_TINY
+ add_to_sclist(MMAIN, "M-]", DO_FIND_BRACKET, 0, TRUE);
+ add_to_sclist(MMAIN, "M--", DO_SCROLL_UP, 0, TRUE);
+ add_to_sclist(MMAIN, "M-_", DO_SCROLL_UP, 0, TRUE);
+ add_to_sclist(MMAIN, "M-+", DO_SCROLL_DOWN, 0, TRUE);
+ add_to_sclist(MMAIN, "M-=", DO_SCROLL_DOWN, 0, TRUE);
+#endif
+
+#ifdef ENABLE_MULTIBUFFER
+ add_to_sclist(MMAIN, "M-<", SWITCH_TO_PREV_BUFFER_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "M-,", SWITCH_TO_PREV_BUFFER_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "M->", SWITCH_TO_NEXT_BUFFER_VOID, 0, TRUE);
+ add_to_sclist(MMAIN, "M-.", SWITCH_TO_NEXT_BUFFER_VOID, 0, TRUE);
+#endif
+ add_to_sclist(MALL, "M-V", DO_VERBATIM_INPUT, 0, TRUE);
+#ifndef NANO_TINY
+ add_to_sclist(MALL, "M-T", DO_CUT_TILL_END, 0, TRUE);
+#ifndef DISABLE_JUSTIFY
+ add_to_sclist(MALL, "M-J", DO_FULL_JUSTIFY, 0, TRUE);
+#endif
+ add_to_sclist(MMAIN, "M-D", DO_WORDLINECHAR_COUNT, 0, TRUE);
+ add_to_sclist(MMAIN, "M-X", DO_TOGGLE, NO_HELP, TRUE);
+ add_to_sclist(MMAIN, "M-C", DO_TOGGLE, CONST_UPDATE, TRUE);
+ add_to_sclist(MMAIN, "M-O", DO_TOGGLE, MORE_SPACE, TRUE);
+ add_to_sclist(MMAIN, "M-S", DO_TOGGLE, SMOOTH_SCROLL, TRUE);
+ add_to_sclist(MMAIN, "M-P", DO_TOGGLE, WHITESPACE_DISPLAY, TRUE);
+ add_to_sclist(MMAIN, "M-Y", DO_TOGGLE, NO_COLOR_SYNTAX, TRUE);
+ add_to_sclist(MMAIN, "M-H", DO_TOGGLE, SMART_HOME, TRUE);
+ add_to_sclist(MMAIN, "M-I", DO_TOGGLE, AUTOINDENT, TRUE);
+ add_to_sclist(MMAIN, "M-K", DO_TOGGLE, CUT_TO_END, TRUE);
+ add_to_sclist(MMAIN, "M-L", DO_TOGGLE, NO_WRAP, TRUE);
+ add_to_sclist(MMAIN, "M-Q", DO_TOGGLE, TABS_TO_SPACES, TRUE);
+ add_to_sclist(MMAIN, "M-B", DO_TOGGLE, BACKUP_FILE, TRUE);
+ add_to_sclist(MMAIN, "M-F", DO_TOGGLE, MULTIBUFFER, TRUE);
+ add_to_sclist(MMAIN, "M-M", DO_TOGGLE, USE_MOUSE, TRUE);
+ add_to_sclist(MMAIN, "M-N", DO_TOGGLE, NO_CONVERT, TRUE);
+ add_to_sclist(MMAIN, "M-Z", DO_TOGGLE, SUSPEND, TRUE);
+ add_to_sclist(MMAIN, "M-$", DO_TOGGLE, SOFTWRAP, TRUE);
+#endif
+ add_to_sclist(MGOTOLINE, "^T", GOTOTEXT_MSG, 0, FALSE);
+ add_to_sclist(MINSERTFILE|MEXTCMD, "M-F", NEW_BUFFER_MSG, 0, FALSE);
+ add_to_sclist((MWHEREIS|MREPLACE|MREPLACE2|MGOTOLINE|MWRITEFILE|MINSERTFILE|MEXTCMD|MSPELL|MWHEREISFILE|MGOTODIR|MYESNO),
+ "^C", CANCEL_MSG, 0, FALSE);
+ add_to_sclist(MHELP, "^X", DO_EXIT, 0, TRUE);
+ add_to_sclist(MHELP, "F2", DO_EXIT, 0, TRUE);
+ add_to_sclist(MWRITEFILE, "M-D", DOS_FORMAT_MSG, 0, FALSE);
+ add_to_sclist(MWRITEFILE, "M-M", MAC_FORMAT_MSG, 0, FALSE);
+ add_to_sclist(MWRITEFILE, "M-A", APPEND_MSG, 0, FALSE);
+ add_to_sclist(MWRITEFILE, "M-P", PREPEND_MSG, 0, FALSE);
+ add_to_sclist(MWRITEFILE, "M-B", BACKUP_FILE_MSG, 0, FALSE);
+ add_to_sclist(MWRITEFILE, "^T", TO_FILES_MSG, 0, FALSE);
+ add_to_sclist(MINSERTFILE, "^T", TO_FILES_MSG, 0, FALSE);
+ add_to_sclist(MINSERTFILE, "^X", EXT_CMD_MSG, 0, FALSE);
+ add_to_sclist(MMAIN, "^Z", DO_SUSPEND_VOID, 0, FALSE);
+ add_to_sclist(MMAIN, "^L", TOTAL_REFRESH, 0, TRUE);
+ add_to_sclist(MALL, "^I", DO_TAB, 0, TRUE);
+ add_to_sclist(MALL, "^M", DO_ENTER, 0, TRUE);
+ add_to_sclist(MALL, "kenter", DO_ENTER, 0, TRUE);
+ add_to_sclist(MALL, "^D", DO_DELETE, 0, TRUE);
+ add_to_sclist(MALL, "kdel", DO_DELETE, 0, TRUE);
+ add_to_sclist(MALL, "^H", DO_BACKSPACE, 0, TRUE);
+ add_to_sclist(MALL, "kbsp", DO_BACKSPACE, 0, TRUE);
+
+#ifdef DEBUG
+ print_sclist();
+#endif
+
+}
+
+/* Given a function alias, execute the proper
+ function, and then me */
+void iso_me_harder_funcmap(short func)
+{
+ if (func == TOTAL_REFRESH)
+ total_refresh();
+ else if (func == DO_HELP_VOID)
+ do_help_void();
+ else if (func == DO_SEARCH)
+ do_search();
+ else if (func == DO_PAGE_UP)
+ do_page_up();
+ else if (func == DO_PAGE_DOWN)
+ do_page_down();
+ else if (func == DO_UP_VOID)
+ do_up_void();
+ else if (func == DO_LEFT)
+ do_left();
+ else if (func == DO_DOWN_VOID)
+ do_down_void();
+ else if (func == DO_RIGHT)
+ do_right();
+ else if (func == DO_ENTER)
+ do_enter(FALSE);
+ else if (func == DO_EXIT)
+ do_exit();
+ else if (func == DO_FIRST_LINE)
+ do_first_line();
+ else if (func == DO_LAST_LINE)
+ do_last_line();
+ else if (func == DO_BACKSPACE)
+ do_backspace();
+ else if (func == DO_DELETE)
+ do_delete();
+ else if (func == DO_TAB)
+ do_tab();
+ else if (func == DO_VERBATIM_INPUT)
+ do_verbatim_input();
+#ifdef ENABLE_MULTIBUFFER
+ else if (func == SWITCH_TO_NEXT_BUFFER_VOID)
+ switch_to_next_buffer_void();
+ else if (func == SWITCH_TO_PREV_BUFFER_VOID)
+ switch_to_prev_buffer_void();
+#endif
+ else if (func == DO_END)
+ do_end();
+ else if (func == DO_HOME)
+ do_home();
+ else if (func == DO_SUSPEND_VOID)
+ do_suspend_void();
+ else if (func == DO_WRITEOUT_VOID)
+ do_writeout_void();
+ else if (func == DO_INSERTFILE_VOID)
+ do_insertfile_void();
+ else if (func == DO_CUT_TEXT_VOID)
+ do_cut_text_void();
+ else if (func == DO_UNCUT_TEXT)
+ do_uncut_text();
+ else if (func == DO_CURSORPOS_VOID)
+ do_cursorpos_void();
+ else if (func == DO_GOTOLINECOLUMN_VOID)
+ do_gotolinecolumn_void();
+ else if (func == DO_REPLACE)
+ do_replace();
+ else if (func == XOFF_COMPLAINT)
+ xoff_complaint();
+ else if (func == XON_COMPLAINT)
+ xon_complaint();
+ else if (func == DO_CUT_TEXT)
+ do_cut_text_void();
+#ifndef NANO_TINY
+ else if (func == DO_CUT_TILL_END)
+ do_cut_till_end();
+ else if (func == DO_REDO)
+ do_redo();
+ else if (func == DO_UNDO)
+ do_undo();
+ else if (func == DO_WORDLINECHAR_COUNT)
+ do_wordlinechar_count();
+ else if (func == DO_FIND_BRACKET)
+ do_find_bracket();
+ else if (func == DO_PREV_WORD_VOID)
+ do_prev_word_void();
+#ifndef DISABLE_JUSTIFY
+ else if (func == DO_JUSTIFY_VOID)
+ do_justify_void();
+ else if (func == DO_PARA_BEGIN_VOID)
+ do_para_begin_void();
+ else if (func == DO_PARA_END_VOID)
+ do_para_end_void();
+ else if (func == DO_FULL_JUSTIFY)
+ do_full_justify();
+#endif
+ else if (func == DO_MARK)
+ do_mark();
+ else if (func == DO_RESEARCH)
+ do_research();
+ else if (func == DO_COPY_TEXT)
+ do_copy_text();
+ else if (func == DO_INDENT_VOID)
+ do_indent_void();
+ else if (func == DO_UNINDENT)
+ do_unindent();
+ else if (func == DO_SCROLL_UP)
+ do_scroll_up();
+ else if (func == DO_SCROLL_DOWN)
+ do_scroll_down();
+ else if (func == DO_NEXT_WORD_VOID)
+ do_next_word_void();
+#ifndef DISABLE_SPELLER
+ else if (func == DO_SPELL)
+ do_spell();
+#endif
+ else if (func == DO_NEXT_WORD)
+ do_next_word_void();
+ else if (func == DO_PREV_WORD)
+ do_prev_word_void();
+#endif
+}
+
+
+/* Free the given shortcut. */
+void free_shortcutage(shortcut **shortcutage)
+{
+ assert(shortcutage != NULL);
+
+ while (*shortcutage != NULL) {
+ shortcut *ps = *shortcutage;
+ *shortcutage = (*shortcutage)->next;
+ free(ps);
+ }
+}
+
+const subnfunc *sctofunc(sc *s)
+{
+ subnfunc *f;
+
+ for (f = allfuncs; f != NULL && s->scfunc != f->scfunc; f = f->next)
+ ;
+
+ return f;
+}
+
+#ifndef NANO_TINY
+/* Now lets come up with a single (hopefully)
+ function to get a string for each flag */
+const char *flagtostr(int flag)
+{
+ switch (flag) {
+ case NO_HELP:
+ return N_("Help mode");
+ case CONST_UPDATE:
+ return N_("Constant cursor position display");
+ case MORE_SPACE:
+ return N_("Use of one more line for editing");
+ case SMOOTH_SCROLL:
+ return N_("Smooth scrolling");
+ case WHITESPACE_DISPLAY:
+ return N_("Whitespace display");
+ case NO_COLOR_SYNTAX:
+ return N_("Color syntax highlighting");
+ case SMART_HOME:
+ return N_("Smart home key");
+ case AUTOINDENT:
+ return N_("Auto indent");
+ case CUT_TO_END:
+ return N_("Cut to end");
+ case NO_WRAP:
+ return N_("Long line wrapping");
+ case TABS_TO_SPACES:
+ return N_("Conversion of typed tabs to spaces");
+ case BACKUP_FILE:
+ return N_("Backup files");
+ case MULTIBUFFER:
+ return N_("Multiple file buffers");
+ case USE_MOUSE:
+ return N_("Mouse support");
+ case NO_CONVERT:
+ return N_("No conversion from DOS/Mac format");
+ case SUSPEND:
+ return N_("Suspension");
+ case SOFTWRAP:
+ return N_("Soft line wrapping");
+ default:
+ return "?????";
+ }
+}
+#endif /* NANO_TINY */
+
+/* Interpret the string given by the rc file and return a
+ shortcut struct, complete with proper value for execute */
+sc *strtosc(int menu, char *input)
+{
+ sc *s;
+
+ s = (sc *)nmalloc(sizeof(sc));
+ s->execute = TRUE; /* overridden as needed below */
+
+
+#ifndef DISABLE_HELP
+ if (!strcasecmp(input, "help"))
+ s->scfunc = DO_HELP_VOID;
+ else
+#endif
+ if (!strcasecmp(input, "cancel")) {
+ s->scfunc = CANCEL_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "exit"))
+ s->scfunc = DO_EXIT;
+ else if (!strcasecmp(input, "writeout"))
+ s->scfunc = DO_WRITEOUT_VOID;
+ else if (!strcasecmp(input, "insert"))
+ s->scfunc = DO_INSERTFILE_VOID;
+ else if (!strcasecmp(input, "whereis"))
+ s->scfunc = DO_SEARCH;
+ else if (!strcasecmp(input, "up"))
+ s->scfunc = DO_UP_VOID;
+ else if (!strcasecmp(input, "down"))
+ s->scfunc = DO_DOWN_VOID;
+ else if (!strcasecmp(input, "pageup")
+ || !strcasecmp(input, "prevpage"))
+ s->scfunc = DO_PAGE_UP;
+ else if (!strcasecmp(input, "pagedown")
+ || !strcasecmp(input, "nextpage"))
+ s->scfunc = DO_PAGE_DOWN;
+ else if (!strcasecmp(input, "cut"))
+ s->scfunc = DO_CUT_TEXT_VOID;
+ else if (!strcasecmp(input, "uncut"))
+ s->scfunc = DO_UNCUT_TEXT;
+ else if (!strcasecmp(input, "curpos") ||
+ !strcasecmp(input, "cursorpos"))
+ s->scfunc = DO_CURSORPOS_VOID;
+ else if (!strcasecmp(input, "firstline"))
+ s->scfunc = DO_FIRST_LINE;
+ else if (!strcasecmp(input, "lastline"))
+ s->scfunc = DO_LAST_LINE;
+ else if (!strcasecmp(input, "gotoline"))
+ s->scfunc = DO_GOTOLINECOLUMN_VOID;
+ else if (!strcasecmp(input, "replace"))
+ s->scfunc = DO_REPLACE;
+#ifndef DISABLE_JUSTIFY
+ else if (!strcasecmp(input, "justify"))
+ s->scfunc = DO_JUSTIFY_VOID;
+ else if (!strcasecmp(input, "beginpara"))
+ s->scfunc = DO_PARA_BEGIN_VOID;
+ else if (!strcasecmp(input, "endpara"))
+ s->scfunc = DO_PARA_END_VOID;
+ else if (!strcasecmp(input, "fulljustify"))
+ s->scfunc = DO_FULL_JUSTIFY;
+#endif
+#ifndef NANO_TINY
+ else if (!strcasecmp(input, "mark"))
+ s->scfunc = DO_MARK;
+ else if (!strcasecmp(input, "searchagain") ||
+ !strcasecmp(input, "research"))
+ s->scfunc = DO_RESEARCH;
+ else if (!strcasecmp(input, "copytext"))
+ s->scfunc = DO_COPY_TEXT;
+ else if (!strcasecmp(input, "indent"))
+ s->scfunc = DO_INDENT_VOID;
+ else if (!strcasecmp(input, "unindent"))
+ s->scfunc = DO_UNINDENT;
+ else if (!strcasecmp(input, "scrollup"))
+ s->scfunc = DO_SCROLL_UP;
+ else if (!strcasecmp(input, "scrolldown"))
+ s->scfunc = DO_SCROLL_DOWN;
+ else if (!strcasecmp(input, "nextword"))
+ s->scfunc = DO_NEXT_WORD_VOID;
+ else if (!strcasecmp(input, "suspend"))
+ s->scfunc = DO_SUSPEND_VOID;
+ else if (!strcasecmp(input, "prevword"))
+ s->scfunc = DO_PREV_WORD_VOID;
+ else if (!strcasecmp(input, "findbracket"))
+ s->scfunc = DO_FIND_BRACKET;
+ else if (!strcasecmp(input, "wordcount"))
+ s->scfunc = DO_WORDLINECHAR_COUNT;
+ else if (!strcasecmp(input, "undo"))
+ s->scfunc = DO_UNDO;
+ else if (!strcasecmp(input, "redo"))
+ s->scfunc = DO_REDO;
+ else if (!strcasecmp(input, "prevhistory")) {
+ s->scfunc = PREV_HISTORY_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "nexthistory")) {
+ s->scfunc = NEXT_HISTORY_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "nohelp") ||
+ !strcasecmp(input, "nohelp")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = NO_HELP;
+ } else if (!strcasecmp(input, "constupdate")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = CONST_UPDATE;
+ } else if (!strcasecmp(input, "morespace")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = MORE_SPACE;
+ } else if (!strcasecmp(input, "smoothscroll")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = SMOOTH_SCROLL;
+ } else if (!strcasecmp(input, "whitespacedisplay")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = WHITESPACE_DISPLAY;
+ } else if (!strcasecmp(input, "nosyntax")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = NO_COLOR_SYNTAX;
+ } else if (!strcasecmp(input, "smarthome")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = SMART_HOME;
+ } else if (!strcasecmp(input, "autoindent")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = AUTOINDENT;
+ } else if (!strcasecmp(input, "cuttoend")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = CUT_TO_END;
+ } else if (!strcasecmp(input, "nowrap")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = NO_WRAP;
+ } else if (!strcasecmp(input, "tabstospaces")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = TABS_TO_SPACES;
+ } else if (!strcasecmp(input, "backupfile")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = BACKUP_FILE;
+ } else if (!strcasecmp(input, "mutlibuffer")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = MULTIBUFFER;
+ } else if (!strcasecmp(input, "mouse")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = USE_MOUSE;
+ } else if (!strcasecmp(input, "noconvert")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = NO_CONVERT;
+ } else if (!strcasecmp(input, "suspendenable")) {
+ s->scfunc = DO_TOGGLE;
+ s->execute = FALSE;
+ s->toggle = SUSPEND;
+ }
+#endif /* NANO_TINY */
+ else if (!strcasecmp(input, "right") ||
+ !strcasecmp(input, "forward"))
+ s->scfunc = DO_RIGHT;
+ else if (!strcasecmp(input, "left") ||
+ !strcasecmp(input, "back"))
+ s->scfunc = DO_LEFT;
+ else if (!strcasecmp(input, "up") ||
+ !strcasecmp(input, "prevline"))
+ s->scfunc = DO_UP_VOID;
+ else if (!strcasecmp(input, "down") ||
+ !strcasecmp(input, "nextline"))
+ s->scfunc = DO_DOWN_VOID;
+ else if (!strcasecmp(input, "home"))
+ s->scfunc = DO_HOME;
+ else if (!strcasecmp(input, "end"))
+ s->scfunc = DO_END;
+#ifdef ENABLE_MULTIBUFFER
+ else if (!strcasecmp(input, "prevbuf"))
+ s->scfunc = SWITCH_TO_PREV_BUFFER_VOID;
+ else if (!strcasecmp(input, "nextbuf"))
+ s->scfunc = SWITCH_TO_NEXT_BUFFER_VOID;
+#endif
+ else if (!strcasecmp(input, "verbatim"))
+ s->scfunc = DO_VERBATIM_INPUT;
+ else if (!strcasecmp(input, "tab"))
+ s->scfunc = DO_TAB;
+ else if (!strcasecmp(input, "enter"))
+ s->scfunc = DO_ENTER;
+ else if (!strcasecmp(input, "delete"))
+ s->scfunc = DO_DELETE;
+ else if (!strcasecmp(input, "backspace"))
+ s->scfunc = DO_BACKSPACE;
+ else if (!strcasecmp(input, "refresh"))
+ s->scfunc = TOTAL_REFRESH;
+ else if (!strcasecmp(input, "casesens")) {
+ s->scfunc = CASE_SENS_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "regexp") ||
+ !strcasecmp(input, "regex")) {
+ s->scfunc = REGEXP_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "dontreplace")) {
+ s->scfunc = NO_REPLACE_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "gototext")) {
+ s->scfunc = GOTOTEXT_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "browser") ||
+ !strcasecmp(input, "tofiles")) {
+ s->scfunc = TO_FILES_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "dosformat")) {
+ s->scfunc = DOS_FORMAT_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "macformat")) {
+ s->scfunc = MAC_FORMAT_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "append")) {
+ s->scfunc = APPEND_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "prepend")) {
+ s->scfunc = PREPEND_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "backup")) {
+ s->scfunc = BACKUP_FILE_MSG;
+ s->execute = FALSE;
+#ifdef ENABLE_MULTIBUFFER
+ } else if (!strcasecmp(input, "newbuffer")) {
+ s->scfunc = NEW_BUFFER_MSG;
+ s->execute = FALSE;
+#endif
+ } else if (!strcasecmp(input, "firstfile")) {
+ s->scfunc = FIRST_FILE_MSG;
+ s->execute = FALSE;
+ } else if (!strcasecmp(input, "lastfile")) {
+ s->scfunc = LAST_FILE_MSG;
+ s->execute = FALSE;
+ } else {
+ free(s);
+ return NULL;
+ }
+
+ return s;
+
+}
+
+#ifdef ENABLE_NANORC
+/* Same thing as abnove but for the menu */
+int strtomenu(char *input)
+{
+ if (!strcasecmp(input, "all"))
+ return MALL;
+ else if (!strcasecmp(input, "main"))
+ return MMAIN;
+ else if (!strcasecmp(input, "search"))
+ return MWHEREIS;
+ else if (!strcasecmp(input, "replace"))
+ return MREPLACE;
+ else if (!strcasecmp(input, "replace2") ||
+ !strcasecmp(input, "replacewith"))
+ return MREPLACE2;
+ else if (!strcasecmp(input, "gotoline"))
+ return MGOTOLINE;
+ else if (!strcasecmp(input, "writeout"))
+ return MWRITEFILE;
+ else if (!strcasecmp(input, "insert"))
+ return MINSERTFILE;
+ else if (!strcasecmp(input, "externalcmd") ||
+ !strcasecmp(input, "extcmd"))
+ return MEXTCMD;
+ else if (!strcasecmp(input, "help"))
+ return MHELP;
+ else if (!strcasecmp(input, "spell"))
+ return MSPELL;
+ else if (!strcasecmp(input, "browser"))
+ return MBROWSER;
+ else if (!strcasecmp(input, "whereisfile"))
+ return MWHEREISFILE;
+ else if (!strcasecmp(input, "gotodir"))
+ return MGOTODIR;
+
+ return -1;
+}
+#endif
+
+
+#ifdef DEBUG
+/* This function is used to gracefully return all the memory we've used.
+ * It should be called just before calling exit(). Practically, the
+ * only effect is to cause a segmentation fault if the various data
+ * structures got bolloxed earlier. Thus, we don't bother having this
+ * function unless debugging is turned on. */
+void thanks_for_all_the_fish(void)
+{
+ delwin(topwin);
+ delwin(edit);
+ delwin(bottomwin);
+
+#ifndef DISABLE_JUSTIFY
+ if (quotestr != NULL)
+ free(quotestr);
+#ifdef HAVE_REGEX_H
+ regfree(&quotereg);
+ if (quoteerr != NULL)
+ free(quoteerr);
+#endif
+#endif
+#ifndef NANO_TINY
+ if (backup_dir != NULL)
+ free(backup_dir);
+#endif
+#ifndef DISABLE_OPERATINGDIR
+ if (operating_dir != NULL)
+ free(operating_dir);
+ if (full_operating_dir != NULL)
+ free(full_operating_dir);
+#endif
+ if (last_search != NULL)
+ free(last_search);
+ if (last_replace != NULL)
+ free(last_replace);
+#ifndef DISABLE_SPELLER
+ if (alt_speller != NULL)
+ free(alt_speller);
+#endif
+ if (answer != NULL)
+ free(answer);
+ if (cutbuffer != NULL)
+ free_filestruct(cutbuffer);
+#ifndef DISABLE_JUSTIFY
+ if (jusbuffer != NULL)
+ free_filestruct(jusbuffer);
+#endif
+#ifdef DEBUG
+ /* Free the memory associated with each open file buffer. */
+ if (openfile != NULL)
+ free_openfilestruct(openfile);
+#endif
+#ifdef ENABLE_COLOR
+ if (syntaxstr != NULL)
+ free(syntaxstr);
+ while (syntaxes != NULL) {
+ syntaxtype *bill = syntaxes;
+
+ free(syntaxes->desc);
+ while (syntaxes->extensions != NULL) {
+ exttype *bob = syntaxes->extensions;
+
+ syntaxes->extensions = bob->next;
+ free(bob->ext_regex);
+ if (bob->ext != NULL) {
+ regfree(bob->ext);
+ free(bob->ext);
+ }
+ free(bob);
+ }
+ while (syntaxes->color != NULL) {
+ colortype *bob = syntaxes->color;
+
+ syntaxes->color = bob->next;
+ free(bob->start_regex);
+ if (bob->start != NULL) {
+ regfree(bob->start);
+ free(bob->start);
+ }
+ if (bob->end_regex != NULL)
+ free(bob->end_regex);
+ if (bob->end != NULL) {
+ regfree(bob->end);
+ free(bob->end);
+ }
+ free(bob);
+ }
+ syntaxes = syntaxes->next;
+ free(bill);
+ }
+#endif /* ENABLE_COLOR */
+#ifndef NANO_TINY
+ /* Free the search and replace history lists. */
+ if (searchage != NULL)
+ free_filestruct(searchage);
+ if (replaceage != NULL)
+ free_filestruct(replaceage);
+#endif
+#ifdef ENABLE_NANORC
+ if (homedir != NULL)
+ free(homedir);
+#endif
+}
+#endif /* DEBUG */
+
diff --git a/src/help.c b/src/help.c
new file mode 100644
index 0000000..0eede72
--- /dev/null
+++ b/src/help.c
@@ -0,0 +1,563 @@
+/* $Id: help.c 4453 2009-12-02 03:36:22Z astyanax $ */
+/**************************************************************************
+ * help.c *
+ * *
+ * Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, *
+ * 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+
+#ifndef DISABLE_HELP
+
+static char *help_text = NULL;
+ /* The text displayed in the help window. */
+
+/* Our main help browser function. refresh_func is the function we will
+ * call to refresh the edit window. */
+void do_help(void (*refresh_func)(void))
+{
+ int kbinput = ERR;
+ bool meta_key, func_key, old_no_help = ISSET(NO_HELP);
+ bool abort = FALSE;
+ /* Whether we should abort the help browser. */
+ size_t line = 0;
+ /* The line number in help_text of the first displayed help
+ * line. This variable is zero-based. */
+ size_t last_line = 0;
+ /* The line number in help_text of the last help line. This
+ * variable is zero-based. */
+#ifndef DISABLE_MOUSE
+ /* The current shortcut list. */
+ int oldmenu = currmenu;
+#endif
+ const char *ptr;
+ /* The current line of the help text. */
+ size_t old_line = (size_t)-1;
+ /* The line we were on before the current line. */
+ const sc *s;
+ const subnfunc *f;
+
+ curs_set(0);
+ blank_edit();
+ wattroff(bottomwin, reverse_attr);
+ blank_statusbar();
+
+ /* Set help_text as the string to display. */
+ help_init();
+
+ assert(help_text != NULL);
+
+#ifndef DISABLE_MOUSE
+ /* Set currmenu to allow clicking on the help screen's shortcut
+ * list, after help_init() is called. */
+ currmenu = MHELP;
+#endif
+
+ if (ISSET(NO_HELP)) {
+ /* Make sure that the help screen's shortcut list will actually
+ * be displayed. */
+ UNSET(NO_HELP);
+ window_init();
+ }
+
+ bottombars(MHELP);
+ wnoutrefresh(bottomwin);
+
+ /* Get the last line of the help text. */
+ ptr = help_text;
+
+ for (; *ptr != '\0'; last_line++) {
+ ptr += help_line_len(ptr);
+ if (*ptr == '\n')
+ ptr++;
+ }
+ if (last_line > 0)
+ last_line--;
+
+ while (!abort) {
+ size_t i;
+
+ /* Display the help text if we don't have a key, or if the help
+ * text has moved. */
+ if (kbinput == ERR || line != old_line) {
+ blank_edit();
+
+ ptr = help_text;
+
+ /* Calculate where in the text we should be, based on the
+ * page. */
+ for (i = 0; i < line; i++) {
+ ptr += help_line_len(ptr);
+ if (*ptr == '\n')
+ ptr++;
+ }
+
+ for (i = 0; i < editwinrows && *ptr != '\0'; i++) {
+ size_t j = help_line_len(ptr);
+
+ mvwaddnstr(edit, i, 0, ptr, j);
+ ptr += j;
+ if (*ptr == '\n')
+ ptr++;
+ }
+ }
+
+ wnoutrefresh(edit);
+
+ old_line = line;
+
+ kbinput = get_kbinput(edit, &meta_key, &func_key);
+
+#ifndef DISABLE_MOUSE
+ if (kbinput == KEY_MOUSE) {
+ int mouse_x, mouse_y;
+ get_mouseinput(&mouse_x, &mouse_y, TRUE);
+ continue;
+ /* Redraw the screen. */
+ }
+#endif
+
+ parse_help_input(&kbinput, &meta_key, &func_key);
+ s = get_shortcut(MHELP, &kbinput, &meta_key, &func_key);
+ if (!s)
+ continue;
+ f = sctofunc((sc *) s);
+ if (!f)
+ continue;
+
+ if (f->scfunc == TOTAL_REFRESH) {
+ total_redraw();
+ break;
+ } else if (f->scfunc == DO_PAGE_UP) {
+ if (line > editwinrows - 2)
+ line -= editwinrows - 2;
+ else
+ line = 0;
+ } else if (f->scfunc == DO_PAGE_DOWN) {
+ if (line + (editwinrows - 1) < last_line)
+ line += editwinrows - 2;
+ } else if (f->scfunc == DO_UP_VOID) {
+ if (line > 0)
+ line--;
+ } else if (f->scfunc == DO_DOWN_VOID) {
+ if (line + (editwinrows - 1) < last_line)
+ line++;
+ } else if (f->scfunc == DO_FIRST_LINE) {
+ if (meta_key)
+ line = 0;
+ break;
+ } else if (f->scfunc == DO_LAST_LINE) {
+ if (meta_key) {
+ if (line + (editwinrows - 1) < last_line)
+ line = last_line - (editwinrows - 1);
+ }
+ break;
+ /* Abort the help browser. */
+ } else if (f->scfunc == DO_EXIT) {
+ abort = TRUE;
+ break;
+ }
+ }
+
+#ifndef DISABLE_MOUSE
+ currmenu = oldmenu;
+#endif
+
+ if (old_no_help) {
+ blank_bottombars();
+ wnoutrefresh(bottomwin);
+ SET(NO_HELP);
+ window_init();
+ } else
+ bottombars(currmenu);
+
+ curs_set(1);
+ refresh_func();
+
+ /* The help_init() at the beginning allocated help_text. Since
+ * help_text has now been written to the screen, we don't need it
+ * anymore. */
+ free(help_text);
+ help_text = NULL;
+}
+
+#ifndef DISABLE_BROWSER
+/* Start the help browser for the file browser. */
+void do_browser_help(void)
+{
+ do_help(&browser_refresh);
+}
+#endif
+
+/* This function allocates help_text, and stores the help string in it.
+ * help_text should be NULL initially. */
+void help_init(void)
+{
+ size_t allocsize = 0; /* Space needed for help_text. */
+ const char *htx[3]; /* Untranslated help message. We break
+ * it up into three chunks in case the
+ * full string is too long for the
+ * compiler to handle. */
+ char *ptr;
+ const subnfunc *f;
+ const sc *s;
+ int scsfound = 0;
+
+#ifndef NANO_TINY
+#ifdef ENABLE_NANORC
+ bool old_whitespace = ISSET(WHITESPACE_DISPLAY);
+
+ UNSET(WHITESPACE_DISPLAY);
+#endif
+#endif
+
+ /* First, set up the initial help text for the current function. */
+ if (currmenu == MWHEREIS || currmenu == MREPLACE || currmenu == MREPLACE2) {
+ htx[0] = N_("Search Command Help Text\n\n "
+ "Enter the words or characters you would like to "
+ "search for, and then press Enter. If there is a "
+ "match for the text you entered, the screen will be "
+ "updated to the location of the nearest match for the "
+ "search string.\n\n The previous search string will be "
+ "shown in brackets after the search prompt. Hitting "
+ "Enter without entering any text will perform the "
+ "previous search. ");
+ htx[1] = N_("If you have selected text with the mark and then "
+ "search to replace, only matches in the selected text "
+ "will be replaced.\n\n The following function keys are "
+ "available in Search mode:\n\n");
+ htx[2] = NULL;
+ } else if (currmenu == MGOTOLINE) {
+ htx[0] = N_("Go To Line Help Text\n\n "
+ "Enter the line number that you wish to go to and hit "
+ "Enter. If there are fewer lines of text than the "
+ "number you entered, you will be brought to the last "
+ "line of the file.\n\n The following function keys are "
+ "available in Go To Line mode:\n\n");
+ htx[1] = NULL;
+ htx[2] = NULL;
+ } else if (currmenu == MINSERTFILE) {
+ htx[0] = N_("Insert File Help Text\n\n "
+ "Type in the name of a file to be inserted into the "
+ "current file buffer at the current cursor "
+ "location.\n\n If you have compiled nano with multiple "
+ "file buffer support, and enable multiple file buffers "
+ "with the -F or --multibuffer command line flags, the "
+ "Meta-F toggle, or a nanorc file, inserting a file "
+ "will cause it to be loaded into a separate buffer "
+ "(use Meta-< and > to switch between file buffers). ");
+ htx[1] = N_("If you need another blank buffer, do not enter "
+ "any filename, or type in a nonexistent filename at "
+ "the prompt and press Enter.\n\n The following "
+ "function keys are available in Insert File mode:\n\n");
+ htx[2] = NULL;
+ } else if (currmenu == MWRITEFILE) {
+ htx[0] = N_("Write File Help Text\n\n "
+ "Type the name that you wish to save the current file "
+ "as and press Enter to save the file.\n\n If you have "
+ "selected text with the mark, you will be prompted to "
+ "save only the selected portion to a separate file. To "
+ "reduce the chance of overwriting the current file with "
+ "just a portion of it, the current filename is not the "
+ "default in this mode.\n\n The following function keys "
+ "are available in Write File mode:\n\n");
+ htx[1] = NULL;
+ htx[2] = NULL;
+ }
+#ifndef DISABLE_BROWSER
+ else if (currmenu == MBROWSER) {
+ htx[0] = N_("File Browser Help Text\n\n "
+ "The file browser is used to visually browse the "
+ "directory structure to select a file for reading "
+ "or writing. You may use the arrow keys or Page Up/"
+ "Down to browse through the files, and S or Enter to "
+ "choose the selected file or enter the selected "
+ "directory. To move up one level, select the "
+ "directory called \"..\" at the top of the file "
+ "list.\n\n The following function keys are available "
+ "in the file browser:\n\n");
+ htx[1] = NULL;
+ htx[2] = NULL;
+ } else if (currmenu == MWHEREISFILE) {
+ htx[0] = N_("Browser Search Command Help Text\n\n "
+ "Enter the words or characters you would like to "
+ "search for, and then press Enter. If there is a "
+ "match for the text you entered, the screen will be "
+ "updated to the location of the nearest match for the "
+ "search string.\n\n The previous search string will be "
+ "shown in brackets after the search prompt. Hitting "
+ "Enter without entering any text will perform the "
+ "previous search.\n\n");
+ htx[1] = N_(" The following function keys are available in "
+ "Browser Search mode:\n\n");
+ htx[2] = NULL;
+ } else if (currmenu == MGOTODIR) {
+ htx[0] = N_("Browser Go To Directory Help Text\n\n "
+ "Enter the name of the directory you would like to "
+ "browse to.\n\n If tab completion has not been "
+ "disabled, you can use the Tab key to (attempt to) "
+ "automatically complete the directory name.\n\n The "
+ "following function keys are available in Browser Go "
+ "To Directory mode:\n\n");
+ htx[1] = NULL;
+ htx[2] = NULL;
+ }
+#endif /* !DISABLE_BROWSER */
+#ifndef DISABLE_SPELLER
+ else if (currmenu == MSPELL) {
+ htx[0] = N_("Spell Check Help Text\n\n "
+ "The spell checker checks the spelling of all text in "
+ "the current file. When an unknown word is "
+ "encountered, it is highlighted and a replacement can "
+ "be edited. It will then prompt to replace every "
+ "instance of the given misspelled word in the current "
+ "file, or, if you have selected text with the mark, in "
+ "the selected text.\n\n The following function keys "
+ "are available in Spell Check mode:\n\n");
+ htx[1] = NULL;
+ htx[2] = NULL;
+ }
+#endif /* !DISABLE_SPELLER */
+#ifndef NANO_TINY
+ else if (currmenu == MEXTCMD) {
+ htx[0] = N_("Execute Command Help Text\n\n "
+ "This mode allows you to insert the output of a "
+ "command run by the shell into the current buffer (or "
+ "a new buffer in multiple file buffer mode). If you "
+ "need another blank buffer, do not enter any "
+ "command.\n\n The following function keys are "
+ "available in Execute Command mode:\n\n");
+ htx[1] = NULL;
+ htx[2] = NULL;
+ }
+#endif /* !NANO_TINY */
+ else {
+ /* Default to the main help list. */
+ htx[0] = N_("Main nano help text\n\n "
+ "The nano editor is designed to emulate the "
+ "functionality and ease-of-use of the UW Pico text "
+ "editor. There are four main sections of the editor. "
+ "The top line shows the program version, the current "
+ "filename being edited, and whether or not the file "
+ "has been modified. Next is the main editor window "
+ "showing the file being edited. The status line is "
+ "the third line from the bottom and shows important "
+ "messages. ");
+ htx[1] = N_("The bottom two lines show the most commonly used "
+ "shortcuts in the editor.\n\n The notation for "
+ "shortcuts is as follows: Control-key sequences are "
+ "notated with a caret (^) symbol and can be entered "
+ "either by using the Control (Ctrl) key or pressing "
+ "the Escape (Esc) key twice. Escape-key sequences are "
+ "notated with the Meta (M-) symbol and can be entered "
+ "using either the Esc, Alt, or Meta key depending on "
+ "your keyboard setup. ");
+ htx[2] = N_("Also, pressing Esc twice and then typing a "
+ "three-digit decimal number from 000 to 255 will enter "
+ "the character with the corresponding value. The "
+ "following keystrokes are available in the main editor "
+ "window. Alternative keys are shown in "
+ "parentheses:\n\n");
+ }
+
+ htx[0] = _(htx[0]);
+ if (htx[1] != NULL)
+ htx[1] = _(htx[1]);
+ if (htx[2] != NULL)
+ htx[2] = _(htx[2]);
+
+ allocsize += strlen(htx[0]);
+ if (htx[1] != NULL)
+ allocsize += strlen(htx[1]);
+ if (htx[2] != NULL)
+ allocsize += strlen(htx[2]);
+
+ /* Count the shortcut help text. Each entry has up to three keys,
+ * which fill 24 columns, plus translated text, plus one or two
+ * \n's. */
+ for (f = allfuncs; f != NULL; f = f->next)
+ if (f->menus & currmenu)
+ allocsize += (24 * mb_cur_max()) + strlen(f->help) + 2;
+
+#ifndef NANO_TINY
+ /* If we're on the main list, we also count the toggle help text.
+ * Each entry has "M-%c\t\t\t", which fills 24 columns, plus a
+ * space, plus translated text, plus one or two '\n's. */
+ if (currmenu == MMAIN) {
+ size_t endis_len = strlen(_("enable/disable"));
+
+ for (s = sclist; s != NULL; s = s->next)
+ if (s->scfunc == DO_TOGGLE)
+ allocsize += strlen(_(flagtostr(s->toggle))) + endis_len + 9;
+
+ }
+#endif
+
+ /* help_text has been freed and set to NULL unless the user resized
+ * while in the help screen. */
+ if (help_text != NULL)
+ free(help_text);
+
+ /* Allocate space for the help text. */
+ help_text = charalloc(allocsize + 1);
+
+ /* Now add the text we want. */
+ strcpy(help_text, htx[0]);
+ if (htx[1] != NULL)
+ strcat(help_text, htx[1]);
+ if (htx[2] != NULL)
+ strcat(help_text, htx[2]);
+
+ ptr = help_text + strlen(help_text);
+
+ /* Now add our shortcut info. */
+ for (f = allfuncs; f != NULL; f = f->next) {
+
+ if ((f->menus & currmenu) == 0)
+ continue;
+
+ if (!f->desc || !strcmp(f->desc, ""))
+ continue;
+
+ /* Lets just try and use the first 3 shortcuts
+ from the new struct... */
+ for (s = sclist, scsfound = 0; s != NULL; s = s->next) {
+
+ if (scsfound == 3)
+ continue;
+
+ if (s->type == RAW)
+ continue;
+
+ if ((s->menu & currmenu) == 0)
+ continue;
+
+ if (s->scfunc == f->scfunc) {
+ scsfound++;
+
+ if (scsfound == 1)
+ ptr += sprintf(ptr, "%s", s->keystr);
+ else
+ ptr += sprintf(ptr, "(%s)", s->keystr);
+ *(ptr++) = '\t';
+ }
+ }
+ /* Pad with tabs if we didnt find 3 */
+ for (; scsfound < 3; scsfound++) {
+ *(ptr++) = '\t';
+ }
+
+ /* The shortcut's help text. */
+ ptr += sprintf(ptr, "%s\n", _(f->help));
+
+ if (f->blank_after)
+ ptr += sprintf(ptr, "\n");
+ }
+
+#ifndef NANO_TINY
+ /* And the toggles... */
+ if (currmenu == MMAIN)
+ for (s = sclist; s != NULL; s = s->next)
+ if (s->scfunc == DO_TOGGLE)
+ ptr += sprintf(ptr, "(%s)\t\t\t%s %s\n",
+ s->keystr, _(flagtostr(s->toggle)), _("enable/disable"));
+
+
+#ifdef ENABLE_NANORC
+ if (old_whitespace)
+ SET(WHITESPACE_DISPLAY);
+#endif
+#endif
+
+ /* If all went well, we didn't overwrite the allocated space for
+ * help_text. */
+ assert(strlen(help_text) <= allocsize + 1);
+}
+
+/* Determine the shortcut key corresponding to the values of kbinput
+ * (the key itself), meta_key (whether the key is a meta sequence), and
+ * func_key (whether the key is a function key), if any. In the
+ * process, convert certain non-shortcut keys into their corresponding
+ * shortcut keys. */
+void parse_help_input(int *kbinput, bool *meta_key, bool *func_key)
+{
+ get_shortcut(MHELP, kbinput, meta_key, func_key);
+
+ if (!*meta_key) {
+ switch (*kbinput) {
+ /* For consistency with the file browser. */
+ case ' ':
+ *kbinput = sc_seq_or(DO_PAGE_UP, 0);
+ break;
+ case '-':
+ *kbinput = sc_seq_or(DO_PAGE_DOWN, 0);;
+ break;
+ /* Cancel is equivalent to Exit here. */
+ case 'E':
+ case 'e':
+ *kbinput = sc_seq_or(DO_EXIT, 0);;
+ break;
+ }
+ }
+}
+
+/* Calculate the next line of help_text, starting at ptr. */
+size_t help_line_len(const char *ptr)
+{
+ int help_cols = (COLS > 24) ? COLS - 1 : 24;
+
+ /* Try to break the line at (COLS - 1) columns if we have more than
+ * 24 columns, and at 24 columns otherwise. */
+ ssize_t wrap_loc = break_line(ptr, help_cols, TRUE);
+ size_t retval = (wrap_loc < 0) ? 0 : wrap_loc;
+ size_t retval_save = retval;
+
+ /* Get the length of the entire line up to a null or a newline. */
+ while (*(ptr + retval) != '\0' && *(ptr + retval) != '\n')
+ retval += move_mbright(ptr + retval, 0);
+
+ /* If the entire line doesn't go more than one column beyond where
+ * we tried to break it, we should display it as-is. Otherwise, we
+ * should display it only up to the break. */
+ if (strnlenpt(ptr, retval) > help_cols + 1)
+ retval = retval_save;
+
+ return retval;
+}
+
+#endif /* !DISABLE_HELP */
+
+/* Start the help browser for the edit window. */
+void do_help_void(void)
+{
+
+#ifndef DISABLE_HELP
+ /* Start the help browser for the edit window. */
+ do_help(&edit_refresh);
+#else
+ if (currmenu == MMAIN)
+ nano_disabled_msg();
+ else
+ beep();
+#endif
+}
diff --git a/src/move.c b/src/move.c
new file mode 100644
index 0000000..468a02f
--- /dev/null
+++ b/src/move.c
@@ -0,0 +1,670 @@
+/* $Id: move.c 4486 2010-03-21 04:56:37Z astyanax $ */
+/**************************************************************************
+ * move.c *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <string.h>
+#include <ctype.h>
+
+/* Move to the first line of the file. */
+void do_first_line(void)
+{
+ openfile->current = openfile->edittop = openfile->fileage;
+ openfile->current_x = 0;
+ openfile->placewewant = 0;
+
+ edit_refresh_needed = 1;
+}
+
+/* Move to the last line of the file. */
+void do_last_line(void)
+{
+ openfile->current = openfile->filebot;
+ openfile->current_x = strlen(openfile->filebot->data);
+ openfile->placewewant = xplustabs();
+ openfile->current_y = editwinrows - 1;
+
+ edit_refresh_needed = 1;
+}
+
+/* Move up one page. */
+void do_page_up(void)
+{
+ int i, skipped = 0;
+
+ /* If there's less than a page of text left on the screen, put the
+ * cursor at the beginning of the first line of the file, and then
+ * update the edit window. */
+ if (openfile->current->lineno == 1 || (!ISSET(SOFTWRAP) &&
+ openfile->current->lineno <= editwinrows - 2)) {
+ do_first_line();
+ return;
+ }
+
+ /* If we're not in smooth scrolling mode, put the cursor at the
+ * beginning of the top line of the edit window, as Pico does. */
+
+#ifndef NANO_TINY
+ if (!ISSET(SMOOTH_SCROLL)) {
+#endif
+ openfile->current = openfile->edittop;
+ openfile->placewewant = openfile->current_y = 0;
+#ifndef NANO_TINY
+ }
+#endif
+
+ for (i = editwinrows - 2; i - skipped > 0 && openfile->current !=
+ openfile->fileage; i--) {
+ openfile->current = openfile->current->prev;
+ if (ISSET(SOFTWRAP) && openfile->current) {
+ skipped += strlenpt(openfile->current->data) / COLS;
+#ifdef DEBUG
+ fprintf(stderr, "do_page_up: i = %d, skipped = %d based on line %ld len %d\n", i, (unsigned long) skipped,
+openfile->current->lineno, strlenpt(openfile->current->data));
+#endif
+ }
+ }
+
+ openfile->current_x = actual_x(openfile->current->data,
+ openfile->placewewant);
+
+#ifdef DEBUG
+ fprintf(stderr, "do_page_up: openfile->current->lineno = %lu, skipped = %d\n", (unsigned long) openfile->current->lineno, skipped);
+#endif
+
+ /* Scroll the edit window up a page. */
+ edit_update(NONE);
+}
+
+/* Move down one page. */
+void do_page_down(void)
+{
+ int i;
+
+ /* If there's less than a page of text left on the screen, put the
+ * cursor at the beginning of the last line of the file, and then
+ * update the edit window. */
+ if (openfile->current->lineno + maxrows - 2 >=
+ openfile->filebot->lineno) {
+ do_last_line();
+ return;
+ }
+
+ /* If we're not in smooth scrolling mode, put the cursor at the
+ * beginning of the top line of the edit window, as Pico does. */
+#ifndef NANO_TINY
+ if (!ISSET(SMOOTH_SCROLL)) {
+#endif
+ openfile->current = openfile->edittop;
+ openfile->placewewant = openfile->current_y = 0;
+#ifndef NANO_TINY
+ }
+#endif
+
+ for (i = maxrows - 2; i > 0 && openfile->current !=
+ openfile->filebot; i--) {
+ openfile->current = openfile->current->next;
+#ifdef DEBUG
+ fprintf(stderr, "do_page_down: moving to line %lu\n", (unsigned long) openfile->current->lineno);
+#endif
+
+ }
+
+ openfile->current_x = actual_x(openfile->current->data,
+ openfile->placewewant);
+
+ /* Scroll the edit window down a page. */
+ edit_update(NONE);
+}
+
+#ifndef DISABLE_JUSTIFY
+/* Move up to the beginning of the last beginning-of-paragraph line
+ * before the current line. If allow_update is TRUE, update the screen
+ * afterwards. */
+void do_para_begin(bool allow_update)
+{
+ filestruct *current_save = openfile->current;
+ const size_t pww_save = openfile->placewewant;
+
+ if (openfile->current != openfile->fileage) {
+ do {
+ openfile->current = openfile->current->prev;
+ openfile->current_y--;
+ } while (!begpar(openfile->current));
+ }
+
+ openfile->current_x = 0;
+ openfile->placewewant = 0;
+
+ if (allow_update)
+ edit_redraw(current_save, pww_save);
+}
+
+/* Move up to the beginning of the last beginning-of-paragraph line
+ * before the current line, and update the screen afterwards. */
+void do_para_begin_void(void)
+{
+ do_para_begin(TRUE);
+}
+
+/* Move down to the beginning of the last line of the current paragraph.
+ * Then move down one line farther if there is such a line, or to the
+ * end of the current line if not. If allow_update is TRUE, update the
+ * screen afterwards. A line is the last line of a paragraph if it is
+ * in a paragraph, and the next line either is the beginning line of a
+ * paragraph or isn't in a paragraph. */
+void do_para_end(bool allow_update)
+{
+ filestruct *const current_save = openfile->current;
+ const size_t pww_save = openfile->placewewant;
+
+ while (openfile->current != openfile->filebot &&
+ !inpar(openfile->current))
+ openfile->current = openfile->current->next;
+
+ while (openfile->current != openfile->filebot &&
+ inpar(openfile->current->next) &&
+ !begpar(openfile->current->next)) {
+ openfile->current = openfile->current->next;
+ openfile->current_y++;
+ }
+
+ if (openfile->current != openfile->filebot) {
+ openfile->current = openfile->current->next;
+ openfile->current_x = 0;
+ openfile->placewewant = 0;
+ } else {
+ openfile->current_x = strlen(openfile->current->data);
+ openfile->placewewant = xplustabs();
+ }
+
+ if (allow_update)
+ edit_redraw(current_save, pww_save);
+}
+
+/* Move down to the beginning of the last line of the current paragraph.
+ * Then move down one line farther if there is such a line, or to the
+ * end of the current line if not, and update the screen afterwards. */
+void do_para_end_void(void)
+{
+ do_para_end(TRUE);
+}
+#endif /* !DISABLE_JUSTIFY */
+
+#ifndef NANO_TINY
+/* Move to the next word in the file. If allow_punct is TRUE, treat
+ * punctuation as part of a word. If allow_update is TRUE, update the
+ * screen afterwards. Return TRUE if we started on a word, and FALSE
+ * otherwise. */
+bool do_next_word(bool allow_punct, bool allow_update)
+{
+ size_t pww_save = openfile->placewewant;
+ filestruct *current_save = openfile->current;
+ char *char_mb;
+ int char_mb_len;
+ bool end_line = FALSE, started_on_word = FALSE;
+
+ assert(openfile->current != NULL && openfile->current->data != NULL);
+
+ char_mb = charalloc(mb_cur_max());
+
+ /* Move forward until we find the character after the last letter of
+ * the current word. */
+ while (!end_line) {
+ char_mb_len = parse_mbchar(openfile->current->data +
+ openfile->current_x, char_mb, NULL);
+
+ /* If we've found it, stop moving forward through the current
+ * line. */
+ if (!is_word_mbchar(char_mb, allow_punct))
+ break;
+
+ /* If we haven't found it, then we've started on a word, so set
+ * started_on_word to TRUE. */
+ started_on_word = TRUE;
+
+ if (openfile->current->data[openfile->current_x] == '\0')
+ end_line = TRUE;
+ else
+ openfile->current_x += char_mb_len;
+ }
+
+ /* Move forward until we find the first letter of the next word. */
+ if (openfile->current->data[openfile->current_x] == '\0')
+ end_line = TRUE;
+ else
+ openfile->current_x += char_mb_len;
+
+ for (; openfile->current != NULL;
+ openfile->current = openfile->current->next) {
+ while (!end_line) {
+ char_mb_len = parse_mbchar(openfile->current->data +
+ openfile->current_x, char_mb, NULL);
+
+ /* If we've found it, stop moving forward through the
+ * current line. */
+ if (is_word_mbchar(char_mb, allow_punct))
+ break;
+
+ if (openfile->current->data[openfile->current_x] == '\0')
+ end_line = TRUE;
+ else
+ openfile->current_x += char_mb_len;
+ }
+
+ /* If we've found it, stop moving forward to the beginnings of
+ * subsequent lines. */
+ if (!end_line)
+ break;
+
+ if (openfile->current != openfile->filebot) {
+ end_line = FALSE;
+ openfile->current_x = 0;
+ }
+ }
+
+ free(char_mb);
+
+ /* If we haven't found it, move to the end of the file. */
+ if (openfile->current == NULL)
+ openfile->current = openfile->filebot;
+
+ openfile->placewewant = xplustabs();
+
+ /* If allow_update is TRUE, update the screen. */
+ if (allow_update)
+ edit_redraw(current_save, pww_save);
+
+ /* Return whether we started on a word. */
+ return started_on_word;
+}
+
+/* Move to the next word in the file, treating punctuation as part of a
+ * word if the WORD_BOUNDS flag is set, and update the screen
+ * afterwards. */
+void do_next_word_void(void)
+{
+ do_next_word(ISSET(WORD_BOUNDS), TRUE);
+}
+
+/* Move to the previous word in the file. If allow_punct is TRUE, treat
+ * punctuation as part of a word. If allow_update is TRUE, update the
+ * screen afterwards. Return TRUE if we started on a word, and FALSE
+ * otherwise. */
+bool do_prev_word(bool allow_punct, bool allow_update)
+{
+ size_t pww_save = openfile->placewewant;
+ filestruct *current_save = openfile->current;
+ char *char_mb;
+ int char_mb_len;
+ bool begin_line = FALSE, started_on_word = FALSE;
+
+ assert(openfile->current != NULL && openfile->current->data != NULL);
+
+ char_mb = charalloc(mb_cur_max());
+
+ /* Move backward until we find the character before the first letter
+ * of the current word. */
+ while (!begin_line) {
+ char_mb_len = parse_mbchar(openfile->current->data +
+ openfile->current_x, char_mb, NULL);
+
+ /* If we've found it, stop moving backward through the current
+ * line. */
+ if (!is_word_mbchar(char_mb, allow_punct))
+ break;
+
+ /* If we haven't found it, then we've started on a word, so set
+ * started_on_word to TRUE. */
+ started_on_word = TRUE;
+
+ if (openfile->current_x == 0)
+ begin_line = TRUE;
+ else
+ openfile->current_x = move_mbleft(openfile->current->data,
+ openfile->current_x);
+ }
+
+ /* Move backward until we find the last letter of the previous
+ * word. */
+ if (openfile->current_x == 0)
+ begin_line = TRUE;
+ else
+ openfile->current_x = move_mbleft(openfile->current->data,
+ openfile->current_x);
+
+ for (; openfile->current != NULL;
+ openfile->current = openfile->current->prev) {
+ while (!begin_line) {
+ char_mb_len = parse_mbchar(openfile->current->data +
+ openfile->current_x, char_mb, NULL);
+
+ /* If we've found it, stop moving backward through the
+ * current line. */
+ if (is_word_mbchar(char_mb, allow_punct))
+ break;
+
+ if (openfile->current_x == 0)
+ begin_line = TRUE;
+ else
+ openfile->current_x =
+ move_mbleft(openfile->current->data,
+ openfile->current_x);
+ }
+
+ /* If we've found it, stop moving backward to the ends of
+ * previous lines. */
+ if (!begin_line)
+ break;
+
+ if (openfile->current != openfile->fileage) {
+ begin_line = FALSE;
+ openfile->current_x = strlen(openfile->current->prev->data);
+ }
+ }
+
+ /* If we haven't found it, move to the beginning of the file. */
+ if (openfile->current == NULL)
+ openfile->current = openfile->fileage;
+ /* If we've found it, move backward until we find the character
+ * before the first letter of the previous word. */
+ else if (!begin_line) {
+ if (openfile->current_x == 0)
+ begin_line = TRUE;
+ else
+ openfile->current_x = move_mbleft(openfile->current->data,
+ openfile->current_x);
+
+ while (!begin_line) {
+ char_mb_len = parse_mbchar(openfile->current->data +
+ openfile->current_x, char_mb, NULL);
+
+ /* If we've found it, stop moving backward through the
+ * current line. */
+ if (!is_word_mbchar(char_mb, allow_punct))
+ break;
+
+ if (openfile->current_x == 0)
+ begin_line = TRUE;
+ else
+ openfile->current_x =
+ move_mbleft(openfile->current->data,
+ openfile->current_x);
+ }
+
+ /* If we've found it, move forward to the first letter of the
+ * previous word. */
+ if (!begin_line)
+ openfile->current_x += char_mb_len;
+ }
+
+ free(char_mb);
+
+ openfile->placewewant = xplustabs();
+
+ /* If allow_update is TRUE, update the screen. */
+ if (allow_update)
+ edit_redraw(current_save, pww_save);
+
+ /* Return whether we started on a word. */
+ return started_on_word;
+}
+
+/* Move to the previous word in the file, treating punctuation as part
+ * of a word if the WORD_BOUNDS flag is set, and update the screen
+ * afterwards. */
+void do_prev_word_void(void)
+{
+ do_prev_word(ISSET(WORD_BOUNDS), TRUE);
+}
+#endif /* !NANO_TINY */
+
+/* Move to the beginning of the current line. If the SMART_HOME flag is
+ * set, move to the first non-whitespace character of the current line
+ * if we aren't already there, or to the beginning of the current line
+ * if we are. */
+void do_home(void)
+{
+ size_t pww_save = openfile->placewewant;
+
+#ifndef NANO_TINY
+ if (ISSET(SMART_HOME)) {
+ size_t current_x_save = openfile->current_x;
+
+ openfile->current_x = indent_length(openfile->current->data);
+
+ if (openfile->current_x == current_x_save ||
+ openfile->current->data[openfile->current_x] == '\0')
+ openfile->current_x = 0;
+
+ openfile->placewewant = xplustabs();
+ } else {
+#endif
+ openfile->current_x = 0;
+ openfile->placewewant = 0;
+#ifndef NANO_TINY
+ }
+#endif
+
+ if (need_horizontal_update(pww_save))
+ update_line(openfile->current, openfile->current_x);
+}
+
+/* Move to the end of the current line. */
+void do_end(void)
+{
+ size_t pww_save = openfile->placewewant;
+
+ openfile->current_x = strlen(openfile->current->data);
+ openfile->placewewant = xplustabs();
+
+ if (need_horizontal_update(pww_save))
+ update_line(openfile->current, openfile->current_x);
+}
+
+/* If scroll_only is FALSE, move up one line. If scroll_only is TRUE,
+ * scroll up one line without scrolling the cursor. */
+void do_up(
+#ifndef NANO_TINY
+ bool scroll_only
+#else
+ void
+#endif
+ )
+{
+ /* If we're at the top of the file, or if scroll_only is TRUE and
+ * the top of the file is onscreen, get out. */
+ if (openfile->current == openfile->fileage
+#ifndef NANO_TINY
+ || (scroll_only && openfile->edittop == openfile->fileage)
+#endif
+ )
+ return;
+
+ assert(ISSET(SOFTWRAP) || openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
+
+ /* Move the current line of the edit window up. */
+ openfile->current = openfile->current->prev;
+ openfile->current_x = actual_x(openfile->current->data,
+ openfile->placewewant);
+
+ /* If scroll_only is FALSE and if we're on the first line of the
+ * edit window, scroll the edit window up one line if we're in
+ * smooth scrolling mode, or up half a page if we're not. If
+ * scroll_only is TRUE, scroll the edit window up one line
+ * unconditionally. */
+ if (openfile->current_y == 0 || (ISSET(SOFTWRAP) && openfile->edittop->lineno == openfile->current->next->lineno)
+#ifndef NANO_TINY
+ || scroll_only
+#endif
+ )
+ edit_scroll(UP_DIR,
+#ifndef NANO_TINY
+ (ISSET(SMOOTH_SCROLL) || scroll_only) ? 1 :
+#endif
+ editwinrows / 2 + 1);
+
+ /* If we're below the first line of the edit window, update the
+ * line we were on before and the line we're on now. The former
+ * needs to be redrawn if we're not on the first page, and the
+ * latter needs to be drawn unconditionally. */
+ if (openfile->current_y > 0) {
+ if (need_vertical_update(0))
+ update_line(openfile->current->next, 0);
+ update_line(openfile->current, openfile->current_x);
+ }
+}
+
+/* Move up one line. */
+void do_up_void(void)
+{
+ do_up(
+#ifndef NANO_TINY
+ FALSE
+#endif
+ );
+}
+
+#ifndef NANO_TINY
+/* Scroll up one line without scrolling the cursor. */
+void do_scroll_up(void)
+{
+ do_up(TRUE);
+}
+#endif
+
+/* If scroll_only is FALSE, move down one line. If scroll_only is TRUE,
+ * scroll down one line without scrolling the cursor. */
+void do_down(
+#ifndef NANO_TINY
+ bool scroll_only
+#else
+ void
+#endif
+ )
+{
+ bool onlastline = FALSE;
+
+ /* If we're at the bottom of the file, get out. */
+ if (openfile->current == openfile->filebot)
+ return;
+
+
+ assert(ISSET(SOFTWRAP) || openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
+
+ /* Move the current line of the edit window down. */
+ openfile->current = openfile->current->next;
+ openfile->current_x = actual_x(openfile->current->data,
+ openfile->placewewant);
+
+ if (ISSET(SOFTWRAP)) {
+ if (openfile->current->lineno - openfile->edittop->lineno >= maxrows)
+ onlastline = TRUE;
+ }
+
+ /* If scroll_only is FALSE and if we're on the first line of the
+ * edit window, scroll the edit window down one line if we're in
+ * smooth scrolling mode, or down half a page if we're not. If
+ * scroll_only is TRUE, scroll the edit window down one line
+ * unconditionally. */
+ if (onlastline || openfile->current_y == editwinrows - 1
+#ifndef NANO_TINY
+ || scroll_only
+#endif
+ ) {
+ edit_scroll(DOWN_DIR,
+#ifndef NANO_TINY
+ (ISSET(SMOOTH_SCROLL) || scroll_only) ? 1 :
+#endif
+ editwinrows / 2 + 1);
+
+ edit_refresh_needed = TRUE;
+ }
+ /* If we're above the last line of the edit window, update the line
+ * we were on before and the line we're on now. The former needs to
+ * be redrawn if we're not on the first page, and the latter needs
+ * to be drawn unconditionally. */
+ if (ISSET(SOFTWRAP) || openfile->current_y < editwinrows - 1) {
+ if (need_vertical_update(0))
+ update_line(openfile->current->prev, 0);
+ update_line(openfile->current, openfile->current_x);
+ }
+}
+
+/* Move down one line. */
+void do_down_void(void)
+{
+ do_down(
+#ifndef NANO_TINY
+ FALSE
+#endif
+ );
+}
+
+#ifndef NANO_TINY
+/* Scroll down one line without scrolling the cursor. */
+void do_scroll_down(void)
+{
+ do_down(TRUE);
+}
+#endif
+
+/* Move left one character. */
+void do_left(void)
+{
+ size_t pww_save = openfile->placewewant;
+
+ if (openfile->current_x > 0)
+ openfile->current_x = move_mbleft(openfile->current->data,
+ openfile->current_x);
+ else if (openfile->current != openfile->fileage) {
+ do_up_void();
+ openfile->current_x = strlen(openfile->current->data);
+ }
+
+ openfile->placewewant = xplustabs();
+
+ if (need_horizontal_update(pww_save))
+ update_line(openfile->current, openfile->current_x);
+}
+
+/* Move right one character. */
+void do_right(void)
+{
+ size_t pww_save = openfile->placewewant;
+
+ assert(openfile->current_x <= strlen(openfile->current->data));
+
+ if (openfile->current->data[openfile->current_x] != '\0')
+ openfile->current_x = move_mbright(openfile->current->data,
+ openfile->current_x);
+ else if (openfile->current != openfile->filebot) {
+ do_down_void();
+ openfile->current_x = 0;
+ }
+
+ openfile->placewewant = xplustabs();
+
+ if (need_horizontal_update(pww_save))
+ update_line(openfile->current, openfile->current_x);
+}
diff --git a/src/nano.c b/src/nano.c
new file mode 100644
index 0000000..e4e2222
--- /dev/null
+++ b/src/nano.c
@@ -0,0 +1,2684 @@
+/* $Id: nano.c 4520 2010-11-12 06:23:14Z astyanax $ */
+/**************************************************************************
+ * nano.c *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <signal.h>
+#include <unistd.h>
+#include <string.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <ctype.h>
+#include <locale.h>
+#include <time.h>
+#ifdef ENABLE_UTF8
+#include <langinfo.h>
+#endif
+#include <termios.h>
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#endif
+#ifndef NANO_TINY
+#include <sys/ioctl.h>
+#endif
+
+#ifndef DISABLE_MOUSE
+static int oldinterval = -1;
+ /* Used to store the user's original mouse click interval. */
+#endif
+#ifdef ENABLE_NANORC
+static bool no_rcfiles = FALSE;
+ /* Should we ignore all rcfiles? */
+#endif
+static struct termios oldterm;
+ /* The user's original terminal settings. */
+static struct sigaction act;
+ /* Used to set up all our fun signal handlers. */
+
+/* Create a new filestruct node. Note that we do not set prevnode->next
+ * to the new line. */
+filestruct *make_new_node(filestruct *prevnode)
+{
+ filestruct *newnode = (filestruct *)nmalloc(sizeof(filestruct));
+
+ newnode->data = NULL;
+ newnode->prev = prevnode;
+ newnode->next = NULL;
+ newnode->lineno = (prevnode != NULL) ? prevnode->lineno + 1 : 1;
+
+#ifdef ENABLE_COLOR
+ newnode->multidata = NULL;
+#endif
+
+ return newnode;
+}
+
+/* Make a copy of a filestruct node. */
+filestruct *copy_node(const filestruct *src)
+{
+ filestruct *dst;
+
+ assert(src != NULL);
+
+ dst = (filestruct *)nmalloc(sizeof(filestruct));
+
+ dst->data = mallocstrcpy(NULL, src->data);
+ dst->next = src->next;
+ dst->prev = src->prev;
+ dst->lineno = src->lineno;
+#ifdef ENABLE_COLOR
+ dst->multidata = NULL;
+#endif
+
+ return dst;
+}
+
+/* Splice a node into an existing filestruct. */
+void splice_node(filestruct *begin, filestruct *newnode, filestruct
+ *end)
+{
+ assert(newnode != NULL && begin != NULL);
+
+ newnode->next = end;
+ newnode->prev = begin;
+ begin->next = newnode;
+ if (end != NULL)
+ end->prev = newnode;
+}
+
+/* Unlink a node from the rest of the filestruct. */
+void unlink_node(const filestruct *fileptr)
+{
+ assert(fileptr != NULL);
+
+ if (fileptr->prev != NULL)
+ fileptr->prev->next = fileptr->next;
+ if (fileptr->next != NULL)
+ fileptr->next->prev = fileptr->prev;
+}
+
+/* Delete a node from the filestruct. */
+void delete_node(filestruct *fileptr)
+{
+ assert(fileptr != NULL && fileptr->data != NULL);
+
+ if (fileptr->data != NULL)
+ free(fileptr->data);
+
+#ifdef ENABLE_COLOR
+ if (fileptr->multidata)
+ free(fileptr->multidata);
+#endif
+
+ free(fileptr);
+}
+
+/* Duplicate a whole filestruct. */
+filestruct *copy_filestruct(const filestruct *src)
+{
+ filestruct *head, *copy;
+
+ assert(src != NULL);
+
+ copy = copy_node(src);
+ copy->prev = NULL;
+ head = copy;
+ src = src->next;
+
+ while (src != NULL) {
+ copy->next = copy_node(src);
+ copy->next->prev = copy;
+ copy = copy->next;
+
+ src = src->next;
+ }
+
+ copy->next = NULL;
+
+ return head;
+}
+
+/* Free a filestruct. */
+void free_filestruct(filestruct *src)
+{
+ assert(src != NULL);
+
+ while (src->next != NULL) {
+ src = src->next;
+ delete_node(src->prev);
+ }
+
+ delete_node(src);
+}
+
+/* Renumber all entries in a filestruct, starting with fileptr. */
+void renumber(filestruct *fileptr)
+{
+ ssize_t line;
+
+ assert(fileptr != NULL);
+
+ line = (fileptr->prev == NULL) ? 0 : fileptr->prev->lineno;
+
+ assert(fileptr != fileptr->next);
+
+ for (; fileptr != NULL; fileptr = fileptr->next)
+ fileptr->lineno = ++line;
+}
+
+/* Partition a filestruct so that it begins at (top, top_x) and ends at
+ * (bot, bot_x). */
+partition *partition_filestruct(filestruct *top, size_t top_x,
+ filestruct *bot, size_t bot_x)
+{
+ partition *p;
+
+ assert(top != NULL && bot != NULL && openfile->fileage != NULL && openfile->filebot != NULL);
+
+ /* Initialize the partition. */
+ p = (partition *)nmalloc(sizeof(partition));
+
+ /* If the top and bottom of the partition are different from the top
+ * and bottom of the filestruct, save the latter and then set them
+ * to top and bot. */
+ if (top != openfile->fileage) {
+ p->fileage = openfile->fileage;
+ openfile->fileage = top;
+ } else
+ p->fileage = NULL;
+ if (bot != openfile->filebot) {
+ p->filebot = openfile->filebot;
+ openfile->filebot = bot;
+ } else
+ p->filebot = NULL;
+
+ /* Save the line above the top of the partition, detach the top of
+ * the partition from it, and save the text before top_x in
+ * top_data. */
+ p->top_prev = top->prev;
+ top->prev = NULL;
+ p->top_data = mallocstrncpy(NULL, top->data, top_x + 1);
+ p->top_data[top_x] = '\0';
+
+ /* Save the line below the bottom of the partition, detach the
+ * bottom of the partition from it, and save the text after bot_x in
+ * bot_data. */
+ p->bot_next = bot->next;
+ bot->next = NULL;
+ p->bot_data = mallocstrcpy(NULL, bot->data + bot_x);
+
+ /* Remove all text after bot_x at the bottom of the partition. */
+ null_at(&bot->data, bot_x);
+
+ /* Remove all text before top_x at the top of the partition. */
+ charmove(top->data, top->data + top_x, strlen(top->data) -
+ top_x + 1);
+ align(&top->data);
+
+ /* Return the partition. */
+ return p;
+}
+
+/* Unpartition a filestruct so that it begins at (fileage, 0) and ends
+ * at (filebot, strlen(filebot->data)) again. */
+void unpartition_filestruct(partition **p)
+{
+ char *tmp;
+
+ assert(p != NULL && openfile->fileage != NULL && openfile->filebot != NULL);
+
+ /* Reattach the line above the top of the partition, and restore the
+ * text before top_x from top_data. Free top_data when we're done
+ * with it. */
+ tmp = mallocstrcpy(NULL, openfile->fileage->data);
+ openfile->fileage->prev = (*p)->top_prev;
+ if (openfile->fileage->prev != NULL)
+ openfile->fileage->prev->next = openfile->fileage;
+ openfile->fileage->data = charealloc(openfile->fileage->data,
+ strlen((*p)->top_data) + strlen(openfile->fileage->data) + 1);
+ strcpy(openfile->fileage->data, (*p)->top_data);
+ free((*p)->top_data);
+ strcat(openfile->fileage->data, tmp);
+ free(tmp);
+
+ /* Reattach the line below the bottom of the partition, and restore
+ * the text after bot_x from bot_data. Free bot_data when we're
+ * done with it. */
+ openfile->filebot->next = (*p)->bot_next;
+ if (openfile->filebot->next != NULL)
+ openfile->filebot->next->prev = openfile->filebot;
+ openfile->filebot->data = charealloc(openfile->filebot->data,
+ strlen(openfile->filebot->data) + strlen((*p)->bot_data) + 1);
+ strcat(openfile->filebot->data, (*p)->bot_data);
+ free((*p)->bot_data);
+
+ /* Restore the top and bottom of the filestruct, if they were
+ * different from the top and bottom of the partition. */
+ if ((*p)->fileage != NULL)
+ openfile->fileage = (*p)->fileage;
+ if ((*p)->filebot != NULL)
+ openfile->filebot = (*p)->filebot;
+
+ /* Uninitialize the partition. */
+ free(*p);
+ *p = NULL;
+}
+
+/* Move all the text between (top, top_x) and (bot, bot_x) in the
+ * current filestruct to a filestruct beginning with file_top and ending
+ * with file_bot. If no text is between (top, top_x) and (bot, bot_x),
+ * don't do anything. */
+void move_to_filestruct(filestruct **file_top, filestruct **file_bot,
+ filestruct *top, size_t top_x, filestruct *bot, size_t bot_x)
+{
+ filestruct *top_save;
+ bool edittop_inside;
+#ifndef NANO_TINY
+ bool mark_inside = FALSE;
+#endif
+
+ assert(file_top != NULL && file_bot != NULL && top != NULL && bot != NULL);
+
+ /* If (top, top_x)-(bot, bot_x) doesn't cover any text, get out. */
+ if (top == bot && top_x == bot_x)
+ return;
+
+ /* Partition the filestruct so that it contains only the text from
+ * (top, top_x) to (bot, bot_x), keep track of whether the top of
+ * the edit window is inside the partition, and keep track of
+ * whether the mark begins inside the partition. */
+ filepart = partition_filestruct(top, top_x, bot, bot_x);
+ edittop_inside = (openfile->edittop->lineno >=
+ openfile->fileage->lineno && openfile->edittop->lineno <=
+ openfile->filebot->lineno);
+#ifndef NANO_TINY
+ if (openfile->mark_set)
+ mark_inside = (openfile->mark_begin->lineno >=
+ openfile->fileage->lineno &&
+ openfile->mark_begin->lineno <=
+ openfile->filebot->lineno &&
+ (openfile->mark_begin != openfile->fileage ||
+ openfile->mark_begin_x >= top_x) &&
+ (openfile->mark_begin != openfile->filebot ||
+ openfile->mark_begin_x <= bot_x));
+#endif
+
+ /* Get the number of characters in the text, and subtract it from
+ * totsize. */
+ openfile->totsize -= get_totsize(top, bot);
+
+ if (*file_top == NULL) {
+ /* If file_top is empty, just move all the text directly into
+ * it. This is equivalent to tacking the text in top onto the
+ * (lack of) text at the end of file_top. */
+ *file_top = openfile->fileage;
+ *file_bot = openfile->filebot;
+
+ /* Renumber starting with file_top. */
+ renumber(*file_top);
+ } else {
+ filestruct *file_bot_save = *file_bot;
+
+ /* Otherwise, tack the text in top onto the text at the end of
+ * file_bot. */
+ (*file_bot)->data = charealloc((*file_bot)->data,
+ strlen((*file_bot)->data) +
+ strlen(openfile->fileage->data) + 1);
+ strcat((*file_bot)->data, openfile->fileage->data);
+
+ /* Attach the line after top to the line after file_bot. Then,
+ * if there's more than one line after top, move file_bot down
+ * to bot. */
+ (*file_bot)->next = openfile->fileage->next;
+ if ((*file_bot)->next != NULL) {
+ (*file_bot)->next->prev = *file_bot;
+ *file_bot = openfile->filebot;
+ }
+
+ /* Renumber starting with the line after the original
+ * file_bot. */
+ if (file_bot_save->next != NULL)
+ renumber(file_bot_save->next);
+ }
+
+ /* Since the text has now been saved, remove it from the
+ * filestruct. */
+ openfile->fileage = (filestruct *)nmalloc(sizeof(filestruct));
+ openfile->fileage->data = mallocstrcpy(NULL, "");
+ openfile->filebot = openfile->fileage;
+
+#ifdef ENABLE_COLOR
+ openfile->fileage->multidata = NULL;
+#endif
+
+ /* Restore the current line and cursor position. If the mark begins
+ * inside the partition, set the beginning of the mark to where the
+ * saved text used to start. */
+ openfile->current = openfile->fileage;
+ openfile->current_x = top_x;
+#ifndef NANO_TINY
+ if (mark_inside) {
+ openfile->mark_begin = openfile->current;
+ openfile->mark_begin_x = openfile->current_x;
+ }
+#endif
+
+ top_save = openfile->fileage;
+
+ /* Unpartition the filestruct so that it contains all the text
+ * again, minus the saved text. */
+ unpartition_filestruct(&filepart);
+
+ /* If the top of the edit window was inside the old partition, put
+ * it in range of current. */
+ if (edittop_inside)
+ edit_update(NONE);
+
+ /* Renumber starting with the beginning line of the old
+ * partition. */
+ renumber(top_save);
+
+ /* If the NO_NEWLINES flag isn't set, and the text doesn't end with
+ * a magicline, add a new magicline. */
+ if (!ISSET(NO_NEWLINES) && openfile->filebot->data[0] != '\0')
+ new_magicline();
+}
+
+/* Copy all the text from the filestruct beginning with file_top and
+ * ending with file_bot to the current filestruct at the current cursor
+ * position. */
+void copy_from_filestruct(filestruct *file_top, filestruct *file_bot)
+{
+ filestruct *top_save;
+ size_t current_x_save = openfile->current_x;
+ bool edittop_inside;
+#ifndef NANO_TINY
+ bool right_side_up = FALSE, single_line = FALSE;
+#endif
+
+ assert(file_top != NULL && file_bot != NULL);
+
+#ifndef NANO_TINY
+ /* Keep track of whether the mark begins inside the partition and
+ * will need adjustment. */
+ if (openfile->mark_set) {
+ filestruct *top, *bot;
+ size_t top_x, bot_x;
+
+ mark_order((const filestruct **)&top, &top_x,
+ (const filestruct **)&bot, &bot_x, &right_side_up);
+
+ single_line = (top == bot);
+ }
+#endif
+
+ /* Partition the filestruct so that it contains no text, and keep
+ * track of whether the top of the edit window is inside the
+ * partition. */
+ filepart = partition_filestruct(openfile->current,
+ openfile->current_x, openfile->current, openfile->current_x);
+ edittop_inside = (openfile->edittop == openfile->fileage);
+
+ /* Put the top and bottom of the filestruct at copies of file_top
+ * and file_bot. */
+ openfile->fileage = copy_filestruct(file_top);
+ openfile->filebot = openfile->fileage;
+ while (openfile->filebot->next != NULL)
+ openfile->filebot = openfile->filebot->next;
+
+ /* Restore the current line and cursor position. If the mark begins
+ * inside the partition, adjust the mark coordinates to compensate
+ * for the change in the current line. */
+ openfile->current = openfile->filebot;
+ openfile->current_x = strlen(openfile->filebot->data);
+ if (openfile->fileage == openfile->filebot) {
+#ifndef NANO_TINY
+ if (openfile->mark_set) {
+ openfile->mark_begin = openfile->current;
+ if (!right_side_up)
+ openfile->mark_begin_x += openfile->current_x;
+ }
+#endif
+ openfile->current_x += current_x_save;
+ }
+#ifndef NANO_TINY
+ else if (openfile->mark_set) {
+ if (!right_side_up) {
+ if (single_line) {
+ openfile->mark_begin = openfile->current;
+ openfile->mark_begin_x -= current_x_save;
+ } else
+ openfile->mark_begin_x -= openfile->current_x;
+ }
+ }
+#endif
+
+ /* Get the number of characters in the copied text, and add it to
+ * totsize. */
+ openfile->totsize += get_totsize(openfile->fileage,
+ openfile->filebot);
+
+ /* Update the current y-coordinate to account for the number of
+ * lines the copied text has, less one since the first line will be
+ * tacked onto the current line. */
+ openfile->current_y += openfile->filebot->lineno - 1;
+
+ top_save = openfile->fileage;
+
+ /* If the top of the edit window is inside the partition, set it to
+ * where the copied text now starts. */
+ if (edittop_inside)
+ openfile->edittop = openfile->fileage;
+
+ /* Unpartition the filestruct so that it contains all the text
+ * again, plus the copied text. */
+ unpartition_filestruct(&filepart);
+
+ /* Renumber starting with the beginning line of the old
+ * partition. */
+ renumber(top_save);
+
+ /* If the NO_NEWLINES flag isn't set, and the text doesn't end with
+ * a magicline, add a new magicline. */
+ if (!ISSET(NO_NEWLINES) && openfile->filebot->data[0] != '\0')
+ new_magicline();
+}
+
+/* Create a new openfilestruct node. */
+openfilestruct *make_new_opennode(void)
+{
+ openfilestruct *newnode =
+ (openfilestruct *)nmalloc(sizeof(openfilestruct));
+
+ newnode->filename = NULL;
+ newnode->fileage = NULL;
+ newnode->filebot = NULL;
+ newnode->edittop = NULL;
+ newnode->current = NULL;
+#ifndef NANO_TINY
+ newnode->current_stat = NULL;
+ newnode->last_action = OTHER;
+#endif
+
+ return newnode;
+}
+
+/* Splice a node into an existing openfilestruct. */
+void splice_opennode(openfilestruct *begin, openfilestruct *newnode,
+ openfilestruct *end)
+{
+ assert(newnode != NULL && begin != NULL);
+
+ newnode->next = end;
+ newnode->prev = begin;
+ begin->next = newnode;
+
+ if (end != NULL)
+ end->prev = newnode;
+}
+
+/* Unlink a node from the rest of the openfilestruct, and delete it. */
+void unlink_opennode(openfilestruct *fileptr)
+{
+ assert(fileptr != NULL && fileptr->prev != NULL && fileptr->next != NULL && fileptr != fileptr->prev && fileptr != fileptr->next);
+
+ fileptr->prev->next = fileptr->next;
+ fileptr->next->prev = fileptr->prev;
+
+ delete_opennode(fileptr);
+}
+
+/* Delete a node from the openfilestruct. */
+void delete_opennode(openfilestruct *fileptr)
+{
+ assert(fileptr != NULL && fileptr->filename != NULL && fileptr->fileage != NULL);
+
+ free(fileptr->filename);
+ free_filestruct(fileptr->fileage);
+#ifndef NANO_TINY
+ if (fileptr->current_stat != NULL)
+ free(fileptr->current_stat);
+#endif
+
+ free(fileptr);
+}
+
+#ifdef DEBUG
+/* Deallocate all memory associated with this and later files, including
+ * the lines of text. */
+void free_openfilestruct(openfilestruct *src)
+{
+ assert(src != NULL);
+
+ while (src != src->next) {
+ src = src->next;
+ delete_opennode(src->prev);
+ }
+
+ delete_opennode(src);
+}
+#endif
+
+/* Display a warning about a key disabled in view mode. */
+void print_view_warning(void)
+{
+ statusbar(_("Key invalid in view mode"));
+}
+
+/* Make nano exit gracefully. */
+void finish(void)
+{
+ /* Blank the statusbar (and shortcut list, if applicable), and move
+ * the cursor to the last line of the screen. */
+ if (!ISSET(NO_HELP))
+ blank_bottombars();
+ else
+ blank_statusbar();
+ wrefresh(bottomwin);
+ endwin();
+
+ /* Restore the old terminal settings. */
+ tcsetattr(0, TCSANOW, &oldterm);
+
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+ if (!no_rcfiles && ISSET(HISTORYLOG))
+ save_history();
+#endif
+
+#ifdef DEBUG
+ thanks_for_all_the_fish();
+#endif
+
+ /* Get out. */
+ exit(0);
+}
+
+/* Make nano die gracefully. */
+void die(const char *msg, ...)
+{
+ va_list ap;
+
+ endwin();
+
+ /* Restore the old terminal settings. */
+ tcsetattr(0, TCSANOW, &oldterm);
+
+ va_start(ap, msg);
+ vfprintf(stderr, msg, ap);
+ va_end(ap);
+
+ /* Save the current file buffer if it's been modified. */
+ if (openfile && openfile->modified) {
+ /* If we've partitioned the filestruct, unpartition it now. */
+ if (filepart != NULL)
+ unpartition_filestruct(&filepart);
+
+ die_save_file(openfile->filename
+#ifndef NANO_TINY
+ , openfile->current_stat
+#endif
+ );
+ }
+
+#ifdef ENABLE_MULTIBUFFER
+ /* Save all of the other modified file buffers, if any. */
+ if (openfile != NULL) {
+ openfilestruct *tmp = openfile;
+
+ while (tmp != openfile->next) {
+ openfile = openfile->next;
+
+ /* Save the current file buffer if it's been modified. */
+ if (openfile->modified)
+ die_save_file(openfile->filename
+#ifndef NANO_TINY
+ , openfile->current_stat
+#endif
+ );
+ }
+ }
+#endif
+
+ /* Get out. */
+ exit(1);
+}
+
+/* Save the current file under the name spacified in die_filename, which
+ * is modified to be unique if necessary. */
+void die_save_file(const char *die_filename
+#ifndef NANO_TINY
+ , struct stat *die_stat
+#endif
+ )
+{
+ char *retval;
+ bool failed = TRUE;
+
+ /* If we're using restricted mode, don't write any emergency backup
+ * files, since that would allow reading from or writing to files
+ * not specified on the command line. */
+ if (ISSET(RESTRICTED))
+ return;
+
+ /* If we can't save, we have really bad problems, but we might as
+ * well try. */
+ if (*die_filename == '\0')
+ die_filename = "nano";
+
+ retval = get_next_filename(die_filename, ".save");
+ if (retval[0] != '\0')
+ failed = !write_file(retval, NULL, TRUE, OVERWRITE, TRUE);
+
+ if (!failed)
+ fprintf(stderr, _("\nBuffer written to %s\n"), retval);
+ else if (retval[0] != '\0')
+ fprintf(stderr, _("\nBuffer not written to %s: %s\n"), retval,
+ strerror(errno));
+ else
+ fprintf(stderr, _("\nBuffer not written: %s\n"),
+ _("Too many backup files?"));
+
+#ifndef NANO_TINY
+ /* Try and chmod/chown the save file to the values of the original file, but
+ dont worry if it fails because we're supposed to be bailing as fast
+ as possible. */
+ if (die_stat) {
+ int shush;
+ shush = chmod(retval, die_stat->st_mode);
+ shush = chown(retval, die_stat->st_uid, die_stat->st_gid);
+ }
+#endif
+
+ free(retval);
+}
+
+/* Initialize the three window portions nano uses. */
+void window_init(void)
+{
+ /* If the screen height is too small, get out. */
+ editwinrows = LINES - 5 + no_more_space() + no_help();
+ if (COLS < MIN_EDITOR_COLS || editwinrows < MIN_EDITOR_ROWS)
+ die(_("Window size is too small for nano...\n"));
+
+#ifndef DISABLE_WRAPJUSTIFY
+ /* Set up fill, based on the screen width. */
+ fill = wrap_at;
+ if (fill <= 0)
+ fill += COLS;
+ if (fill < 0)
+ fill = 0;
+#endif
+
+ if (topwin != NULL)
+ delwin(topwin);
+ if (edit != NULL)
+ delwin(edit);
+ if (bottomwin != NULL)
+ delwin(bottomwin);
+
+ /* Set up the windows. */
+ topwin = newwin(2 - no_more_space(), COLS, 0, 0);
+ edit = newwin(editwinrows, COLS, 2 - no_more_space(), 0);
+ bottomwin = newwin(3 - no_help(), COLS, editwinrows + (2 -
+ no_more_space()), 0);
+
+ /* Turn the keypad on for the windows, if necessary. */
+ if (!ISSET(REBIND_KEYPAD)) {
+ keypad(topwin, TRUE);
+ keypad(edit, TRUE);
+ keypad(bottomwin, TRUE);
+ }
+}
+
+#ifndef DISABLE_MOUSE
+/* Disable mouse support. */
+void disable_mouse_support(void)
+{
+ mousemask(0, NULL);
+ mouseinterval(oldinterval);
+}
+
+/* Enable mouse support. */
+void enable_mouse_support(void)
+{
+ mousemask(ALL_MOUSE_EVENTS, NULL);
+ oldinterval = mouseinterval(50);
+}
+
+/* Initialize mouse support. Enable it if the USE_MOUSE flag is set,
+ * and disable it otherwise. */
+void mouse_init(void)
+{
+ if (ISSET(USE_MOUSE))
+ enable_mouse_support();
+ else
+ disable_mouse_support();
+}
+#endif /* !DISABLE_MOUSE */
+
+#ifdef HAVE_GETOPT_LONG
+#define print_opt(shortflag, longflag, desc) print_opt_full(shortflag, longflag, desc)
+#else
+#define print_opt(shortflag, longflag, desc) print_opt_full(shortflag, desc)
+#endif
+
+/* Print one usage string to the screen. This cuts down on duplicate
+ * strings to translate, and leaves out the parts that shouldn't be
+ * translatable (i.e. the flag names). */
+void print_opt_full(const char *shortflag
+#ifdef HAVE_GETOPT_LONG
+ , const char *longflag
+#endif
+ , const char *desc)
+{
+ printf(" %s\t", shortflag);
+ if (strlenpt(shortflag) < 8)
+ printf("\t");
+
+#ifdef HAVE_GETOPT_LONG
+ printf("%s\t", longflag);
+ if (strlenpt(longflag) < 8)
+ printf("\t\t");
+ else if (strlenpt(longflag) < 16)
+ printf("\t");
+#endif
+
+ if (desc != NULL)
+ printf("%s", _(desc));
+ printf("\n");
+}
+
+/* Explain how to properly use nano and its command line options. */
+void usage(void)
+{
+ printf(_("Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n\n"));
+ printf(
+#ifdef HAVE_GETOPT_LONG
+ _("Option\t\tGNU long option\t\tMeaning\n")
+#else
+ _("Option\t\tMeaning\n")
+#endif
+ );
+ print_opt("-h, -?", "--help", N_("Show this message"));
+ print_opt(_("+LINE,COLUMN"), "",
+ N_("Start at line LINE, column COLUMN"));
+#ifndef NANO_TINY
+ print_opt("-A", "--smarthome", N_("Enable smart home key"));
+ print_opt("-B", "--backup", N_("Save backups of existing files"));
+ print_opt(_("-C <dir>"), _("--backupdir=<dir>"),
+ N_("Directory for saving unique backup files"));
+#endif
+ print_opt("-D", "--boldtext",
+ N_("Use bold instead of reverse video text"));
+#ifndef NANO_TINY
+ print_opt("-E", "--tabstospaces",
+ N_("Convert typed tabs to spaces"));
+#endif
+#ifdef ENABLE_MULTIBUFFER
+ print_opt("-F", "--multibuffer", N_("Enable multiple file buffers"));
+#endif
+#ifdef ENABLE_NANORC
+#ifndef NANO_TINY
+ print_opt("-H", "--historylog",
+ N_("Log & read search/replace string history"));
+#endif
+ print_opt("-I", "--ignorercfiles",
+ N_("Don't look at nanorc files"));
+#endif
+ print_opt("-K", "--rebindkeypad",
+ N_("Fix numeric keypad key confusion problem"));
+ print_opt("-L", "--nonewlines",
+ N_("Don't add newlines to the ends of files"));
+#ifndef NANO_TINY
+ print_opt("-N", "--noconvert",
+ N_("Don't convert files from DOS/Mac format"));
+#endif
+ print_opt("-O", "--morespace", N_("Use one more line for editing"));
+#ifndef DISABLE_JUSTIFY
+ print_opt(_("-Q <str>"), _("--quotestr=<str>"),
+ N_("Quoting string"));
+#endif
+ print_opt("-R", "--restricted", N_("Restricted mode"));
+#ifndef NANO_TINY
+ print_opt("-S", "--smooth",
+ N_("Scroll by line instead of half-screen"));
+#endif
+ print_opt(_("-T <#cols>"), _("--tabsize=<#cols>"),
+ N_("Set width of a tab to #cols columns"));
+#ifndef NANO_TINY
+ print_opt("-U", "--quickblank", N_("Do quick statusbar blanking"));
+#endif
+ print_opt("-V", "--version",
+ N_("Print version information and exit"));
+#ifndef NANO_TINY
+ print_opt("-W", "--wordbounds",
+ N_("Detect word boundaries more accurately"));
+#endif
+#ifdef ENABLE_COLOR
+ print_opt(_("-Y <str>"), _("--syntax=<str>"),
+ N_("Syntax definition to use for coloring"));
+#endif
+ print_opt("-c", "--const", N_("Constantly show cursor position"));
+ print_opt("-d", "--rebinddelete",
+ N_("Fix Backspace/Delete confusion problem"));
+#ifndef NANO_TINY
+ print_opt("-i", "--autoindent",
+ N_("Automatically indent new lines"));
+ print_opt("-k", "--cut", N_("Cut from cursor to end of line"));
+#endif
+ print_opt("-l", "--nofollow",
+ N_("Don't follow symbolic links, overwrite"));
+#ifndef DISABLE_MOUSE
+ print_opt("-m", "--mouse", N_("Enable the use of the mouse"));
+#endif
+#ifndef DISABLE_OPERATINGDIR
+ print_opt(_("-o <dir>"), _("--operatingdir=<dir>"),
+ N_("Set operating directory"));
+#endif
+ print_opt("-p", "--preserve",
+ N_("Preserve XON (^Q) and XOFF (^S) keys"));
+ print_opt("-q", "--quiet",
+ N_("Silently ignore startup issues like rc file errors"));
+#ifndef DISABLE_WRAPJUSTIFY
+ print_opt(_("-r <#cols>"), _("--fill=<#cols>"),
+ N_("Set wrapping point at column #cols"));
+#endif
+#ifndef DISABLE_SPELLER
+ print_opt(_("-s <prog>"), _("--speller=<prog>"),
+ N_("Enable alternate speller"));
+#endif
+ print_opt("-t", "--tempfile",
+ N_("Auto save on exit, don't prompt"));
+#ifndef NANO_TINY
+ print_opt("-u", "--undo", N_("Allow generic undo [EXPERIMENTAL]"));
+#endif
+
+ print_opt("-v", "--view", N_("View mode (read-only)"));
+#ifndef DISABLE_WRAPPING
+ print_opt("-w", "--nowrap", N_("Don't wrap long lines"));
+#endif
+ print_opt("-x", "--nohelp", N_("Don't show the two help lines"));
+ print_opt("-z", "--suspend", N_("Enable suspension"));
+ print_opt("-$", "--softwrap", N_("Enable soft line wrapping"));
+
+ /* This is a special case. */
+ print_opt("-a, -b, -e,", "", NULL);
+ print_opt("-f, -g, -j", "", N_("(ignored, for Pico compatibility)"));
+
+ exit(0);
+}
+
+/* Display the current version of nano, the date and time it was
+ * compiled, contact information for it, and the configuration options
+ * it was compiled with. */
+void version(void)
+{
+ printf(_(" GNU nano version %s (compiled %s, %s)\n"), VERSION,
+ __TIME__, __DATE__);
+ printf(" (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,\n");
+ printf(" 2008, 2009 Free Software Foundation, Inc.\n");
+ printf(
+ _(" Email: nano@nano-editor.org Web: http://www.nano-editor.org/"));
+ printf(_("\n Compiled options:"));
+
+#ifdef DISABLE_BROWSER
+ printf(" --disable-browser");
+#endif
+#ifdef DISABLE_HELP
+ printf(" --disable-help");
+#endif
+#ifdef DISABLE_JUSTIFY
+ printf(" --disable-justify");
+#endif
+#ifdef DISABLE_MOUSE
+ printf(" --disable-mouse");
+#endif
+#ifndef ENABLE_NLS
+ printf(" --disable-nls");
+#endif
+#ifdef DISABLE_OPERATINGDIR
+ printf(" --disable-operatingdir");
+#endif
+#ifdef DISABLE_SPELLER
+ printf(" --disable-speller");
+#endif
+#ifdef DISABLE_TABCOMP
+ printf(" --disable-tabcomp");
+#endif
+#ifdef DISABLE_WRAPPING
+ printf(" --disable-wrapping");
+#endif
+#ifdef DISABLE_ROOTWRAPPING
+ printf(" --disable-wrapping-as-root");
+#endif
+#ifdef ENABLE_COLOR
+ printf(" --enable-color");
+#endif
+#ifdef DEBUG
+ printf(" --enable-debug");
+#endif
+#ifdef NANO_EXTRA
+ printf(" --enable-extra");
+#endif
+#ifdef ENABLE_MULTIBUFFER
+ printf(" --enable-multibuffer");
+#endif
+#ifdef ENABLE_NANORC
+ printf(" --enable-nanorc");
+#endif
+#ifdef NANO_TINY
+ printf(" --enable-tiny");
+#endif
+#ifdef ENABLE_UTF8
+ printf(" --enable-utf8");
+#endif
+#ifdef USE_SLANG
+ printf(" --with-slang");
+#endif
+ printf("\n");
+}
+
+/* Return 1 if the MORE_SPACE flag is set, and 0 otherwise. This is
+ * used to calculate the relative screen position while taking this flag
+ * into account, since it adds one line to the edit window. */
+int no_more_space(void)
+{
+ return ISSET(MORE_SPACE) ? 1 : 0;
+}
+
+/* Return 2 if the NO_HELP flag is set, and 0 otherwise. This is used
+ * to calculate the relative screen position while taking this flag into
+ * account, since it removes two lines from the edit window. */
+int no_help(void)
+{
+ return ISSET(NO_HELP) ? 2 : 0;
+}
+
+/* Indicate a disabled function on the statusbar. */
+void nano_disabled_msg(void)
+{
+ statusbar(_("Sorry, support for this function has been disabled"));
+}
+
+/* If the current file buffer has been modified, and the TEMP_FILE flag
+ * isn't set, ask whether or not to save the file buffer. If the
+ * TEMP_FILE flag is set, save it unconditionally. Then, if more than
+ * one file buffer is open, close the current file buffer and switch to
+ * the next one. If only one file buffer is open, exit from nano. */
+void do_exit(void)
+{
+ int i;
+
+ /* If the file hasn't been modified, pretend the user chose not to
+ * save. */
+ if (!openfile->modified)
+ i = 0;
+ /* If the TEMP_FILE flag is set, pretend the user chose to save. */
+ else if (ISSET(TEMP_FILE))
+ i = 1;
+ /* Otherwise, ask the user whether or not to save. */
+ else
+ i = do_yesno_prompt(FALSE,
+ _("Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "));
+
+#ifdef DEBUG
+ dump_filestruct(openfile->fileage);
+#endif
+
+ /* If the user chose not to save, or if the user chose to save and
+ * the save succeeded, we're ready to exit. */
+ if (i == 0 || (i == 1 && do_writeout(TRUE))) {
+#ifdef ENABLE_MULTIBUFFER
+ /* Exit only if there are no more open file buffers. */
+ if (!close_buffer())
+#endif
+ finish();
+ /* If the user canceled, we go on. */
+ } else if (i != 1)
+ statusbar(_("Cancelled"));
+
+ shortcut_init(FALSE);
+ display_main_list();
+}
+
+
+
+static struct sigaction pager_oldaction, pager_newaction; /* Original and temporary handlers for SIGINT. */
+static bool pager_sig_failed = FALSE; /* Did sigaction() fail without changing the signal handlers? */
+static bool pager_input_aborted = FALSE; /* Did someone invoke the pager and abort it via ^C? */
+
+
+/* Things which need to be run regardless of whether
+ we finished the stdin pipe correctly or not */
+void finish_stdin_pager(void)
+{
+ FILE *f;
+ int ttystdin;
+
+ /* Read whatever we did get from stdin */
+ f = fopen("/dev/stdin", "rb");
+ if (f == NULL)
+ nperror("fopen");
+
+ read_file(f, 0, "stdin", TRUE, FALSE);
+ ttystdin = open("/dev/tty", O_RDONLY);
+ if (!ttystdin)
+ die(_("Couldn't reopen stdin from keyboard, sorry\n"));
+
+ dup2(ttystdin,0);
+ close(ttystdin);
+ if (!pager_input_aborted)
+ tcgetattr(0, &oldterm);
+ if (!pager_sig_failed && sigaction(SIGINT, &pager_oldaction, NULL) == -1)
+ nperror("sigaction");
+ terminal_init();
+ doupdate();
+}
+
+
+/* Cancel reading from stdin like a pager */
+RETSIGTYPE cancel_stdin_pager(int signal)
+{
+ /* Currently do nothing, just handle the intr silently */
+ pager_input_aborted = TRUE;
+}
+
+/* Let nano read stdin for the first file at least */
+void stdin_pager(void)
+{
+ endwin();
+ if (!pager_input_aborted)
+ tcsetattr(0, TCSANOW, &oldterm);
+ fprintf(stderr, _("Reading from stdin, ^C to abort\n"));
+
+ /* Set things up so that Ctrl-C will cancel the new process. */
+ /* Enable interpretation of the special control keys so that we get
+ * SIGINT when Ctrl-C is pressed. */
+#ifndef NANO_TINY
+ enable_signals();
+#endif
+
+ if (sigaction(SIGINT, NULL, &pager_newaction) == -1) {
+ pager_sig_failed = TRUE;
+ nperror("sigaction");
+ } else {
+ pager_newaction.sa_handler = cancel_stdin_pager;
+ if (sigaction(SIGINT, &pager_newaction, &pager_oldaction) == -1) {
+ pager_sig_failed = TRUE;
+ nperror("sigaction");
+ }
+ }
+
+ open_buffer("", FALSE);
+ finish_stdin_pager();
+}
+
+
+
+/* Initialize the signal handlers. */
+void signal_init(void)
+{
+ /* Trap SIGINT and SIGQUIT because we want them to do useful
+ * things. */
+ memset(&act, 0, sizeof(struct sigaction));
+ act.sa_handler = SIG_IGN;
+ sigaction(SIGINT, &act, NULL);
+ sigaction(SIGQUIT, &act, NULL);
+
+ /* Trap SIGHUP and SIGTERM because we want to write the file out. */
+ act.sa_handler = handle_hupterm;
+ sigaction(SIGHUP, &act, NULL);
+ sigaction(SIGTERM, &act, NULL);
+
+#ifndef NANO_TINY
+ /* Trap SIGWINCH because we want to handle window resizes. */
+ act.sa_handler = handle_sigwinch;
+ sigaction(SIGWINCH, &act, NULL);
+ allow_pending_sigwinch(FALSE);
+#endif
+
+ /* Trap normal suspend (^Z) so we can handle it ourselves. */
+ if (!ISSET(SUSPEND)) {
+ act.sa_handler = SIG_IGN;
+ sigaction(SIGTSTP, &act, NULL);
+ } else {
+ /* Block all other signals in the suspend and continue handlers.
+ * If we don't do this, other stuff interrupts them! */
+ sigfillset(&act.sa_mask);
+
+ act.sa_handler = do_suspend;
+ sigaction(SIGTSTP, &act, NULL);
+
+ act.sa_handler = do_continue;
+ sigaction(SIGCONT, &act, NULL);
+ }
+}
+
+/* Handler for SIGHUP (hangup) and SIGTERM (terminate). */
+RETSIGTYPE handle_hupterm(int signal)
+{
+ die(_("Received SIGHUP or SIGTERM\n"));
+}
+
+/* Handler for SIGTSTP (suspend). */
+RETSIGTYPE do_suspend(int signal)
+{
+
+ if (ISSET(RESTRICTED)) {
+ nano_disabled_msg();
+ return;
+ }
+
+#ifndef DISABLE_MOUSE
+ /* Turn mouse support off. */
+ disable_mouse_support();
+#endif
+
+ /* Move the cursor to the last line of the screen. */
+ move(LINES - 1, 0);
+ endwin();
+
+ /* Display our helpful message. */
+ printf(_("Use \"fg\" to return to nano.\n"));
+ fflush(stdout);
+
+ /* Restore the old terminal settings. */
+ tcsetattr(0, TCSANOW, &oldterm);
+
+ /* Trap SIGHUP and SIGTERM so we can properly deal with them while
+ * suspended. */
+ act.sa_handler = handle_hupterm;
+ sigaction(SIGHUP, &act, NULL);
+ sigaction(SIGTERM, &act, NULL);
+
+ /* Do what mutt does: send ourselves a SIGSTOP. */
+ kill(0, SIGSTOP);
+}
+
+/* the subnfunc version */
+void do_suspend_void(void)
+{
+ if (ISSET(SUSPEND))
+ do_suspend(0);
+}
+
+/* Handler for SIGCONT (continue after suspend). */
+RETSIGTYPE do_continue(int signal)
+{
+#ifndef DISABLE_MOUSE
+ /* Turn mouse support back on if it was on before. */
+ if (ISSET(USE_MOUSE))
+ enable_mouse_support();
+#endif
+
+#ifndef NANO_TINY
+ /* Perhaps the user resized the window while we slept. Handle it,
+ * and restore the terminal to its previous state and update the
+ * screen in the process. */
+ handle_sigwinch(0);
+#else
+ /* Restore the terminal to its previous state. */
+ terminal_init();
+
+ /* Turn the cursor back on for sure. */
+ curs_set(1);
+
+ /* Redraw the contents of the windows that need it. */
+ blank_statusbar();
+ wnoutrefresh(bottomwin);
+ total_refresh();
+#endif
+}
+
+#ifndef NANO_TINY
+/* Handler for SIGWINCH (window size change). */
+RETSIGTYPE handle_sigwinch(int signal)
+{
+ const char *tty = ttyname(0);
+ int fd, result = 0;
+ struct winsize win;
+
+ if (tty == NULL)
+ return;
+ fd = open(tty, O_RDWR);
+ if (fd == -1)
+ return;
+ result = ioctl(fd, TIOCGWINSZ, &win);
+ close(fd);
+ if (result == -1)
+ return;
+
+ /* We could check whether the COLS or LINES changed, and return
+ * otherwise. However, COLS and LINES are curses global variables,
+ * and in some cases curses has already updated them. But not in
+ * all cases. Argh. */
+#ifdef REDEFINIG_MACROS_OK
+ COLS = win.ws_col;
+ LINES = win.ws_row;
+#endif
+
+ /* If we've partitioned the filestruct, unpartition it now. */
+ if (filepart != NULL)
+ unpartition_filestruct(&filepart);
+
+#ifdef USE_SLANG
+ /* Slang curses emulation brain damage, part 1: If we just do what
+ * curses does here, it'll only work properly if the resize made the
+ * window smaller. Do what mutt does: Leave and immediately reenter
+ * Slang screen management mode. */
+ SLsmg_reset_smg();
+ SLsmg_init_smg();
+#else
+ /* Do the equivalent of what Minimum Profit does: Leave and
+ * immediately reenter curses mode. */
+ endwin();
+ doupdate();
+#endif
+
+ /* Restore the terminal to its previous state. */
+ terminal_init();
+
+ /* Turn the cursor back on for sure. */
+ curs_set(1);
+
+ /* Do the equivalent of what both mutt and Minimum Profit do:
+ * Reinitialize all the windows based on the new screen
+ * dimensions. */
+ window_init();
+
+ /* Redraw the contents of the windows that need it. */
+ blank_statusbar();
+ wnoutrefresh(bottomwin);
+ currmenu = MMAIN;
+ total_refresh();
+
+ /* Jump back to either main() or the unjustify routine in
+ * do_justify(). */
+ siglongjmp(jump_buf, 1);
+}
+
+/* If allow is TRUE, block any SIGWINCH signals that we get, so that we
+ * can deal with them later. If allow is FALSE, unblock any SIGWINCH
+ * signals that we have, so that we can deal with them now. */
+void allow_pending_sigwinch(bool allow)
+{
+ sigset_t winch;
+ sigemptyset(&winch);
+ sigaddset(&winch, SIGWINCH);
+ sigprocmask(allow ? SIG_UNBLOCK : SIG_BLOCK, &winch, NULL);
+}
+#endif /* !NANO_TINY */
+
+#ifndef NANO_TINY
+/* Handle the global toggle specified in which. */
+void do_toggle(int flag)
+{
+ bool enabled;
+ char *desc;
+
+ TOGGLE(flag);
+
+ switch (flag) {
+#ifndef DISABLE_MOUSE
+ case USE_MOUSE:
+ mouse_init();
+ break;
+#endif
+ case MORE_SPACE:
+ case NO_HELP:
+ window_init();
+ total_refresh();
+ break;
+ case SUSPEND:
+ signal_init();
+ break;
+#ifdef ENABLE_NANORC
+ case WHITESPACE_DISPLAY:
+ titlebar(NULL);
+ edit_refresh();
+ break;
+#endif
+#ifdef ENABLE_COLOR
+ case NO_COLOR_SYNTAX:
+ edit_refresh();
+ break;
+#endif
+ case SOFTWRAP:
+ total_refresh();
+ break;
+ }
+
+ enabled = ISSET(flag);
+
+ if (flag == NO_HELP
+#ifndef DISABLE_WRAPPING
+ || flag == NO_WRAP
+#endif
+#ifdef ENABLE_COLOR
+ || flag == NO_COLOR_SYNTAX
+#endif
+ )
+ enabled = !enabled;
+
+ desc = _(flagtostr(flag));
+ statusbar("%s %s", desc, enabled ? _("enabled") :
+ _("disabled"));
+}
+#endif /* !NANO_TINY */
+
+/* Disable extended input and output processing in our terminal
+ * settings. */
+void disable_extended_io(void)
+{
+ struct termios term;
+
+ tcgetattr(0, &term);
+ term.c_lflag &= ~IEXTEN;
+ term.c_oflag &= ~OPOST;
+ tcsetattr(0, TCSANOW, &term);
+}
+
+/* Disable interpretation of the special control keys in our terminal
+ * settings. */
+void disable_signals(void)
+{
+ struct termios term;
+
+ tcgetattr(0, &term);
+ term.c_lflag &= ~ISIG;
+ tcsetattr(0, TCSANOW, &term);
+}
+
+#ifndef NANO_TINY
+/* Enable interpretation of the special control keys in our terminal
+ * settings. */
+void enable_signals(void)
+{
+ struct termios term;
+
+ tcgetattr(0, &term);
+ term.c_lflag |= ISIG;
+ tcsetattr(0, TCSANOW, &term);
+}
+#endif
+
+/* Disable interpretation of the flow control characters in our terminal
+ * settings. */
+void disable_flow_control(void)
+{
+ struct termios term;
+
+ tcgetattr(0, &term);
+ term.c_iflag &= ~IXON;
+ tcsetattr(0, TCSANOW, &term);
+}
+
+/* Enable interpretation of the flow control characters in our terminal
+ * settings. */
+void enable_flow_control(void)
+{
+ struct termios term;
+
+ tcgetattr(0, &term);
+ term.c_iflag |= IXON;
+ tcsetattr(0, TCSANOW, &term);
+}
+
+/* Set up the terminal state. Put the terminal in raw mode (read one
+ * character at a time, disable the special control keys, and disable
+ * the flow control characters), disable translation of carriage return
+ * (^M) into newline (^J) so that we can tell the difference between the
+ * Enter key and Ctrl-J, and disable echoing of characters as they're
+ * typed. Finally, disable extended input and output processing, and,
+ * if we're not in preserve mode, reenable interpretation of the flow
+ * control characters. */
+void terminal_init(void)
+{
+#ifdef USE_SLANG
+ /* Slang curses emulation brain damage, part 2: Slang doesn't
+ * implement raw(), nonl(), or noecho() properly, so there's no way
+ * to properly reinitialize the terminal using them. We have to
+ * disable the special control keys and interpretation of the flow
+ * control characters using termios, save the terminal state after
+ * the first call, and restore it on subsequent calls. */
+ static struct termios newterm;
+ static bool newterm_set = FALSE;
+
+ if (!newterm_set) {
+#endif
+
+ raw();
+ nonl();
+ noecho();
+ disable_extended_io();
+ if (ISSET(PRESERVE))
+ enable_flow_control();
+
+ disable_signals();
+#ifdef USE_SLANG
+ if (!ISSET(PRESERVE))
+ disable_flow_control();
+
+ tcgetattr(0, &newterm);
+ newterm_set = TRUE;
+ } else
+ tcsetattr(0, TCSANOW, &newterm);
+#endif
+}
+
+/* Read in a character, interpret it as a shortcut or toggle if
+ * necessary, and return it. Set meta_key to TRUE if the character is a
+ * meta sequence, set func_key to TRUE if the character is a function
+ * key, set s_or_t to TRUE if the character is a shortcut or toggle
+ * key, set ran_func to TRUE if we ran a function associated with a
+ * shortcut key, and set finished to TRUE if we're done after running
+ * or trying to run a function associated with a shortcut key. If
+ * allow_funcs is FALSE, don't actually run any functions associated
+ * with shortcut keys. */
+int do_input(bool *meta_key, bool *func_key, bool *s_or_t, bool
+ *ran_func, bool *finished, bool allow_funcs)
+{
+ int input;
+ /* The character we read in. */
+ static int *kbinput = NULL;
+ /* The input buffer. */
+ static size_t kbinput_len = 0;
+ /* The length of the input buffer. */
+ bool cut_copy = FALSE;
+ /* Are we cutting or copying text? */
+ const sc *s;
+ bool have_shortcut;
+
+ *s_or_t = FALSE;
+ *ran_func = FALSE;
+ *finished = FALSE;
+
+ /* Read in a character. */
+ input = get_kbinput(edit, meta_key, func_key);
+
+#ifndef DISABLE_MOUSE
+ if (allow_funcs) {
+ /* If we got a mouse click and it was on a shortcut, read in the
+ * shortcut character. */
+ if (*func_key && input == KEY_MOUSE) {
+ if (do_mouse() == 1)
+ input = get_kbinput(edit, meta_key, func_key);
+ else {
+ *meta_key = FALSE;
+ *func_key = FALSE;
+ input = ERR;
+ }
+ }
+ }
+#endif
+
+ /* Check for a shortcut in the main list. */
+ s = get_shortcut(MMAIN, &input, meta_key, func_key);
+
+ /* If we got a shortcut from the main list, or a "universal"
+ * edit window shortcut, set have_shortcut to TRUE. */
+ have_shortcut = (s != NULL);
+
+ /* If we got a non-high-bit control key, a meta key sequence, or a
+ * function key, and it's not a shortcut or toggle, throw it out. */
+ if (!have_shortcut) {
+ if (is_ascii_cntrl_char(input) || *meta_key || *func_key) {
+ statusbar(_("Unknown Command"));
+ beep();
+ *meta_key = FALSE;
+ *func_key = FALSE;
+ input = ERR;
+ }
+ }
+
+ if (allow_funcs) {
+ /* If we got a character, and it isn't a shortcut or toggle,
+ * it's a normal text character. Display the warning if we're
+ * in view mode, or add the character to the input buffer if
+ * we're not. */
+ if (input != ERR && !have_shortcut) {
+ if (ISSET(VIEW_MODE))
+ print_view_warning();
+ else {
+ kbinput_len++;
+ kbinput = (int *)nrealloc(kbinput, kbinput_len *
+ sizeof(int));
+ kbinput[kbinput_len - 1] = input;
+
+ }
+ }
+
+ /* If we got a shortcut or toggle, or if there aren't any other
+ * characters waiting after the one we read in, we need to
+ * output all the characters in the input buffer if it isn't
+ * empty. Note that it should be empty if we're in view
+ * mode. */
+ if (have_shortcut || get_key_buffer_len() == 0) {
+#ifndef DISABLE_WRAPPING
+ /* If we got a shortcut or toggle, and it's not the shortcut
+ * for verbatim input, turn off prepending of wrapped
+ * text. */
+ if (have_shortcut && (!have_shortcut || s == NULL || s->scfunc !=
+ DO_VERBATIM_INPUT))
+ wrap_reset();
+#endif
+
+ if (kbinput != NULL) {
+ /* Display all the characters in the input buffer at
+ * once, filtering out control characters. */
+ char *output = charalloc(kbinput_len + 1);
+ size_t i;
+
+ for (i = 0; i < kbinput_len; i++)
+ output[i] = (char)kbinput[i];
+ output[i] = '\0';
+
+ do_output(output, kbinput_len, FALSE);
+
+ free(output);
+
+ /* Empty the input buffer. */
+ kbinput_len = 0;
+ free(kbinput);
+ kbinput = NULL;
+ }
+ }
+
+ if (have_shortcut) {
+ switch (input) {
+ /* Handle the normal edit window shortcuts, setting
+ * ran_func to TRUE if we try to run their associated
+ * functions and setting finished to TRUE to indicate
+ * that we're done after running or trying to run their
+ * associated functions. */
+ default:
+ /* If the function associated with this shortcut is
+ * cutting or copying text, indicate this. */
+ if (s->scfunc == DO_CUT_TEXT_VOID
+#ifndef NANO_TINY
+ || s->scfunc == DO_COPY_TEXT || s->scfunc ==
+ DO_CUT_TILL_END
+#endif
+ )
+ cut_copy = TRUE;
+
+ if (s->scfunc != 0) {
+ const subnfunc *f = sctofunc((sc *) s);
+ *ran_func = TRUE;
+ if (ISSET(VIEW_MODE) && f && !f->viewok)
+ print_view_warning();
+ else {
+#ifndef NANO_TINY
+ if (s->scfunc == DO_TOGGLE)
+ do_toggle(s->toggle);
+ else {
+#else
+ {
+#endif
+ iso_me_harder_funcmap(s->scfunc);
+#ifdef ENABLE_COLOR
+ if (f && !f->viewok && openfile->syntax != NULL
+ && openfile->syntax->nmultis > 0) {
+ reset_multis(openfile->current, FALSE);
+ }
+#endif
+ if (edit_refresh_needed) {
+#ifdef DEBUG
+ fprintf(stderr, "running edit_refresh() as edit_refresh_needed is true\n");
+#endif
+ edit_refresh();
+ edit_refresh_needed = FALSE;
+ }
+
+ }
+ }
+ }
+ *finished = TRUE;
+ break;
+ }
+ }
+ }
+
+ /* If we aren't cutting or copying text, blow away the text in the
+ * cutbuffer. */
+ if (!cut_copy)
+ cutbuffer_reset();
+
+ return input;
+}
+
+void xon_complaint(void)
+{
+ statusbar(_("XON ignored, mumble mumble"));
+}
+
+void xoff_complaint(void)
+{
+ statusbar(_("XOFF ignored, mumble mumble"));
+}
+
+
+#ifndef DISABLE_MOUSE
+/* Handle a mouse click on the edit window or the shortcut list. */
+int do_mouse(void)
+{
+ int mouse_x, mouse_y;
+ int retval = get_mouseinput(&mouse_x, &mouse_y, TRUE);
+
+ /* We can click on the edit window to move the cursor. */
+ if (retval == 0 && wmouse_trafo(edit, &mouse_y, &mouse_x, FALSE)) {
+ bool sameline;
+ /* Did they click on the line with the cursor? If they
+ * clicked on the cursor, we set the mark. */
+ filestruct *current_save = openfile->current;
+ size_t current_x_save = openfile->current_x;
+ size_t pww_save = openfile->placewewant;
+
+ sameline = (mouse_y == openfile->current_y);
+
+#ifdef DEBUG
+ fprintf(stderr, "mouse_y = %d, current_y = %d\n", mouse_y, openfile->current_y);
+#endif
+
+ if (ISSET(SOFTWRAP)) {
+ int i = 0;
+ for (openfile->current = openfile->edittop;
+ openfile->current->next && i < mouse_y;
+ openfile->current = openfile->current->next, i++) {
+ openfile->current_y = i;
+ i += strlenpt(openfile->current->data) / COLS;
+ }
+
+#ifdef DEBUG
+ fprintf(stderr, "do_mouse(): moving to current_y = %d, i %d\n", openfile->current_y, i);
+ fprintf(stderr, " openfile->current->data = \"%s\"\n", openfile->current->data);
+#endif
+
+ if (i > mouse_y) {
+ openfile->current = openfile->current->prev;
+ openfile->current_x = actual_x(openfile->current->data, mouse_x + (mouse_y - openfile->current_y) * COLS);
+#ifdef DEBUG
+ fprintf(stderr, "do_mouse(): i > mouse_y, mouse_x = %d, current_x to = %d\n", mouse_x, openfile->current_x);
+#endif
+ } else {
+ openfile->current_x = actual_x(openfile->current->data, mouse_x);
+#ifdef DEBUG
+ fprintf(stderr, "do_mouse(): i <= mouse_y, mouse_x = %d, setting current_x to = %d\n", mouse_x, openfile->current_x);
+#endif
+ }
+
+ openfile->placewewant = xplustabs();
+
+ } else {
+ /* Move to where the click occurred. */
+ for (; openfile->current_y < mouse_y && openfile->current !=
+ openfile->filebot; openfile->current_y++)
+ openfile->current = openfile->current->next;
+ for (; openfile->current_y > mouse_y && openfile->current !=
+ openfile->fileage; openfile->current_y--)
+ openfile->current = openfile->current->prev;
+
+ openfile->current_x = actual_x(openfile->current->data,
+ get_page_start(xplustabs()) + mouse_x);
+
+ openfile->placewewant = xplustabs();
+ }
+
+#ifndef NANO_TINY
+ /* Clicking where the cursor is toggles the mark, as does
+ * clicking beyond the line length with the cursor at the end of
+ * the line. */
+ if (sameline && openfile->current_x == current_x_save)
+ do_mark();
+#endif
+
+ edit_redraw(current_save, pww_save);
+ }
+
+ return retval;
+}
+#endif /* !DISABLE_MOUSE */
+
+#ifdef ENABLE_COLOR
+void alloc_multidata_if_needed(filestruct *fileptr)
+{
+ if (!fileptr->multidata)
+ fileptr->multidata = (short *) nmalloc(openfile->syntax->nmultis * sizeof(short));
+}
+
+/* Precalculate the multi-line start and end regex info so we can speed up
+ rendering (with any hope at all...) */
+void precalc_multicolorinfo(void)
+{
+#ifdef DEBUG
+ fprintf(stderr, "entering precalc_multicolorinfo()\n");
+#endif
+ if (openfile->colorstrings != NULL && !ISSET(NO_COLOR_SYNTAX)) {
+ const colortype *tmpcolor = openfile->colorstrings;
+ regmatch_t startmatch, endmatch;
+ filestruct *fileptr, *endptr;
+ time_t last_check = time(NULL), cur_check = 0;
+
+ /* Let us get keypresses to see if the user is trying to
+ start editing. We may want to throw up a statusbar
+ message before starting this later if it takes
+ too long to do this routine. For now silently
+ abort if they hit a key */
+ nodelay(edit, FALSE);
+
+ for (; tmpcolor != NULL; tmpcolor = tmpcolor->next) {
+
+ /* If it's not a multi-line regex, amscray */
+ if (tmpcolor->end == NULL)
+ continue;
+#ifdef DEBUG
+ fprintf(stderr, "working on color id %d\n", tmpcolor->id);
+#endif
+
+
+ for (fileptr = openfile->fileage; fileptr != NULL; fileptr = fileptr->next) {
+ int startx = 0;
+ int nostart = 0;
+
+
+#ifdef DEBUG
+ fprintf(stderr, "working on lineno %lu\n", (unsigned long) fileptr->lineno);
+#endif
+
+ alloc_multidata_if_needed(fileptr);
+
+ if ((cur_check = time(NULL)) - last_check > 1) {
+ last_check = cur_check;
+ if (wgetch(edit) != ERR)
+ goto precalc_cleanup;
+ }
+
+ while ((nostart = regexec(tmpcolor->start, &fileptr->data[startx], 1, &startmatch, 0)) == 0) {
+ /* Look for end and start marking how many lines are encompassed
+ whcih should speed up rendering later */
+ startx += startmatch.rm_eo;
+#ifdef DEBUG
+ fprintf(stderr, "match found at pos %d...", startx);
+#endif
+
+ /* Look on this line first for end */
+ if (regexec(tmpcolor->end, &fileptr->data[startx], 1, &endmatch, 0) == 0) {
+ startx += endmatch.rm_eo;
+ fileptr->multidata[tmpcolor->id] |= CSTARTENDHERE;
+#ifdef DEBUG
+ fprintf(stderr, "end found on this line\n");
+#endif
+ continue;
+ }
+
+ /* Nice, we didn't find the end regex on this line. Let's start looking for it */
+ for (endptr = fileptr->next; endptr != NULL; endptr = endptr->next) {
+
+#ifdef DEBUG
+ fprintf(stderr, "advancing to line %lu to find end...\n", (unsigned long) endptr->lineno);
+#endif
+ /* Check for keyboard input again */
+ if ((cur_check = time(NULL)) - last_check > 1) {
+ last_check = cur_check;
+ if (wgetch(edit) != ERR)
+ goto precalc_cleanup;
+ }
+ if (regexec(tmpcolor->end, endptr->data, 1, &endmatch, 0) == 0)
+ break;
+ }
+
+ if (endptr == NULL) {
+#ifdef DEBUG
+ fprintf(stderr, "no end found, breaking out\n");
+#endif
+ break;
+ }
+
+
+#ifdef DEBUG
+ fprintf(stderr, "end found\n");
+#endif
+
+ /* We found it, we found it, la la la la la. Mark all the
+ lines in between and the ends properly */
+ fileptr->multidata[tmpcolor->id] |= CENDAFTER;
+#ifdef DEBUG
+ fprintf(stderr, "marking line %lu as CENDAFTER\n", (unsigned long) fileptr->lineno);
+#endif
+ for (fileptr = fileptr->next; fileptr != endptr; fileptr = fileptr->next) {
+ alloc_multidata_if_needed(fileptr);
+ fileptr->multidata[tmpcolor->id] = CWHOLELINE;
+#ifdef DEBUG
+ fprintf(stderr, "marking intermediary line %lu as CWHOLELINE\n", (unsigned long) fileptr->lineno);
+#endif
+ }
+ alloc_multidata_if_needed(endptr);
+#ifdef DEBUG
+ fprintf(stderr, "marking line %lu as BEGINBEFORE\n", (unsigned long) fileptr->lineno);
+#endif
+ endptr->multidata[tmpcolor->id] |= CBEGINBEFORE;
+ /* We should be able to skip all the way to the line of the match.
+ This may introduce more bugs but it's the Right Thing to do */
+ fileptr = endptr;
+ startx = endmatch.rm_eo;
+#ifdef DEBUG
+ fprintf(stderr, "jumping to line %lu pos %d to continue\n", (unsigned long) endptr->lineno, startx);
+#endif
+ }
+ if (nostart && startx == 0) {
+#ifdef DEBUG
+ fprintf(stderr, "no start found on line %lu, continuing\n", (unsigned long) fileptr->lineno);
+#endif
+ fileptr->multidata[tmpcolor->id] = CNONE;
+ continue;
+ }
+ }
+ }
+ }
+precalc_cleanup:
+ nodelay(edit, FALSE);
+}
+#endif /* ENABLE_COLOR */
+
+/* The user typed output_len multibyte characters. Add them to the edit
+ * buffer, filtering out all ASCII control characters if allow_cntrls is
+ * TRUE. */
+void do_output(char *output, size_t output_len, bool allow_cntrls)
+{
+ size_t current_len, orig_lenpt, i = 0;
+ char *char_buf = charalloc(mb_cur_max());
+ int char_buf_len;
+
+ assert(openfile->current != NULL && openfile->current->data != NULL);
+
+ current_len = strlen(openfile->current->data);
+ if (ISSET(SOFTWRAP))
+ orig_lenpt = strlenpt(openfile->current->data);
+
+ while (i < output_len) {
+ /* If allow_cntrls is TRUE, convert nulls and newlines
+ * properly. */
+ if (allow_cntrls) {
+ /* Null to newline, if needed. */
+ if (output[i] == '\0')
+ output[i] = '\n';
+ /* Newline to Enter, if needed. */
+ else if (output[i] == '\n') {
+ do_enter(FALSE);
+ i++;
+ continue;
+ }
+ }
+
+ /* Interpret the next multibyte character. */
+ char_buf_len = parse_mbchar(output + i, char_buf, NULL);
+
+ i += char_buf_len;
+
+ /* If allow_cntrls is FALSE, filter out an ASCII control
+ * character. */
+ if (!allow_cntrls && is_ascii_cntrl_char(*(output + i -
+ char_buf_len)))
+ continue;
+
+ /* If the NO_NEWLINES flag isn't set, when a character is
+ * added to the magicline, it means we need a new magicline. */
+ if (!ISSET(NO_NEWLINES) && openfile->filebot ==
+ openfile->current)
+ new_magicline();
+
+ /* More dangerousness fun =) */
+ openfile->current->data = charealloc(openfile->current->data,
+ current_len + (char_buf_len * 2));
+
+ assert(openfile->current_x <= current_len);
+
+ charmove(openfile->current->data + openfile->current_x +
+ char_buf_len, openfile->current->data +
+ openfile->current_x, current_len - openfile->current_x +
+ char_buf_len);
+ strncpy(openfile->current->data + openfile->current_x, char_buf,
+ char_buf_len);
+ current_len += char_buf_len;
+ openfile->totsize++;
+ set_modified();
+
+#ifndef NANO_TINY
+ update_undo(ADD);
+
+ /* Note that current_x has not yet been incremented. */
+ if (openfile->mark_set && openfile->current ==
+ openfile->mark_begin && openfile->current_x <
+ openfile->mark_begin_x)
+ openfile->mark_begin_x += char_buf_len;
+#endif
+
+ openfile->current_x += char_buf_len;
+
+#ifndef DISABLE_WRAPPING
+ /* If we're wrapping text, we need to call edit_refresh(). */
+ if (!ISSET(NO_WRAP))
+ if (do_wrap(openfile->current, FALSE))
+ edit_refresh_needed = TRUE;
+#endif
+
+#ifdef ENABLE_COLOR
+ /* If color syntaxes are available and turned on, we need to
+ * call edit_refresh(). */
+ if (openfile->colorstrings != NULL && !ISSET(NO_COLOR_SYNTAX))
+ edit_refresh_needed = TRUE;
+#endif
+ }
+
+ /* Well we might also need a full refresh if we've changed the
+ line length to be a new multiple of COLS */
+ if (ISSET(SOFTWRAP) && edit_refresh_needed == FALSE)
+ if (strlenpt(openfile->current->data) / COLS != orig_lenpt / COLS)
+ edit_refresh_needed = TRUE;
+
+ free(char_buf);
+
+ openfile->placewewant = xplustabs();
+
+
+#ifdef ENABLE_COLOR
+ reset_multis(openfile->current, FALSE);
+#endif
+ if (edit_refresh_needed == TRUE) {
+ edit_refresh();
+ edit_refresh_needed = FALSE;
+ } else
+ update_line(openfile->current, openfile->current_x);
+}
+
+int main(int argc, char **argv)
+{
+ int optchr;
+ ssize_t startline = 1;
+ /* Line to try and start at. */
+ ssize_t startcol = 1;
+ /* Column to try and start at. */
+#ifndef DISABLE_WRAPJUSTIFY
+ bool fill_used = FALSE;
+ /* Was the fill option used? */
+#endif
+#ifdef ENABLE_MULTIBUFFER
+ bool old_multibuffer;
+ /* The old value of the multibuffer option, restored after we
+ * load all files on the command line. */
+#endif
+#ifdef HAVE_GETOPT_LONG
+ const struct option long_options[] = {
+ {"help", 0, NULL, 'h'},
+ {"boldtext", 0, NULL, 'D'},
+#ifdef ENABLE_MULTIBUFFER
+ {"multibuffer", 0, NULL, 'F'},
+#endif
+#ifdef ENABLE_NANORC
+ {"ignorercfiles", 0, NULL, 'I'},
+#endif
+ {"rebindkeypad", 0, NULL, 'K'},
+ {"nonewlines", 0, NULL, 'L'},
+ {"morespace", 0, NULL, 'O'},
+#ifndef DISABLE_JUSTIFY
+ {"quotestr", 1, NULL, 'Q'},
+#endif
+ {"restricted", 0, NULL, 'R'},
+ {"tabsize", 1, NULL, 'T'},
+ {"version", 0, NULL, 'V'},
+#ifdef ENABLE_COLOR
+ {"syntax", 1, NULL, 'Y'},
+#endif
+ {"const", 0, NULL, 'c'},
+ {"rebinddelete", 0, NULL, 'd'},
+ {"nofollow", 0, NULL, 'l'},
+#ifndef DISABLE_MOUSE
+ {"mouse", 0, NULL, 'm'},
+#endif
+#ifndef DISABLE_OPERATINGDIR
+ {"operatingdir", 1, NULL, 'o'},
+#endif
+ {"preserve", 0, NULL, 'p'},
+ {"quiet", 0, NULL, 'q'},
+#ifndef DISABLE_WRAPJUSTIFY
+ {"fill", 1, NULL, 'r'},
+#endif
+#ifndef DISABLE_SPELLER
+ {"speller", 1, NULL, 's'},
+#endif
+ {"tempfile", 0, NULL, 't'},
+ {"view", 0, NULL, 'v'},
+#ifndef DISABLE_WRAPPING
+ {"nowrap", 0, NULL, 'w'},
+#endif
+ {"nohelp", 0, NULL, 'x'},
+ {"suspend", 0, NULL, 'z'},
+#ifndef NANO_TINY
+ {"smarthome", 0, NULL, 'A'},
+ {"backup", 0, NULL, 'B'},
+ {"backupdir", 1, NULL, 'C'},
+ {"tabstospaces", 0, NULL, 'E'},
+ {"historylog", 0, NULL, 'H'},
+ {"noconvert", 0, NULL, 'N'},
+ {"smooth", 0, NULL, 'S'},
+ {"quickblank", 0, NULL, 'U'},
+ {"undo", 0, NULL, 'u'},
+ {"wordbounds", 0, NULL, 'W'},
+ {"autoindent", 0, NULL, 'i'},
+ {"cut", 0, NULL, 'k'},
+ {"softwrap", 0, NULL, '$'},
+#endif
+ {NULL, 0, NULL, 0}
+ };
+#endif
+
+#ifdef ENABLE_UTF8
+ {
+ /* If the locale set exists and uses UTF-8, we should use
+ * UTF-8. */
+ char *locale = setlocale(LC_ALL, "");
+
+ if (locale != NULL && (strcmp(nl_langinfo(CODESET),
+ "UTF-8") == 0)) {
+#ifdef USE_SLANG
+ SLutf8_enable(1);
+#endif
+ utf8_init();
+ }
+ }
+#else
+ setlocale(LC_ALL, "");
+#endif
+
+#ifdef ENABLE_NLS
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+#endif
+
+#if !defined(ENABLE_NANORC) && defined(DISABLE_ROOTWRAPPING)
+ /* If we don't have rcfile support, --disable-wrapping-as-root is
+ * used, and we're root, turn wrapping off. */
+ if (geteuid() == NANO_ROOT_UID)
+ SET(NO_WRAP);
+#endif
+
+ while ((optchr =
+#ifdef HAVE_GETOPT_LONG
+ getopt_long(argc, argv,
+ "h?ABC:DEFHIKLNOQ:RST:UVWY:abcdefgijklmo:pqr:s:tuvwxz$",
+ long_options, NULL)
+#else
+ getopt(argc, argv,
+ "h?ABC:DEFHIKLNOQ:RST:UVWY:abcdefgijklmo:pqr:s:tuvwxz$")
+#endif
+ ) != -1) {
+ switch (optchr) {
+ case 'a':
+ case 'b':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'j':
+ /* Pico compatibility flags. */
+ break;
+#ifndef NANO_TINY
+ case 'A':
+ SET(SMART_HOME);
+ break;
+ case 'B':
+ SET(BACKUP_FILE);
+ break;
+ case 'C':
+ backup_dir = mallocstrcpy(backup_dir, optarg);
+ break;
+#endif
+ case 'D':
+ SET(BOLD_TEXT);
+ break;
+#ifndef NANO_TINY
+ case 'E':
+ SET(TABS_TO_SPACES);
+ break;
+#endif
+#ifdef ENABLE_MULTIBUFFER
+ case 'F':
+ SET(MULTIBUFFER);
+ break;
+#endif
+#ifdef ENABLE_NANORC
+#ifndef NANO_TINY
+ case 'H':
+ SET(HISTORYLOG);
+ break;
+#endif
+ case 'I':
+ no_rcfiles = TRUE;
+ break;
+#endif
+ case 'K':
+ SET(REBIND_KEYPAD);
+ break;
+ case 'L':
+ SET(NO_NEWLINES);
+ break;
+#ifndef NANO_TINY
+ case 'N':
+ SET(NO_CONVERT);
+ break;
+#endif
+ case 'O':
+ SET(MORE_SPACE);
+ break;
+#ifndef DISABLE_JUSTIFY
+ case 'Q':
+ quotestr = mallocstrcpy(quotestr, optarg);
+ break;
+#endif
+ case 'R':
+ SET(RESTRICTED);
+ break;
+#ifndef NANO_TINY
+ case 'S':
+ SET(SMOOTH_SCROLL);
+ break;
+#endif
+ case 'T':
+ if (!parse_num(optarg, &tabsize) || tabsize <= 0) {
+ fprintf(stderr, _("Requested tab size \"%s\" is invalid"), optarg);
+ fprintf(stderr, "\n");
+ exit(1);
+ }
+ break;
+#ifndef NANO_TINY
+ case 'U':
+ SET(QUICK_BLANK);
+ break;
+#endif
+ case 'V':
+ version();
+ exit(0);
+#ifndef NANO_TINY
+ case 'W':
+ SET(WORD_BOUNDS);
+ break;
+#endif
+#ifdef ENABLE_COLOR
+ case 'Y':
+ syntaxstr = mallocstrcpy(syntaxstr, optarg);
+ break;
+#endif
+ case 'c':
+ SET(CONST_UPDATE);
+ break;
+ case 'd':
+ SET(REBIND_DELETE);
+ break;
+#ifndef NANO_TINY
+ case 'i':
+ SET(AUTOINDENT);
+ break;
+ case 'k':
+ SET(CUT_TO_END);
+ break;
+#endif
+ case 'l':
+ SET(NOFOLLOW_SYMLINKS);
+ break;
+#ifndef DISABLE_MOUSE
+ case 'm':
+ SET(USE_MOUSE);
+ break;
+#endif
+#ifndef DISABLE_OPERATINGDIR
+ case 'o':
+ operating_dir = mallocstrcpy(operating_dir, optarg);
+ break;
+#endif
+ case 'p':
+ SET(PRESERVE);
+ break;
+ case 'q':
+ SET(QUIET);
+ break;
+#ifndef DISABLE_WRAPJUSTIFY
+ case 'r':
+ if (!parse_num(optarg, &wrap_at)) {
+ fprintf(stderr, _("Requested fill size \"%s\" is invalid"), optarg);
+ fprintf(stderr, "\n");
+ exit(1);
+ }
+ fill_used = TRUE;
+ break;
+#endif
+#ifndef DISABLE_SPELLER
+ case 's':
+ alt_speller = mallocstrcpy(alt_speller, optarg);
+ break;
+#endif
+ case 't':
+ SET(TEMP_FILE);
+ break;
+#ifndef NANO_TINY
+ case 'u':
+ SET(UNDOABLE);
+ break;
+#endif
+ case 'v':
+ SET(VIEW_MODE);
+ break;
+#ifndef DISABLE_WRAPPING
+ case 'w':
+ SET(NO_WRAP);
+
+ /* If both --fill and --nowrap are given on the command line,
+ the last option wins, */
+ fill_used = FALSE;
+
+ break;
+#endif
+ case 'x':
+ SET(NO_HELP);
+ break;
+ case 'z':
+ SET(SUSPEND);
+ break;
+#ifndef NANO_TINY
+ case '$':
+ SET(SOFTWRAP);
+ break;
+#endif
+ default:
+ usage();
+ }
+ }
+
+ /* If the executable filename starts with 'r', enable restricted
+ * mode. */
+ if (*(tail(argv[0])) == 'r')
+ SET(RESTRICTED);
+
+ /* If we're using restricted mode, disable suspending, backups, and
+ * reading rcfiles, since they all would allow reading from or
+ * writing to files not specified on the command line. */
+ if (ISSET(RESTRICTED)) {
+ UNSET(SUSPEND);
+ UNSET(BACKUP_FILE);
+#ifdef ENABLE_NANORC
+ no_rcfiles = TRUE;
+#endif
+ }
+
+
+ /* Set up the shortcut lists.
+ Need to do this before the rcfile */
+ shortcut_init(FALSE);
+
+/* We've read through the command line options. Now back up the flags
+ * and values that are set, and read the rcfile(s). If the values
+ * haven't changed afterward, restore the backed-up values. */
+#ifdef ENABLE_NANORC
+ if (!no_rcfiles) {
+#ifndef DISABLE_OPERATINGDIR
+ char *operating_dir_cpy = operating_dir;
+#endif
+#ifndef DISABLE_WRAPJUSTIFY
+ ssize_t wrap_at_cpy = wrap_at;
+#endif
+#ifndef NANO_TINY
+ char *backup_dir_cpy = backup_dir;
+#endif
+#ifndef DISABLE_JUSTIFY
+ char *quotestr_cpy = quotestr;
+#endif
+#ifndef DISABLE_SPELLER
+ char *alt_speller_cpy = alt_speller;
+#endif
+ ssize_t tabsize_cpy = tabsize;
+ unsigned flags_cpy[sizeof(flags) / sizeof(flags[0])];
+ size_t i;
+
+ memcpy(flags_cpy, flags, sizeof(flags_cpy));
+
+#ifndef DISABLE_OPERATINGDIR
+ operating_dir = NULL;
+#endif
+#ifndef NANO_TINY
+ backup_dir = NULL;
+#endif
+#ifndef DISABLE_JUSTIFY
+ quotestr = NULL;
+#endif
+#ifndef DISABLE_SPELLER
+ alt_speller = NULL;
+#endif
+
+ do_rcfile();
+
+#ifdef DEBUG
+ fprintf(stderr, "After rebinding keys...\n");
+ print_sclist();
+#endif
+
+#ifndef DISABLE_OPERATINGDIR
+ if (operating_dir_cpy != NULL) {
+ free(operating_dir);
+ operating_dir = operating_dir_cpy;
+ }
+#endif
+#ifndef DISABLE_WRAPJUSTIFY
+ if (fill_used)
+ wrap_at = wrap_at_cpy;
+#endif
+#ifndef NANO_TINY
+ if (backup_dir_cpy != NULL) {
+ free(backup_dir);
+ backup_dir = backup_dir_cpy;
+ }
+#endif
+#ifndef DISABLE_JUSTIFY
+ if (quotestr_cpy != NULL) {
+ free(quotestr);
+ quotestr = quotestr_cpy;
+ }
+#endif
+#ifndef DISABLE_SPELLER
+ if (alt_speller_cpy != NULL) {
+ free(alt_speller);
+ alt_speller = alt_speller_cpy;
+ }
+#endif
+ if (tabsize_cpy != -1)
+ tabsize = tabsize_cpy;
+
+ for (i = 0; i < sizeof(flags) / sizeof(flags[0]); i++)
+ flags[i] |= flags_cpy[i];
+ }
+#ifdef DISABLE_ROOTWRAPPING
+ /* If we don't have any rcfiles, --disable-wrapping-as-root is used,
+ * and we're root, turn wrapping off. */
+ else if (geteuid() == NANO_ROOT_UID)
+ SET(NO_WRAP);
+#endif
+#endif /* ENABLE_NANORC */
+
+#ifndef DISABLE_WRAPPING
+ /* Overwrite an rcfile "set nowrap" or --disable-wrapping-as-root
+ if a --fill option was given on the command line. */
+ if (fill_used)
+ UNSET(NO_WRAP);
+#endif
+
+ /* If we're using bold text instead of reverse video text, set it up
+ * now. */
+ if (ISSET(BOLD_TEXT))
+ reverse_attr = A_BOLD;
+
+#ifndef NANO_TINY
+ /* Set up the search/replace history. */
+ history_init();
+#ifdef ENABLE_NANORC
+ if (!no_rcfiles && ISSET(HISTORYLOG))
+ load_history();
+#endif
+#endif
+
+#ifndef NANO_TINY
+ /* Set up the backup directory (unless we're using restricted mode,
+ * in which case backups are disabled, since they would allow
+ * reading from or writing to files not specified on the command
+ * line). This entails making sure it exists and is a directory, so
+ * that backup files will be saved there. */
+ if (!ISSET(RESTRICTED))
+ init_backup_dir();
+#endif
+
+#ifndef DISABLE_OPERATINGDIR
+ /* Set up the operating directory. This entails chdir()ing there,
+ * so that file reads and writes will be based there. */
+ init_operating_dir();
+#endif
+
+#ifndef DISABLE_JUSTIFY
+ /* If punct wasn't specified, set its default value. */
+ if (punct == NULL)
+ punct = mallocstrcpy(NULL, "!.?");
+
+ /* If brackets wasn't specified, set its default value. */
+ if (brackets == NULL)
+ brackets = mallocstrcpy(NULL, "\"')>]}");
+
+ /* If quotestr wasn't specified, set its default value. */
+ if (quotestr == NULL)
+ quotestr = mallocstrcpy(NULL,
+#ifdef HAVE_REGEX_H
+ "^([ \t]*[#:>|}])+"
+#else
+ "> "
+#endif
+ );
+#ifdef HAVE_REGEX_H
+ quoterc = regcomp(&quotereg, quotestr, REG_EXTENDED);
+
+ if (quoterc == 0) {
+ /* We no longer need quotestr, just quotereg. */
+ free(quotestr);
+ quotestr = NULL;
+ } else {
+ size_t size = regerror(quoterc, &quotereg, NULL, 0);
+
+ quoteerr = charalloc(size);
+ regerror(quoterc, &quotereg, quoteerr, size);
+ }
+#else
+ quotelen = strlen(quotestr);
+#endif /* !HAVE_REGEX_H */
+#endif /* !DISABLE_JUSTIFY */
+
+#ifndef DISABLE_SPELLER
+ /* If we don't have an alternative spell checker after reading the
+ * command line and/or rcfile(s), check $SPELL for one, as Pico
+ * does (unless we're using restricted mode, in which case spell
+ * checking is disabled, since it would allow reading from or
+ * writing to files not specified on the command line). */
+ if (!ISSET(RESTRICTED) && alt_speller == NULL) {
+ char *spellenv = getenv("SPELL");
+ if (spellenv != NULL)
+ alt_speller = mallocstrcpy(NULL, spellenv);
+ }
+#endif
+
+#ifndef NANO_TINY
+ /* If matchbrackets wasn't specified, set its default value. */
+ if (matchbrackets == NULL)
+ matchbrackets = mallocstrcpy(NULL, "(<[{)>]}");
+#endif
+
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+ /* If whitespace wasn't specified, set its default value. */
+ if (whitespace == NULL) {
+ whitespace = mallocstrcpy(NULL, " ");
+ whitespace_len[0] = 1;
+ whitespace_len[1] = 1;
+ }
+#endif
+
+ /* If tabsize wasn't specified, set its default value. */
+ if (tabsize == -1)
+ tabsize = WIDTH_OF_TAB;
+
+ /* Back up the old terminal settings so that they can be restored. */
+ tcgetattr(0, &oldterm);
+
+ /* Initialize curses mode. If this fails, get out. */
+ if (initscr() == NULL)
+ exit(1);
+
+ /* Set up the terminal state. */
+ terminal_init();
+
+ /* Turn the cursor on for sure. */
+ curs_set(1);
+
+#ifdef DEBUG
+ fprintf(stderr, "Main: set up windows\n");
+#endif
+
+ /* Initialize all the windows based on the current screen
+ * dimensions. */
+ window_init();
+
+ /* Set up the signal handlers. */
+ signal_init();
+
+#ifndef DISABLE_MOUSE
+ /* Initialize mouse support. */
+ mouse_init();
+#endif
+
+#ifdef DEBUG
+ fprintf(stderr, "Main: open file\n");
+#endif
+
+ /* If there's a +LINE or +LINE,COLUMN flag here, it is the first
+ * non-option argument, and it is followed by at least one other
+ * argument, the filename it applies to. */
+ if (0 < optind && optind < argc - 1 && argv[optind][0] == '+') {
+ parse_line_column(&argv[optind][1], &startline, &startcol);
+ optind++;
+ }
+
+ if (optind < argc && !strcmp(argv[optind], "-")) {
+ stdin_pager();
+ set_modified();
+ optind++;
+ }
+
+#ifdef ENABLE_MULTIBUFFER
+ old_multibuffer = ISSET(MULTIBUFFER);
+ SET(MULTIBUFFER);
+
+ /* Read all the files after the first one on the command line into
+ * new buffers. */
+ {
+ int i = optind + 1;
+ ssize_t iline = 1, icol = 1;
+
+ for (; i < argc; i++) {
+ /* If there's a +LINE or +LINE,COLUMN flag here, it is
+ * followed by at least one other argument, the filename it
+ * applies to. */
+ if (i < argc - 1 && argv[i][0] == '+' && iline == 1 &&
+ icol == 1)
+ parse_line_column(&argv[i][1], &iline, &icol);
+ else {
+ open_buffer(argv[i], FALSE);
+
+ if (iline > 1 || icol > 1) {
+ do_gotolinecolumn(iline, icol, FALSE, FALSE, FALSE,
+ FALSE);
+ iline = 1;
+ icol = 1;
+ }
+ }
+ }
+ }
+#endif
+
+ /* Read the first file on the command line into either the current
+ * buffer or a new buffer, depending on whether multibuffer mode is
+ * enabled. */
+ if (optind < argc)
+ open_buffer(argv[optind], FALSE);
+
+ /* We didn't open any files if all the command line arguments were
+ * invalid files like directories or if there were no command line
+ * arguments given. In this case, we have to load a blank buffer.
+ * Also, we unset view mode to allow editing. */
+ if (openfile == NULL) {
+ open_buffer("", FALSE);
+ UNSET(VIEW_MODE);
+ }
+
+#ifdef ENABLE_MULTIBUFFER
+ if (!old_multibuffer)
+ UNSET(MULTIBUFFER);
+#endif
+
+#ifdef DEBUG
+ fprintf(stderr, "Main: top and bottom win\n");
+#endif
+
+#ifdef ENABLE_COLOR
+ if (openfile->syntax && openfile->syntax->nmultis > 0)
+ precalc_multicolorinfo();
+#endif
+
+ if (startline > 1 || startcol > 1)
+ do_gotolinecolumn(startline, startcol, FALSE, FALSE, FALSE,
+ FALSE);
+
+ display_main_list();
+
+ display_buffer();
+
+ while (TRUE) {
+ bool meta_key, func_key, s_or_t, ran_func, finished;
+
+ /* Make sure the cursor is in the edit window. */
+ reset_cursor();
+ wnoutrefresh(edit);
+
+#ifndef NANO_TINY
+ if (!jump_buf_main) {
+ /* If we haven't already, we're going to set jump_buf so
+ * that we return here after a SIGWINCH. Indicate this. */
+ jump_buf_main = TRUE;
+
+ /* Return here after a SIGWINCH. */
+ sigsetjmp(jump_buf, 1);
+ }
+#endif
+
+ /* Just in case we were at the statusbar prompt, make sure the
+ * statusbar cursor position is reset. */
+ do_prompt_abort();
+
+ /* If constant cursor position display is on, and there are no
+ * keys waiting in the input buffer, display the current cursor
+ * position on the statusbar. */
+ if (ISSET(CONST_UPDATE) && get_key_buffer_len() == 0)
+ do_cursorpos(TRUE);
+
+ currmenu = MMAIN;
+
+ /* Read in and interpret characters. */
+ do_input(&meta_key, &func_key, &s_or_t, &ran_func, &finished,
+ TRUE);
+ }
+
+ /* We should never get here. */
+ assert(FALSE);
+}
+
diff --git a/src/nano.h b/src/nano.h
new file mode 100644
index 0000000..12131fb
--- /dev/null
+++ b/src/nano.h
@@ -0,0 +1,936 @@
+/* $Id: nano.h 4508 2010-06-21 03:10:10Z astyanax $ */
+/**************************************************************************
+ * nano.h *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#ifndef NANO_H
+#define NANO_H 1
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef NEED_XOPEN_SOURCE_EXTENDED
+#ifndef _XOPEN_SOURCE_EXTENDED
+#define _XOPEN_SOURCE_EXTENDED 1
+#endif /* _XOPEN_SOURCE_EXTENDED */
+#endif /* NEED_XOPEN_SOURCE_EXTENDED */
+
+#ifdef __TANDEM
+/* Tandem NonStop Kernel support. */
+#include <floss.h>
+#define NANO_ROOT_UID 65535
+#else
+#define NANO_ROOT_UID 0
+#endif
+
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+
+#ifdef HAVE_STDARG_H
+#include <stdarg.h>
+#endif
+
+/* Suppress warnings for __attribute__((warn_unused_result)) */
+#define IGNORE_CALL_RESULT(call) do { if (call) {} } while(0)
+
+/* Macros for flags. */
+#define FLAGOFF(flag) ((flag) / (sizeof(unsigned) * 8))
+#define FLAGMASK(flag) (1 << ((flag) % (sizeof(unsigned) * 8)))
+#define FLAGS(flag) flags[FLAGOFF(flag)]
+#define SET(flag) FLAGS(flag) |= FLAGMASK(flag)
+#define UNSET(flag) FLAGS(flag) &= ~FLAGMASK(flag)
+#define ISSET(flag) ((FLAGS(flag) & FLAGMASK(flag)) != 0)
+#define TOGGLE(flag) FLAGS(flag) ^= FLAGMASK(flag)
+
+/* Macros for character allocation and more. */
+#define charalloc(howmuch) (char *)nmalloc((howmuch) * sizeof(char))
+#define charealloc(ptr, howmuch) (char *)nrealloc(ptr, (howmuch) * sizeof(char))
+#define charmove(dest, src, n) memmove(dest, src, (n) * sizeof(char))
+#define charset(dest, src, n) memset(dest, src, (n) * sizeof(char))
+
+/* Set a default value for PATH_MAX if there isn't one. */
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
+
+#ifdef USE_SLANG
+/* Slang support. */
+#include <slcurses.h>
+/* Slang curses emulation brain damage, part 3: Slang doesn't define the
+ * curses equivalents of the Insert or Delete keys. */
+#define KEY_DC SL_KEY_DELETE
+#define KEY_IC SL_KEY_IC
+/* Ncurses support. */
+#elif defined(HAVE_NCURSES_H)
+#include <ncurses.h>
+#else
+/* Curses support. */
+#include <curses.h>
+#endif /* CURSES_H */
+
+#ifdef ENABLE_NLS
+/* Native language support. */
+#ifdef HAVE_LIBINTL_H
+#include <libintl.h>
+#endif
+#define _(string) gettext(string)
+#define P_(singular, plural, number) ngettext(singular, plural, number)
+#else
+#define _(string) (string)
+#define P_(singular, plural, number) (number == 1 ? singular : plural)
+#endif
+#define gettext_noop(string) (string)
+#define N_(string) gettext_noop(string)
+ /* Mark a string that will be sent to gettext() later. */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#ifdef HAVE_REGEX_H
+#include <regex.h>
+#endif
+#ifndef NANO_TINY
+#include <setjmp.h>
+#endif
+#include <assert.h>
+
+/* If no vsnprintf(), use the version from glib 2.x. */
+#ifndef HAVE_VSNPRINTF
+#include <glib.h>
+#define vsnprintf g_vsnprintf
+#endif
+
+/* If no isblank(), iswblank(), strcasecmp(), strncasecmp(),
+ * strcasestr(), strnlen(), getdelim(), or getline(), use the versions
+ * we have. */
+#ifndef HAVE_ISBLANK
+#define isblank nisblank
+#endif
+#ifndef HAVE_ISWBLANK
+#define iswblank niswblank
+#endif
+#ifndef HAVE_STRCASECMP
+#define strcasecmp nstrcasecmp
+#endif
+#ifndef HAVE_STRNCASECMP
+#define strncasecmp nstrncasecmp
+#endif
+#ifndef HAVE_STRCASESTR
+#define strcasestr nstrcasestr
+#endif
+#ifndef HAVE_STRNLEN
+#define strnlen nstrnlen
+#endif
+#ifndef HAVE_GETDELIM
+#define getdelim ngetdelim
+#endif
+#ifndef HAVE_GETLINE
+#define getline ngetline
+#endif
+
+/* If we aren't using ncurses with mouse support, turn the mouse support
+ * off, as it's useless then. */
+#ifndef NCURSES_MOUSE_VERSION
+#define DISABLE_MOUSE 1
+#endif
+
+#if defined(DISABLE_WRAPPING) && defined(DISABLE_JUSTIFY)
+#define DISABLE_WRAPJUSTIFY 1
+#endif
+
+/* Enumeration types. */
+typedef enum {
+ NIX_FILE, DOS_FILE, MAC_FILE
+} file_format;
+
+typedef enum {
+ OVERWRITE, APPEND, PREPEND
+} append_type;
+
+typedef enum {
+ UP_DIR, DOWN_DIR
+} scroll_dir;
+
+typedef enum {
+ CENTER, NONE
+} update_type;
+
+typedef enum {
+ CONTROL, META, FKEY, RAW
+} function_type;
+
+typedef enum {
+ ADD, DEL, REPLACE, SPLIT, UNSPLIT, CUT, UNCUT, ENTER, INSERT, OTHER
+} undo_type;
+
+#ifdef ENABLE_COLOR
+typedef struct colortype {
+ short fg;
+ /* This syntax's foreground color. */
+ short bg;
+ /* This syntax's background color. */
+ bool bright;
+ /* Is this color A_BOLD? */
+ bool icase;
+ /* Is this regex string case insensitive? */
+ int pairnum;
+ /* The color pair number used for this foreground color and
+ * background color. */
+ char *start_regex;
+ /* The start (or all) of the regex string. */
+ regex_t *start;
+ /* The compiled start (or all) of the regex string. */
+ char *end_regex;
+ /* The end (if any) of the regex string. */
+ regex_t *end;
+ /* The compiled end (if any) of the regex string. */
+ struct colortype *next;
+ /* Next set of colors. */
+ int id;
+ /* basic id for assigning to lines later */
+} colortype;
+
+typedef struct exttype {
+ char *ext_regex;
+ /* The extensions that match this syntax. */
+ regex_t *ext;
+ /* The compiled extensions that match this syntax. */
+ struct exttype *next;
+ /* Next set of extensions. */
+} exttype;
+
+typedef struct syntaxtype {
+ char *desc;
+ /* The name of this syntax. */
+ exttype *extensions;
+ /* The list of extensions that this syntax applies to. */
+ exttype *headers;
+ /* Regexes to match on the 'header' (1st line) of the file */
+ colortype *color;
+ /* The colors used in this syntax. */
+ int nmultis;
+ /* How many multi line strings this syntax has */
+ struct syntaxtype *next;
+ /* Next syntax. */
+} syntaxtype;
+
+#define CNONE (1<<1)
+ /* Yay, regex doesn't apply to this line at all! */
+#define CBEGINBEFORE (1<<2)
+ /* regex starts on an earlier line, ends on this one */
+#define CENDAFTER (1<<3)
+ /* regex sraers on this line and ends on a later one */
+#define CWHOLELINE (1<<4)
+ /* whole line engulfed by the regex start < me, end > me */
+#define CSTARTENDHERE (1<<5)
+ /* regex starts and ends within this line */
+#define CWTF (1<<6)
+ /* Something else */
+
+#endif /* ENABLE_COLOR */
+
+
+/* Structure types. */
+typedef struct filestruct {
+ char *data;
+ /* The text of this line. */
+ ssize_t lineno;
+ /* The number of this line. */
+ struct filestruct *next;
+ /* Next node. */
+ struct filestruct *prev;
+ /* Previous node. */
+#ifdef ENABLE_COLOR
+ short *multidata; /* Array of which multi-line regexes apply to this line */
+#endif
+} filestruct;
+
+typedef struct partition {
+ filestruct *fileage;
+ /* The top line of this portion of the file. */
+ filestruct *top_prev;
+ /* The line before the top line of this portion of the file. */
+ char *top_data;
+ /* The text before the beginning of the top line of this portion
+ * of the file. */
+ filestruct *filebot;
+ /* The bottom line of this portion of the file. */
+ filestruct *bot_next;
+ /* The line after the bottom line of this portion of the
+ * file. */
+ char *bot_data;
+ /* The text after the end of the bottom line of this portion of
+ * the file. */
+} partition;
+
+#ifndef NANO_TINY
+typedef struct undo {
+ ssize_t lineno;
+ undo_type type;
+ /* What type of undo was this */
+ int begin;
+ /* Where did this action begin or end */
+ char *strdata;
+ /* String type data we will use for ccopying the affected line back */
+ char *strdata2;
+ /* Sigh, need this too it looks like */
+ int xflags;
+ /* Some flag data we need */
+
+ /* Cut specific stuff we need */
+ filestruct *cutbuffer;
+ /* Copy of the cutbuffer */
+ filestruct *cutbottom;
+ /* Copy of cutbottom */
+ bool mark_set;
+ /* was the marker set when we cut */
+ bool to_end;
+ /* was this a cut to end */
+ ssize_t mark_begin_lineno;
+ /* copy copy copy */
+ ssize_t mark_begin_x;
+ /* Another shadow variable */
+ struct undo *next;
+} undo;
+
+
+#endif /* NANO_TINY */
+
+
+typedef struct openfilestruct {
+ char *filename;
+ /* The current file's name. */
+ filestruct *fileage;
+ /* The current file's first line. */
+ filestruct *filebot;
+ /* The current file's last line. */
+ filestruct *edittop;
+ /* The current top of the edit window. */
+ filestruct *current;
+ /* The current file's current line. */
+ size_t totsize;
+ /* The current file's total number of characters. */
+ size_t current_x;
+ /* The current file's x-coordinate position. */
+ size_t placewewant;
+ /* The current file's place we want. */
+ ssize_t current_y;
+ /* The current file's y-coordinate position. */
+ bool modified;
+ /* Whether the current file has been modified. */
+#ifndef NANO_TINY
+ bool mark_set;
+ /* Whether the mark is on in the current file. */
+ filestruct *mark_begin;
+ /* The current file's beginning marked line, if any. */
+ size_t mark_begin_x;
+ /* The current file's beginning marked line's x-coordinate
+ * position, if any. */
+ file_format fmt;
+ /* The current file's format. */
+ struct stat *current_stat;
+ /* The current file's stat. */
+ undo *undotop;
+ /* Top of the undo list */
+ undo *current_undo;
+ /* The current (i.e. n ext) level of undo */
+ undo_type last_action;
+#endif
+#ifdef ENABLE_COLOR
+ syntaxtype *syntax;
+ /* The syntax struct for this file, if any */
+ colortype *colorstrings;
+ /* The current file's associated colors. */
+#endif
+ struct openfilestruct *next;
+ /* Next node. */
+ struct openfilestruct *prev;
+ /* Previous node. */
+} openfilestruct;
+
+typedef struct shortcut {
+ const char *desc;
+ /* The function's description, e.g. "Page Up". */
+#ifndef DISABLE_HELP
+ const char *help;
+ /* The help file entry text for this function. */
+ bool blank_after;
+ /* Whether there should be a blank line after the help entry
+ * text for this function. */
+#endif
+ /* Note: Key values that aren't used should be set to
+ * NANO_NO_KEY. */
+ int ctrlval;
+ /* The special sentinel key or control key we want bound, if
+ * any. */
+ int metaval;
+ /* The meta key we want bound, if any. */
+ int funcval;
+ /* The function key we want bound, if any. */
+ int miscval;
+ /* The other meta key we want bound, if any. */
+ bool viewok;
+ /* Is this function allowed when in view mode? */
+ void (*func)(void);
+ /* The function to call when we get this key. */
+ struct shortcut *next;
+ /* Next shortcut. */
+} shortcut;
+
+#ifdef ENABLE_NANORC
+typedef struct rcoption {
+ const char *name;
+ /* The name of the rcfile option. */
+ long flag;
+ /* The flag associated with it, if any. */
+} rcoption;
+
+#endif
+
+typedef struct sc {
+ char *keystr;
+ /* The shortcut key for a function, ASCII version */
+ function_type type;
+ /* What kind of function key is it for convenience later */
+ int seq;
+ /* The actual sequence to check on the the type is determined */
+ int menu;
+ /* What list does this apply to */
+ short scfunc;
+ /* The function we're going to run */
+ int toggle;
+ /* If a toggle, what we're toggling */
+ bool execute;
+ /* Whether to execute the function in question or just return
+ so the sequence can be caught by the calling code */
+ struct sc *next;
+ /* Next in the list */
+} sc;
+
+typedef struct subnfunc {
+ short scfunc;
+ /* What function is this */
+ int menus;
+ /* In what menus does this function applu */
+ const char *desc;
+ /* The function's description, e.g. "Page Up". */
+#ifndef DISABLE_HELP
+ const char *help;
+ /* The help file entry text for this function. */
+ bool blank_after;
+ /* Whether there should be a blank line after the help entry
+ * text for this function. */
+#endif
+ bool viewok;
+ /* Is this function allowed when in view mode? */
+ long toggle;
+ /* If this is a toggle, if nonzero what toggle to set */
+ struct subnfunc *next;
+ /* next item in the list */
+} subnfunc;
+
+
+/* Enumeration to be used in flags table. See FLAGBIT and FLAGOFF
+ * definitions. */
+enum
+{
+ DONTUSE,
+ CASE_SENSITIVE,
+ CONST_UPDATE,
+ NO_HELP,
+ NOFOLLOW_SYMLINKS,
+ SUSPEND,
+ NO_WRAP,
+ AUTOINDENT,
+ VIEW_MODE,
+ USE_MOUSE,
+ USE_REGEXP,
+ TEMP_FILE,
+ CUT_TO_END,
+ BACKWARDS_SEARCH,
+ MULTIBUFFER,
+ SMOOTH_SCROLL,
+ REBIND_DELETE,
+ REBIND_KEYPAD,
+ NO_CONVERT,
+ BACKUP_FILE,
+ INSECURE_BACKUP,
+ NO_COLOR_SYNTAX,
+ PRESERVE,
+ HISTORYLOG,
+ RESTRICTED,
+ SMART_HOME,
+ WHITESPACE_DISPLAY,
+ MORE_SPACE,
+ TABS_TO_SPACES,
+ QUICK_BLANK,
+ WORD_BOUNDS,
+ NO_NEWLINES,
+ BOLD_TEXT,
+ QUIET,
+ UNDOABLE,
+ SOFTWRAP
+};
+
+/* Flags for which menus in which a given function should be present */
+#define MMAIN (1<<0)
+#define MWHEREIS (1<<1)
+#define MREPLACE (1<<2)
+#define MREPLACE2 (1<<3)
+#define MGOTOLINE (1<<4)
+#define MWRITEFILE (1<<5)
+#define MINSERTFILE (1<<6)
+#define MEXTCMD (1<<7)
+#define MHELP (1<<8)
+#define MSPELL (1<<9)
+#define MBROWSER (1<<10)
+#define MWHEREISFILE (1<<11)
+#define MGOTODIR (1<<12)
+#define MYESNO (1<<13)
+/* This really isnt all but close enough */
+#define MALL (MMAIN|MWHEREIS|MREPLACE|MREPLACE2|MGOTOLINE|MWRITEFILE|MINSERTFILE|MEXTCMD|MSPELL|MBROWSER|MWHEREISFILE|MGOTODIR|MHELP)
+
+/* Control key sequences. Changing these would be very, very bad. */
+#define NANO_CONTROL_SPACE 0
+#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
+#define NANO_CONTROL_3 27
+#define NANO_CONTROL_4 28
+#define NANO_CONTROL_5 29
+#define NANO_CONTROL_6 30
+#define NANO_CONTROL_7 31
+#define NANO_CONTROL_8 127
+
+/* Meta key sequences. */
+#define NANO_META_SPACE ' '
+#define NANO_META_LPARENTHESIS '('
+#define NANO_META_RPARENTHESIS ')'
+#define NANO_META_PLUS '+'
+#define NANO_META_COMMA ','
+#define NANO_META_MINUS '-'
+#define NANO_META_PERIOD '.'
+#define NANO_META_SLASH '/'
+#define NANO_META_0 '0'
+#define NANO_META_6 '6'
+#define NANO_META_9 '9'
+#define NANO_META_LCARET '<'
+#define NANO_META_EQUALS '='
+#define NANO_META_RCARET '>'
+#define NANO_META_QUESTION '?'
+#define NANO_META_BACKSLASH '\\'
+#define NANO_META_RBRACKET ']'
+#define NANO_META_CARET '^'
+#define NANO_META_UNDERSCORE '_'
+#define NANO_META_A 'a'
+#define NANO_META_B 'b'
+#define NANO_META_C 'c'
+#define NANO_META_D 'd'
+#define NANO_META_E 'e'
+#define NANO_META_F 'f'
+#define NANO_META_G 'g'
+#define NANO_META_H 'h'
+#define NANO_META_I 'i'
+#define NANO_META_J 'j'
+#define NANO_META_K 'k'
+#define NANO_META_L 'l'
+#define NANO_META_M 'm'
+#define NANO_META_N 'n'
+#define NANO_META_O 'o'
+#define NANO_META_P 'p'
+#define NANO_META_Q 'q'
+#define NANO_META_R 'r'
+#define NANO_META_S 's'
+#define NANO_META_T 't'
+#define NANO_META_U 'u'
+#define NANO_META_V 'v'
+#define NANO_META_W 'w'
+#define NANO_META_X 'x'
+#define NANO_META_Y 'y'
+#define NANO_META_Z 'z'
+#define NANO_META_LCURLYBRACKET '{'
+#define NANO_META_PIPE '|'
+#define NANO_META_RCURLYBRACKET '}'
+
+/* Some semi-changeable keybindings; don't play with these unless you're
+ * sure you know what you're doing. Assume ERR is defined as -1. */
+
+/* No key at all. */
+#define NANO_NO_KEY -2
+
+/* Normal keys. */
+#define NANO_XON_KEY NANO_CONTROL_Q
+#define NANO_XOFF_KEY NANO_CONTROL_S
+#define NANO_CANCEL_KEY NANO_CONTROL_C
+#define NANO_EXIT_KEY NANO_CONTROL_X
+#define NANO_EXIT_FKEY KEY_F(2)
+#define NANO_INSERTFILE_KEY NANO_CONTROL_R
+#define NANO_INSERTFILE_FKEY KEY_F(5)
+#define NANO_TOOTHERINSERT_KEY NANO_CONTROL_X
+#define NANO_WRITEOUT_KEY NANO_CONTROL_O
+#define NANO_WRITEOUT_FKEY KEY_F(3)
+#define NANO_GOTOLINE_KEY NANO_CONTROL_7
+#define NANO_GOTOLINE_FKEY KEY_F(13)
+#define NANO_GOTOLINE_METAKEY NANO_META_G
+#define NANO_GOTODIR_KEY NANO_CONTROL_7
+#define NANO_GOTODIR_FKEY KEY_F(13)
+#define NANO_GOTODIR_METAKEY NANO_META_G
+#define NANO_TOGOTOLINE_KEY NANO_CONTROL_T
+#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)
+#define NANO_WHEREIS_NEXT_KEY NANO_META_W
+#define NANO_WHEREIS_NEXT_FKEY KEY_F(16)
+#define NANO_TOOTHERWHEREIS_KEY NANO_CONTROL_T
+#define NANO_REGEXP_KEY NANO_META_R
+#define NANO_REPLACE_KEY NANO_CONTROL_4
+#define NANO_REPLACE_FKEY KEY_F(14)
+#define NANO_REPLACE_METAKEY NANO_META_R
+#define NANO_TOOTHERSEARCH_KEY NANO_CONTROL_R
+#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_COPY_KEY NANO_META_CARET
+#define NANO_COPY_METAKEY NANO_META_6
+#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
+#define NANO_FIRSTLINE_FKEY NANO_PREVPAGE_FKEY
+#define NANO_FIRSTLINE_METAKEY NANO_META_BACKSLASH
+#define NANO_FIRSTLINE_METAKEY2 NANO_META_PIPE
+#define NANO_FIRSTFILE_KEY NANO_FIRSTLINE_KEY
+#define NANO_FIRSTFILE_FKEY NANO_FIRSTLINE_FKEY
+#define NANO_FIRSTFILE_METAKEY NANO_FIRSTLINE_METAKEY
+#define NANO_FIRSTFILE_METAKEY2 NANO_FIRSTLINE_METAKEY2
+#define NANO_LASTLINE_KEY NANO_NEXTPAGE_KEY
+#define NANO_LASTLINE_FKEY NANO_NEXTPAGE_FKEY
+#define NANO_LASTLINE_METAKEY NANO_META_SLASH
+#define NANO_LASTLINE_METAKEY2 NANO_META_QUESTION
+#define NANO_LASTFILE_KEY NANO_LASTLINE_KEY
+#define NANO_LASTFILE_FKEY NANO_LASTLINE_FKEY
+#define NANO_LASTFILE_METAKEY NANO_LASTLINE_METAKEY
+#define NANO_LASTFILE_METAKEY2 NANO_LASTLINE_METAKEY2
+#define NANO_REFRESH_KEY NANO_CONTROL_L
+#define NANO_JUSTIFY_KEY NANO_CONTROL_J
+#define NANO_JUSTIFY_FKEY KEY_F(4)
+#define NANO_UNJUSTIFY_KEY NANO_UNCUT_KEY
+#define NANO_UNJUSTIFY_FKEY NANO_UNCUT_FKEY
+#define NANO_PREVLINE_KEY NANO_CONTROL_P
+#define NANO_NEXTLINE_KEY NANO_CONTROL_N
+#define NANO_FORWARD_KEY NANO_CONTROL_F
+#define NANO_BACK_KEY NANO_CONTROL_B
+#define NANO_MARK_KEY NANO_CONTROL_6
+#define NANO_MARK_METAKEY NANO_META_A
+#define NANO_MARK_FKEY KEY_F(15)
+#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_INDENT_KEY NANO_META_RCURLYBRACKET
+#define NANO_UNINDENT_KEY NANO_META_LCURLYBRACKET
+#define NANO_SUSPEND_KEY NANO_CONTROL_Z
+#define NANO_ENTER_KEY NANO_CONTROL_M
+#define NANO_TOFILES_KEY NANO_CONTROL_T
+#define NANO_APPEND_KEY NANO_META_A
+#define NANO_PREPEND_KEY NANO_META_P
+#define NANO_PREVFILE_KEY NANO_META_LCARET
+#define NANO_PREVFILE_METAKEY NANO_META_COMMA
+#define NANO_NEXTFILE_KEY NANO_META_RCARET
+#define NANO_NEXTFILE_METAKEY NANO_META_PERIOD
+#define NANO_BRACKET_KEY NANO_META_RBRACKET
+#define NANO_NEXTWORD_KEY NANO_CONTROL_SPACE
+#define NANO_PREVWORD_KEY NANO_META_SPACE
+#define NANO_WORDCOUNT_KEY NANO_META_D
+#define NANO_SCROLLUP_KEY NANO_META_MINUS
+#define NANO_SCROLLDOWN_KEY NANO_META_PLUS
+#define NANO_SCROLLUP_METAKEY NANO_META_UNDERSCORE
+#define NANO_SCROLLDOWN_METAKEY NANO_META_EQUALS
+#define NANO_CUTTILLEND_METAKEY NANO_META_T
+#define NANO_PARABEGIN_KEY NANO_CONTROL_W
+#define NANO_PARABEGIN_METAKEY NANO_META_LPARENTHESIS
+#define NANO_PARABEGIN_METAKEY2 NANO_META_9
+#define NANO_PARAEND_KEY NANO_CONTROL_O
+#define NANO_PARAEND_METAKEY NANO_META_RPARENTHESIS
+#define NANO_PARAEND_METAKEY2 NANO_META_0
+#define NANO_FULLJUSTIFY_KEY NANO_CONTROL_U
+#define NANO_FULLJUSTIFY_METAKEY NANO_META_J
+#define NANO_VERBATIM_KEY NANO_META_V
+
+/* Toggles do not exist if NANO_TINY is defined. */
+#ifndef NANO_TINY
+
+/* No toggle at all. */
+#define TOGGLE_NO_KEY -2
+
+/* Normal toggles. */
+#define TOGGLE_NOHELP_KEY NANO_META_X
+#define TOGGLE_CONST_KEY NANO_META_C
+#define TOGGLE_MORESPACE_KEY NANO_META_O
+#define TOGGLE_SMOOTH_KEY NANO_META_S
+#define TOGGLE_WHITESPACE_KEY NANO_META_P
+#define TOGGLE_SYNTAX_KEY NANO_META_Y
+#define TOGGLE_SMARTHOME_KEY NANO_META_H
+#define TOGGLE_AUTOINDENT_KEY NANO_META_I
+#define TOGGLE_CUTTOEND_KEY NANO_META_K
+#define TOGGLE_WRAP_KEY NANO_META_L
+#define TOGGLE_TABSTOSPACES_KEY NANO_META_Q
+#define TOGGLE_BACKUP_KEY NANO_META_B
+#define TOGGLE_MULTIBUFFER_KEY NANO_META_F
+#define TOGGLE_MOUSE_KEY NANO_META_M
+#define TOGGLE_NOCONVERT_KEY NANO_META_N
+#define TOGGLE_SUSPEND_KEY NANO_META_Z
+#define TOGGLE_CASE_KEY NANO_META_C
+#define TOGGLE_BACKWARDS_KEY NANO_META_B
+#define TOGGLE_DOS_KEY NANO_META_D
+#define TOGGLE_MAC_KEY NANO_META_M
+
+/* Extra bits for the undo function */
+#define UNDO_DEL_DEL (1<<0)
+#define UNDO_DEL_BACKSPACE (1<<1)
+#define UNDO_SPLIT_MADENEW (1<<2)
+
+/* Since in ISO C you can't pass around function pointers anymore,
+ let's make some integer macros for function names, and then I
+ can go cut my wrists after writing the big switch statement
+ that will necessitate. */
+
+#endif /* !NANO_TINY */
+
+#define CASE_SENS_MSG 1
+#define BACKWARDS_MSG 2
+#define REGEXP_MSG 3
+#define WHEREIS_NEXT_MSG 4
+#define FIRST_FILE_MSG 5
+#define LAST_FILE_MSG 6
+#define GOTO_DIR_MSG 7
+#define TOTAL_REFRESH 8
+#define DO_HELP_VOID 9
+#define DO_SEARCH 10
+#define DO_PAGE_UP 11
+#define DO_PAGE_DOWN 12
+#define DO_UP_VOID 13
+#define DO_LEFT 14
+#define DO_DOWN_VOID 15
+#define DO_RIGHT 16
+#define DO_ENTER 17
+#define DO_EXIT 18
+#define NEW_BUFFER_MSG 19
+#define EXT_CMD_MSG 20
+#define TO_FILES_MSG 21
+#define DOS_FORMAT_MSG 23
+#define MAC_FORMAT_MSG 24
+#define BACKUP_FILE_MSG 25
+#define PREPEND_MSG 26
+#define APPEND_MSG 27
+#define DO_FIRST_LINE 28
+#define DO_LAST_LINE 29
+#define DO_TOGGLE 30
+#define GOTOTEXT_MSG 31
+#define NO_REPLACE_MSG 32
+#define DO_BACKSPACE 33
+#define DO_DELETE 34
+#define DO_TAB 35
+#define DO_VERBATIM_INPUT 36
+#define SWITCH_TO_NEXT_BUFFER_VOID 37
+#define SWITCH_TO_PREV_BUFFER_VOID 38
+#define DO_END 39
+#define DO_HOME 40
+#define NEXT_HISTORY_MSG 41
+#define PREV_HISTORY_MSG 42
+#define DO_REDO 43
+#define DO_UNDO 44
+#define DO_WORDLINECHAR_COUNT 45
+#define DO_FIND_BRACKET 46
+#define DO_PREV_WORD_VOID 47
+#define DO_SUSPEND_VOID 48
+#define CANCEL_MSG 49
+#define DO_WRITEOUT_VOID 50
+#define DO_INSERTFILE_VOID 51
+#define DO_CUT_TEXT_VOID 52
+#define DO_UNCUT_TEXT 53
+#define DO_CURSORPOS_VOID 54
+#define DO_GOTOLINECOLUMN_VOID 55
+#define DO_REPLACE 56
+#define DO_JUSTIFY_VOID 57
+#define DO_PARA_BEGIN_VOID 58
+#define DO_PARA_END_VOID 59
+#define DO_FULL_JUSTIFY 60
+#define DO_MARK 61
+#define DO_RESEARCH 62
+#define DO_COPY_TEXT 63
+#define DO_INDENT_VOID 64
+#define DO_UNINDENT 65
+#define DO_SCROLL_UP 66
+#define DO_SCROLL_DOWN 67
+#define DO_NEXT_WORD_VOID 68
+#define DO_CUT_TILL_END 69
+#define NANO_GOTODIR_MSG 70
+#define NANO_LASTFILE_MSG 71
+#define NANO_FIRSTFILE_MSG 72
+#define INSERT_FILE_MSG 73
+#define NANO_MULTIBUFFER_MSG 74
+#define NANO_EXECUTE_MSG 75
+#define NANO_BACKUP_MSG 76
+#define NANO_PREPEND_MSG 77
+#define NANO_APPEND_MSG 78
+#define NANO_MAC_MSG 79
+#define NANO_DOS_MSG 80
+#define NANO_TOFILES_MSG 81
+#define NANO_NEXT_HISTORY_MSG 82
+#define NANO_PREV_HISTORY_MSG 83
+#define NANO_REGEXP_MSG 84
+#define NANO_REVERSE_MSG 85
+#define NANO_CASE_MSG 86
+#define NANO_SUSPEND_MSG 87
+#define SUSPEND_MSG 88
+#define NANO_REFRESH_MSG 89
+#define REFRESH_MSG 90
+#define NANO_WORDCOUNT_MSG 91
+#define NANO_FULLJUSTIFY_MSG 92
+#define FULLJSTIFY_MSG 93
+#define XOFF_COMPLAINT 94
+#define XON_COMPLAINT 95
+#define NANO_CUT_TILL_END_MSG 96
+#define NANO_BACKSPACE_MSG 97
+#define NANO_DELETE_MSG 98
+#define NANO_ENTER_MSG 99
+#define NANO_TAB_MSG 100
+#define NANO_VERBATIM_MSG 101
+#define NANO_NEXTFILE_MSG 102
+#define NANO_PREVFILE_MSG 103
+#define NANO_SCROLLDOWN_MSG 104
+#define NANO_SCROLLUP_MSG 105
+#define NANO_BRACKET_MSG 106
+#define NANO_PARAEND_MSG 107
+#define END_OF_PAR_MSG 108
+#define NANO_PARABEGIN_MSG 109
+#define BEG_OF_PAR_MSG 110
+#define NANO_END_MSG 111
+#define NANO_HOME_MSG 112
+#define NANO_NEXTLINE_MSG 113
+#define NANO_PREVLINE_MSG 114
+#define NANO_PREVWORD_MSG 115
+#define NANO_NEXTWORD_MSG 116
+#define NANO_BACK_MSG 117
+#define NANO_FORWARD_MSG 118
+#define NANO_REDO_MSG 119
+#define NANO_UNDO_MSG 120
+#define NANO_UNINDENT_MSG 121
+#define NANO_INDENT_MSG 122
+#define NANO_COPY_MSG 123
+#define NANO_WHEREIS_NEXT_MSG 124
+#define NANO_MARK_MSG 125
+#define NANO_REPLACE_MSG 126
+#define REPLACE_MSG 127
+#define NANO_GOTOLINE_MSG 128
+#define NANO_LASTLINE_MSG 129
+#define NANO_FIRSTLINE_MSG 130
+#define NANO_SPELL_MSG 131
+#define DO_SPELL 132
+#define NANO_CURSORPOS_MSG 133
+#define NANO_UNCUT_MSG 134
+#define GET_HELP_MSG 135
+#define NANO_HELP_MSG 136
+#define NANO_CANCEL_MSG 137
+#define NANO_EXIT_MSG 138
+#define EXIT_MSG 139
+#define NANO_EXITBROWSER_MSG 140
+#define NANO_WRITEOUT_MSG 141
+#define NANO_DISABLED_MSG 142
+#define NANO_INSERT_MSG 143
+#define WHEREIS_MSG 144
+#define NANO_WHEREIS_MSG 145
+#define NANO_PREVPAGE_MSG 146
+#define NANO_NEXTPAGE_MSG 147
+#define NANO_CUT_MSG 148
+#define DO_CUT_TEXT 149
+#define DO_NEXT_WORD 150
+#define DO_PREV_WORD 151
+
+
+
+
+#define VIEW TRUE
+#define NOVIEW FALSE
+
+/* The maximum number of entries displayed in the main shortcut list. */
+#define MAIN_VISIBLE 12
+
+/* The minimum editor window columns and rows required for nano to work
+ * correctly. */
+#define MIN_EDITOR_COLS 4
+#define MIN_EDITOR_ROWS 1
+
+/* The default number of characters from the end of the line where
+ * wrapping occurs. */
+#define CHARS_FROM_EOL 8
+
+/* The default width of a tab in spaces. */
+#define WIDTH_OF_TAB 8
+
+/* The maximum number of search/replace history strings saved, not
+ * counting the blank lines at their ends. */
+#define MAX_SEARCH_HISTORY 100
+
+/* The maximum number of bytes buffered at one time. */
+#define MAX_BUF_SIZE 128
+
+#endif /* !NANO_H */
diff --git a/src/prompt.c b/src/prompt.c
new file mode 100644
index 0000000..afb36d6
--- /dev/null
+++ b/src/prompt.c
@@ -0,0 +1,1363 @@
+/* $Id: prompt.c 4475 2010-01-17 05:30:22Z astyanax $ */
+/**************************************************************************
+ * prompt.c *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+
+static char *prompt = NULL;
+ /* The prompt string used for statusbar questions. */
+static size_t statusbar_x = (size_t)-1;
+ /* The cursor position in answer. */
+static size_t statusbar_pww = (size_t)-1;
+ /* The place we want in answer. */
+static size_t old_statusbar_x = (size_t)-1;
+ /* The old cursor position in answer, if any. */
+static size_t old_pww = (size_t)-1;
+ /* The old place we want in answer, if any. */
+static bool reset_statusbar_x = FALSE;
+ /* Should we reset the cursor position at the statusbar
+ * prompt? */
+
+/* Read in a character, interpret it as a shortcut or toggle if
+ * necessary, and return it. Set meta_key to TRUE if the character is a
+ * meta sequence, set func_key to TRUE if the character is a function
+ * key, set have_shortcut to TRUE if the character is a shortcut
+ * key, set ran_func to TRUE if we ran a function associated with a
+ * shortcut key, and set finished to TRUE if we're done after running
+ * or trying to run a function associated with a shortcut key. If
+ * allow_funcs is FALSE, don't actually run any functions associated
+ * with shortcut keys. refresh_func is the function we will call to
+ * refresh the edit window. */
+int do_statusbar_input(bool *meta_key, bool *func_key, bool *have_shortcut,
+ bool *ran_func, bool *finished, bool allow_funcs, void
+ (*refresh_func)(void))
+{
+ int input;
+ /* The character we read in. */
+ static int *kbinput = NULL;
+ /* The input buffer. */
+ static size_t kbinput_len = 0;
+ /* The length of the input buffer. */
+ const sc *s;
+ const subnfunc *f;
+
+ *have_shortcut = FALSE;
+ *ran_func = FALSE;
+ *finished = FALSE;
+
+ /* Read in a character. */
+ input = get_kbinput(bottomwin, meta_key, func_key);
+
+#ifndef DISABLE_MOUSE
+ if (allow_funcs) {
+ /* If we got a mouse click and it was on a shortcut, read in the
+ * shortcut character. */
+ if (*func_key && input == KEY_MOUSE) {
+ if (do_statusbar_mouse() == 1)
+ input = get_kbinput(bottomwin, meta_key, func_key);
+ else {
+ *meta_key = FALSE;
+ *func_key = FALSE;
+ input = ERR;
+ }
+ }
+ }
+#endif
+
+ /* Check for a shortcut in the current list. */
+ s = get_shortcut(currmenu, &input, meta_key, func_key);
+
+ /* If we got a shortcut from the current list, or a "universal"
+ * statusbar prompt shortcut, set have_shortcut to TRUE. */
+ *have_shortcut = (s != NULL);
+
+ /* If we got a non-high-bit control key, a meta key sequence, or a
+ * function key, and it's not a shortcut or toggle, throw it out. */
+ if (!*have_shortcut) {
+ if (is_ascii_cntrl_char(input) || *meta_key || *func_key) {
+ beep();
+ *meta_key = FALSE;
+ *func_key = FALSE;
+ input = ERR;
+ }
+ }
+
+ if (allow_funcs) {
+ /* If we got a character, and it isn't a shortcut or toggle,
+ * it's a normal text character. Display the warning if we're
+ * in view mode, or add the character to the input buffer if
+ * we're not. */
+ if (input != ERR && !*have_shortcut) {
+ /* If we're using restricted mode, the filename isn't blank,
+ * and we're at the "Write File" prompt, disable text
+ * input. */
+ if (!ISSET(RESTRICTED) || openfile->filename[0] == '\0' ||
+ currmenu != MWRITEFILE) {
+ kbinput_len++;
+ kbinput = (int *)nrealloc(kbinput, kbinput_len *
+ sizeof(int));
+ kbinput[kbinput_len - 1] = input;
+ }
+ }
+
+ /* If we got a shortcut, or if there aren't any other characters
+ * waiting after the one we read in, we need to display all the
+ * characters in the input buffer if it isn't empty. */
+ if (*have_shortcut || get_key_buffer_len() == 0) {
+ if (kbinput != NULL) {
+ /* Display all the characters in the input buffer at
+ * once, filtering out control characters. */
+ char *output = charalloc(kbinput_len + 1);
+ size_t i;
+ bool got_enter;
+ /* Whether we got the Enter key. */
+
+ for (i = 0; i < kbinput_len; i++)
+ output[i] = (char)kbinput[i];
+ output[i] = '\0';
+
+ do_statusbar_output(output, kbinput_len, &got_enter,
+ FALSE);
+
+ free(output);
+
+ /* Empty the input buffer. */
+ kbinput_len = 0;
+ free(kbinput);
+ kbinput = NULL;
+ }
+ }
+
+ if (*have_shortcut) {
+ if (s->scfunc == DO_TAB || s->scfunc == DO_ENTER)
+ ;
+ else if (s->scfunc == TOTAL_REFRESH)
+ total_statusbar_refresh(refresh_func);
+ else if (s->scfunc == DO_CUT_TEXT) {
+ /* If we're using restricted mode, the filename
+ * isn't blank, and we're at the "Write File"
+ * prompt, disable Cut. */
+ if (!ISSET(RESTRICTED) || openfile->filename[0] ==
+ '\0' || currmenu != MWRITEFILE)
+ do_statusbar_cut_text();
+ } else if (s->scfunc == DO_RIGHT)
+ do_statusbar_right();
+ else if (s->scfunc == DO_LEFT)
+ do_statusbar_left();
+
+#ifndef NANO_TINY
+ else if (s->scfunc == DO_NEXT_WORD)
+ do_statusbar_next_word(FALSE);
+ else if (s->scfunc == DO_PREV_WORD)
+ do_statusbar_prev_word(FALSE);
+#endif
+ else if (s->scfunc == DO_HOME)
+ do_statusbar_home();
+ else if (s->scfunc == DO_END)
+ do_statusbar_end();
+
+#ifndef NANO_TINY
+ else if (s->scfunc == DO_FIND_BRACKET)
+ do_statusbar_find_bracket();
+#endif
+ else if (s->scfunc == DO_VERBATIM_INPUT) {
+ /* If we're using restricted mode, the filename
+ * isn't blank, and we're at the "Write File"
+ * prompt, disable verbatim input. */
+ if (!ISSET(RESTRICTED) ||
+ openfile->filename[0] == '\0' ||
+ currmenu != MWRITEFILE) {
+ bool got_enter;
+ /* Whether we got the Enter key. */
+
+ do_statusbar_verbatim_input(&got_enter);
+
+ /* If we got the Enter key, remove it from
+ * the input buffer, set input to the key
+ * value for Enter, and set finished to TRUE
+ * to indicate that we're done. */
+ if (got_enter) {
+ get_input(NULL, 1);
+ input = sc_seq_or(DO_ENTER, 0);
+ *finished = TRUE;
+ }
+ }
+ } else if (s->scfunc == DO_DELETE) {
+ /* If we're using restricted mode, the filename
+ * isn't blank, and we're at the "Write File"
+ * prompt, disable Delete. */
+ if (!ISSET(RESTRICTED) || openfile->filename[0] ==
+ '\0' || currmenu != MWRITEFILE)
+ do_statusbar_delete();
+ } else if (s->scfunc == DO_BACKSPACE) {
+ /* If we're using restricted mode, the filename
+ * isn't blank, and we're at the "Write File"
+ * prompt, disable Backspace. */
+ if (!ISSET(RESTRICTED) || openfile->filename[0] ==
+ '\0' || currmenu != MWRITEFILE)
+ do_statusbar_backspace();
+ } else {
+ /* Handle the normal statusbar prompt shortcuts, setting
+ * ran_func to TRUE if we try to run their associated
+ * functions and setting finished to TRUE to indicate
+ * that we're done after running or trying to run their
+ * associated functions. */
+
+ f = sctofunc((sc *) s);
+ if (s->scfunc != 0 && s->execute == TRUE) {
+ *ran_func = TRUE;
+ if (f && (!ISSET(VIEW_MODE) || (f->viewok)))
+ iso_me_harder_funcmap(f->scfunc);
+ }
+ *finished = TRUE;
+ }
+ }
+ }
+
+ return input;
+}
+
+#ifndef DISABLE_MOUSE
+/* Handle a mouse click on the statusbar prompt or the shortcut list. */
+int do_statusbar_mouse(void)
+{
+ int mouse_x, mouse_y;
+ int retval = get_mouseinput(&mouse_x, &mouse_y, TRUE);
+
+ /* We can click on the statusbar window text to move the cursor. */
+ if (retval == 0 && wmouse_trafo(bottomwin, &mouse_y, &mouse_x,
+ FALSE)) {
+ size_t start_col;
+
+ assert(prompt != NULL);
+
+ start_col = strlenpt(prompt) + 2;
+
+ /* Move to where the click occurred. */
+ if (mouse_x >= start_col && mouse_y == 0) {
+ size_t pww_save = statusbar_pww;
+
+ statusbar_x = actual_x(answer,
+ get_statusbar_page_start(start_col, start_col +
+ statusbar_xplustabs()) + mouse_x - start_col);
+ statusbar_pww = statusbar_xplustabs();
+
+ if (need_statusbar_horizontal_update(pww_save))
+ update_statusbar_line(answer, statusbar_x);
+ }
+ }
+
+ return retval;
+}
+#endif
+
+/* The user typed output_len multibyte characters. Add them to the
+ * statusbar prompt, setting got_enter to TRUE if we get a newline, and
+ * filtering out all ASCII control characters if allow_cntrls is
+ * TRUE. */
+void do_statusbar_output(char *output, size_t output_len, bool
+ *got_enter, bool allow_cntrls)
+{
+ size_t answer_len, i = 0;
+ char *char_buf = charalloc(mb_cur_max());
+ int char_buf_len;
+
+ assert(answer != NULL);
+
+ answer_len = strlen(answer);
+ *got_enter = FALSE;
+
+ while (i < output_len) {
+ /* If allow_cntrls is TRUE, convert nulls and newlines
+ * properly. */
+ if (allow_cntrls) {
+ /* Null to newline, if needed. */
+ if (output[i] == '\0')
+ output[i] = '\n';
+ /* Newline to Enter, if needed. */
+ else if (output[i] == '\n') {
+ /* Set got_enter to TRUE to indicate that we got the
+ * Enter key, put back the rest of the characters in
+ * output so that they can be parsed and output again,
+ * and get out. */
+ *got_enter = TRUE;
+ unparse_kbinput(output + i, output_len - i);
+ return;
+ }
+ }
+
+ /* Interpret the next multibyte character. */
+ char_buf_len = parse_mbchar(output + i, char_buf, NULL);
+
+ i += char_buf_len;
+
+ /* If allow_cntrls is FALSE, filter out an ASCII control
+ * character. */
+ if (!allow_cntrls && is_ascii_cntrl_char(*(output + i -
+ char_buf_len)))
+ continue;
+
+ /* More dangerousness fun =) */
+ answer = charealloc(answer, answer_len + (char_buf_len * 2));
+
+ assert(statusbar_x <= answer_len);
+
+ charmove(answer + statusbar_x + char_buf_len,
+ answer + statusbar_x, answer_len - statusbar_x +
+ char_buf_len);
+ strncpy(answer + statusbar_x, char_buf, char_buf_len);
+ answer_len += char_buf_len;
+
+ statusbar_x += char_buf_len;
+ }
+
+ free(char_buf);
+
+ statusbar_pww = statusbar_xplustabs();
+
+ update_statusbar_line(answer, statusbar_x);
+}
+
+/* Move to the beginning of the prompt text. If the SMART_HOME flag is
+ * set, move to the first non-whitespace character of the prompt text if
+ * we're not already there, or to the beginning of the prompt text if we
+ * are. */
+void do_statusbar_home(void)
+{
+ size_t pww_save = statusbar_pww;
+
+#ifndef NANO_TINY
+ if (ISSET(SMART_HOME)) {
+ size_t statusbar_x_save = statusbar_x;
+
+ statusbar_x = indent_length(answer);
+
+ if (statusbar_x == statusbar_x_save ||
+ statusbar_x == strlen(answer))
+ statusbar_x = 0;
+
+ statusbar_pww = statusbar_xplustabs();
+ } else {
+#endif
+ statusbar_x = 0;
+ statusbar_pww = statusbar_xplustabs();
+#ifndef NANO_TINY
+ }
+#endif
+
+ if (need_statusbar_horizontal_update(pww_save))
+ update_statusbar_line(answer, statusbar_x);
+}
+
+/* Move to the end of the prompt text. */
+void do_statusbar_end(void)
+{
+ size_t pww_save = statusbar_pww;
+
+ statusbar_x = strlen(answer);
+ statusbar_pww = statusbar_xplustabs();
+
+ if (need_statusbar_horizontal_update(pww_save))
+ update_statusbar_line(answer, statusbar_x);
+}
+
+/* Move left one character. */
+void do_statusbar_left(void)
+{
+ if (statusbar_x > 0) {
+ size_t pww_save = statusbar_pww;
+
+ statusbar_x = move_mbleft(answer, statusbar_x);
+ statusbar_pww = statusbar_xplustabs();
+
+ if (need_statusbar_horizontal_update(pww_save))
+ update_statusbar_line(answer, statusbar_x);
+ }
+}
+
+/* Move right one character. */
+void do_statusbar_right(void)
+{
+ if (statusbar_x < strlen(answer)) {
+ size_t pww_save = statusbar_pww;
+
+ statusbar_x = move_mbright(answer, statusbar_x);
+ statusbar_pww = statusbar_xplustabs();
+
+ if (need_statusbar_horizontal_update(pww_save))
+ update_statusbar_line(answer, statusbar_x);
+ }
+}
+
+/* Backspace over one character. */
+void do_statusbar_backspace(void)
+{
+ if (statusbar_x > 0) {
+ do_statusbar_left();
+ do_statusbar_delete();
+ }
+}
+
+/* Delete one character. */
+void do_statusbar_delete(void)
+{
+ statusbar_pww = statusbar_xplustabs();
+
+ if (answer[statusbar_x] != '\0') {
+ int char_buf_len = parse_mbchar(answer + statusbar_x, NULL,
+ NULL);
+ size_t line_len = strlen(answer + statusbar_x);
+
+ assert(statusbar_x < strlen(answer));
+
+ charmove(answer + statusbar_x, answer + statusbar_x +
+ char_buf_len, strlen(answer) - statusbar_x -
+ char_buf_len + 1);
+
+ null_at(&answer, statusbar_x + line_len - char_buf_len);
+
+ update_statusbar_line(answer, statusbar_x);
+ }
+}
+
+/* Move text from the prompt into oblivion. */
+void do_statusbar_cut_text(void)
+{
+ assert(answer != NULL);
+
+#ifndef NANO_TINY
+ if (ISSET(CUT_TO_END))
+ null_at(&answer, statusbar_x);
+ else {
+#endif
+ null_at(&answer, 0);
+ statusbar_x = 0;
+ statusbar_pww = statusbar_xplustabs();
+#ifndef NANO_TINY
+ }
+#endif
+
+ update_statusbar_line(answer, statusbar_x);
+}
+
+#ifndef NANO_TINY
+/* Move to the next word in the prompt text. If allow_punct is TRUE,
+ * treat punctuation as part of a word. Return TRUE if we started on a
+ * word, and FALSE otherwise. */
+bool do_statusbar_next_word(bool allow_punct)
+{
+ size_t pww_save = statusbar_pww;
+ char *char_mb;
+ int char_mb_len;
+ bool end_line = FALSE, started_on_word = FALSE;
+
+ assert(answer != NULL);
+
+ char_mb = charalloc(mb_cur_max());
+
+ /* Move forward until we find the character after the last letter of
+ * the current word. */
+ while (!end_line) {
+ char_mb_len = parse_mbchar(answer + statusbar_x, char_mb, NULL);
+
+ /* If we've found it, stop moving forward through the current
+ * line. */
+ if (!is_word_mbchar(char_mb, allow_punct))
+ break;
+
+ /* If we haven't found it, then we've started on a word, so set
+ * started_on_word to TRUE. */
+ started_on_word = TRUE;
+
+ if (answer[statusbar_x] == '\0')
+ end_line = TRUE;
+ else
+ statusbar_x += char_mb_len;
+ }
+
+ /* Move forward until we find the first letter of the next word. */
+ if (answer[statusbar_x] == '\0')
+ end_line = TRUE;
+ else
+ statusbar_x += char_mb_len;
+
+ while (!end_line) {
+ char_mb_len = parse_mbchar(answer + statusbar_x, char_mb, NULL);
+
+ /* If we've found it, stop moving forward through the current
+ * line. */
+ if (is_word_mbchar(char_mb, allow_punct))
+ break;
+
+ if (answer[statusbar_x] == '\0')
+ end_line = TRUE;
+ else
+ statusbar_x += char_mb_len;
+ }
+
+ free(char_mb);
+
+ statusbar_pww = statusbar_xplustabs();
+
+ if (need_statusbar_horizontal_update(pww_save))
+ update_statusbar_line(answer, statusbar_x);
+
+ /* Return whether we started on a word. */
+ return started_on_word;
+}
+
+/* Move to the previous word in the prompt text. If allow_punct is
+ * TRUE, treat punctuation as part of a word. Return TRUE if we started
+ * on a word, and FALSE otherwise. */
+bool do_statusbar_prev_word(bool allow_punct)
+{
+ size_t pww_save = statusbar_pww;
+ char *char_mb;
+ int char_mb_len;
+ bool begin_line = FALSE, started_on_word = FALSE;
+
+ assert(answer != NULL);
+
+ char_mb = charalloc(mb_cur_max());
+
+ /* Move backward until we find the character before the first letter
+ * of the current word. */
+ while (!begin_line) {
+ char_mb_len = parse_mbchar(answer + statusbar_x, char_mb, NULL);
+
+ /* If we've found it, stop moving backward through the current
+ * line. */
+ if (!is_word_mbchar(char_mb, allow_punct))
+ break;
+
+ /* If we haven't found it, then we've started on a word, so set
+ * started_on_word to TRUE. */
+ started_on_word = TRUE;
+
+ if (statusbar_x == 0)
+ begin_line = TRUE;
+ else
+ statusbar_x = move_mbleft(answer, statusbar_x);
+ }
+
+ /* Move backward until we find the last letter of the previous
+ * word. */
+ if (statusbar_x == 0)
+ begin_line = TRUE;
+ else
+ statusbar_x = move_mbleft(answer, statusbar_x);
+
+ while (!begin_line) {
+ char_mb_len = parse_mbchar(answer + statusbar_x, char_mb, NULL);
+
+ /* If we've found it, stop moving backward through the current
+ * line. */
+ if (is_word_mbchar(char_mb, allow_punct))
+ break;
+
+ if (statusbar_x == 0)
+ begin_line = TRUE;
+ else
+ statusbar_x = move_mbleft(answer, statusbar_x);
+ }
+
+ /* If we've found it, move backward until we find the character
+ * before the first letter of the previous word. */
+ if (!begin_line) {
+ if (statusbar_x == 0)
+ begin_line = TRUE;
+ else
+ statusbar_x = move_mbleft(answer, statusbar_x);
+
+ while (!begin_line) {
+ char_mb_len = parse_mbchar(answer + statusbar_x, char_mb,
+ NULL);
+
+ /* If we've found it, stop moving backward through the
+ * current line. */
+ if (!is_word_mbchar(char_mb, allow_punct))
+ break;
+
+ if (statusbar_x == 0)
+ begin_line = TRUE;
+ else
+ statusbar_x = move_mbleft(answer, statusbar_x);
+ }
+
+ /* If we've found it, move forward to the first letter of the
+ * previous word. */
+ if (!begin_line)
+ statusbar_x += char_mb_len;
+ }
+
+ free(char_mb);
+
+ statusbar_pww = statusbar_xplustabs();
+
+ if (need_statusbar_horizontal_update(pww_save))
+ update_statusbar_line(answer, statusbar_x);
+
+ /* Return whether we started on a word. */
+ return started_on_word;
+}
+#endif /* !NANO_TINY */
+
+/* Get verbatim input. Set got_enter to TRUE if we got the Enter key as
+ * part of the verbatim input. */
+void do_statusbar_verbatim_input(bool *got_enter)
+{
+ int *kbinput;
+ size_t kbinput_len, i;
+ char *output;
+
+ *got_enter = FALSE;
+
+ /* Read in all the verbatim characters. */
+ kbinput = get_verbatim_kbinput(bottomwin, &kbinput_len);
+
+ /* Display all the verbatim characters at once, not filtering out
+ * control characters. */
+ output = charalloc(kbinput_len + 1);
+
+ for (i = 0; i < kbinput_len; i++)
+ output[i] = (char)kbinput[i];
+ output[i] = '\0';
+
+ do_statusbar_output(output, kbinput_len, got_enter, TRUE);
+
+ free(output);
+}
+
+#ifndef NANO_TINY
+/* Search for a match to one of the two characters in bracket_set. If
+ * reverse is TRUE, search backwards for the leftmost bracket.
+ * Otherwise, search forwards for the rightmost bracket. Return TRUE if
+ * we found a match, and FALSE otherwise. */
+bool find_statusbar_bracket_match(bool reverse, const char
+ *bracket_set)
+{
+ const char *rev_start = NULL, *found = NULL;
+
+ assert(mbstrlen(bracket_set) == 2);
+
+ /* rev_start might end up 1 character before the start or after the
+ * end of the line. This won't be a problem because we'll skip over
+ * it below in that case. */
+ rev_start = reverse ? answer + (statusbar_x - 1) : answer +
+ (statusbar_x + 1);
+
+ while (TRUE) {
+ /* Look for either of the two characters in bracket_set.
+ * rev_start can be 1 character before the start or after the
+ * end of the line. In either case, just act as though no match
+ * is found. */
+ found = ((rev_start > answer && *(rev_start - 1) == '\0') ||
+ rev_start < answer) ? NULL : (reverse ?
+ mbrevstrpbrk(answer, bracket_set, rev_start) :
+ mbstrpbrk(rev_start, bracket_set));
+
+ /* We've found a potential match. */
+ if (found != NULL)
+ break;
+
+ /* We've reached the start or end of the statusbar text, so
+ * get out. */
+ return FALSE;
+ }
+
+ /* We've definitely found something. */
+ statusbar_x = found - answer;
+ statusbar_pww = statusbar_xplustabs();
+
+ return TRUE;
+}
+
+/* Search for a match to the bracket at the current cursor position, if
+ * there is one. */
+void do_statusbar_find_bracket(void)
+{
+ size_t statusbar_x_save, pww_save;
+ const char *ch;
+ /* The location in matchbrackets of the bracket at the current
+ * cursor position. */
+ int ch_len;
+ /* The length of ch in bytes. */
+ const char *wanted_ch;
+ /* The location in matchbrackets of the bracket complementing
+ * the bracket at the current cursor position. */
+ int wanted_ch_len;
+ /* The length of wanted_ch in bytes. */
+ char *bracket_set;
+ /* The pair of characters in ch and wanted_ch. */
+ size_t i;
+ /* Generic loop variable. */
+ size_t matchhalf;
+ /* The number of single-byte characters in one half of
+ * matchbrackets. */
+ size_t mbmatchhalf;
+ /* The number of multibyte characters in one half of
+ * matchbrackets. */
+ size_t count = 1;
+ /* The initial bracket count. */
+ bool reverse;
+ /* The direction we search. */
+ char *found_ch;
+ /* The character we find. */
+
+ assert(mbstrlen(matchbrackets) % 2 == 0);
+
+ ch = answer + statusbar_x;
+
+ if (ch == '\0' || (ch = mbstrchr(matchbrackets, ch)) == NULL)
+ return;
+
+ /* Save where we are. */
+ statusbar_x_save = statusbar_x;
+ pww_save = statusbar_pww;
+
+ /* If we're on an opening bracket, which must be in the first half
+ * of matchbrackets, we want to search forwards for a closing
+ * bracket. If we're on a closing bracket, which must be in the
+ * second half of matchbrackets, we want to search backwards for an
+ * opening bracket. */
+ matchhalf = 0;
+ mbmatchhalf = mbstrlen(matchbrackets) / 2;
+
+ for (i = 0; i < mbmatchhalf; i++)
+ matchhalf += parse_mbchar(matchbrackets + matchhalf, NULL,
+ NULL);
+
+ reverse = ((ch - matchbrackets) >= matchhalf);
+
+ /* If we're on an opening bracket, set wanted_ch to the character
+ * that's matchhalf characters after ch. If we're on a closing
+ * bracket, set wanted_ch to the character that's matchhalf
+ * characters before ch. */
+ wanted_ch = ch;
+
+ while (mbmatchhalf > 0) {
+ if (reverse)
+ wanted_ch = matchbrackets + move_mbleft(matchbrackets,
+ wanted_ch - matchbrackets);
+ else
+ wanted_ch += move_mbright(wanted_ch, 0);
+
+ mbmatchhalf--;
+ }
+
+ ch_len = parse_mbchar(ch, NULL, NULL);
+ wanted_ch_len = parse_mbchar(wanted_ch, NULL, NULL);
+
+ /* Fill bracket_set in with the values of ch and wanted_ch. */
+ bracket_set = charalloc((mb_cur_max() * 2) + 1);
+ strncpy(bracket_set, ch, ch_len);
+ strncpy(bracket_set + ch_len, wanted_ch, wanted_ch_len);
+ null_at(&bracket_set, ch_len + wanted_ch_len);
+
+ found_ch = charalloc(mb_cur_max() + 1);
+
+ while (TRUE) {
+ if (find_statusbar_bracket_match(reverse, bracket_set)) {
+ /* If we found an identical bracket, increment count. If we
+ * found a complementary bracket, decrement it. */
+ parse_mbchar(answer + statusbar_x, found_ch, NULL);
+ count += (strncmp(found_ch, ch, ch_len) == 0) ? 1 : -1;
+
+ /* If count is zero, we've found a matching bracket. Update
+ * the statusbar prompt and get out. */
+ if (count == 0) {
+ if (need_statusbar_horizontal_update(pww_save))
+ update_statusbar_line(answer, statusbar_x);
+ break;
+ }
+ } else {
+ /* We didn't find either an opening or closing bracket.
+ * Restore where we were, and get out. */
+ statusbar_x = statusbar_x_save;
+ statusbar_pww = pww_save;
+ break;
+ }
+ }
+
+ /* Clean up. */
+ free(bracket_set);
+ free(found_ch);
+}
+#endif /* !NANO_TINY */
+
+/* Return the placewewant associated with statusbar_x, i.e. the
+ * zero-based column position of the cursor. The value will be no
+ * smaller than statusbar_x. */
+size_t statusbar_xplustabs(void)
+{
+ return strnlenpt(answer, statusbar_x);
+}
+
+/* nano scrolls horizontally within a line in chunks. This function
+ * returns the column number of the first character displayed in the
+ * statusbar prompt when the cursor is at the given column with the
+ * prompt ending at start_col. Note that (0 <= column -
+ * get_statusbar_page_start(column) < COLS). */
+size_t get_statusbar_page_start(size_t start_col, size_t column)
+{
+ if (column == start_col || column < COLS - 1)
+ return 0;
+ else
+ return column - start_col - (column - start_col) % (COLS -
+ start_col - 1);
+}
+
+/* Put the cursor in the statusbar prompt at statusbar_x. */
+void reset_statusbar_cursor(void)
+{
+ size_t start_col = strlenpt(prompt) + 2;
+ size_t xpt = statusbar_xplustabs();
+
+ wmove(bottomwin, 0, start_col + xpt -
+ get_statusbar_page_start(start_col, start_col + xpt));
+}
+
+/* Repaint the statusbar when getting a character in
+ * get_prompt_string(). The statusbar text line will be displayed
+ * starting with curranswer[index]. */
+void update_statusbar_line(const char *curranswer, size_t index)
+{
+ size_t start_col, page_start;
+ char *expanded;
+
+ assert(prompt != NULL && index <= strlen(curranswer));
+
+ start_col = strlenpt(prompt) + 2;
+ index = strnlenpt(curranswer, index);
+ page_start = get_statusbar_page_start(start_col, start_col + index);
+
+ wattron(bottomwin, reverse_attr);
+
+ blank_statusbar();
+
+ mvwaddnstr(bottomwin, 0, 0, prompt, actual_x(prompt, COLS - 2));
+ waddch(bottomwin, ':');
+ waddch(bottomwin, (page_start == 0) ? ' ' : '$');
+
+ expanded = display_string(curranswer, page_start, COLS - start_col -
+ 1, FALSE);
+ waddstr(bottomwin, expanded);
+ free(expanded);
+
+ wattroff(bottomwin, reverse_attr);
+ statusbar_pww = statusbar_xplustabs();
+ reset_statusbar_cursor();
+ wnoutrefresh(bottomwin);
+}
+
+/* Return TRUE if we need an update after moving horizontally, and FALSE
+ * otherwise. We need one if pww_save and statusbar_pww are on
+ * different pages. */
+bool need_statusbar_horizontal_update(size_t pww_save)
+{
+ size_t start_col = strlenpt(prompt) + 2;
+
+ return get_statusbar_page_start(start_col, start_col + pww_save) !=
+ get_statusbar_page_start(start_col, start_col + statusbar_pww);
+}
+
+/* Unconditionally redraw the entire screen, and then refresh it using
+ * refresh_func(). */
+void total_statusbar_refresh(void (*refresh_func)(void))
+{
+ total_redraw();
+ refresh_func();
+}
+
+/* Get a string of input at the statusbar prompt. This should only be
+ * called from do_prompt(). */
+const sc *get_prompt_string(int *actual, bool allow_tabs,
+#ifndef DISABLE_TABCOMP
+ bool allow_files,
+#endif
+ const char *curranswer,
+ bool *meta_key, bool *func_key,
+#ifndef NANO_TINY
+ filestruct **history_list,
+#endif
+ void (*refresh_func)(void), int menu
+#ifndef DISABLE_TABCOMP
+ , bool *list
+#endif
+ )
+{
+ int kbinput = ERR;
+ bool have_shortcut, ran_func, finished;
+ size_t curranswer_len;
+ const sc *s;
+#ifndef DISABLE_TABCOMP
+ bool tabbed = FALSE;
+ /* Whether we've pressed Tab. */
+#endif
+#ifndef NANO_TINY
+ char *history = NULL;
+ /* The current history string. */
+ char *magichistory = NULL;
+ /* The temporary string typed at the bottom of the history, if
+ * any. */
+#ifndef DISABLE_TABCOMP
+ int last_kbinput = ERR;
+ /* The key we pressed before the current key. */
+ size_t complete_len = 0;
+ /* The length of the original string that we're trying to
+ * tab complete, if any. */
+#endif
+#endif /* !NANO_TINY */
+
+ answer = mallocstrcpy(answer, curranswer);
+ curranswer_len = strlen(answer);
+
+ /* If reset_statusbar_x is TRUE, restore statusbar_x and
+ * statusbar_pww to what they were before this prompt. Then, if
+ * statusbar_x is uninitialized or past the end of curranswer, put
+ * statusbar_x at the end of the string and update statusbar_pww
+ * based on it. We do these things so that the cursor position
+ * stays at the right place if a prompt-changing toggle is pressed,
+ * or if this prompt was started from another prompt and we cancel
+ * out of it. */
+ if (reset_statusbar_x) {
+ statusbar_x = old_statusbar_x;
+ statusbar_pww = old_pww;
+ }
+
+ if (statusbar_x == (size_t)-1 || statusbar_x > curranswer_len) {
+ statusbar_x = curranswer_len;
+ statusbar_pww = statusbar_xplustabs();
+ }
+
+ currmenu = menu;
+
+#ifdef DEBUG
+fprintf(stderr, "get_prompt_string: answer = \"%s\", statusbar_x = %lu\n", answer, (unsigned long) statusbar_x);
+#endif
+
+ update_statusbar_line(answer, statusbar_x);
+
+ /* Refresh the edit window and the statusbar before getting
+ * input. */
+ wnoutrefresh(edit);
+ wnoutrefresh(bottomwin);
+
+ /* If we're using restricted mode, we aren't allowed to change the
+ * name of the current file once it has one, because that would
+ * allow writing to files not specified on the command line. In
+ * this case, disable all keys that would change the text if the
+ * filename isn't blank and we're at the "Write File" prompt. */
+ while (1) {
+ kbinput = do_statusbar_input(meta_key, func_key, &have_shortcut,
+ &ran_func, &finished, TRUE, refresh_func);
+ assert(statusbar_x <= strlen(answer));
+
+ s = get_shortcut(currmenu, &kbinput, meta_key, func_key);
+
+ if (s)
+ if (s->scfunc == CANCEL_MSG || s->scfunc == DO_ENTER)
+ break;
+
+#ifndef DISABLE_TABCOMP
+ if (s && s->scfunc != DO_TAB)
+ tabbed = FALSE;
+#endif
+
+#ifndef DISABLE_TABCOMP
+#ifndef NANO_TINY
+ if (s && s->scfunc == DO_TAB) {
+ if (history_list != NULL) {
+ if (last_kbinput != sc_seq_or(DO_TAB, NANO_CONTROL_I))
+ complete_len = strlen(answer);
+
+ if (complete_len > 0) {
+ answer = mallocstrcpy(answer,
+ get_history_completion(history_list,
+ answer, complete_len));
+ statusbar_x = strlen(answer);
+ }
+ } else
+#endif /* !NANO_TINY */
+ if (allow_tabs)
+ answer = input_tab(answer, allow_files,
+ &statusbar_x, &tabbed, refresh_func, list);
+
+ update_statusbar_line(answer, statusbar_x);
+ } else
+#endif /* !DISABLE_TABCOMP */
+#ifndef NANO_TINY
+ if (s && s->scfunc == PREV_HISTORY_MSG) {
+ if (history_list != NULL) {
+ /* If we're scrolling up at the bottom of the
+ * history list and answer isn't blank, save answer
+ * in magichistory. */
+ if ((*history_list)->next == NULL &&
+ answer[0] != '\0')
+ magichistory = mallocstrcpy(magichistory,
+ answer);
+
+ /* Get the older search from the history list and
+ * save it in answer. If there is no older search,
+ * don't do anything. */
+ if ((history =
+ get_history_older(history_list)) != NULL) {
+ answer = mallocstrcpy(answer, history);
+ statusbar_x = strlen(answer);
+ }
+
+ update_statusbar_line(answer, statusbar_x);
+
+ /* This key has a shortcut list entry when it's used
+ * to move to an older search, which means that
+ * finished has been set to TRUE. Set it back to
+ * FALSE here, so that we aren't kicked out of the
+ * statusbar prompt. */
+ finished = FALSE;
+ }
+ } else if (s && s->scfunc == NEXT_HISTORY_MSG) {
+ if (history_list != NULL) {
+ /* Get the newer search from the history list and
+ * save it in answer. If there is no newer search,
+ * don't do anything. */
+ if ((history =
+ get_history_newer(history_list)) != NULL) {
+ answer = mallocstrcpy(answer, history);
+ statusbar_x = strlen(answer);
+ }
+
+ /* If, after scrolling down, we're at the bottom of
+ * the history list, answer is blank, and
+ * magichistory is set, save magichistory in
+ * answer. */
+ if ((*history_list)->next == NULL &&
+ *answer == '\0' && magichistory != NULL) {
+ answer = mallocstrcpy(answer, magichistory);
+ statusbar_x = strlen(answer);
+ }
+
+ update_statusbar_line(answer, statusbar_x);
+
+ /* This key has a shortcut list entry when it's used
+ * to move to a newer search, which means that
+ * finished has been set to TRUE. Set it back to
+ * FALSE here, so that we aren't kicked out of the
+ * statusbar prompt. */
+ finished = FALSE;
+ }
+ } else
+#endif /* !NANO_TINY */
+ if (s && s->scfunc == DO_HELP_VOID) {
+ update_statusbar_line(answer, statusbar_x);
+
+ /* This key has a shortcut list entry when it's used to
+ * go to the help browser or display a message
+ * indicating that help is disabled, which means that
+ * finished has been set to TRUE. Set it back to FALSE
+ * here, so that we aren't kicked out of the statusbar
+ * prompt. */
+ finished = FALSE;
+ }
+
+ /* If we have a shortcut with an associated function, break out
+ * if we're finished after running or trying to run the
+ * function. */
+ if (finished)
+ break;
+
+#if !defined(NANO_TINY) && !defined(DISABLE_TABCOMP)
+ last_kbinput = kbinput;
+#endif
+
+ reset_statusbar_cursor();
+ wnoutrefresh(bottomwin);
+ }
+
+
+#ifndef NANO_TINY
+ /* Set the current position in the history list to the bottom and
+ * free magichistory, if we need to. */
+ if (history_list != NULL) {
+ history_reset(*history_list);
+
+ if (magichistory != NULL)
+ free(magichistory);
+ }
+#endif
+
+
+ /* We've finished putting in an answer or run a normal shortcut's
+ * associated function, so reset statusbar_x and statusbar_pww. If
+ * we've finished putting in an answer, reset the statusbar cursor
+ * position too. */
+ if (s) {
+ if (s->scfunc == CANCEL_MSG || s->scfunc == DO_ENTER ||
+ ran_func) {
+ statusbar_x = old_statusbar_x;
+ statusbar_pww = old_pww;
+
+ if (!ran_func)
+ reset_statusbar_x = TRUE;
+ /* Otherwise, we're still putting in an answer or a shortcut with
+ * an associated function, so leave the statusbar cursor position
+ * alone. */
+ } else
+ reset_statusbar_x = FALSE;
+ }
+
+ *actual = kbinput;
+ return s;
+}
+
+/* Ask a question on the statusbar. The prompt will be stored in the
+ * static prompt, which should be NULL initially, and the answer will be
+ * stored in the answer global. Returns -1 on aborted enter, -2 on a
+ * blank string, and 0 otherwise, the valid shortcut key caught.
+ * curranswer is any editable text that we want to put up by default,
+ * and refresh_func is the function we want to call to refresh the edit
+ * window.
+ *
+ * The allow_tabs parameter indicates whether we should allow tabs to be
+ * interpreted. The allow_files parameter indicates whether we should
+ * allow all files (as opposed to just directories) to be tab
+ * completed. */
+int do_prompt(bool allow_tabs,
+#ifndef DISABLE_TABCOMP
+ bool allow_files,
+#endif
+ int menu, const char *curranswer,
+ bool *meta_key, bool *func_key,
+#ifndef NANO_TINY
+ filestruct **history_list,
+#endif
+ void (*refresh_func)(void), const char *msg, ...)
+{
+ va_list ap;
+ int retval;
+ const sc *s;
+#ifndef DISABLE_TABCOMP
+ bool list = FALSE;
+#endif
+
+ /* prompt has been freed and set to NULL unless the user resized
+ * while at the statusbar prompt. */
+ if (prompt != NULL)
+ free(prompt);
+
+ prompt = charalloc(((COLS - 4) * mb_cur_max()) + 1);
+
+ bottombars(menu);
+
+ va_start(ap, msg);
+ vsnprintf(prompt, (COLS - 4) * mb_cur_max(), msg, ap);
+ va_end(ap);
+ null_at(&prompt, actual_x(prompt, COLS - 4));
+
+ s = get_prompt_string(&retval, allow_tabs,
+#ifndef DISABLE_TABCOMP
+ allow_files,
+#endif
+ curranswer,
+ meta_key, func_key,
+#ifndef NANO_TINY
+ history_list,
+#endif
+ refresh_func, menu
+#ifndef DISABLE_TABCOMP
+ , &list
+#endif
+ );
+
+ free(prompt);
+ prompt = NULL;
+
+ /* We're done with the prompt, so save the statusbar cursor
+ * position. */
+ old_statusbar_x = statusbar_x;
+ old_pww = statusbar_pww;
+
+ /* If we left the prompt via Cancel or Enter, set the return value
+ * properly. */
+ if (s && s->scfunc == CANCEL_MSG)
+ retval = -1;
+ else if (s && s->scfunc == DO_ENTER)
+ retval = (*answer == '\0') ? -2 : 0;
+
+ blank_statusbar();
+ wnoutrefresh(bottomwin);
+
+#ifdef DEBUG
+ fprintf(stderr, "answer = \"%s\"\n", answer);
+#endif
+
+#ifndef DISABLE_TABCOMP
+ /* If we've done tab completion, there might be a list of filename
+ * matches on the edit window at this point. Make sure that they're
+ * cleared off. */
+ if (list)
+ refresh_func();
+#endif
+
+ return retval;
+}
+
+/* This function forces a reset of the statusbar cursor position. It
+ * should be called when we get out of all statusbar prompts. */
+void do_prompt_abort(void)
+{
+ /* Uninitialize the old cursor position in answer. */
+ old_statusbar_x = (size_t)-1;
+ old_pww = (size_t)-1;
+
+ reset_statusbar_x = TRUE;
+}
+
+/* Ask a simple Yes/No (and optionally All) question, specified in msg,
+ * on the statusbar. Return 1 for Yes, 0 for No, 2 for All (if all is
+ * TRUE when passed in), and -1 for Cancel. */
+int do_yesno_prompt(bool all, const char *msg)
+{
+ int ok = -2, width = 16;
+ const char *yesstr; /* String of Yes characters accepted. */
+ const char *nostr; /* Same for No. */
+ const char *allstr; /* And All, surprise! */
+ const sc *s;
+ int oldmenu = currmenu;
+
+ assert(msg != NULL);
+
+ /* yesstr, nostr, and allstr are strings of any length. Each string
+ * consists of all single-byte characters accepted as valid
+ * characters for that value. The first value will be the one
+ * displayed in the shortcuts. */
+ /* TRANSLATORS: For the next three strings, if possible, specify
+ * the single-byte shortcuts for both your language and English.
+ * For example, in French: "OoYy" for "Oui". */
+ yesstr = _("Yy");
+ nostr = _("Nn");
+ allstr = _("Aa");
+
+ if (!ISSET(NO_HELP)) {
+ char shortstr[3];
+ /* Temp string for Yes, No, All. */
+
+ if (COLS < 32)
+ width = COLS / 2;
+
+ /* Clear the shortcut list from the bottom of the screen. */
+ blank_bottombars();
+
+ sprintf(shortstr, " %c", yesstr[0]);
+ wmove(bottomwin, 1, 0);
+ onekey(shortstr, _("Yes"), width);
+
+ if (all) {
+ wmove(bottomwin, 1, width);
+ shortstr[1] = allstr[0];
+ onekey(shortstr, _("All"), width);
+ }
+
+ wmove(bottomwin, 2, 0);
+ shortstr[1] = nostr[0];
+ onekey(shortstr, _("No"), width);
+
+ wmove(bottomwin, 2, 16);
+ onekey("^C", _("Cancel"), width);
+ }
+
+ wattron(bottomwin, reverse_attr);
+
+ blank_statusbar();
+ mvwaddnstr(bottomwin, 0, 0, msg, actual_x(msg, COLS - 1));
+
+ wattroff(bottomwin, reverse_attr);
+
+ /* Refresh the edit window and the statusbar before getting
+ * input. */
+ wnoutrefresh(edit);
+ wnoutrefresh(bottomwin);
+
+ do {
+ int kbinput;
+ bool meta_key, func_key;
+#ifndef DISABLE_MOUSE
+ int mouse_x, mouse_y;
+#endif
+
+ currmenu = MYESNO;
+ kbinput = get_kbinput(bottomwin, &meta_key, &func_key);
+ s = get_shortcut(currmenu, &kbinput, &meta_key, &func_key);
+
+ if (s && s->scfunc == CANCEL_MSG)
+ ok = -1;
+#ifndef DISABLE_MOUSE
+ else if (kbinput == KEY_MOUSE) {
+ /* We can click on the Yes/No/All shortcut list to
+ * select an answer. */
+ if (get_mouseinput(&mouse_x, &mouse_y, FALSE) == 0 &&
+ wmouse_trafo(bottomwin, &mouse_y, &mouse_x,
+ FALSE) && mouse_x < (width * 2) &&
+ mouse_y > 0) {
+ int x = mouse_x / width;
+ /* Calculate the x-coordinate relative to the
+ * two columns of the Yes/No/All shortcuts in
+ * bottomwin. */
+ int y = mouse_y - 1;
+ /* Calculate the y-coordinate relative to the
+ * beginning of the Yes/No/All shortcuts in
+ * bottomwin, i.e. with the sizes of topwin,
+ * edit, and the first line of bottomwin
+ * subtracted out. */
+
+ assert(0 <= x && x <= 1 && 0 <= y && y <= 1);
+
+ /* x == 0 means they clicked Yes or No. y == 0
+ * means Yes or All. */
+ ok = -2 * x * y + x - y + 1;
+
+ if (ok == 2 && !all)
+ ok = -2;
+ }
+ }
+#endif /* !DISABLE_MOUSE */
+ else if (s && s->scfunc == TOTAL_REFRESH) {
+ total_redraw();
+ continue;
+ } else {
+ /* Look for the kbinput in the Yes, No and (optionally)
+ * All strings. */
+ if (strchr(yesstr, kbinput) != NULL)
+ ok = 1;
+ else if (strchr(nostr, kbinput) != NULL)
+ ok = 0;
+ else if (all && strchr(allstr, kbinput) != NULL)
+ ok = 2;
+ }
+ } while (ok == -2);
+
+ currmenu = oldmenu;
+ return ok;
+}
diff --git a/src/proto.h b/src/proto.h
new file mode 100644
index 0000000..e05eefe
--- /dev/null
+++ b/src/proto.h
@@ -0,0 +1,835 @@
+/* $Id: proto.h 4460 2009-12-09 16:51:43Z astyanax $ */
+/**************************************************************************
+ * proto.h *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#ifndef PROTO_H
+#define PROTO_H 1
+
+#include "nano.h"
+
+/* All external variables. See global.c for their descriptions. */
+#ifndef NANO_TINY
+extern sigjmp_buf jump_buf;
+extern bool jump_buf_main;
+extern bool use_undo;
+#endif
+
+#ifndef DISABLE_WRAPJUSTIFY
+extern ssize_t fill;
+extern ssize_t wrap_at;
+#endif
+
+extern char *last_search;
+extern char *last_replace;
+
+extern unsigned flags[4];
+extern WINDOW *topwin;
+extern WINDOW *edit;
+extern WINDOW *bottomwin;
+extern int editwinrows;
+extern int maxrows;
+
+extern filestruct *cutbuffer;
+extern filestruct *cutbottom;
+#ifndef DISABLE_JUSTIFY
+extern filestruct *jusbuffer;
+#endif
+extern partition *filepart;
+extern openfilestruct *openfile;
+
+#ifndef NANO_TINY
+extern char *matchbrackets;
+#endif
+
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+extern char *whitespace;
+extern int whitespace_len[2];
+extern undo_type last_action;
+#endif
+
+#ifndef DISABLE_JUSTIFY
+extern char *punct;
+extern char *brackets;
+extern char *quotestr;
+#ifdef HAVE_REGEX_H
+extern regex_t quotereg;
+extern int quoterc;
+extern char *quoteerr;
+#else
+extern size_t quotelen;
+#endif
+#endif
+extern bool nodelay_mode;
+extern char *answer;
+
+extern ssize_t tabsize;
+
+#ifndef NANO_TINY
+extern char *backup_dir;
+#endif
+#ifndef DISABLE_OPERATINGDIR
+extern char *operating_dir;
+extern char *full_operating_dir;
+#endif
+
+#ifndef DISABLE_SPELLER
+extern char *alt_speller;
+#endif
+
+extern sc *sclist;
+extern subnfunc *allfuncs;
+#ifdef ENABLE_COLOR
+extern syntaxtype *syntaxes;
+extern char *syntaxstr;
+#endif
+
+extern bool edit_refresh_needed;
+extern const shortcut *currshortcut;
+extern int currmenu;
+
+#ifndef NANO_TINY
+extern filestruct *search_history;
+extern filestruct *searchage;
+extern filestruct *searchbot;
+extern filestruct *replace_history;
+extern filestruct *replaceage;
+extern filestruct *replacebot;
+#endif
+
+#ifdef HAVE_REGEX_H
+extern regex_t search_regexp;
+extern regmatch_t regmatches[10];
+#endif
+
+extern int reverse_attr;
+
+extern char *homedir;
+
+/* All functions in browser.c. */
+#ifndef DISABLE_BROWSER
+char *do_browser(char *path, DIR *dir);
+char *do_browse_from(const char *inpath);
+void browser_init(const char *path, DIR *dir);
+void parse_browser_input(int *kbinput, bool *meta_key, bool *func_key);
+void browser_refresh(void);
+bool browser_select_filename(const char *needle);
+int filesearch_init(void);
+bool findnextfile(bool no_sameline, size_t begin, const char *needle);
+void findnextfile_wrap_reset(void);
+void filesearch_abort(void);
+void do_filesearch(void);
+void do_fileresearch(void);
+void do_first_file(void);
+void do_last_file(void);
+char *striponedir(const char *path);
+#endif
+
+/* All functions in chars.c. */
+#ifdef ENABLE_UTF8
+void utf8_init(void);
+bool using_utf8(void);
+#endif
+#ifndef HAVE_ISBLANK
+bool nisblank(int c);
+#endif
+#if !defined(HAVE_ISWBLANK) && defined(ENABLE_UTF8)
+bool niswblank(wchar_t wc);
+#endif
+bool is_byte(int c);
+bool is_alnum_mbchar(const char *c);
+bool is_blank_mbchar(const char *c);
+bool is_ascii_cntrl_char(int c);
+bool is_cntrl_char(int c);
+#ifdef ENABLE_UTF8
+bool is_cntrl_wchar(wchar_t wc);
+#endif
+bool is_cntrl_mbchar(const char *c);
+bool is_punct_mbchar(const char *c);
+bool is_word_mbchar(const char *c, bool allow_punct);
+char control_rep(char c);
+#ifdef ENABLE_UTF8
+wchar_t control_wrep(wchar_t c);
+#endif
+char *control_mbrep(const char *c, char *crep, int *crep_len);
+char *mbrep(const char *c, char *crep, int *crep_len);
+int mbwidth(const char *c);
+int mb_cur_max(void);
+char *make_mbchar(long chr, int *chr_mb_len);
+int parse_mbchar(const char *buf, char *chr, size_t *col);
+size_t move_mbleft(const char *buf, size_t pos);
+size_t move_mbright(const char *buf, size_t pos);
+#ifndef HAVE_STRCASECMP
+int nstrcasecmp(const char *s1, const char *s2);
+#endif
+int mbstrcasecmp(const char *s1, const char *s2);
+#ifndef HAVE_STRNCASECMP
+int nstrncasecmp(const char *s1, const char *s2, size_t n);
+#endif
+int mbstrncasecmp(const char *s1, const char *s2, size_t n);
+#ifndef HAVE_STRCASESTR
+char *nstrcasestr(const char *haystack, const char *needle);
+#endif
+char *mbstrcasestr(const char *haystack, const char *needle);
+#if !defined(NANO_TINY) || !defined(DISABLE_TABCOMP)
+char *revstrstr(const char *haystack, const char *needle, const char
+ *rev_start);
+#endif
+#ifndef NANO_TINY
+char *revstrcasestr(const char *haystack, const char *needle, const char
+ *rev_start);
+char *mbrevstrcasestr(const char *haystack, const char *needle, const
+ char *rev_start);
+#endif
+size_t mbstrlen(const char *s);
+#ifndef HAVE_STRNLEN
+size_t nstrnlen(const char *s, size_t maxlen);
+#endif
+size_t mbstrnlen(const char *s, size_t maxlen);
+#if !defined(NANO_TINY) || !defined(DISABLE_JUSTIFY)
+char *mbstrchr(const char *s, const char *c);
+#endif
+#ifndef NANO_TINY
+char *mbstrpbrk(const char *s, const char *accept);
+char *revstrpbrk(const char *s, const char *accept, const char
+ *rev_start);
+char *mbrevstrpbrk(const char *s, const char *accept, const char
+ *rev_start);
+#endif
+#if defined(ENABLE_NANORC) && (!defined(NANO_TINY) || !defined(DISABLE_JUSTIFY))
+bool has_blank_chars(const char *s);
+bool has_blank_mbchars(const char *s);
+#endif
+#ifdef ENABLE_UTF8
+bool is_valid_unicode(wchar_t wc);
+#endif
+#ifdef ENABLE_NANORC
+bool is_valid_mbstring(const char *s);
+#endif
+
+/* All functions in color.c. */
+#ifdef ENABLE_COLOR
+void set_colorpairs(void);
+void color_init(void);
+void color_update(void);
+#endif
+
+/* All functions in cut.c. */
+void cutbuffer_reset(void);
+void cut_line(void);
+#ifndef NANO_TINY
+void cut_marked(void);
+void cut_to_eol(void);
+void cut_to_eof(void);
+#endif
+void do_cut_text(
+#ifndef NANO_TINY
+ bool copy_text, bool cut_till_end, bool undoing
+#else
+ void
+#endif
+ );
+void do_cut_text_void(void);
+#ifndef NANO_TINY
+void do_copy_text(void);
+void do_cut_till_end(void);
+#endif
+void do_uncut_text(void);
+
+/* All functions in files.c. */
+void make_new_buffer(void);
+void initialize_buffer(void);
+void initialize_buffer_text(void);
+void open_buffer(const char *filename, bool undoable);
+#ifndef DISABLE_SPELLER
+void replace_buffer(const char *filename);
+#endif
+void display_buffer(void);
+#ifdef ENABLE_MULTIBUFFER
+void switch_to_prevnext_buffer(bool next);
+void switch_to_prev_buffer_void(void);
+void switch_to_next_buffer_void(void);
+bool close_buffer(void);
+#endif
+filestruct *read_line(char *buf, filestruct *prevnode, bool
+ *first_line_ins, size_t buf_len);
+void read_file(FILE *f, int fd, const char *filename, bool undoable, bool checkwritable);
+int open_file(const char *filename, bool newfie, FILE **f);
+char *get_next_filename(const char *name, const char *suffix);
+void do_insertfile(
+#ifndef NANO_TINY
+ bool execute
+#else
+ void
+#endif
+ );
+void do_insertfile_void(void);
+char *get_full_path(const char *origpath);
+char *check_writable_directory(const char *path);
+char *safe_tempfile(FILE **f);
+#ifndef DISABLE_OPERATINGDIR
+void init_operating_dir(void);
+bool check_operating_dir(const char *currpath, bool allow_tabcomp);
+#endif
+#ifndef NANO_TINY
+void init_backup_dir(void);
+#endif
+int copy_file(FILE *inn, FILE *out);
+bool write_file(const char *name, FILE *f_open, bool tmp, append_type
+ append, bool nonamechange);
+#ifndef NANO_TINY
+bool write_marked_file(const char *name, FILE *f_open, bool tmp,
+ append_type append);
+#endif
+bool do_writeout(bool exiting);
+void do_writeout_void(void);
+char *real_dir_from_tilde(const char *buf);
+#if !defined(DISABLE_TABCOMP) || !defined(DISABLE_BROWSER)
+int diralphasort(const void *va, const void *vb);
+void free_chararray(char **array, size_t len);
+#endif
+#ifndef DISABLE_TABCOMP
+bool is_dir(const char *buf);
+char **username_tab_completion(const char *buf, size_t *num_matches,
+ size_t buf_len);
+char **cwd_tab_completion(const char *buf, bool allow_files, size_t
+ *num_matches, size_t buf_len);
+char *input_tab(char *buf, bool allow_files, size_t *place, bool
+ *lastwastab, void (*refresh_func)(void), bool *list);
+#endif
+const char *tail(const char *foo);
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+char *histfilename(void);
+void load_history(void);
+bool writehist(FILE *hist, filestruct *histhead);
+void save_history(void);
+#endif
+
+/* All functions in global.c. */
+size_t length_of_list(int menu);
+#ifndef NANO_TINY
+void toggle_init_one(int val
+#ifndef DISABLE_HELP
+ , const char *desc, bool blank_after
+#endif
+ , long flag);
+void toggle_init(void);
+#endif
+void sc_init_one(shortcut **shortcutage, int ctrlval, const char *desc
+#ifndef DISABLE_HELP
+ , const char *help, bool blank_after
+#endif
+ , int metaval, int funcval, int miscval, bool view, void
+ (*func)(void));
+void shortcut_init(bool unjustify);
+void free_shortcutage(shortcut **shortcutage);
+#ifdef DEBUG
+void thanks_for_all_the_fish(void);
+#endif
+
+/* All functions in help.c. */
+#ifndef DISABLE_BROWSER
+void do_browser_help(void);
+#endif
+void do_help_void(void);
+#ifndef DISABLE_HELP
+void do_help(void (*refresh_func)(void));
+void help_init(void);
+void parse_help_input(int *kbinput, bool *meta_key, bool *func_key);
+size_t help_line_len(const char *ptr);
+#endif
+
+/* All functions in move.c. */
+void do_first_line(void);
+void do_last_line(void);
+void do_page_up(void);
+void do_page_down(void);
+#ifndef DISABLE_JUSTIFY
+void do_para_begin(bool allow_update);
+void do_para_begin_void(void);
+void do_para_end(bool allow_update);
+void do_para_end_void(void);
+#endif
+#ifndef NANO_TINY
+bool do_next_word(bool allow_punct, bool allow_update);
+void do_next_word_void(void);
+bool do_prev_word(bool allow_punct, bool allow_update);
+void do_prev_word_void(void);
+#endif
+void do_home(void);
+void do_end(void);
+void do_up(
+#ifndef NANO_TINY
+ bool scroll_only
+#else
+ void
+#endif
+ );
+void do_up_void(void);
+#ifndef NANO_TINY
+void do_scroll_up(void);
+#endif
+void do_down(
+#ifndef NANO_TINY
+ bool scroll_only
+#else
+ void
+#endif
+ );
+void do_down_void(void);
+#ifndef NANO_TINY
+void do_scroll_down(void);
+#endif
+void do_left(void);
+void do_right(void);
+
+/* All functions in nano.c. */
+filestruct *make_new_node(filestruct *prevnode);
+filestruct *copy_node(const filestruct *src);
+void splice_node(filestruct *begin, filestruct *newnode, filestruct
+ *end);
+void unlink_node(const filestruct *fileptr);
+void delete_node(filestruct *fileptr);
+filestruct *copy_filestruct(const filestruct *src);
+void free_filestruct(filestruct *src);
+void renumber(filestruct *fileptr);
+partition *partition_filestruct(filestruct *top, size_t top_x,
+ filestruct *bot, size_t bot_x);
+void unpartition_filestruct(partition **p);
+void move_to_filestruct(filestruct **file_top, filestruct **file_bot,
+ filestruct *top, size_t top_x, filestruct *bot, size_t bot_x);
+void copy_from_filestruct(filestruct *file_top, filestruct *file_bot);
+openfilestruct *make_new_opennode(void);
+void splice_opennode(openfilestruct *begin, openfilestruct *newnode,
+ openfilestruct *end);
+void unlink_opennode(openfilestruct *fileptr);
+void delete_opennode(openfilestruct *fileptr);
+#ifdef DEBUG
+void free_openfilestruct(openfilestruct *src);
+#endif
+void print_view_warning(void);
+void finish(void);
+void die(const char *msg, ...);
+void die_save_file(const char *die_filename
+#ifndef NANO_TINY
+ , struct stat *die_stat
+#endif
+ );
+void window_init(void);
+#ifndef DISABLE_MOUSE
+void disable_mouse_support(void);
+void enable_mouse_support(void);
+void mouse_init(void);
+#endif
+void print_opt_full(const char *shortflag
+#ifdef HAVE_GETOPT_LONG
+ , const char *longflag
+#endif
+ , const char *desc);
+void usage(void);
+void version(void);
+int no_more_space(void);
+int no_help(void);
+void nano_disabled_msg(void);
+void do_exit(void);
+void signal_init(void);
+RETSIGTYPE handle_hupterm(int signal);
+RETSIGTYPE do_suspend(int signal);
+RETSIGTYPE do_continue(int signal);
+#ifndef NANO_TINY
+RETSIGTYPE handle_sigwinch(int signal);
+void allow_pending_sigwinch(bool allow);
+#endif
+#ifndef NANO_TINY
+void do_toggle(int flag);
+#endif
+void disable_extended_io(void);
+#ifdef USE_SLANG
+void disable_signals(void);
+#endif
+#ifndef NANO_TINY
+void enable_signals(void);
+#endif
+void disable_flow_control(void);
+void enable_flow_control(void);
+void terminal_init(void);
+int do_input(bool *meta_key, bool *func_key, bool *have_shortcut, bool
+ *ran_func, bool *finished, bool allow_funcs);
+#ifndef DISABLE_MOUSE
+int do_mouse(void);
+#endif
+void do_output(char *output, size_t output_len, bool allow_cntrls);
+
+/* All functions in prompt.c. */
+int do_statusbar_input(bool *meta_key, bool *func_key, bool *have_shortcut,
+ bool *ran_func, bool *finished, bool allow_funcs, void
+ (*refresh_func)(void));
+#ifndef DISABLE_MOUSE
+int do_statusbar_mouse(void);
+#endif
+void do_statusbar_output(char *output, size_t output_len, bool
+ *got_enter, bool allow_cntrls);
+void do_statusbar_home(void);
+void do_statusbar_end(void);
+void do_statusbar_left(void);
+void do_statusbar_right(void);
+void do_statusbar_backspace(void);
+void do_statusbar_delete(void);
+void do_statusbar_cut_text(void);
+#ifndef NANO_TINY
+bool do_statusbar_next_word(bool allow_punct);
+bool do_statusbar_prev_word(bool allow_punct);
+#endif
+void do_statusbar_verbatim_input(bool *got_enter);
+#ifndef NANO_TINY
+bool find_statusbar_bracket_match(bool reverse, const char
+ *bracket_set);
+void do_statusbar_find_bracket(void);
+#endif
+size_t statusbar_xplustabs(void);
+size_t get_statusbar_page_start(size_t start_col, size_t column);
+void reset_statusbar_cursor(void);
+void update_statusbar_line(const char *curranswer, size_t index);
+bool need_statusbar_horizontal_update(size_t pww_save);
+void total_statusbar_refresh(void (*refresh_func)(void));
+const sc *get_prompt_string(int *value, bool allow_tabs,
+#ifndef DISABLE_TABCOMP
+ bool allow_files,
+#endif
+ const char *curranswer,
+ bool *meta_key, bool *func_key,
+#ifndef NANO_TINY
+ filestruct **history_list,
+#endif
+ void (*refresh_func)(void), int menu
+#ifndef DISABLE_TABCOMP
+ , bool *list
+#endif
+ );
+int do_prompt(bool allow_tabs,
+#ifndef DISABLE_TABCOMP
+ bool allow_files,
+#endif
+ int menu, const char *curranswer,
+ bool *meta_key, bool *func_key,
+#ifndef NANO_TINY
+ filestruct **history_list,
+#endif
+ void (*refresh_func)(void), const char *msg, ...);
+void do_prompt_abort(void);
+int do_yesno_prompt(bool all, const char *msg);
+
+/* All functions in rcfile.c. */
+#ifdef ENABLE_NANORC
+void rcfile_error(const char *msg, ...);
+char *parse_next_word(char *ptr);
+char *parse_argument(char *ptr);
+#ifdef ENABLE_COLOR
+char *parse_next_regex(char *ptr);
+bool nregcomp(const char *regex, int eflags);
+void parse_syntax(char *ptr);
+void parse_include(char *ptr);
+short color_to_short(const char *colorname, bool *bright);
+void parse_colors(char *ptr, bool icase);
+void reset_multis(filestruct *fileptr, bool force);
+void alloc_multidata_if_needed(filestruct *fileptr);
+#endif
+void parse_rcfile(FILE *rcstream
+#ifdef ENABLE_COLOR
+ , bool syntax_only
+#endif
+ );
+void do_rcfile(void);
+#endif
+
+/* All functions in search.c. */
+#ifdef HAVE_REGEX_H
+bool regexp_init(const char *regexp);
+void regexp_cleanup(void);
+#endif
+void not_found_msg(const char *str);
+void search_replace_abort(void);
+void search_init_globals(void);
+int search_init(bool replacing, bool use_answer);
+bool findnextstr(
+#ifndef DISABLE_SPELLER
+ bool whole_word,
+#endif
+ bool no_sameline, const filestruct *begin, size_t begin_x, const
+ char *needle, size_t *needle_len);
+void findnextstr_wrap_reset(void);
+void do_search(void);
+#ifndef NANO_TINY
+void do_research(void);
+#endif
+#ifdef HAVE_REGEX_H
+int replace_regexp(char *string, bool create);
+#endif
+char *replace_line(const char *needle);
+ssize_t do_replace_loop(
+#ifndef DISABLE_SPELLER
+ bool whole_word,
+#endif
+ bool *canceled, const filestruct *real_current, size_t
+ *real_current_x, const char *needle);
+void do_replace(void);
+void do_gotolinecolumn(ssize_t line, ssize_t column, bool use_answer,
+ bool interactive, bool save_pos, bool allow_update);
+void do_gotolinecolumn_void(void);
+#ifndef DISABLE_SPELLER
+void do_gotopos(ssize_t pos_line, size_t pos_x, ssize_t pos_y, size_t
+ pos_pww);
+#endif
+#ifndef NANO_TINY
+bool find_bracket_match(bool reverse, const char *bracket_set);
+void do_find_bracket(void);
+#ifdef ENABLE_NANORC
+bool history_has_changed(void);
+#endif
+void history_init(void);
+void history_reset(const filestruct *h);
+filestruct *find_history(const filestruct *h_start, const filestruct
+ *h_end, const char *s, size_t len);
+void update_history(filestruct **h, const char *s);
+char *get_history_older(filestruct **h);
+char *get_history_newer(filestruct **h);
+#ifndef DISABLE_TABCOMP
+char *get_history_completion(filestruct **h, const char *s, size_t len);
+#endif
+#endif
+
+/* All functions in text.c. */
+#ifndef NANO_TINY
+void do_mark(void);
+#endif
+void do_delete(void);
+void do_backspace(void);
+void do_tab(void);
+#ifndef NANO_TINY
+void do_indent(ssize_t cols);
+void do_indent_void(void);
+void do_unindent(void);
+void do_undo(void);
+void do_redo(void);
+#endif
+void do_enter(bool undoing);
+#ifndef NANO_TINY
+RETSIGTYPE cancel_command(int signal);
+bool execute_command(const char *command);
+#endif
+#ifndef DISABLE_WRAPPING
+void wrap_reset(void);
+bool do_wrap(filestruct *line, bool undoing);
+#endif
+#if !defined(DISABLE_HELP) || !defined(DISABLE_WRAPJUSTIFY)
+ssize_t break_line(const char *line, ssize_t goal
+#ifndef DISABLE_HELP
+ , bool newln
+#endif
+ );
+#endif
+#if !defined(NANO_TINY) || !defined(DISABLE_JUSTIFY)
+size_t indent_length(const char *line);
+#endif
+#ifndef DISABLE_JUSTIFY
+void justify_format(filestruct *paragraph, size_t skip);
+size_t quote_length(const char *line);
+bool quotes_match(const char *a_line, size_t a_quote, const char
+ *b_line);
+bool indents_match(const char *a_line, size_t a_indent, const char
+ *b_line, size_t b_indent);
+bool begpar(const filestruct *const foo);
+bool inpar(const filestruct *const foo);
+void backup_lines(filestruct *first_line, size_t par_len);
+bool find_paragraph(size_t *const quote, size_t *const par);
+void do_justify(bool full_justify);
+void do_justify_void(void);
+void do_full_justify(void);
+#endif
+#ifndef DISABLE_SPELLER
+bool do_int_spell_fix(const char *word);
+const char *do_int_speller(const char *tempfile_name);
+const char *do_alt_speller(char *tempfile_name);
+void do_spell(void);
+#endif
+#ifndef NANO_TINY
+void do_wordlinechar_count(void);
+#endif
+void do_verbatim_input(void);
+
+/* All functions in utils.c. */
+int digits(size_t n);
+void get_homedir(void);
+bool parse_num(const char *str, ssize_t *val);
+bool parse_line_column(const char *str, ssize_t *line, ssize_t *column);
+void align(char **str);
+void null_at(char **data, size_t index);
+void unsunder(char *str, size_t true_len);
+void sunder(char *str);
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+#ifndef HAVE_GETLINE
+ssize_t ngetline(char **lineptr, size_t *n, FILE *stream);
+#endif
+#ifndef HAVE_GETDELIM
+ssize_t ngetdelim(char **lineptr, size_t *n, int delim, FILE *stream);
+#endif
+#endif
+#ifdef HAVE_REGEX_H
+bool regexp_bol_or_eol(const regex_t *preg, const char *string);
+const char *fixbounds(const char *r);
+#endif
+#ifndef DISABLE_SPELLER
+bool is_whole_word(size_t pos, const char *buf, const char *word);
+#endif
+const char *strstrwrapper(const char *haystack, const char *needle,
+ const char *start);
+void nperror(const char *s);
+void *nmalloc(size_t howmuch);
+void *nrealloc(void *ptr, size_t howmuch);
+char *mallocstrncpy(char *dest, const char *src, size_t n);
+char *mallocstrcpy(char *dest, const char *src);
+char *mallocstrassn(char *dest, char *src);
+size_t get_page_start(size_t column);
+size_t xplustabs(void);
+size_t actual_x(const char *s, size_t column);
+size_t strnlenpt(const char *s, size_t maxlen);
+size_t strlenpt(const char *s);
+void new_magicline(void);
+#ifndef NANO_TINY
+void remove_magicline(void);
+void mark_order(const filestruct **top, size_t *top_x, const filestruct
+ **bot, size_t *bot_x, bool *right_side_up);
+void add_undo(undo_type current_action);
+void update_undo(undo_type action);
+#endif
+size_t get_totsize(const filestruct *begin, const filestruct *end);
+filestruct *fsfromline(ssize_t lineno);
+#ifdef DEBUG
+void dump_filestruct(const filestruct *inptr);
+void dump_filestruct_reverse(void);
+#endif
+
+/* All functions in winio.c. */
+void get_key_buffer(WINDOW *win);
+size_t get_key_buffer_len(void);
+void unget_input(int *input, size_t input_len);
+void unget_kbinput(int kbinput, bool meta_key, bool func_key);
+int *get_input(WINDOW *win, size_t input_len);
+int get_kbinput(WINDOW *win, bool *meta_key, bool *func_key);
+int parse_kbinput(WINDOW *win, bool *meta_key, bool *func_key);
+int get_escape_seq_kbinput(const int *seq, size_t seq_len);
+int get_escape_seq_abcd(int kbinput);
+int parse_escape_seq_kbinput(WINDOW *win, int kbinput);
+int get_byte_kbinput(int kbinput);
+#ifdef ENABLE_UTF8
+long add_unicode_digit(int kbinput, long factor, long *uni);
+long get_unicode_kbinput(int kbinput);
+#endif
+int get_control_kbinput(int kbinput);
+void unparse_kbinput(char *output, size_t output_len);
+int *get_verbatim_kbinput(WINDOW *win, size_t *kbinput_len);
+int *parse_verbatim_kbinput(WINDOW *win, size_t *kbinput_len);
+#ifndef DISABLE_MOUSE
+int get_mouseinput(int *mouse_x, int *mouse_y, bool allow_shortcuts);
+#endif
+const sc *get_shortcut(int menu, int *kbinput, bool
+ *meta_key, bool *func_key);
+const sc *first_sc_for(int menu, short func);
+void blank_line(WINDOW *win, int y, int x, int n);
+void blank_titlebar(void);
+void blank_topbar(void);
+void blank_edit(void);
+void blank_statusbar(void);
+void blank_bottombars(void);
+void check_statusblank(void);
+char *display_string(const char *buf, size_t start_col, size_t len, bool
+ dollars);
+void titlebar(const char *path);
+void set_modified(void);
+void statusbar(const char *msg, ...);
+void bottombars(int menu);
+void onekey(const char *keystroke, const char *desc, size_t len);
+void reset_cursor(void);
+void edit_draw(filestruct *fileptr, const char *converted, int
+ line, size_t start);
+int update_line(filestruct *fileptr, size_t index);
+bool need_horizontal_update(size_t pww_save);
+bool need_vertical_update(size_t pww_save);
+void edit_scroll(scroll_dir direction, ssize_t nlines);
+void edit_redraw(filestruct *old_current, size_t pww_save);
+void edit_refresh(void);
+void edit_update(update_type location);
+void total_redraw(void);
+void total_refresh(void);
+void display_main_list(void);
+void do_cursorpos(bool constant);
+void do_cursorpos_void(void);
+void do_replace_highlight(bool highlight, const char *word);
+const char *flagtostr(int flag);
+const subnfunc *sctofunc(sc *s);
+const subnfunc *getfuncfromkey(WINDOW *win);
+void print_sclist(void);
+sc *strtosc(int menu, char *input);
+function_type strtokeytype(const char *str);
+int strtomenu(char *input);
+void assign_keyinfo(sc *s);
+void xon_complaint(void);
+void xoff_complaint(void);
+int sc_seq_or (short func, int defaultval);
+void do_suspend_void(void);
+
+extern const char *cancel_msg;
+#ifndef NANO_TINY
+extern const char *case_sens_msg;
+extern const char *backwards_msg;
+extern const char *prev_history_msg;
+extern const char *next_history_msg;
+#endif
+extern const char *replace_msg;
+extern const char *no_replace_msg;
+extern const char *go_to_line_msg;
+extern const char *whereis_next_msg;
+extern const char *first_file_msg;
+extern const char *last_file_msg;
+extern const char *goto_dir_msg;
+extern const char *ext_cmd_msg;
+extern const char *to_files_msg;
+extern const char *dos_format_msg;
+extern const char *mac_format_msg;
+extern const char *append_msg;
+extern const char *prepend_msg;
+extern const char *backup_file_msg;
+extern const char *gototext_msg;
+extern const char *new_buffer_msg;
+
+void iso_me_harder_funcmap(short func);
+void enable_nodelay(void);
+void disable_nodelay(void);
+
+#ifdef HAVE_REGEX_H
+extern const char *regexp_msg;
+#endif
+
+#ifdef NANO_EXTRA
+void do_credits(void);
+#endif
+
+#endif /* !PROTO_H */
diff --git a/src/rcfile.c b/src/rcfile.c
new file mode 100644
index 0000000..5aff6d9
--- /dev/null
+++ b/src/rcfile.c
@@ -0,0 +1,1230 @@
+/* $Id: rcfile.c 4508 2010-06-21 03:10:10Z astyanax $ */
+/**************************************************************************
+ * rcfile.c *
+ * *
+ * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 *
+ * Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <stdarg.h>
+#include <string.h>
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include <ctype.h>
+
+#ifdef ENABLE_NANORC
+
+static const rcoption rcopts[] = {
+ {"boldtext", BOLD_TEXT},
+#ifndef DISABLE_JUSTIFY
+ {"brackets", 0},
+#endif
+ {"const", CONST_UPDATE},
+#ifndef DISABLE_WRAPJUSTIFY
+ {"fill", 0},
+#endif
+#ifndef DISABLE_MOUSE
+ {"mouse", USE_MOUSE},
+#endif
+#ifdef ENABLE_MULTIBUFFER
+ {"multibuffer", MULTIBUFFER},
+#endif
+ {"morespace", MORE_SPACE},
+ {"nofollow", NOFOLLOW_SYMLINKS},
+ {"nohelp", NO_HELP},
+ {"nonewlines", NO_NEWLINES},
+#ifndef DISABLE_WRAPPING
+ {"nowrap", NO_WRAP},
+#endif
+#ifndef DISABLE_OPERATINGDIR
+ {"operatingdir", 0},
+#endif
+ {"preserve", PRESERVE},
+#ifndef DISABLE_JUSTIFY
+ {"punct", 0},
+ {"quotestr", 0},
+#endif
+ {"rebinddelete", REBIND_DELETE},
+ {"rebindkeypad", REBIND_KEYPAD},
+#ifdef HAVE_REGEX_H
+ {"regexp", USE_REGEXP},
+#endif
+#ifndef DISABLE_SPELLER
+ {"speller", 0},
+#endif
+ {"suspend", SUSPEND},
+ {"tabsize", 0},
+ {"tempfile", TEMP_FILE},
+ {"view", VIEW_MODE},
+#ifndef NANO_TINY
+ {"autoindent", AUTOINDENT},
+ {"backup", BACKUP_FILE},
+ {"allow_insecure_backup", INSECURE_BACKUP},
+ {"backupdir", 0},
+ {"backwards", BACKWARDS_SEARCH},
+ {"casesensitive", CASE_SENSITIVE},
+ {"cut", CUT_TO_END},
+ {"historylog", HISTORYLOG},
+ {"matchbrackets", 0},
+ {"noconvert", NO_CONVERT},
+ {"quiet", QUIET},
+ {"quickblank", QUICK_BLANK},
+ {"smarthome", SMART_HOME},
+ {"smooth", SMOOTH_SCROLL},
+ {"tabstospaces", TABS_TO_SPACES},
+ {"undo", UNDOABLE},
+ {"whitespace", 0},
+ {"wordbounds", WORD_BOUNDS},
+ {"softwrap", SOFTWRAP},
+#endif
+ {NULL, 0}
+};
+
+static bool errors = FALSE;
+ /* Whether we got any errors while parsing an rcfile. */
+static size_t lineno = 0;
+ /* If we did, the line number where the last error occurred. */
+static char *nanorc = NULL;
+ /* The path to the rcfile we're parsing. */
+#ifdef ENABLE_COLOR
+static syntaxtype *endsyntax = NULL;
+ /* The end of the list of syntaxes. */
+static exttype *endheader = NULL;
+ /* End of header list */
+static colortype *endcolor = NULL;
+ /* The end of the color list for the current syntax. */
+
+#endif
+
+/* We have an error in some part of the rcfile. Print the error message
+ * on stderr, and then make the user hit Enter to continue starting
+ * nano. */
+void rcfile_error(const char *msg, ...)
+{
+ va_list ap;
+
+ if (ISSET(QUIET))
+ return;
+
+ fprintf(stderr, "\n");
+ if (lineno > 0) {
+ errors = TRUE;
+ fprintf(stderr, _("Error in %s on line %lu: "), nanorc, (unsigned long)lineno);
+ }
+
+ va_start(ap, msg);
+ vfprintf(stderr, _(msg), ap);
+ va_end(ap);
+
+ fprintf(stderr, "\n");
+}
+
+/* Parse the next word from the string, null-terminate it, and return
+ * a pointer to the first character after the null terminator. The
+ * returned pointer will point to '\0' if we hit the end of the line. */
+char *parse_next_word(char *ptr)
+{
+ while (!isblank(*ptr) && *ptr != '\0')
+ ptr++;
+
+ if (*ptr == '\0')
+ return ptr;
+
+ /* Null-terminate and advance ptr. */
+ *ptr++ = '\0';
+
+ while (isblank(*ptr))
+ ptr++;
+
+ return ptr;
+}
+
+/* Parse an argument, with optional quotes, after a keyword that takes
+ * one. If the next word starts with a ", we say that it ends with the
+ * last " of the line. Otherwise, we interpret it as usual, so that the
+ * arguments can contain "'s too. */
+char *parse_argument(char *ptr)
+{
+ const char *ptr_save = ptr;
+ char *last_quote = NULL;
+
+ assert(ptr != NULL);
+
+ if (*ptr != '"')
+ return parse_next_word(ptr);
+
+ do {
+ ptr++;
+ if (*ptr == '"')
+ last_quote = ptr;
+ } while (*ptr != '\0');
+
+ if (last_quote == NULL) {
+ if (*ptr == '\0')
+ ptr = NULL;
+ else
+ *ptr++ = '\0';
+ rcfile_error(N_("Argument '%s' has an unterminated \""), ptr_save);
+ } else {
+ *last_quote = '\0';
+ ptr = last_quote + 1;
+ }
+ if (ptr != NULL)
+ while (isblank(*ptr))
+ ptr++;
+ return ptr;
+}
+
+#ifdef ENABLE_COLOR
+/* Parse the next regex string from the line at ptr, and return it. */
+char *parse_next_regex(char *ptr)
+{
+ assert(ptr != NULL);
+
+ /* Continue until the end of the line, or a " followed by a space, a
+ * blank character, or \0. */
+ while ((*ptr != '"' || (!isblank(*(ptr + 1)) &&
+ *(ptr + 1) != '\0')) && *ptr != '\0')
+ ptr++;
+
+ assert(*ptr == '"' || *ptr == '\0');
+
+ if (*ptr == '\0') {
+ rcfile_error(
+ N_("Regex strings must begin and end with a \" character"));
+ return NULL;
+ }
+
+ /* Null-terminate and advance ptr. */
+ *ptr++ = '\0';
+
+ while (isblank(*ptr))
+ ptr++;
+
+ return ptr;
+}
+
+/* Compile the regular expression regex to see if it's valid. Return
+ * TRUE if it is, or FALSE otherwise. */
+bool nregcomp(const char *regex, int eflags)
+{
+ regex_t preg;
+ const char *r = fixbounds(regex);
+ int rc = regcomp(&preg, r, REG_EXTENDED | eflags);
+
+ if (rc != 0) {
+ size_t len = regerror(rc, &preg, NULL, 0);
+ char *str = charalloc(len);
+
+ regerror(rc, &preg, str, len);
+ rcfile_error(N_("Bad regex \"%s\": %s"), r, str);
+ free(str);
+ }
+
+ regfree(&preg);
+ return (rc == 0);
+}
+
+/* Parse the next syntax string from the line at ptr, and add it to the
+ * global list of color syntaxes. */
+void parse_syntax(char *ptr)
+{
+ const char *fileregptr = NULL, *nameptr = NULL;
+ syntaxtype *tmpsyntax;
+ exttype *endext = NULL;
+ /* The end of the extensions list for this syntax. */
+
+ assert(ptr != NULL);
+
+ if (*ptr == '\0') {
+ rcfile_error(N_("Missing syntax name"));
+ return;
+ }
+
+ if (*ptr != '"') {
+ rcfile_error(
+ N_("Regex strings must begin and end with a \" character"));
+ return;
+ }
+
+ ptr++;
+
+ nameptr = ptr;
+ ptr = parse_next_regex(ptr);
+
+ if (ptr == NULL)
+ return;
+
+ /* Search for a duplicate syntax name. If we find one, free it, so
+ * that we always use the last syntax with a given name. */
+ for (tmpsyntax = syntaxes; tmpsyntax != NULL;
+ tmpsyntax = tmpsyntax->next) {
+ if (strcmp(nameptr, tmpsyntax->desc) == 0) {
+ syntaxtype *prev_syntax = tmpsyntax;
+
+ tmpsyntax = tmpsyntax->next;
+ free(prev_syntax);
+ break;
+ }
+ }
+
+ if (syntaxes == NULL) {
+ syntaxes = (syntaxtype *)nmalloc(sizeof(syntaxtype));
+ endsyntax = syntaxes;
+ } else {
+ endsyntax->next = (syntaxtype *)nmalloc(sizeof(syntaxtype));
+ endsyntax = endsyntax->next;
+#ifdef DEBUG
+ fprintf(stderr, "Adding new syntax after first one\n");
+#endif
+ }
+
+ endsyntax->desc = mallocstrcpy(NULL, nameptr);
+ endsyntax->color = NULL;
+ endcolor = NULL;
+ endheader = NULL;
+ endsyntax->extensions = NULL;
+ endsyntax->headers = NULL;
+ endsyntax->next = NULL;
+ endsyntax->nmultis = 0;
+
+#ifdef DEBUG
+ fprintf(stderr, "Starting a new syntax type: \"%s\"\n", nameptr);
+#endif
+
+ /* The "none" syntax is the same as not having a syntax at all, so
+ * we can't assign any extensions or colors to it. */
+ if (strcmp(endsyntax->desc, "none") == 0) {
+ rcfile_error(N_("The \"none\" syntax is reserved"));
+ return;
+ }
+
+ /* The default syntax should have no associated extensions. */
+ if (strcmp(endsyntax->desc, "default") == 0 && *ptr != '\0') {
+ rcfile_error(
+ N_("The \"default\" syntax must take no extensions"));
+ return;
+ }
+
+ /* Now load the extensions into their part of the struct. */
+ while (*ptr != '\0') {
+ exttype *newext;
+ /* The new extension structure. */
+
+ while (*ptr != '"' && *ptr != '\0')
+ ptr++;
+
+ if (*ptr == '\0')
+ return;
+
+ ptr++;
+
+ fileregptr = ptr;
+ ptr = parse_next_regex(ptr);
+ if (ptr == NULL)
+ break;
+
+ newext = (exttype *)nmalloc(sizeof(exttype));
+
+ /* Save the extension regex if it's valid. */
+ if (nregcomp(fileregptr, REG_NOSUB)) {
+ newext->ext_regex = mallocstrcpy(NULL, fileregptr);
+ newext->ext = NULL;
+
+ if (endext == NULL)
+ endsyntax->extensions = newext;
+ else
+ endext->next = newext;
+ endext = newext;
+ endext->next = NULL;
+ } else
+ free(newext);
+ }
+}
+
+int check_bad_binding(sc *s)
+{
+#define BADLISTLEN 1
+ int badtypes[BADLISTLEN] = {META};
+ int badseqs[BADLISTLEN] = { 91 };
+ int i;
+
+ for (i = 0; i < BADLISTLEN; i++)
+ if (s->type == badtypes[i] && s->seq == badseqs[i])
+ return 1;
+
+ return 0;
+}
+
+void parse_keybinding(char *ptr)
+{
+ char *keyptr = NULL, *keycopy = NULL, *funcptr = NULL, *menuptr = NULL;
+ sc *s, *newsc;
+ int i, menu;
+
+ assert(ptr != NULL);
+
+ if (*ptr == '\0') {
+ rcfile_error(N_("Missing key name"));
+ return;
+ }
+
+ keyptr = ptr;
+ ptr = parse_next_word(ptr);
+ keycopy = mallocstrcpy(NULL, keyptr);
+ for (i = 0; i < strlen(keycopy); i++)
+ keycopy[i] = toupper(keycopy[i]);
+
+ if (keycopy[0] != 'M' && keycopy[0] != '^' && keycopy[0] != 'F' && keycopy[0] != 'K') {
+ rcfile_error(
+ N_("keybindings must begin with \"^\", \"M\", or \"F\""));
+ return;
+ }
+
+ funcptr = ptr;
+ ptr = parse_next_word(ptr);
+
+ if (!strcmp(funcptr, "")) {
+ rcfile_error(
+ N_("Must specify function to bind key to"));
+ return;
+ }
+
+ menuptr = ptr;
+ ptr = parse_next_word(ptr);
+
+ if (!strcmp(menuptr, "")) {
+ rcfile_error(
+ /* Note to translators, do not translate the word "all"
+ in the sentence below, everything else is fine */
+ N_("Must specify menu to bind key to (or \"all\")"));
+ return;
+ }
+
+ menu = strtomenu(menuptr);
+ newsc = strtosc(menu, funcptr);
+ if (newsc == NULL) {
+ rcfile_error(
+ N_("Could not map name \"%s\" to a function"), funcptr);
+ return;
+ }
+
+ if (menu < 1) {
+ rcfile_error(
+ N_("Could not map name \"%s\" to a menu"), menuptr);
+ return;
+ }
+
+
+#ifdef DEBUG
+ fprintf(stderr, "newsc now address %d, menu func assigned = %d, menu = %d\n",
+ &newsc, newsc->scfunc, menu);
+#endif
+
+
+ newsc->keystr = keycopy;
+ newsc->menu = menu;
+ newsc->type = strtokeytype(newsc->keystr);
+ assign_keyinfo(newsc);
+#ifdef DEBUG
+ fprintf(stderr, "s->keystr = \"%s\"\n", newsc->keystr);
+ fprintf(stderr, "s->seq = \"%d\"\n", newsc->seq);
+#endif
+
+ if (check_bad_binding(newsc)) {
+ rcfile_error(
+ N_("Sorry, keystr \"%s\" is an illegal binding"), newsc->keystr);
+ return;
+ }
+
+ /* now let's have some fun. Try and delete the other entries
+ we found for the same menu, then make this new new
+ beginning */
+ for (s = sclist; s != NULL; s = s->next) {
+ if (((s->menu & newsc->menu)) && s->seq == newsc->seq) {
+ s->menu &= ~newsc->menu;
+#ifdef DEBUG
+ fprintf(stderr, "replaced menu entry %d\n", s->menu);
+#endif
+ }
+ }
+ newsc->next = sclist;
+ sclist = newsc;
+}
+
+/* Let user unbind a sequence from a given (or all) menus */
+void parse_unbinding(char *ptr)
+{
+ char *keyptr = NULL, *keycopy = NULL, *menuptr = NULL;
+ sc *s;
+ int i, menu;
+
+ assert(ptr != NULL);
+
+ if (*ptr == '\0') {
+ rcfile_error(N_("Missing key name"));
+ return;
+ }
+
+ keyptr = ptr;
+ ptr = parse_next_word(ptr);
+ keycopy = mallocstrcpy(NULL, keyptr);
+ for (i = 0; i < strlen(keycopy); i++)
+ keycopy[i] = toupper(keycopy[i]);
+
+#ifdef DEBUG
+ fprintf(stderr, "Starting unbinding code");
+#endif
+
+ if (keycopy[0] != 'M' && keycopy[0] != '^' && keycopy[0] != 'F' && keycopy[0] != 'K') {
+ rcfile_error(
+ N_("keybindings must begin with \"^\", \"M\", or \"F\""));
+ return;
+ }
+
+ menuptr = ptr;
+ ptr = parse_next_word(ptr);
+
+ if (!strcmp(menuptr, "")) {
+ rcfile_error(
+ /* Note to translators, do not translate the word "all"
+ in the sentence below, everything else is fine */
+ N_("Must specify menu to bind key to (or \"all\")"));
+ return;
+ }
+
+ menu = strtomenu(menuptr);
+ if (menu < 1) {
+ rcfile_error(
+ N_("Could not map name \"%s\" to a menu"), menuptr);
+ return;
+ }
+
+
+#ifdef DEBUG
+ fprintf(stderr, "unbinding \"%s\" from menu = %d\n", keycopy, menu);
+#endif
+
+ /* Now find the apropriate entries in the menu to delete */
+ for (s = sclist; s != NULL; s = s->next) {
+ if (((s->menu & menu)) && !strcmp(s->keystr,keycopy)) {
+ s->menu &= ~menu;
+#ifdef DEBUG
+ fprintf(stderr, "deleted menu entry %d\n", s->menu);
+#endif
+ }
+ }
+}
+
+
+/* Read and parse additional syntax files. */
+void parse_include(char *ptr)
+{
+ struct stat rcinfo;
+ FILE *rcstream;
+ char *option, *nanorc_save = nanorc, *expanded;
+ size_t lineno_save = lineno;
+
+ option = ptr;
+ if (*option == '"')
+ option++;
+ ptr = parse_argument(ptr);
+
+ /* Can't get the specified file's full path cause it may screw up
+ our cwd depending on the parent dirs' permissions, (see Savannah bug 25297) */
+
+ /* Don't open directories, character files, or block files. */
+ if (stat(option, &rcinfo) != -1) {
+ if (S_ISDIR(rcinfo.st_mode) || S_ISCHR(rcinfo.st_mode) ||
+ S_ISBLK(rcinfo.st_mode)) {
+ rcfile_error(S_ISDIR(rcinfo.st_mode) ?
+ _("\"%s\" is a directory") :
+ _("\"%s\" is a device file"), option);
+ }
+ }
+
+ expanded = real_dir_from_tilde(option);
+
+ /* Open the new syntax file. */
+ if ((rcstream = fopen(expanded, "rb")) == NULL) {
+ rcfile_error(_("Error reading %s: %s"), expanded,
+ strerror(errno));
+ return;
+ }
+
+ /* Use the name and line number position of the new syntax file
+ * while parsing it, so we can know where any errors in it are. */
+ nanorc = expanded;
+ lineno = 0;
+
+#ifdef DEBUG
+ fprintf(stderr, "Parsing file \"%s\" (expanded from \"%s\")\n", expanded, option);
+#endif
+
+ parse_rcfile(rcstream
+#ifdef ENABLE_COLOR
+ , TRUE
+#endif
+ );
+
+ /* We're done with the new syntax file. Restore the original
+ * filename and line number position. */
+ nanorc = nanorc_save;
+ lineno = lineno_save;
+
+}
+
+/* Return the short value corresponding to the color named in colorname,
+ * and set bright to TRUE if that color is bright. */
+short color_to_short(const char *colorname, bool *bright)
+{
+ short mcolor = -1;
+
+ assert(colorname != NULL && bright != NULL);
+
+ if (strncasecmp(colorname, "bright", 6) == 0) {
+ *bright = TRUE;
+ colorname += 6;
+ }
+
+ if (strcasecmp(colorname, "green") == 0)
+ mcolor = COLOR_GREEN;
+ else if (strcasecmp(colorname, "red") == 0)
+ mcolor = COLOR_RED;
+ else if (strcasecmp(colorname, "blue") == 0)
+ mcolor = COLOR_BLUE;
+ else if (strcasecmp(colorname, "white") == 0)
+ mcolor = COLOR_WHITE;
+ else if (strcasecmp(colorname, "yellow") == 0)
+ mcolor = COLOR_YELLOW;
+ else if (strcasecmp(colorname, "cyan") == 0)
+ mcolor = COLOR_CYAN;
+ else if (strcasecmp(colorname, "magenta") == 0)
+ mcolor = COLOR_MAGENTA;
+ else if (strcasecmp(colorname, "black") == 0)
+ mcolor = COLOR_BLACK;
+ else
+ rcfile_error(N_("Color \"%s\" not understood.\n"
+ "Valid colors are \"green\", \"red\", \"blue\",\n"
+ "\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
+ "\"black\", with the optional prefix \"bright\"\n"
+ "for foreground colors."), colorname);
+
+ return mcolor;
+}
+
+/* Parse the color string in the line at ptr, and add it to the current
+ * file's associated colors. If icase is TRUE, treat the color string
+ * as case insensitive. */
+void parse_colors(char *ptr, bool icase)
+{
+ short fg, bg;
+ bool bright = FALSE, no_fgcolor = FALSE;
+ char *fgstr;
+
+ assert(ptr != NULL);
+
+ if (syntaxes == NULL) {
+ rcfile_error(
+ N_("Cannot add a color command without a syntax command"));
+ return;
+ }
+
+ if (*ptr == '\0') {
+ rcfile_error(N_("Missing color name"));
+ return;
+ }
+
+ fgstr = ptr;
+ ptr = parse_next_word(ptr);
+
+ if (strchr(fgstr, ',') != NULL) {
+ char *bgcolorname;
+
+ strtok(fgstr, ",");
+ bgcolorname = strtok(NULL, ",");
+ if (bgcolorname == NULL) {
+ /* If we have a background color without a foreground color,
+ * parse it properly. */
+ bgcolorname = fgstr + 1;
+ no_fgcolor = TRUE;
+ }
+ if (strncasecmp(bgcolorname, "bright", 6) == 0) {
+ rcfile_error(
+ N_("Background color \"%s\" cannot be bright"),
+ bgcolorname);
+ return;
+ }
+ bg = color_to_short(bgcolorname, &bright);
+ } else
+ bg = -1;
+
+ if (!no_fgcolor) {
+ fg = color_to_short(fgstr, &bright);
+
+ /* Don't try to parse screwed-up foreground colors. */
+ if (fg == -1)
+ return;
+ } else
+ fg = -1;
+
+ if (*ptr == '\0') {
+ rcfile_error(N_("Missing regex string"));
+ return;
+ }
+
+ /* Now for the fun part. Start adding regexes to individual strings
+ * in the colorstrings array, woo! */
+ while (ptr != NULL && *ptr != '\0') {
+ colortype *newcolor;
+ /* The new color structure. */
+ bool cancelled = FALSE;
+ /* The start expression was bad. */
+ bool expectend = FALSE;
+ /* Do we expect an end= line? */
+
+ if (strncasecmp(ptr, "start=", 6) == 0) {
+ ptr += 6;
+ expectend = TRUE;
+ }
+
+ if (*ptr != '"') {
+ rcfile_error(
+ N_("Regex strings must begin and end with a \" character"));
+ ptr = parse_next_regex(ptr);
+ continue;
+ }
+
+ ptr++;
+
+ fgstr = ptr;
+ ptr = parse_next_regex(ptr);
+ if (ptr == NULL)
+ break;
+
+ newcolor = (colortype *)nmalloc(sizeof(colortype));
+
+ /* Save the starting regex string if it's valid, and set up the
+ * color information. */
+ if (nregcomp(fgstr, icase ? REG_ICASE : 0)) {
+ newcolor->fg = fg;
+ newcolor->bg = bg;
+ newcolor->bright = bright;
+ newcolor->icase = icase;
+
+ newcolor->start_regex = mallocstrcpy(NULL, fgstr);
+ newcolor->start = NULL;
+
+ newcolor->end_regex = NULL;
+ newcolor->end = NULL;
+
+ newcolor->next = NULL;
+
+ if (endcolor == NULL) {
+ endsyntax->color = newcolor;
+#ifdef DEBUG
+ fprintf(stderr, "Starting a new colorstring for fg %hd, bg %hd\n", fg, bg);
+#endif
+ } else {
+#ifdef DEBUG
+ fprintf(stderr, "Adding new entry for fg %hd, bg %hd\n", fg, bg);
+#endif
+ endcolor->next = newcolor;
+ }
+
+ endcolor = newcolor;
+ } else {
+ free(newcolor);
+ cancelled = TRUE;
+ }
+
+ if (expectend) {
+ if (ptr == NULL || strncasecmp(ptr, "end=", 4) != 0) {
+ rcfile_error(
+ N_("\"start=\" requires a corresponding \"end=\""));
+ return;
+ }
+ ptr += 4;
+ if (*ptr != '"') {
+ rcfile_error(
+ N_("Regex strings must begin and end with a \" character"));
+ continue;
+ }
+
+ ptr++;
+
+ fgstr = ptr;
+ ptr = parse_next_regex(ptr);
+ if (ptr == NULL)
+ break;
+
+ /* If the start regex was invalid, skip past the end regex to
+ * stay in sync. */
+ if (cancelled)
+ continue;
+
+ /* Save the ending regex string if it's valid. */
+ newcolor->end_regex = (nregcomp(fgstr, icase ? REG_ICASE :
+ 0)) ? mallocstrcpy(NULL, fgstr) : NULL;
+
+ /* Lame way to skip another static counter */
+ newcolor->id = endsyntax->nmultis;
+ endsyntax->nmultis++;
+ }
+ }
+}
+
+/* Parse the headers (1st line) of the file which may influence the regex used. */
+void parse_headers(char *ptr)
+{
+ char *regstr;
+
+ assert(ptr != NULL);
+
+ if (syntaxes == NULL) {
+ rcfile_error(
+ N_("Cannot add a header regex without a syntax command"));
+ return;
+ }
+
+ if (*ptr == '\0') {
+ rcfile_error(N_("Missing regex string"));
+ return;
+ }
+
+ /* Now for the fun part. Start adding regexes to individual strings
+ * in the colorstrings array, woo! */
+ while (ptr != NULL && *ptr != '\0') {
+ exttype *newheader;
+ /* The new color structure. */
+
+ if (*ptr != '"') {
+ rcfile_error(
+ N_("Regex strings must begin and end with a \" character"));
+ ptr = parse_next_regex(ptr);
+ continue;
+ }
+
+ ptr++;
+
+ regstr = ptr;
+ ptr = parse_next_regex(ptr);
+ if (ptr == NULL)
+ break;
+
+ newheader = (exttype *)nmalloc(sizeof(exttype));
+
+ /* Save the regex string if it's valid */
+ if (nregcomp(regstr, 0)) {
+ newheader->ext_regex = mallocstrcpy(NULL, regstr);
+ newheader->ext = NULL;
+ newheader->next = NULL;
+
+#ifdef DEBUG
+ fprintf(stderr, "Starting a new header entry: %s\n", newheader->ext_regex);
+#endif
+
+ if (endheader == NULL) {
+ endsyntax->headers = newheader;
+ } else {
+ endheader->next = newheader;
+ }
+
+ endheader = newheader;
+ } else
+ free(newheader);
+
+ }
+}
+#endif /* ENABLE_COLOR */
+
+/* Check whether the user has unmapped every shortcut for a
+sequence we consider 'vital', like the exit function */
+static void check_vitals_mapped(void)
+{
+ subnfunc *f;
+ int v;
+#define VITALS 5
+ short vitals[VITALS] = { DO_EXIT, DO_EXIT, CANCEL_MSG, CANCEL_MSG, CANCEL_MSG };
+ int inmenus[VITALS] = { MMAIN, MHELP, MWHEREIS, MREPLACE, MGOTOLINE };
+
+ for (v = 0; v < VITALS; v++) {
+ for (f = allfuncs; f != NULL; f = f->next) {
+ if (f->scfunc == vitals[v] && f->menus & inmenus[v]) {
+ const sc *s = first_sc_for(inmenus[v], f->scfunc);
+ if (!s) {
+ rcfile_error(N_("Fatal error: no keys mapped for function \"%s\""),
+ f->desc);
+ fprintf(stderr, N_("Exiting. Please use nano with the -I option if needed to adjust your nanorc settings\n"));
+ exit(1);
+ }
+ break;
+ }
+ }
+ }
+}
+
+/* Parse the rcfile, once it has been opened successfully at rcstream,
+ * and close it afterwards. If syntax_only is TRUE, only allow the file
+ * to contain color syntax commands: syntax, color, and icolor. */
+void parse_rcfile(FILE *rcstream
+#ifdef ENABLE_COLOR
+ , bool syntax_only
+#endif
+ )
+{
+ char *buf = NULL;
+ ssize_t len;
+ size_t n = 0;
+
+ while ((len = getline(&buf, &n, rcstream)) > 0) {
+ char *ptr, *keyword, *option;
+ int set = 0;
+ size_t i;
+
+ /* Ignore the newline. */
+ if (buf[len - 1] == '\n')
+ buf[len - 1] = '\0';
+
+ lineno++;
+ ptr = buf;
+ while (isblank(*ptr))
+ ptr++;
+
+ /* If we have a blank line or a comment, skip to the next
+ * line. */
+ if (*ptr == '\0' || *ptr == '#')
+ continue;
+
+ /* Otherwise, skip to the next space. */
+ keyword = ptr;
+ ptr = parse_next_word(ptr);
+
+ /* Try to parse the keyword. */
+ if (strcasecmp(keyword, "set") == 0) {
+#ifdef ENABLE_COLOR
+ if (syntax_only)
+ rcfile_error(
+ N_("Command \"%s\" not allowed in included file"),
+ keyword);
+ else
+#endif
+ set = 1;
+ } else if (strcasecmp(keyword, "unset") == 0) {
+#ifdef ENABLE_COLOR
+ if (syntax_only)
+ rcfile_error(
+ N_("Command \"%s\" not allowed in included file"),
+ keyword);
+ else
+#endif
+ set = -1;
+ }
+#ifdef ENABLE_COLOR
+ else if (strcasecmp(keyword, "include") == 0) {
+ if (syntax_only)
+ rcfile_error(
+ N_("Command \"%s\" not allowed in included file"),
+ keyword);
+ else
+ parse_include(ptr);
+ } else if (strcasecmp(keyword, "syntax") == 0) {
+ if (endsyntax != NULL && endcolor == NULL)
+ rcfile_error(N_("Syntax \"%s\" has no color commands"),
+ endsyntax->desc);
+ parse_syntax(ptr);
+ } else if (strcasecmp(keyword, "header") == 0)
+ parse_headers(ptr);
+ else if (strcasecmp(keyword, "color") == 0)
+ parse_colors(ptr, FALSE);
+ else if (strcasecmp(keyword, "icolor") == 0)
+ parse_colors(ptr, TRUE);
+ else if (strcasecmp(keyword, "bind") == 0)
+ parse_keybinding(ptr);
+ else if (strcasecmp(keyword, "unbind") == 0)
+ parse_unbinding(ptr);
+#endif /* ENABLE_COLOR */
+ else
+ rcfile_error(N_("Command \"%s\" not understood"), keyword);
+
+ if (set == 0)
+ continue;
+
+ if (*ptr == '\0') {
+ rcfile_error(N_("Missing flag"));
+ continue;
+ }
+
+ option = ptr;
+ ptr = parse_next_word(ptr);
+
+ for (i = 0; rcopts[i].name != NULL; i++) {
+ if (strcasecmp(option, rcopts[i].name) == 0) {
+#ifdef DEBUG
+ fprintf(stderr, "parse_rcfile(): name = \"%s\"\n", rcopts[i].name);
+#endif
+ if (set == 1) {
+ if (rcopts[i].flag != 0)
+ /* This option has a flag, so it doesn't take an
+ * argument. */
+ SET(rcopts[i].flag);
+ else {
+ /* This option doesn't have a flag, so it takes
+ * an argument. */
+ if (*ptr == '\0') {
+ rcfile_error(
+ N_("Option \"%s\" requires an argument"),
+ rcopts[i].name);
+ break;
+ }
+ option = ptr;
+ if (*option == '"')
+ option++;
+ ptr = parse_argument(ptr);
+
+ option = mallocstrcpy(NULL, option);
+#ifdef DEBUG
+ fprintf(stderr, "option = \"%s\"\n", option);
+#endif
+
+ /* Make sure option is a valid multibyte
+ * string. */
+ if (!is_valid_mbstring(option)) {
+ rcfile_error(
+ N_("Option is not a valid multibyte string"));
+ break;
+ }
+
+#ifndef DISABLE_OPERATINGDIR
+ if (strcasecmp(rcopts[i].name, "operatingdir") == 0)
+ operating_dir = option;
+ else
+#endif
+#ifndef DISABLE_WRAPJUSTIFY
+ if (strcasecmp(rcopts[i].name, "fill") == 0) {
+ if (!parse_num(option, &wrap_at)) {
+ rcfile_error(
+ N_("Requested fill size \"%s\" is invalid"),
+ option);
+ wrap_at = -CHARS_FROM_EOL;
+ } else
+ free(option);
+ } else
+#endif
+#ifndef NANO_TINY
+ if (strcasecmp(rcopts[i].name,
+ "matchbrackets") == 0) {
+ matchbrackets = option;
+ if (has_blank_mbchars(matchbrackets)) {
+ rcfile_error(
+ N_("Non-blank characters required"));
+ free(matchbrackets);
+ matchbrackets = NULL;
+ }
+ } else if (strcasecmp(rcopts[i].name,
+ "whitespace") == 0) {
+ whitespace = option;
+ if (mbstrlen(whitespace) != 2 ||
+ strlenpt(whitespace) != 2) {
+ rcfile_error(
+ N_("Two single-column characters required"));
+ free(whitespace);
+ whitespace = NULL;
+ } else {
+ whitespace_len[0] =
+ parse_mbchar(whitespace, NULL,
+ NULL);
+ whitespace_len[1] =
+ parse_mbchar(whitespace +
+ whitespace_len[0], NULL, NULL);
+ }
+ } else
+#endif
+#ifndef DISABLE_JUSTIFY
+ if (strcasecmp(rcopts[i].name, "punct") == 0) {
+ punct = option;
+ if (has_blank_mbchars(punct)) {
+ rcfile_error(
+ N_("Non-blank characters required"));
+ free(punct);
+ punct = NULL;
+ }
+ } else if (strcasecmp(rcopts[i].name,
+ "brackets") == 0) {
+ brackets = option;
+ if (has_blank_mbchars(brackets)) {
+ rcfile_error(
+ N_("Non-blank characters required"));
+ free(brackets);
+ brackets = NULL;
+ }
+ } else if (strcasecmp(rcopts[i].name,
+ "quotestr") == 0)
+ quotestr = option;
+ else
+#endif
+#ifndef NANO_TINY
+ if (strcasecmp(rcopts[i].name,
+ "backupdir") == 0)
+ backup_dir = option;
+ else
+#endif
+#ifndef DISABLE_SPELLER
+ if (strcasecmp(rcopts[i].name, "speller") == 0)
+ alt_speller = option;
+ else
+#endif
+ if (strcasecmp(rcopts[i].name,
+ "tabsize") == 0) {
+ if (!parse_num(option, &tabsize) ||
+ tabsize <= 0) {
+ rcfile_error(
+ N_("Requested tab size \"%s\" is invalid"),
+ option);
+ tabsize = -1;
+ } else
+ free(option);
+ } else
+ assert(FALSE);
+ }
+#ifdef DEBUG
+ fprintf(stderr, "flag = %ld\n", rcopts[i].flag);
+#endif
+ } else if (rcopts[i].flag != 0)
+ UNSET(rcopts[i].flag);
+ else
+ rcfile_error(N_("Cannot unset flag \"%s\""),
+ rcopts[i].name);
+ /* Looks like we still need this specific hack for undo */
+ if (strcasecmp(rcopts[i].name, "undo") == 0)
+ shortcut_init(0);
+ break;
+ }
+ }
+ if (rcopts[i].name == NULL)
+ rcfile_error(N_("Unknown flag \"%s\""), option);
+ }
+
+#ifdef ENABLE_COLOR
+ if (endsyntax != NULL && endcolor == NULL)
+ rcfile_error(N_("Syntax \"%s\" has no color commands"),
+ endsyntax->desc);
+#endif
+
+ free(buf);
+ fclose(rcstream);
+ lineno = 0;
+
+ check_vitals_mapped();
+ return;
+}
+
+/* The main rcfile function. It tries to open the system-wide rcfile,
+ * followed by the current user's rcfile. */
+void do_rcfile(void)
+{
+ struct stat rcinfo;
+ FILE *rcstream;
+
+ nanorc = mallocstrcpy(nanorc, SYSCONFDIR "/nanorc");
+
+ /* Don't open directories, character files, or block files. */
+ if (stat(nanorc, &rcinfo) != -1) {
+ if (S_ISDIR(rcinfo.st_mode) || S_ISCHR(rcinfo.st_mode) ||
+ S_ISBLK(rcinfo.st_mode))
+ rcfile_error(S_ISDIR(rcinfo.st_mode) ?
+ _("\"%s\" is a directory") :
+ _("\"%s\" is a device file"), nanorc);
+ }
+
+#ifdef DEBUG
+ fprintf(stderr, "Parsing file \"%s\"\n", nanorc);
+#endif
+
+ /* Try to open the system-wide nanorc. */
+ rcstream = fopen(nanorc, "rb");
+ if (rcstream != NULL)
+ parse_rcfile(rcstream
+#ifdef ENABLE_COLOR
+ , FALSE
+#endif
+ );
+
+#ifdef DISABLE_ROOTWRAPPING
+ /* We've already read SYSCONFDIR/nanorc, if it's there. If we're
+ * root, and --disable-wrapping-as-root is used, turn wrapping off
+ * now. */
+ if (geteuid() == NANO_ROOT_UID)
+ SET(NO_WRAP);
+#endif
+
+ get_homedir();
+
+ if (homedir == NULL)
+ rcfile_error(N_("I can't find my home directory! Wah!"));
+ else {
+#ifndef RCFILE_NAME
+#define RCFILE_NAME ".nanorc"
+#endif
+ nanorc = charealloc(nanorc, strlen(homedir) + strlen(RCFILE_NAME) + 2);
+ sprintf(nanorc, "%s/%s", homedir, RCFILE_NAME);
+
+ /* Don't open directories, character files, or block files. */
+ if (stat(nanorc, &rcinfo) != -1) {
+ if (S_ISDIR(rcinfo.st_mode) || S_ISCHR(rcinfo.st_mode) ||
+ S_ISBLK(rcinfo.st_mode))
+ rcfile_error(S_ISDIR(rcinfo.st_mode) ?
+ _("\"%s\" is a directory") :
+ _("\"%s\" is a device file"), nanorc);
+ }
+
+ /* Try to open the current user's nanorc. */
+ rcstream = fopen(nanorc, "rb");
+ if (rcstream == NULL) {
+ /* Don't complain about the file's not existing. */
+ if (errno != ENOENT)
+ rcfile_error(N_("Error reading %s: %s"), nanorc,
+ strerror(errno));
+ } else
+ parse_rcfile(rcstream
+#ifdef ENABLE_COLOR
+ , FALSE
+#endif
+ );
+ }
+
+ free(nanorc);
+ nanorc = NULL;
+
+ if (errors && !ISSET(QUIET)) {
+ errors = FALSE;
+ fprintf(stderr,
+ _("\nPress Enter to continue starting nano.\n"));
+ while (getchar() != '\n')
+ ;
+ }
+
+#ifdef ENABLE_COLOR
+ set_colorpairs();
+#endif
+}
+
+#endif /* ENABLE_NANORC */
diff --git a/src/search.c b/src/search.c
new file mode 100644
index 0000000..4b93045
--- /dev/null
+++ b/src/search.c
@@ -0,0 +1,1489 @@
+/* $Id: search.c 4472 2010-01-05 23:35:50Z astyanax $ */
+/**************************************************************************
+ * search.c *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <string.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <errno.h>
+#include <time.h>
+
+static bool search_last_line = FALSE;
+ /* Have we gone past the last line while searching? */
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+static bool history_changed = FALSE;
+ /* Have any of the history lists changed? */
+#endif
+#ifdef HAVE_REGEX_H
+static bool regexp_compiled = FALSE;
+ /* Have we compiled any regular expressions? */
+
+/* Compile the regular expression regexp to see if it's valid. Return
+ * TRUE if it is, or FALSE otherwise. */
+bool regexp_init(const char *regexp)
+{
+ int rc;
+
+ assert(!regexp_compiled);
+
+ rc = regcomp(&search_regexp, regexp, REG_EXTENDED
+#ifndef NANO_TINY
+ | (ISSET(CASE_SENSITIVE) ? 0 : REG_ICASE)
+#endif
+ );
+
+ if (rc != 0) {
+ size_t len = regerror(rc, &search_regexp, NULL, 0);
+ char *str = charalloc(len);
+
+ regerror(rc, &search_regexp, str, len);
+ statusbar(_("Bad regex \"%s\": %s"), regexp, str);
+ free(str);
+
+ return FALSE;
+ }
+
+ regexp_compiled = TRUE;
+
+ return TRUE;
+}
+
+/* Decompile the compiled regular expression we used in the last
+ * search, if any. */
+void regexp_cleanup(void)
+{
+ if (regexp_compiled) {
+ regexp_compiled = FALSE;
+ regfree(&search_regexp);
+ }
+}
+#endif
+
+/* Indicate on the statusbar that the string at str was not found by the
+ * last search. */
+void not_found_msg(const char *str)
+{
+ char *disp;
+ int numchars;
+
+ assert(str != NULL);
+
+ disp = display_string(str, 0, (COLS / 2) + 1, FALSE);
+ numchars = actual_x(disp, mbstrnlen(disp, COLS / 2));
+
+ statusbar(_("\"%.*s%s\" not found"), numchars, disp,
+ (disp[numchars] == '\0') ? "" : "...");
+
+ free(disp);
+}
+
+/* Abort the current search or replace. Clean up by displaying the main
+ * shortcut list, updating the screen if the mark was on before, and
+ * decompiling the compiled regular expression we used in the last
+ * search, if any. */
+void search_replace_abort(void)
+{
+ display_main_list();
+#ifndef NANO_TINY
+ if (openfile->mark_set)
+ edit_refresh();
+#endif
+#ifdef HAVE_REGEX_H
+ regexp_cleanup();
+#endif
+}
+
+/* Initialize the global search and replace strings. */
+void search_init_globals(void)
+{
+ if (last_search == NULL)
+ last_search = mallocstrcpy(NULL, "");
+ if (last_replace == NULL)
+ last_replace = mallocstrcpy(NULL, "");
+}
+
+/* Set up the system variables for a search or replace. If use_answer
+ * is TRUE, only set backupstring to answer. Return -2 to run the
+ * opposite program (search -> replace, replace -> search), return -1 if
+ * the search should be canceled (due to Cancel, a blank search string,
+ * Go to Line, or a failed regcomp()), return 0 on success, and return 1
+ * on rerun calling program.
+ *
+ * replacing is TRUE if we call from do_replace(), and FALSE if called
+ * from do_search(). */
+int search_init(bool replacing, bool use_answer)
+{
+ int i = 0;
+ char *buf;
+ sc *s;
+ char func = 0;
+ bool meta_key = FALSE, func_key = FALSE;
+ static char *backupstring = NULL;
+ /* The search string we'll be using. */
+
+ /* If backupstring doesn't exist, initialize it to "". */
+ if (backupstring == NULL)
+ backupstring = mallocstrcpy(NULL, "");
+
+ /* If use_answer is TRUE, set backupstring to answer and get out. */
+ if (use_answer) {
+ backupstring = mallocstrcpy(backupstring, answer);
+ return 0;
+ }
+
+ /* We display the search prompt below. If the user types a partial
+ * search string and then Replace or a toggle, we will return to
+ * do_search() or do_replace() and be called again. In that case,
+ * we should put the same search string back up. */
+
+ search_init_globals();
+
+ if (last_search[0] != '\0') {
+ char *disp = display_string(last_search, 0, COLS / 3, FALSE);
+
+ buf = charalloc(strlen(disp) + 7);
+ /* We use (COLS / 3) here because we need to see more on the
+ * line. */
+ sprintf(buf, " [%s%s]", disp,
+ (strlenpt(last_search) > COLS / 3) ? "..." : "");
+ free(disp);
+ } else
+ buf = mallocstrcpy(NULL, "");
+
+ /* This is now one simple call. It just does a lot. */
+ i = do_prompt(FALSE,
+#ifndef DISABLE_TABCOMP
+ TRUE,
+#endif
+ replacing ? MREPLACE : MWHEREIS, backupstring,
+ &meta_key, &func_key,
+#ifndef NANO_TINY
+ &search_history,
+#endif
+ edit_refresh, "%s%s%s%s%s%s", _("Search"),
+#ifndef NANO_TINY
+ /* TRANSLATORS: This string is just a modifier for the search
+ * prompt; no grammar is implied. */
+ ISSET(CASE_SENSITIVE) ? _(" [Case Sensitive]") :
+#endif
+ "",
+#ifdef HAVE_REGEX_H
+ /* TRANSLATORS: This string is just a modifier for the search
+ * prompt; no grammar is implied. */
+ ISSET(USE_REGEXP) ? _(" [Regexp]") :
+#endif
+ "",
+#ifndef NANO_TINY
+ /* TRANSLATORS: This string is just a modifier for the search
+ * prompt; no grammar is implied. */
+ ISSET(BACKWARDS_SEARCH) ? _(" [Backwards]") :
+#endif
+ "", replacing ?
+#ifndef NANO_TINY
+ openfile->mark_set ? _(" (to replace) in selection") :
+#endif
+ _(" (to replace)") : "", buf);
+
+ fflush(stderr);
+
+ /* Release buf now that we don't need it anymore. */
+ free(buf);
+
+ free(backupstring);
+ backupstring = NULL;
+
+ /* Cancel any search, or just return with no previous search. */
+ if (i == -1 || (i < 0 && *last_search == '\0') || (!replacing &&
+ i == 0 && *answer == '\0')) {
+ statusbar(_("Cancelled"));
+ return -1;
+ } else {
+ for (s = sclist; s != NULL; s = s->next)
+ if ((s->menu & currmenu) && i == s->seq) {
+ func = s->scfunc;
+ break;
+ }
+
+ if (i == -2 || i == 0 ) {
+#ifdef HAVE_REGEX_H
+ /* Use last_search if answer is an empty string, or
+ * answer if it isn't. */
+ if (ISSET(USE_REGEXP) && !regexp_init((i == -2) ?
+ last_search : answer))
+ return -1;
+#endif
+ ;
+#ifndef NANO_TINY
+ } else if (func == CASE_SENS_MSG) {
+ TOGGLE(CASE_SENSITIVE);
+ backupstring = mallocstrcpy(backupstring, answer);
+ return 1;
+ } else if (func == BACKWARDS_MSG) {
+ TOGGLE(BACKWARDS_SEARCH);
+ backupstring = mallocstrcpy(backupstring, answer);
+ return 1;
+#endif
+#ifdef HAVE_REGEX_H
+ } else if (func == REGEXP_MSG) {
+ TOGGLE(USE_REGEXP);
+ backupstring = mallocstrcpy(backupstring, answer);
+ return 1;
+#endif
+ } else if (func == DO_REPLACE ||
+ func == NO_REPLACE_MSG) {
+ backupstring = mallocstrcpy(backupstring, answer);
+ return -2; /* Call the opposite search function. */
+ } else if (func == DO_GOTOLINECOLUMN_VOID) {
+ do_gotolinecolumn(openfile->current->lineno,
+ openfile->placewewant + 1, TRUE, TRUE, FALSE,
+ TRUE);
+ /* Put answer up on the statusbar and
+ * fall through. */
+ return 3;
+ } else {
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+/* Look for needle, starting at (current, current_x). If no_sameline is
+ * TRUE, skip over begin when looking for needle. begin is the line
+ * where we first started searching, at column begin_x. The return
+ * value specifies whether we found anything. If we did, set needle_len
+ * to the length of the string we found if it isn't NULL. */
+bool findnextstr(
+#ifndef DISABLE_SPELLER
+ bool whole_word,
+#endif
+ bool no_sameline, const filestruct *begin, size_t begin_x, const
+ char *needle, size_t *needle_len)
+{
+ size_t found_len;
+ /* The length of the match we find. */
+ size_t current_x_find = 0;
+ /* The location in the current line of the match we find. */
+ ssize_t current_y_find = openfile->current_y;
+ filestruct *fileptr = openfile->current;
+ const char *rev_start = fileptr->data, *found = NULL;
+ const subnfunc *f;
+ time_t lastkbcheck = time(NULL);
+
+ /* rev_start might end up 1 character before the start or after the
+ * end of the line. This won't be a problem because strstrwrapper()
+ * will return immediately and say that no match was found, and
+ * rev_start will be properly set when the search continues on the
+ * previous or next line. */
+ rev_start +=
+#ifndef NANO_TINY
+ ISSET(BACKWARDS_SEARCH) ?
+ openfile->current_x - 1 :
+#endif
+ openfile->current_x + 1;
+
+ /* Look for needle in the current line we're searching. */
+ enable_nodelay();
+ while (TRUE) {
+ if (time(NULL) - lastkbcheck > 1) {
+ lastkbcheck = time(NULL);
+ f = getfuncfromkey(edit);
+ if (f && f->scfunc == CANCEL_MSG) {
+ statusbar(_("Cancelled"));
+ return FALSE;
+ }
+ }
+
+ found = strstrwrapper(fileptr->data, needle, rev_start);
+
+ /* We've found a potential match. */
+ if (found != NULL) {
+#ifndef DISABLE_SPELLER
+ bool found_whole = FALSE;
+ /* Is this potential match a whole word? */
+#endif
+
+ /* Set found_len to the length of the potential match. */
+ found_len =
+#ifdef HAVE_REGEX_H
+ ISSET(USE_REGEXP) ?
+ regmatches[0].rm_eo - regmatches[0].rm_so :
+#endif
+ strlen(needle);
+
+#ifndef DISABLE_SPELLER
+ /* If we're searching for whole words, see if this potential
+ * match is a whole word. */
+ if (whole_word) {
+ char *word = mallocstrncpy(NULL, found, found_len + 1);
+ word[found_len] = '\0';
+
+ found_whole = is_whole_word(found - fileptr->data,
+ fileptr->data, word);
+ free(word);
+ }
+#endif
+
+ /* If we're searching for whole words and this potential
+ * match isn't a whole word, or if we're not allowed to find
+ * a match on the same line we started on and this potential
+ * match is on that line, continue searching. */
+ if (
+#ifndef DISABLE_SPELLER
+ (!whole_word || found_whole) &&
+#endif
+ (!no_sameline || fileptr != openfile->current))
+ break;
+ }
+
+ /* We've finished processing the file, so get out. */
+ if (search_last_line) {
+ not_found_msg(needle);
+ disable_nodelay();
+ return FALSE;
+ }
+
+ /* Move to the previous or next line in the file. */
+#ifndef NANO_TINY
+ if (ISSET(BACKWARDS_SEARCH)) {
+ fileptr = fileptr->prev;
+ current_y_find--;
+ } else {
+#endif
+ fileptr = fileptr->next;
+ current_y_find++;
+#ifndef NANO_TINY
+ }
+#endif
+
+ /* We've reached the start or end of the buffer, so wrap
+ * around. */
+ if (fileptr == NULL) {
+#ifndef NANO_TINY
+ if (ISSET(BACKWARDS_SEARCH)) {
+ fileptr = openfile->filebot;
+ current_y_find = editwinrows - 1;
+ } else {
+#endif
+ fileptr = openfile->fileage;
+ current_y_find = 0;
+#ifndef NANO_TINY
+ }
+#endif
+ statusbar(_("Search Wrapped"));
+ }
+
+ /* We've reached the original starting line. */
+ if (fileptr == begin)
+ search_last_line = TRUE;
+
+ rev_start = fileptr->data;
+#ifndef NANO_TINY
+ if (ISSET(BACKWARDS_SEARCH))
+ rev_start += strlen(fileptr->data);
+#endif
+ }
+
+ /* We found an instance. */
+ current_x_find = found - fileptr->data;
+
+ /* Ensure we haven't wrapped around again! */
+ if (search_last_line &&
+#ifndef NANO_TINY
+ ((!ISSET(BACKWARDS_SEARCH) && current_x_find > begin_x) ||
+ (ISSET(BACKWARDS_SEARCH) && current_x_find < begin_x))
+#else
+ current_x_find > begin_x
+#endif
+ ) {
+ not_found_msg(needle);
+ disable_nodelay();
+ return FALSE;
+ }
+
+ disable_nodelay();
+ /* We've definitely found something. */
+ openfile->current = fileptr;
+ openfile->current_x = current_x_find;
+ openfile->placewewant = xplustabs();
+ openfile->current_y = current_y_find;
+
+ /* needle_len holds the length of needle. */
+ if (needle_len != NULL)
+ *needle_len = found_len;
+
+ return TRUE;
+}
+
+/* Clear the flag indicating that a search reached the last line of the
+ * file. We need to do this just before a new search. */
+void findnextstr_wrap_reset(void)
+{
+ search_last_line = FALSE;
+}
+
+/* Search for a string. */
+void do_search(void)
+{
+ filestruct *fileptr = openfile->current;
+ size_t fileptr_x = openfile->current_x;
+ size_t pww_save = openfile->placewewant;
+ int i;
+ bool didfind;
+
+ i = search_init(FALSE, FALSE);
+
+ if (i == -1)
+ /* Cancel, Go to Line, blank search string, or regcomp()
+ * failed. */
+ search_replace_abort();
+ else if (i == -2)
+ /* Replace. */
+ do_replace();
+#if !defined(NANO_TINY) || defined(HAVE_REGEX_H)
+ else if (i == 1)
+ /* Case Sensitive, Backwards, or Regexp search toggle. */
+ do_search();
+#endif
+
+ if (i != 0)
+ return;
+
+ /* If answer is now "", copy last_search into answer. */
+ if (*answer == '\0')
+ answer = mallocstrcpy(answer, last_search);
+ else
+ last_search = mallocstrcpy(last_search, answer);
+
+#ifndef NANO_TINY
+ /* If answer is not "", add this search string to the search history
+ * list. */
+ if (answer[0] != '\0')
+ update_history(&search_history, answer);
+#endif
+
+ findnextstr_wrap_reset();
+ didfind = findnextstr(
+#ifndef DISABLE_SPELLER
+ FALSE,
+#endif
+ FALSE, openfile->current, openfile->current_x, answer, NULL);
+
+ /* Check to see if there's only one occurrence of the string and
+ * we're on it now. */
+ if (fileptr == openfile->current && fileptr_x ==
+ openfile->current_x && didfind) {
+#ifdef HAVE_REGEX_H
+ /* Do the search again, skipping over the current line, if we're
+ * doing a bol and/or eol regex search ("^", "$", or "^$"), so
+ * that we find one only once per line. We should only end up
+ * back at the same position if the string isn't found again, in
+ * which case it's the only occurrence. */
+ if (ISSET(USE_REGEXP) && regexp_bol_or_eol(&search_regexp,
+ last_search)) {
+ didfind = findnextstr(
+#ifndef DISABLE_SPELLER
+ FALSE,
+#endif
+ TRUE, openfile->current,
+ openfile->current_x, answer, NULL);
+ if (fileptr == openfile->current && fileptr_x ==
+ openfile->current_x && !didfind)
+ statusbar(_("This is the only occurrence"));
+ } else {
+#endif
+ statusbar(_("This is the only occurrence"));
+#ifdef HAVE_REGEX_H
+ }
+#endif
+ }
+
+ openfile->placewewant = xplustabs();
+ edit_redraw(fileptr, pww_save);
+ search_replace_abort();
+}
+
+#ifndef NANO_TINY
+/* Search for the last string without prompting. */
+void do_research(void)
+{
+ filestruct *fileptr = openfile->current;
+ size_t fileptr_x = openfile->current_x;
+ size_t pww_save = openfile->placewewant;
+ bool didfind;
+
+ search_init_globals();
+
+ if (last_search[0] != '\0') {
+#ifdef HAVE_REGEX_H
+ /* Since answer is "", use last_search! */
+ if (ISSET(USE_REGEXP) && !regexp_init(last_search))
+ return;
+#endif
+
+ findnextstr_wrap_reset();
+ didfind = findnextstr(
+#ifndef DISABLE_SPELLER
+ FALSE,
+#endif
+ FALSE, openfile->current, openfile->current_x,
+ last_search, NULL);
+
+ /* Check to see if there's only one occurrence of the string and
+ * we're on it now. */
+ if (fileptr == openfile->current && fileptr_x ==
+ openfile->current_x && didfind) {
+#ifdef HAVE_REGEX_H
+ /* Do the search again, skipping over the current line, if
+ * we're doing a bol and/or eol regex search ("^", "$", or
+ * "^$"), so that we find one only once per line. We should
+ * only end up back at the same position if the string isn't
+ * found again, in which case it's the only occurrence. */
+ if (ISSET(USE_REGEXP) && regexp_bol_or_eol(&search_regexp,
+ last_search)) {
+ didfind = findnextstr(
+#ifndef DISABLE_SPELLER
+ FALSE,
+#endif
+ TRUE, openfile->current, openfile->current_x,
+ answer, NULL);
+ if (fileptr == openfile->current && fileptr_x ==
+ openfile->current_x && !didfind)
+ statusbar(_("This is the only occurrence"));
+ } else {
+#endif
+ statusbar(_("This is the only occurrence"));
+#ifdef HAVE_REGEX_H
+ }
+#endif
+ }
+ } else
+ statusbar(_("No current search pattern"));
+
+ openfile->placewewant = xplustabs();
+ edit_redraw(fileptr, pww_save);
+ search_replace_abort();
+}
+#endif
+
+#ifdef HAVE_REGEX_H
+int replace_regexp(char *string, bool create)
+{
+ /* We have a split personality here. If create is FALSE, just
+ * calculate the size of the replacement line (necessary because of
+ * subexpressions \1 to \9 in the replaced text). */
+
+ const char *c = last_replace;
+ size_t search_match_count = regmatches[0].rm_eo -
+ regmatches[0].rm_so;
+ size_t new_line_size = strlen(openfile->current->data) + 1 -
+ search_match_count;
+
+ /* Iterate through the replacement text to handle subexpression
+ * replacement using \1, \2, \3, etc. */
+ while (*c != '\0') {
+ int num = (*(c + 1) - '0');
+
+ if (*c != '\\' || num < 1 || num > 9 || num >
+ search_regexp.re_nsub) {
+ if (create)
+ *string++ = *c;
+ c++;
+ new_line_size++;
+ } else {
+ size_t i = regmatches[num].rm_eo - regmatches[num].rm_so;
+
+ /* Skip over the replacement expression. */
+ c += 2;
+
+ /* But add the length of the subexpression to new_size. */
+ new_line_size += i;
+
+ /* And if create is TRUE, append the result of the
+ * subexpression match to the new line. */
+ if (create) {
+ strncpy(string, openfile->current->data +
+ openfile->current_x + regmatches[num].rm_so, i);
+ string += i;
+ }
+ }
+ }
+
+ if (create)
+ *string = '\0';
+
+ return new_line_size;
+}
+#endif
+
+char *replace_line(const char *needle)
+{
+ char *copy;
+ size_t new_line_size, search_match_count;
+
+ /* Calculate the size of the new line. */
+#ifdef HAVE_REGEX_H
+ if (ISSET(USE_REGEXP)) {
+ search_match_count = regmatches[0].rm_eo - regmatches[0].rm_so;
+ new_line_size = replace_regexp(NULL, FALSE);
+ } else {
+#endif
+ search_match_count = strlen(needle);
+ new_line_size = strlen(openfile->current->data) -
+ search_match_count + strlen(answer) + 1;
+#ifdef HAVE_REGEX_H
+ }
+#endif
+
+ /* Create the buffer. */
+ copy = charalloc(new_line_size);
+
+ /* The head of the original line. */
+ strncpy(copy, openfile->current->data, openfile->current_x);
+
+ /* The replacement text. */
+#ifdef HAVE_REGEX_H
+ if (ISSET(USE_REGEXP))
+ replace_regexp(copy + openfile->current_x, TRUE);
+ else
+#endif
+ strcpy(copy + openfile->current_x, answer);
+
+ /* The tail of the original line. */
+ assert(openfile->current_x + search_match_count <= strlen(openfile->current->data));
+
+ strcat(copy, openfile->current->data + openfile->current_x +
+ search_match_count);
+
+ return copy;
+}
+
+/* Step through each replace word and prompt user before replacing.
+ * Parameters real_current and real_current_x are needed in order to
+ * allow the cursor position to be updated when a word before the cursor
+ * is replaced by a shorter word.
+ *
+ * needle is the string to seek. We replace it with answer. Return -1
+ * if needle isn't found, else the number of replacements performed. If
+ * canceled isn't NULL, set it to TRUE if we canceled. */
+ssize_t do_replace_loop(
+#ifndef DISABLE_SPELLER
+ bool whole_word,
+#endif
+ bool *canceled, const filestruct *real_current, size_t
+ *real_current_x, const char *needle)
+{
+ ssize_t numreplaced = -1;
+ size_t match_len;
+ bool replaceall = FALSE;
+#ifdef HAVE_REGEX_H
+ /* The starting-line match and bol/eol regex flags. */
+ bool begin_line = FALSE, bol_or_eol = FALSE;
+#endif
+#ifndef NANO_TINY
+ bool old_mark_set = openfile->mark_set;
+ filestruct *edittop_save = openfile->edittop, *top, *bot;
+ size_t top_x, bot_x;
+ bool right_side_up = FALSE;
+ /* TRUE if (mark_begin, mark_begin_x) is the top of the mark,
+ * FALSE if (current, current_x) is. */
+
+ if (old_mark_set) {
+ /* If the mark is on, partition the filestruct so that it
+ * contains only the marked text, set edittop to the top of the
+ * partition, turn the mark off, and refresh the screen. */
+ mark_order((const filestruct **)&top, &top_x,
+ (const filestruct **)&bot, &bot_x, &right_side_up);
+ filepart = partition_filestruct(top, top_x, bot, bot_x);
+ openfile->edittop = openfile->fileage;
+ openfile->mark_set = FALSE;
+#ifdef ENABLE_COLOR
+ reset_multis(openfile->current, TRUE);
+#endif
+ edit_refresh();
+ }
+#endif
+
+ if (canceled != NULL)
+ *canceled = FALSE;
+
+ findnextstr_wrap_reset();
+ while (findnextstr(
+#ifndef DISABLE_SPELLER
+ whole_word,
+#endif
+#ifdef HAVE_REGEX_H
+ /* We should find a bol and/or eol regex only once per line. If
+ * the bol_or_eol flag is set, it means that the last search
+ * found one on the beginning line, so we should skip over the
+ * beginning line when doing this search. */
+ bol_or_eol
+#else
+ FALSE
+#endif
+ , real_current, *real_current_x, needle, &match_len)) {
+ int i = 0;
+
+#ifdef HAVE_REGEX_H
+ /* If the bol_or_eol flag is set, we've found a match on the
+ * beginning line already, and we're still on the beginning line
+ * after the search, it means that we've wrapped around, so
+ * we're done. */
+ if (bol_or_eol && begin_line && openfile->current ==
+ real_current)
+ break;
+ /* Otherwise, set the begin_line flag if we've found a match on
+ * the beginning line, reset the bol_or_eol flag, and
+ * continue. */
+ else {
+ if (openfile->current == real_current)
+ begin_line = TRUE;
+ bol_or_eol = FALSE;
+ }
+#endif
+
+ if (!replaceall)
+ edit_refresh();
+
+ /* Indicate that we found the search string. */
+ if (numreplaced == -1)
+ numreplaced = 0;
+
+ if (!replaceall) {
+ size_t xpt = xplustabs();
+ char *exp_word = display_string(openfile->current->data,
+ xpt, strnlenpt(openfile->current->data,
+ openfile->current_x + match_len) - xpt, FALSE);
+
+ curs_set(0);
+
+ do_replace_highlight(TRUE, exp_word);
+
+ i = do_yesno_prompt(TRUE, _("Replace this instance?"));
+
+ do_replace_highlight(FALSE, exp_word);
+
+ free(exp_word);
+
+ curs_set(1);
+
+ if (i == -1) { /* We canceled the replace. */
+ if (canceled != NULL)
+ *canceled = TRUE;
+ break;
+ }
+ }
+
+#ifdef HAVE_REGEX_H
+ /* Set the bol_or_eol flag if we're doing a bol and/or eol regex
+ * replace ("^", "$", or "^$"). */
+ if (ISSET(USE_REGEXP) && regexp_bol_or_eol(&search_regexp,
+ needle))
+ bol_or_eol = TRUE;
+#endif
+
+ if (i > 0 || replaceall) { /* Yes, replace it!!!! */
+ char *copy;
+ size_t length_change;
+
+#ifndef NANO_TINY
+ update_undo(REPLACE);
+#endif
+ if (i == 2)
+ replaceall = TRUE;
+
+ copy = replace_line(needle);
+
+ length_change = strlen(copy) -
+ strlen(openfile->current->data);
+
+#ifndef NANO_TINY
+ /* If the mark was on and (mark_begin, mark_begin_x) was the
+ * top of it, don't change mark_begin_x. */
+ if (!old_mark_set || !right_side_up) {
+ /* Keep mark_begin_x in sync with the text changes. */
+ if (openfile->current == openfile->mark_begin &&
+ openfile->mark_begin_x > openfile->current_x) {
+ if (openfile->mark_begin_x < openfile->current_x +
+ match_len)
+ openfile->mark_begin_x = openfile->current_x;
+ else
+ openfile->mark_begin_x += length_change;
+ }
+ }
+
+ /* If the mark was on and (current, current_x) was the top
+ * of it, don't change real_current_x. */
+ if (!old_mark_set || right_side_up) {
+#endif
+ /* Keep real_current_x in sync with the text changes. */
+ if (openfile->current == real_current &&
+ openfile->current_x <= *real_current_x) {
+ if (*real_current_x <
+ openfile->current_x + match_len)
+ *real_current_x = openfile->current_x +
+ match_len;
+ *real_current_x += length_change;
+ }
+#ifndef NANO_TINY
+ }
+#endif
+
+ /* Set the cursor at the last character of the replacement
+ * text, so searching will resume after the replacement
+ * text. Note that current_x might be set to (size_t)-1
+ * here. */
+#ifndef NANO_TINY
+ if (!ISSET(BACKWARDS_SEARCH))
+#endif
+ openfile->current_x += match_len + length_change - 1;
+
+ /* Cleanup. */
+ openfile->totsize += mbstrlen(copy) -
+ mbstrlen(openfile->current->data);
+ free(openfile->current->data);
+ openfile->current->data = copy;
+
+#ifdef ENABLE_COLOR
+ reset_multis(openfile->current, TRUE);
+#endif
+ edit_refresh();
+ if (!replaceall) {
+#ifdef ENABLE_COLOR
+ /* If color syntaxes are available and turned on, we
+ * need to call edit_refresh(). */
+ if (openfile->colorstrings != NULL &&
+ !ISSET(NO_COLOR_SYNTAX))
+ edit_refresh();
+ else
+#endif
+ update_line(openfile->current, openfile->current_x);
+ }
+
+ set_modified();
+ numreplaced++;
+ }
+ }
+
+#ifndef NANO_TINY
+ if (old_mark_set) {
+ /* If the mark was on, unpartition the filestruct so that it
+ * contains all the text again, set edittop back to what it was
+ * before, turn the mark back on, and refresh the screen. */
+ unpartition_filestruct(&filepart);
+ openfile->edittop = edittop_save;
+ openfile->mark_set = TRUE;
+ edit_refresh();
+ }
+#endif
+
+ /* If the NO_NEWLINES flag isn't set, and text has been added to the
+ * magicline, make a new magicline. */
+ if (!ISSET(NO_NEWLINES) && openfile->filebot->data[0] != '\0')
+ new_magicline();
+
+ return numreplaced;
+}
+
+/* Replace a string. */
+void do_replace(void)
+{
+ filestruct *edittop_save, *begin;
+ size_t begin_x, pww_save;
+ bool meta_key = FALSE, func_key = FALSE;
+ ssize_t numreplaced;
+ int i;
+
+ if (ISSET(VIEW_MODE)) {
+ print_view_warning();
+ search_replace_abort();
+ return;
+ }
+
+ i = search_init(TRUE, FALSE);
+ if (i == -1) {
+ /* Cancel, Go to Line, blank search string, or regcomp()
+ * failed. */
+ search_replace_abort();
+ return;
+ } else if (i == -2) {
+ /* No Replace. */
+ do_search();
+ return;
+ } else if (i == 1)
+ /* Case Sensitive, Backwards, or Regexp search toggle. */
+ do_replace();
+
+ if (i != 0)
+ return;
+
+ /* If answer is not "", add answer to the search history list and
+ * copy answer into last_search. */
+ if (answer[0] != '\0') {
+#ifndef NANO_TINY
+ update_history(&search_history, answer);
+#endif
+ last_search = mallocstrcpy(last_search, answer);
+ }
+
+ last_replace = mallocstrcpy(last_replace, "");
+
+ i = do_prompt(FALSE,
+#ifndef DISABLE_TABCOMP
+ TRUE,
+#endif
+ MREPLACE2, last_replace,
+ &meta_key, &func_key,
+#ifndef NANO_TINY
+ &replace_history,
+#endif
+ edit_refresh, _("Replace with"));
+
+#ifndef NANO_TINY
+ /* Add this replace string to the replace history list. i == 0
+ * means that the string is not "". */
+ if (i == 0)
+ update_history(&replace_history, answer);
+#endif
+
+ if (i != 0 && i != -2) {
+ if (i == -1) { /* Cancel. */
+ if (last_replace[0] != '\0')
+ answer = mallocstrcpy(answer, last_replace);
+ statusbar(_("Cancelled"));
+ }
+ search_replace_abort();
+ return;
+ }
+
+ last_replace = mallocstrcpy(last_replace, answer);
+
+ /* Save where we are. */
+ edittop_save = openfile->edittop;
+ begin = openfile->current;
+ begin_x = openfile->current_x;
+ pww_save = openfile->placewewant;
+
+ numreplaced = do_replace_loop(
+#ifndef DISABLE_SPELLER
+ FALSE,
+#endif
+ NULL, begin, &begin_x, last_search);
+
+ /* Restore where we were. */
+ openfile->edittop = edittop_save;
+ openfile->current = begin;
+ openfile->current_x = begin_x;
+ openfile->placewewant = pww_save;
+
+ edit_refresh();
+
+ if (numreplaced >= 0)
+ statusbar(P_("Replaced %lu occurrence",
+ "Replaced %lu occurrences", (unsigned long)numreplaced),
+ (unsigned long)numreplaced);
+
+ search_replace_abort();
+}
+
+/* Go to the specified line and column, or ask for them if interactive
+ * is TRUE. Save the x-coordinate and y-coordinate if save_pos is TRUE.
+ * Update the screen afterwards if allow_update is TRUE. Note that both
+ * the line and column numbers should be one-based. */
+void do_gotolinecolumn(ssize_t line, ssize_t column, bool use_answer,
+ bool interactive, bool save_pos, bool allow_update)
+{
+ bool meta_key = FALSE, func_key = FALSE;
+ const sc *s;
+
+ if (interactive) {
+ char *ans = mallocstrcpy(NULL, answer);
+
+ /* Ask for the line and column. */
+ int i = do_prompt(FALSE,
+#ifndef DISABLE_TABCOMP
+ TRUE,
+#endif
+ MGOTOLINE, use_answer ? ans : "",
+ &meta_key, &func_key,
+#ifndef NANO_TINY
+ NULL,
+#endif
+ edit_refresh, _("Enter line number, column number"));
+
+ free(ans);
+
+ /* Cancel, or Enter with blank string. */
+ if (i < 0) {
+ statusbar(_("Cancelled"));
+ display_main_list();
+ return;
+ }
+
+
+ s = get_shortcut(currmenu, &i, &meta_key, &func_key);
+ if (s && s->scfunc == GOTOTEXT_MSG) {
+ /* Keep answer up on the statusbar. */
+ search_init(TRUE, TRUE);
+
+ do_search();
+ return;
+ }
+
+ /* Do a bounds check. Display a warning on an out-of-bounds
+ * line or column number only if we hit Enter at the statusbar
+ * prompt. */
+ if (!parse_line_column(answer, &line, &column) || line < 1 ||
+ column < 1) {
+ if (i == 0)
+ statusbar(_("Invalid line or column number"));
+ display_main_list();
+ return;
+ }
+ } else {
+ if (line < 1)
+ line = openfile->current->lineno;
+
+ if (column < 1)
+ column = openfile->placewewant + 1;
+ }
+
+ for (openfile->current = openfile->fileage;
+ openfile->current != openfile->filebot && line > 1; line--)
+ openfile->current = openfile->current->next;
+
+ openfile->current_x = actual_x(openfile->current->data, column - 1);
+ openfile->placewewant = column - 1;
+
+ /* Put the top line of the edit window in range of the current line.
+ * If save_pos is TRUE, don't change the cursor position when doing
+ * it. */
+ edit_update(save_pos ? NONE : CENTER);
+
+ /* If allow_update is TRUE, update the screen. */
+ if (allow_update)
+ edit_refresh();
+
+ display_main_list();
+}
+
+/* Go to the specified line and column, asking for them beforehand. */
+void do_gotolinecolumn_void(void)
+{
+ do_gotolinecolumn(openfile->current->lineno,
+ openfile->placewewant + 1, FALSE, TRUE, FALSE, TRUE);
+}
+
+#ifndef DISABLE_SPELLER
+/* Go to the line with the number specified in pos_line, the
+ * x-coordinate specified in pos_x, the y-coordinate specified in pos_y,
+ * and the place we want specified in pos_pww. */
+void do_gotopos(ssize_t pos_line, size_t pos_x, ssize_t pos_y, size_t
+ pos_pww)
+{
+ /* Since do_gotolinecolumn() resets the x-coordinate but not the
+ * y-coordinate, set the coordinates up this way. */
+ openfile->current_y = pos_y;
+ do_gotolinecolumn(pos_line, pos_x + 1, FALSE, FALSE, TRUE, TRUE);
+
+ /* Set the rest of the coordinates up. */
+ openfile->placewewant = pos_pww;
+ update_line(openfile->current, pos_x);
+}
+#endif
+
+#ifndef NANO_TINY
+/* Search for a match to one of the two characters in bracket_set. If
+ * reverse is TRUE, search backwards for the leftmost bracket.
+ * Otherwise, search forwards for the rightmost bracket. Return TRUE if
+ * we found a match, and FALSE otherwise. */
+bool find_bracket_match(bool reverse, const char *bracket_set)
+{
+ filestruct *fileptr = openfile->current;
+ const char *rev_start = NULL, *found = NULL;
+ ssize_t current_y_find = openfile->current_y;
+
+ assert(mbstrlen(bracket_set) == 2);
+
+ /* rev_start might end up 1 character before the start or after the
+ * end of the line. This won't be a problem because we'll skip over
+ * it below in that case, and rev_start will be properly set when
+ * the search continues on the previous or next line. */
+ rev_start = reverse ? fileptr->data + (openfile->current_x - 1) :
+ fileptr->data + (openfile->current_x + 1);
+
+ /* Look for either of the two characters in bracket_set. rev_start
+ * can be 1 character before the start or after the end of the line.
+ * In either case, just act as though no match is found. */
+ while (TRUE) {
+ found = ((rev_start > fileptr->data && *(rev_start - 1) ==
+ '\0') || rev_start < fileptr->data) ? NULL : (reverse ?
+ mbrevstrpbrk(fileptr->data, bracket_set, rev_start) :
+ mbstrpbrk(rev_start, bracket_set));
+
+ /* We've found a potential match. */
+ if (found != NULL)
+ break;
+
+ if (reverse) {
+ fileptr = fileptr->prev;
+ current_y_find--;
+ } else {
+ fileptr = fileptr->next;
+ current_y_find++;
+ }
+
+ /* We've reached the start or end of the buffer, so get out. */
+ if (fileptr == NULL)
+ return FALSE;
+
+ rev_start = fileptr->data;
+ if (reverse)
+ rev_start += strlen(fileptr->data);
+ }
+
+ /* We've definitely found something. */
+ openfile->current = fileptr;
+ openfile->current_x = found - fileptr->data;
+ openfile->placewewant = xplustabs();
+ openfile->current_y = current_y_find;
+
+ return TRUE;
+}
+
+/* Search for a match to the bracket at the current cursor position, if
+ * there is one. */
+void do_find_bracket(void)
+{
+ filestruct *current_save;
+ size_t current_x_save, pww_save;
+ const char *ch;
+ /* The location in matchbrackets of the bracket at the current
+ * cursor position. */
+ int ch_len;
+ /* The length of ch in bytes. */
+ const char *wanted_ch;
+ /* The location in matchbrackets of the bracket complementing
+ * the bracket at the current cursor position. */
+ int wanted_ch_len;
+ /* The length of wanted_ch in bytes. */
+ char *bracket_set;
+ /* The pair of characters in ch and wanted_ch. */
+ size_t i;
+ /* Generic loop variable. */
+ size_t matchhalf;
+ /* The number of single-byte characters in one half of
+ * matchbrackets. */
+ size_t mbmatchhalf;
+ /* The number of multibyte characters in one half of
+ * matchbrackets. */
+ size_t count = 1;
+ /* The initial bracket count. */
+ bool reverse;
+ /* The direction we search. */
+ char *found_ch;
+ /* The character we find. */
+
+ assert(mbstrlen(matchbrackets) % 2 == 0);
+
+ ch = openfile->current->data + openfile->current_x;
+
+ if (ch == '\0' || (ch = mbstrchr(matchbrackets, ch)) == NULL) {
+ statusbar(_("Not a bracket"));
+ return;
+ }
+
+ /* Save where we are. */
+ current_save = openfile->current;
+ current_x_save = openfile->current_x;
+ pww_save = openfile->placewewant;
+
+ /* If we're on an opening bracket, which must be in the first half
+ * of matchbrackets, we want to search forwards for a closing
+ * bracket. If we're on a closing bracket, which must be in the
+ * second half of matchbrackets, we want to search backwards for an
+ * opening bracket. */
+ matchhalf = 0;
+ mbmatchhalf = mbstrlen(matchbrackets) / 2;
+
+ for (i = 0; i < mbmatchhalf; i++)
+ matchhalf += parse_mbchar(matchbrackets + matchhalf, NULL,
+ NULL);
+
+ reverse = ((ch - matchbrackets) >= matchhalf);
+
+ /* If we're on an opening bracket, set wanted_ch to the character
+ * that's matchhalf characters after ch. If we're on a closing
+ * bracket, set wanted_ch to the character that's matchhalf
+ * characters before ch. */
+ wanted_ch = ch;
+
+ while (mbmatchhalf > 0) {
+ if (reverse)
+ wanted_ch = matchbrackets + move_mbleft(matchbrackets,
+ wanted_ch - matchbrackets);
+ else
+ wanted_ch += move_mbright(wanted_ch, 0);
+
+ mbmatchhalf--;
+ }
+
+ ch_len = parse_mbchar(ch, NULL, NULL);
+ wanted_ch_len = parse_mbchar(wanted_ch, NULL, NULL);
+
+ /* Fill bracket_set in with the values of ch and wanted_ch. */
+ bracket_set = charalloc((mb_cur_max() * 2) + 1);
+ strncpy(bracket_set, ch, ch_len);
+ strncpy(bracket_set + ch_len, wanted_ch, wanted_ch_len);
+ null_at(&bracket_set, ch_len + wanted_ch_len);
+
+ found_ch = charalloc(mb_cur_max() + 1);
+
+ while (TRUE) {
+ if (find_bracket_match(reverse, bracket_set)) {
+ /* If we found an identical bracket, increment count. If we
+ * found a complementary bracket, decrement it. */
+ parse_mbchar(openfile->current->data + openfile->current_x,
+ found_ch, NULL);
+ count += (strncmp(found_ch, ch, ch_len) == 0) ? 1 : -1;
+
+ /* If count is zero, we've found a matching bracket. Update
+ * the screen and get out. */
+ if (count == 0) {
+ edit_redraw(current_save, pww_save);
+ break;
+ }
+ } else {
+ /* We didn't find either an opening or closing bracket.
+ * Indicate this, restore where we were, and get out. */
+ statusbar(_("No matching bracket"));
+ openfile->current = current_save;
+ openfile->current_x = current_x_save;
+ openfile->placewewant = pww_save;
+ break;
+ }
+ }
+
+ /* Clean up. */
+ free(bracket_set);
+ free(found_ch);
+}
+
+#ifdef ENABLE_NANORC
+/* Indicate whether any of the history lists have changed. */
+bool history_has_changed(void)
+{
+ return history_changed;
+}
+#endif
+
+/* Initialize the search and replace history lists. */
+void history_init(void)
+{
+ search_history = make_new_node(NULL);
+ search_history->data = mallocstrcpy(NULL, "");
+ searchage = search_history;
+ searchbot = search_history;
+
+ replace_history = make_new_node(NULL);
+ replace_history->data = mallocstrcpy(NULL, "");
+ replaceage = replace_history;
+ replacebot = replace_history;
+}
+
+/* Set the current position in the history list h to the bottom. */
+void history_reset(const filestruct *h)
+{
+ if (h == search_history)
+ search_history = searchbot;
+ else if (h == replace_history)
+ replace_history = replacebot;
+}
+
+/* Return the first node containing the first len characters of the
+ * string s in the history list, starting at h_start and ending at
+ * h_end, or NULL if there isn't one. */
+filestruct *find_history(const filestruct *h_start, const filestruct
+ *h_end, const char *s, size_t len)
+{
+ const filestruct *p;
+
+ for (p = h_start; p != h_end->next && p != NULL; p = p->next) {
+ if (strncmp(s, p->data, len) == 0)
+ return (filestruct *)p;
+ }
+
+ return NULL;
+}
+
+/* Update a history list. h should be the current position in the
+ * list. */
+void update_history(filestruct **h, const char *s)
+{
+ filestruct **hage = NULL, **hbot = NULL, *p;
+
+ assert(h != NULL && s != NULL);
+
+ if (*h == search_history) {
+ hage = &searchage;
+ hbot = &searchbot;
+ } else if (*h == replace_history) {
+ hage = &replaceage;
+ hbot = &replacebot;
+ }
+
+ assert(hage != NULL && hbot != NULL);
+
+ /* If this string is already in the history, delete it. */
+ p = find_history(*hage, *hbot, s, strlen(s));
+
+ if (p != NULL) {
+ filestruct *foo, *bar;
+
+ /* If the string is at the beginning, move the beginning down to
+ * the next string. */
+ if (p == *hage)
+ *hage = (*hage)->next;
+
+ /* Delete the string. */
+ foo = p;
+ bar = p->next;
+ unlink_node(foo);
+ delete_node(foo);
+ if (bar != NULL)
+ renumber(bar);
+ }
+
+ /* If the history is full, delete the beginning entry to make room
+ * for the new entry at the end. We assume that MAX_SEARCH_HISTORY
+ * is greater than zero. */
+ if ((*hbot)->lineno == MAX_SEARCH_HISTORY + 1) {
+ filestruct *foo = *hage;
+
+ *hage = (*hage)->next;
+ unlink_node(foo);
+ delete_node(foo);
+ renumber(*hage);
+ }
+
+ /* Add the new entry to the end. */
+ (*hbot)->data = mallocstrcpy((*hbot)->data, s);
+ splice_node(*hbot, make_new_node(*hbot), (*hbot)->next);
+ *hbot = (*hbot)->next;
+ (*hbot)->data = mallocstrcpy(NULL, "");
+
+#ifdef ENABLE_NANORC
+ /* Indicate that the history's been changed. */
+ history_changed = TRUE;
+#endif
+
+ /* Set the current position in the list to the bottom. */
+ *h = *hbot;
+}
+
+/* Move h to the string in the history list just before it, and return
+ * that string. If there isn't one, don't move h and return NULL. */
+char *get_history_older(filestruct **h)
+{
+ assert(h != NULL);
+
+ if ((*h)->prev == NULL)
+ return NULL;
+
+ *h = (*h)->prev;
+
+ return (*h)->data;
+}
+
+/* Move h to the string in the history list just after it, and return
+ * that string. If there isn't one, don't move h and return NULL. */
+char *get_history_newer(filestruct **h)
+{
+ assert(h != NULL);
+
+ if ((*h)->next == NULL)
+ return NULL;
+
+ *h = (*h)->next;
+
+ return (*h)->data;
+}
+
+#ifndef DISABLE_TABCOMP
+/* Move h to the next string that's a tab completion of the string s,
+ * looking at only the first len characters of s, and return that
+ * string. If there isn't one, or if len is 0, don't move h and return
+ * s. */
+char *get_history_completion(filestruct **h, const char *s, size_t len)
+{
+ assert(s != NULL);
+
+ if (len > 0) {
+ filestruct *hage = NULL, *hbot = NULL, *p;
+
+ assert(h != NULL);
+
+ if (*h == search_history) {
+ hage = searchage;
+ hbot = searchbot;
+ } else if (*h == replace_history) {
+ hage = replaceage;
+ hbot = replacebot;
+ }
+
+ assert(hage != NULL && hbot != NULL);
+
+ /* Search the history list from the current position to the
+ * bottom for a match of len characters. Skip over an exact
+ * match. */
+ p = find_history((*h)->next, hbot, s, len);
+
+ while (p != NULL && strcmp(p->data, s) == 0)
+ p = find_history(p->next, hbot, s, len);
+
+ if (p != NULL) {
+ *h = p;
+ return (*h)->data;
+ }
+
+ /* Search the history list from the top to the current position
+ * for a match of len characters. Skip over an exact match. */
+ p = find_history(hage, *h, s, len);
+
+ while (p != NULL && strcmp(p->data, s) == 0)
+ p = find_history(p->next, *h, s, len);
+
+ if (p != NULL) {
+ *h = p;
+ return (*h)->data;
+ }
+ }
+
+ /* If we're here, we didn't find a match, we didn't find an inexact
+ * match, or len is 0. Return s. */
+ return (char *)s;
+}
+#endif /* !DISABLE_TABCOMP */
+#endif /* !NANO_TINY */
diff --git a/src/text.c b/src/text.c
new file mode 100644
index 0000000..54da3f0
--- /dev/null
+++ b/src/text.c
@@ -0,0 +1,3074 @@
+/* $Id: text.c 4520 2010-11-12 06:23:14Z astyanax $ */
+/**************************************************************************
+ * text.c *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <stdio.h>
+#include <signal.h>
+#include <unistd.h>
+#include <string.h>
+#include <fcntl.h>
+#include <sys/wait.h>
+#include <errno.h>
+
+#ifndef NANO_TINY
+static pid_t pid = -1;
+ /* The PID of the forked process in execute_command(), for use
+ * with the cancel_command() signal handler. */
+#endif
+#ifndef DISABLE_WRAPPING
+static bool prepend_wrap = FALSE;
+ /* Should we prepend wrapped text to the next line? */
+#endif
+#ifndef DISABLE_JUSTIFY
+static filestruct *jusbottom = NULL;
+ /* Pointer to the end of the justify buffer. */
+#endif
+
+#ifndef NANO_TINY
+/* Toggle the mark. */
+void do_mark(void)
+{
+ openfile->mark_set = !openfile->mark_set;
+ if (openfile->mark_set) {
+ statusbar(_("Mark Set"));
+ openfile->mark_begin = openfile->current;
+ openfile->mark_begin_x = openfile->current_x;
+ } else {
+ statusbar(_("Mark Unset"));
+ openfile->mark_begin = NULL;
+ openfile->mark_begin_x = 0;
+ edit_refresh();
+ }
+}
+#endif /* !NANO_TINY */
+
+/* Delete the character under the cursor. */
+void do_delete(void)
+{
+ size_t orig_lenpt = 0;
+
+#ifndef NANO_TINY
+ update_undo(DEL);
+#endif
+
+ assert(openfile->current != NULL && openfile->current->data != NULL && openfile->current_x <= strlen(openfile->current->data));
+
+ openfile->placewewant = xplustabs();
+
+ if (openfile->current->data[openfile->current_x] != '\0') {
+ int char_buf_len = parse_mbchar(openfile->current->data +
+ openfile->current_x, NULL, NULL);
+ size_t line_len = strlen(openfile->current->data +
+ openfile->current_x);
+
+ assert(openfile->current_x < strlen(openfile->current->data));
+
+ if (ISSET(SOFTWRAP))
+ orig_lenpt = strlenpt(openfile->current->data);
+
+ /* Let's get dangerous. */
+ charmove(&openfile->current->data[openfile->current_x],
+ &openfile->current->data[openfile->current_x +
+ char_buf_len], line_len - char_buf_len + 1);
+
+ null_at(&openfile->current->data, openfile->current_x +
+ line_len - char_buf_len);
+#ifndef NANO_TINY
+ if (openfile->mark_set && openfile->mark_begin ==
+ openfile->current && openfile->current_x <
+ openfile->mark_begin_x)
+ openfile->mark_begin_x -= char_buf_len;
+#endif
+ openfile->totsize--;
+ } else if (openfile->current != openfile->filebot) {
+ filestruct *foo = openfile->current->next;
+
+ assert(openfile->current_x == strlen(openfile->current->data));
+
+ /* If we're deleting at the end of a line, we need to call
+ * edit_refresh(). */
+ if (openfile->current->data[openfile->current_x] == '\0')
+ edit_refresh_needed = TRUE;
+
+ openfile->current->data = charealloc(openfile->current->data,
+ openfile->current_x + strlen(foo->data) + 1);
+ strcpy(openfile->current->data + openfile->current_x,
+ foo->data);
+#ifndef NANO_TINY
+ if (openfile->mark_set && openfile->mark_begin ==
+ openfile->current->next) {
+ openfile->mark_begin = openfile->current;
+ openfile->mark_begin_x += openfile->current_x;
+ }
+#endif
+ if (openfile->filebot == foo)
+ openfile->filebot = openfile->current;
+
+ unlink_node(foo);
+ delete_node(foo);
+ renumber(openfile->current);
+ openfile->totsize--;
+
+ /* If the NO_NEWLINES flag isn't set, and text has been added to
+ * the magicline as a result of deleting at the end of the line
+ * before filebot, add a new magicline. */
+ if (!ISSET(NO_NEWLINES) && openfile->current ==
+ openfile->filebot && openfile->current->data[0] != '\0')
+ new_magicline();
+ } else
+ return;
+
+ if (ISSET(SOFTWRAP) && edit_refresh_needed == FALSE)
+ if (strlenpt(openfile->current->data) / COLS != orig_lenpt / COLS)
+ edit_refresh_needed = TRUE;
+
+ set_modified();
+
+ if (edit_refresh_needed == FALSE)
+ update_line(openfile->current, openfile->current_x);
+}
+
+/* Backspace over one character. That is, move the cursor left one
+ * character, and then delete the character under the cursor. */
+void do_backspace(void)
+{
+ if (openfile->current != openfile->fileage ||
+ openfile->current_x > 0) {
+ do_left();
+ do_delete();
+ }
+}
+
+/* Insert a tab. If the TABS_TO_SPACES flag is set, insert the number
+ * of spaces that a tab would normally take up. */
+void do_tab(void)
+{
+#ifndef NANO_TINY
+ if (ISSET(TABS_TO_SPACES)) {
+ char *output;
+ size_t output_len = 0, new_pww = xplustabs();
+
+ do {
+ new_pww++;
+ output_len++;
+ } while (new_pww % tabsize != 0);
+
+ output = charalloc(output_len + 1);
+
+ charset(output, ' ', output_len);
+ output[output_len] = '\0';
+
+ do_output(output, output_len, TRUE);
+
+ free(output);
+ } else {
+#endif
+ do_output((char *) "\t", 1, TRUE);
+#ifndef NANO_TINY
+ }
+#endif
+}
+
+#ifndef NANO_TINY
+/* Indent or unindent the current line (or, if the mark is on, all lines
+ * covered by the mark) len columns, depending on whether len is
+ * positive or negative. If the TABS_TO_SPACES flag is set, indent or
+ * unindent by len spaces. Otherwise, indent or unindent by (len /
+ * tabsize) tabs and (len % tabsize) spaces. */
+void do_indent(ssize_t cols)
+{
+ bool indent_changed = FALSE;
+ /* Whether any indenting or unindenting was done. */
+ bool unindent = FALSE;
+ /* Whether we're unindenting text. */
+ char *line_indent = NULL;
+ /* The text added to each line in order to indent it. */
+ size_t line_indent_len = 0;
+ /* The length of the text added to each line in order to indent
+ * it. */
+ filestruct *top, *bot, *f;
+ size_t top_x, bot_x;
+
+ assert(openfile->current != NULL && openfile->current->data != NULL);
+
+ /* If cols is zero, get out. */
+ if (cols == 0)
+ return;
+
+ /* If cols is negative, make it positive and set unindent to
+ * TRUE. */
+ if (cols < 0) {
+ cols = -cols;
+ unindent = TRUE;
+ /* Otherwise, we're indenting, in which case the file will always be
+ * modified, so set indent_changed to TRUE. */
+ } else
+ indent_changed = TRUE;
+
+ /* If the mark is on, use all lines covered by the mark. */
+ if (openfile->mark_set)
+ mark_order((const filestruct **)&top, &top_x,
+ (const filestruct **)&bot, &bot_x, NULL);
+ /* Otherwise, use the current line. */
+ else {
+ top = openfile->current;
+ bot = top;
+ }
+
+ if (!unindent) {
+ /* Set up the text we'll be using as indentation. */
+ line_indent = charalloc(cols + 1);
+
+ if (ISSET(TABS_TO_SPACES)) {
+ /* Set the indentation to cols spaces. */
+ charset(line_indent, ' ', cols);
+ line_indent_len = cols;
+ } else {
+ /* Set the indentation to (cols / tabsize) tabs and (cols %
+ * tabsize) spaces. */
+ size_t num_tabs = cols / tabsize;
+ size_t num_spaces = cols % tabsize;
+
+ charset(line_indent, '\t', num_tabs);
+ charset(line_indent + num_tabs, ' ', num_spaces);
+
+ line_indent_len = num_tabs + num_spaces;
+ }
+
+ line_indent[line_indent_len] = '\0';
+ }
+
+ /* Go through each line of the text. */
+ for (f = top; f != bot->next; f = f->next) {
+ size_t line_len = strlen(f->data);
+ size_t indent_len = indent_length(f->data);
+
+ if (!unindent) {
+ /* If we're indenting, add the characters in line_indent to
+ * the beginning of the non-whitespace text of this line. */
+ f->data = charealloc(f->data, line_len +
+ line_indent_len + 1);
+ charmove(&f->data[indent_len + line_indent_len],
+ &f->data[indent_len], line_len - indent_len + 1);
+ strncpy(f->data + indent_len, line_indent, line_indent_len);
+ openfile->totsize += line_indent_len;
+
+ /* Keep track of the change in the current line. */
+ if (openfile->mark_set && f == openfile->mark_begin &&
+ openfile->mark_begin_x >= indent_len)
+ openfile->mark_begin_x += line_indent_len;
+
+ if (f == openfile->current && openfile->current_x >=
+ indent_len)
+ openfile->current_x += line_indent_len;
+
+ /* If the NO_NEWLINES flag isn't set, and this is the
+ * magicline, add a new magicline. */
+ if (!ISSET(NO_NEWLINES) && f == openfile->filebot)
+ new_magicline();
+ } else {
+ size_t indent_col = strnlenpt(f->data, indent_len);
+ /* The length in columns of the indentation on this
+ * line. */
+
+ if (cols <= indent_col) {
+ size_t indent_new = actual_x(f->data, indent_col -
+ cols);
+ /* The length of the indentation remaining on
+ * this line after we unindent. */
+ size_t indent_shift = indent_len - indent_new;
+ /* The change in the indentation on this line
+ * after we unindent. */
+
+ /* If we're unindenting, and there's at least cols
+ * columns' worth of indentation at the beginning of the
+ * non-whitespace text of this line, remove it. */
+ charmove(&f->data[indent_new], &f->data[indent_len],
+ line_len - indent_shift - indent_new + 1);
+ null_at(&f->data, line_len - indent_shift + 1);
+ openfile->totsize -= indent_shift;
+
+ /* Keep track of the change in the current line. */
+ if (openfile->mark_set && f == openfile->mark_begin &&
+ openfile->mark_begin_x > indent_new) {
+ if (openfile->mark_begin_x <= indent_len)
+ openfile->mark_begin_x = indent_new;
+ else
+ openfile->mark_begin_x -= indent_shift;
+ }
+
+ if (f == openfile->current && openfile->current_x >
+ indent_new) {
+ if (openfile->current_x <= indent_len)
+ openfile->current_x = indent_new;
+ else
+ openfile->current_x -= indent_shift;
+ }
+
+ /* We've unindented, so set indent_changed to TRUE. */
+ if (!indent_changed)
+ indent_changed = TRUE;
+ }
+ }
+ }
+
+ if (!unindent)
+ /* Clean up. */
+ free(line_indent);
+
+ if (indent_changed) {
+ /* Mark the file as modified. */
+ set_modified();
+
+ /* Update the screen. */
+ edit_refresh_needed = TRUE;
+ }
+}
+
+/* Indent the current line, or all lines covered by the mark if the mark
+ * is on, tabsize columns. */
+void do_indent_void(void)
+{
+ do_indent(tabsize);
+}
+
+/* Unindent the current line, or all lines covered by the mark if the
+ * mark is on, tabsize columns. */
+void do_unindent(void)
+{
+ do_indent(-tabsize);
+}
+
+/* undo a cut, or re-do an uncut */
+void undo_cut(undo *u)
+{
+ /* If we cut the magicline may was well not crash :/ */
+ if (!u->cutbuffer)
+ return;
+
+ cutbuffer = copy_filestruct(u->cutbuffer);
+
+ /* Compute cutbottom for the uncut using out copy */
+ for (cutbottom = cutbuffer; cutbottom->next != NULL; cutbottom = cutbottom->next)
+ ;
+
+ /* Get to where we need to uncut from */
+ if (u->mark_set && u->mark_begin_lineno < u->lineno)
+ do_gotolinecolumn(u->mark_begin_lineno, u->mark_begin_x+1, FALSE, FALSE, FALSE, FALSE);
+ else
+ do_gotolinecolumn(u->lineno, u->begin+1, FALSE, FALSE, FALSE, FALSE);
+
+ copy_from_filestruct(cutbuffer, cutbottom);
+ free_filestruct(cutbuffer);
+ cutbuffer = NULL;
+
+}
+
+/* Re-do a cut, or undo an uncut */
+void redo_cut(undo *u) {
+ int i;
+ filestruct *t, *c;
+
+ /* If we cut the magicline may was well not crash :/ */
+ if (!u->cutbuffer)
+ return;
+
+ do_gotolinecolumn(u->lineno, u->begin+1, FALSE, FALSE, FALSE, FALSE);
+ openfile->mark_set = u->mark_set;
+ if (cutbuffer)
+ free(cutbuffer);
+ cutbuffer = NULL;
+
+ /* Move ahead the same # lines we had if a marked cut */
+ if (u->mark_set) {
+ for (i = 1, t = openfile->fileage; i != u->mark_begin_lineno; i++)
+ t = t->next;
+ openfile->mark_begin = t;
+ } else if (!u->to_end) {
+ /* Here we have a regular old potentially multi-line ^K cut. We'll
+ need to trick nano into thinking it's a marked cut to cut more
+ than one line again */
+ for (c = u->cutbuffer, t = openfile->current; c->next != NULL && t->next != NULL; ) {
+
+#ifdef DEBUG
+ fprintf(stderr, "Advancing, lineno = %lu, data = \"%s\"\n", (unsigned long) t->lineno, t->data);
+#endif
+ c = c->next;
+ t = t->next;
+ }
+ openfile->mark_begin = t;
+ openfile->mark_begin_x = 0;
+ openfile->mark_set = TRUE;
+ }
+
+ openfile->mark_begin_x = u->mark_begin_x;
+ do_cut_text(FALSE, u->to_end, TRUE);
+ openfile->mark_set = FALSE;
+ openfile->mark_begin = NULL;
+ openfile->mark_begin_x = 0;
+ edit_refresh_needed = TRUE;
+}
+
+/* Undo the last thing(s) we did */
+void do_undo(void)
+{
+ undo *u = openfile->current_undo;
+ filestruct *f = openfile->current, *t;
+ int len = 0;
+ char *undidmsg, *data;
+ filestruct *oldcutbuffer = cutbuffer, *oldcutbottom = cutbottom;
+
+ if (!u) {
+ statusbar(_("Nothing in undo buffer!"));
+ return;
+ }
+
+
+ if (u->lineno <= f->lineno)
+ for (; f->prev != NULL && f->lineno != u->lineno; f = f->prev)
+ ;
+ else
+ for (; f->next != NULL && f->lineno != u->lineno; f = f->next)
+ ;
+ if (f->lineno != u->lineno) {
+ statusbar(_("Internal error: can't match line %d. Please save your work"), u->lineno);
+ return;
+ }
+#ifdef DEBUG
+ fprintf(stderr, "data we're about to undo = \"%s\"\n", f->data);
+ fprintf(stderr, "Undo running for type %d\n", u->type);
+#endif
+
+ openfile->current_x = u->begin;
+ switch(u->type) {
+ case ADD:
+ undidmsg = _("text add");
+ len = strlen(f->data) - strlen(u->strdata) + 1;
+ data = charalloc(len);
+ strncpy(data, f->data, u->begin);
+ strcpy(&data[u->begin], &f->data[u->begin + strlen(u->strdata)]);
+ free(f->data);
+ f->data = data;
+ break;
+ case DEL:
+ undidmsg = _("text delete");
+ len = strlen(f->data) + strlen(u->strdata) + 1;
+ data = charalloc(len);
+
+ strncpy(data, f->data, u->begin);
+ strcpy(&data[u->begin], u->strdata);
+ strcpy(&data[u->begin + strlen(u->strdata)], &f->data[u->begin]);
+ free(f->data);
+ f->data = data;
+ if (u->xflags == UNDO_DEL_BACKSPACE)
+ openfile->current_x += strlen(u->strdata);
+ break;
+#ifndef DISABLE_WRAPPING
+ case SPLIT:
+ undidmsg = _("line wrap");
+ f->data = (char *) nrealloc(f->data, strlen(f->data) + strlen(u->strdata) + 1);
+ strcpy(&f->data[strlen(f->data) - 1], u->strdata);
+ if (u->strdata2 != NULL)
+ f->next->data = mallocstrcpy(f->next->data, u->strdata2);
+ else {
+ filestruct *foo = openfile->current->next;
+ unlink_node(foo);
+ delete_node(foo);
+ }
+ renumber(f);
+ break;
+#endif /* DISABLE_WRAPPING */
+ case UNSPLIT:
+ undidmsg = _("line join");
+ t = make_new_node(f);
+ t->data = mallocstrcpy(NULL, u->strdata);
+ data = mallocstrncpy(NULL, f->data, u->begin);
+ data[u->begin] = '\0';
+ free(f->data);
+ f->data = data;
+ splice_node(f, t, f->next);
+ renumber(f);
+ break;
+ case CUT:
+ undidmsg = _("text cut");
+ undo_cut(u);
+ break;
+ case UNCUT:
+ undidmsg = _("text uncut");
+ redo_cut(u);
+ break;
+ case ENTER:
+ undidmsg = _("line break");
+ if (f->next) {
+ filestruct *foo = f->next;
+ f->data = (char *) nrealloc(f->data, strlen(f->data) + strlen(f->next->data) + 1);
+ strcat(f->data, f->next->data);
+ unlink_node(foo);
+ delete_node(foo);
+ }
+ break;
+ case INSERT:
+ undidmsg = _("text insert");
+ cutbuffer = NULL;
+ cutbottom = NULL;
+ /* When we updated mark_begin_lineno in update_undo, it was effectively how many line
+ were inserted due to being partitioned before read_file was called. So we
+ add its value here */
+ openfile->mark_begin = fsfromline(u->lineno + u->mark_begin_lineno - 1);
+ openfile->mark_begin_x = 0;
+ openfile->mark_set = TRUE;
+ do_gotolinecolumn(u->lineno, u->begin+1, FALSE, FALSE, FALSE, FALSE);
+ cut_marked();
+ u->cutbuffer = cutbuffer;
+ u->cutbottom = cutbottom;
+ cutbuffer = oldcutbuffer;
+ cutbottom = oldcutbottom;
+ openfile->mark_set = FALSE;
+ break;
+ case REPLACE:
+ undidmsg = _("text replace");
+ data = u->strdata;
+ u->strdata = f->data;
+ f->data = data;
+ break;
+
+ default:
+ undidmsg = _("Internal error: unknown type. Please save your work");
+ break;
+
+ }
+ renumber(f);
+ do_gotolinecolumn(u->lineno, u->begin, FALSE, FALSE, FALSE, TRUE);
+ statusbar(_("Undid action (%s)"), undidmsg);
+ openfile->current_undo = openfile->current_undo->next;
+ openfile->last_action = OTHER;
+}
+
+void do_redo(void)
+{
+ undo *u = openfile->undotop;
+ filestruct *f = openfile->current;
+ int len = 0;
+ char *undidmsg, *data;
+
+ for (; u != NULL && u->next != openfile->current_undo; u = u->next)
+ ;
+ if (!u) {
+ statusbar(_("Nothing to re-do!"));
+ return;
+ }
+ if (u->next != openfile->current_undo) {
+ statusbar(_("Internal error: Redo setup failed. Please save your work"));
+ return;
+ }
+
+ if (u->lineno <= f->lineno)
+ for (; f->prev != NULL && f->lineno != u->lineno; f = f->prev)
+ ;
+ else
+ for (; f->next != NULL && f->lineno != u->lineno; f = f->next)
+ ;
+ if (f->lineno != u->lineno) {
+ statusbar(_("Internal error: can't match line %d. Please save your work"), u->lineno);
+ return;
+ }
+#ifdef DEBUG
+ fprintf(stderr, "data we're about to redo = \"%s\"\n", f->data);
+ fprintf(stderr, "Redo running for type %d\n", u->type);
+#endif
+
+ switch(u->type) {
+ case ADD:
+ undidmsg = _("text add");
+ len = strlen(f->data) + strlen(u->strdata) + 1;
+ data = charalloc(len);
+ strncpy(data, f->data, u->begin);
+ strcpy(&data[u->begin], u->strdata);
+ strcpy(&data[u->begin + strlen(u->strdata)], &f->data[u->begin]);
+ free(f->data);
+ f->data = data;
+ break;
+ case DEL:
+ undidmsg = _("text delete");
+ len = strlen(f->data) + strlen(u->strdata) + 1;
+ data = charalloc(len);
+ strncpy(data, f->data, u->begin);
+ strcpy(&data[u->begin], &f->data[u->begin + strlen(u->strdata)]);
+ free(f->data);
+ f->data = data;
+ break;
+ case ENTER:
+ undidmsg = _("line break");
+ do_gotolinecolumn(u->lineno, u->begin+1, FALSE, FALSE, FALSE, FALSE);
+ do_enter(TRUE);
+ break;
+#ifndef DISABLE_WRAPPING
+ case SPLIT:
+ undidmsg = _("line wrap");
+ if (u->xflags & UNDO_SPLIT_MADENEW)
+ prepend_wrap = TRUE;
+ do_wrap(f, TRUE);
+ renumber(f);
+ break;
+#endif /* DISABLE_WRAPPING */
+ case UNSPLIT:
+ undidmsg = _("line join");
+ len = strlen(f->data) + strlen(u->strdata + 1);
+ data = charalloc(len);
+ strcpy(data, f->data);
+ strcat(data, u->strdata);
+ free(f->data);
+ f->data = data;
+ if (f->next != NULL) {
+ filestruct *tmp = f->next;
+ unlink_node(tmp);
+ delete_node(tmp);
+ }
+ renumber(f);
+ break;
+ case CUT:
+ undidmsg = _("text cut");
+ redo_cut(u);
+ break;
+ case UNCUT:
+ undidmsg = _("text uncut");
+ undo_cut(u);
+ break;
+ case REPLACE:
+ undidmsg = _("text replace");
+ data = u->strdata;
+ u->strdata = f->data;
+ f->data = data;
+ break;
+ case INSERT:
+ undidmsg = _("text insert");
+ do_gotolinecolumn(u->lineno, u->begin+1, FALSE, FALSE, FALSE, FALSE);
+ copy_from_filestruct(u->cutbuffer, u->cutbottom);
+ openfile->placewewant = xplustabs();
+ break;
+ default:
+ undidmsg = _("Internal error: unknown type. Please save your work");
+ break;
+
+ }
+ do_gotolinecolumn(u->lineno, u->begin, FALSE, FALSE, FALSE, TRUE);
+ statusbar(_("Redid action (%s)"), undidmsg);
+
+ openfile->current_undo = u;
+ openfile->last_action = OTHER;
+
+}
+#endif /* !NANO_TINY */
+
+/* Someone hits Enter *gasp!* */
+void do_enter(bool undoing)
+{
+ filestruct *newnode = make_new_node(openfile->current);
+ size_t extra = 0;
+
+ assert(openfile->current != NULL && openfile->current->data != NULL);
+
+#ifndef NANO_TINY
+ if (!undoing)
+ add_undo(ENTER);
+
+
+ /* Do auto-indenting, like the neolithic Turbo Pascal editor. */
+ if (ISSET(AUTOINDENT)) {
+ /* If we are breaking the line in the indentation, the new
+ * indentation should have only current_x characters, and
+ * current_x should not change. */
+ extra = indent_length(openfile->current->data);
+ if (extra > openfile->current_x)
+ extra = openfile->current_x;
+ }
+#endif
+ newnode->data = charalloc(strlen(openfile->current->data +
+ openfile->current_x) + extra + 1);
+ strcpy(&newnode->data[extra], openfile->current->data +
+ openfile->current_x);
+#ifndef NANO_TINY
+ if (ISSET(AUTOINDENT)) {
+ strncpy(newnode->data, openfile->current->data, extra);
+ openfile->totsize += mbstrlen(newnode->data);
+ }
+#endif
+ null_at(&openfile->current->data, openfile->current_x);
+#ifndef NANO_TINY
+ if (openfile->mark_set && openfile->current ==
+ openfile->mark_begin && openfile->current_x <
+ openfile->mark_begin_x) {
+ openfile->mark_begin = newnode;
+ openfile->mark_begin_x += extra - openfile->current_x;
+ }
+#endif
+ openfile->current_x = extra;
+
+ if (openfile->current == openfile->filebot)
+ openfile->filebot = newnode;
+ splice_node(openfile->current, newnode,
+ openfile->current->next);
+
+ renumber(openfile->current);
+ openfile->current = newnode;
+
+ openfile->totsize++;
+ set_modified();
+
+ openfile->placewewant = xplustabs();
+
+ edit_refresh_needed = TRUE;
+}
+
+#ifndef NANO_TINY
+/* Send a SIGKILL (unconditional kill) to the forked process in
+ * execute_command(). */
+RETSIGTYPE cancel_command(int signal)
+{
+ if (kill(pid, SIGKILL) == -1)
+ nperror("kill");
+}
+
+/* Execute command in a shell. Return TRUE on success. */
+bool execute_command(const char *command)
+{
+ int fd[2];
+ FILE *f;
+ char *shellenv;
+ struct sigaction oldaction, newaction;
+ /* Original and temporary handlers for SIGINT. */
+ bool sig_failed = FALSE;
+ /* Did sigaction() fail without changing the signal handlers? */
+
+ /* Make our pipes. */
+ if (pipe(fd) == -1) {
+ statusbar(_("Could not pipe"));
+ return FALSE;
+ }
+
+ /* Check $SHELL for the shell to use. If it isn't set, use
+ * /bin/sh. Note that $SHELL should contain only a path, with no
+ * arguments. */
+ shellenv = getenv("SHELL");
+ if (shellenv == NULL)
+ shellenv = (char *) "/bin/sh";
+
+ /* Fork a child. */
+ if ((pid = fork()) == 0) {
+ close(fd[0]);
+ dup2(fd[1], fileno(stdout));
+ dup2(fd[1], fileno(stderr));
+
+ /* If execl() returns at all, there was an error. */
+ execl(shellenv, tail(shellenv), "-c", command, NULL);
+ exit(0);
+ }
+
+ /* Continue as parent. */
+ close(fd[1]);
+
+ if (pid == -1) {
+ close(fd[0]);
+ statusbar(_("Could not fork"));
+ return FALSE;
+ }
+
+ /* Before we start reading the forked command's output, we set
+ * things up so that Ctrl-C will cancel the new process. */
+
+ /* Enable interpretation of the special control keys so that we get
+ * SIGINT when Ctrl-C is pressed. */
+ enable_signals();
+
+ if (sigaction(SIGINT, NULL, &newaction) == -1) {
+ sig_failed = TRUE;
+ nperror("sigaction");
+ } else {
+ newaction.sa_handler = cancel_command;
+ if (sigaction(SIGINT, &newaction, &oldaction) == -1) {
+ sig_failed = TRUE;
+ nperror("sigaction");
+ }
+ }
+
+ /* Note that now oldaction is the previous SIGINT signal handler,
+ * to be restored later. */
+
+ f = fdopen(fd[0], "rb");
+ if (f == NULL)
+ nperror("fdopen");
+
+ read_file(f, 0, "stdin", TRUE, FALSE);
+
+ if (wait(NULL) == -1)
+ nperror("wait");
+
+ if (!sig_failed && sigaction(SIGINT, &oldaction, NULL) == -1)
+ nperror("sigaction");
+
+ /* Restore the terminal to its previous state. In the process,
+ * disable interpretation of the special control keys so that we can
+ * use Ctrl-C for other things. */
+ terminal_init();
+
+ return TRUE;
+}
+
+/* Add a new undo struct to the top of the current pile */
+void add_undo(undo_type current_action)
+{
+ undo *u;
+ char *data;
+ openfilestruct *fs = openfile;
+ static undo *last_cutu = NULL; /* Last thing we cut to set up the undo for uncut */
+ ssize_t wrap_loc; /* For calculating split beginning */
+
+ if (!ISSET(UNDOABLE))
+ return;
+
+ /* Ugh, if we were called while cutting not-to-end, non-marked and on the same lineno,
+ we need to abort here */
+ u = fs->current_undo;
+ if (current_action == CUT && u && u->type == CUT
+ && !u->mark_set && u->lineno == fs->current->lineno)
+ return;
+
+ /* Blow away the old undo stack if we are starting from the middle */
+ while (fs->undotop != NULL && fs->undotop != fs->current_undo) {
+ undo *u2 = fs->undotop;
+ fs->undotop = fs->undotop->next;
+ if (u2->strdata != NULL)
+ free(u2->strdata);
+ if (u2->cutbuffer)
+ free_filestruct(u2->cutbuffer);
+ free(u2);
+ }
+
+ /* Allocate and initialize a new undo type */
+ u = (undo *) nmalloc(sizeof(undo));
+ u->type = current_action;
+ u->lineno = fs->current->lineno;
+ u->begin = fs->current_x;
+ u->next = fs->undotop;
+ fs->undotop = u;
+ fs->current_undo = u;
+ u->strdata = NULL;
+ u->strdata2 = NULL;
+ u->cutbuffer = NULL;
+ u->cutbottom = NULL;
+ u->mark_set = 0;
+ u->mark_begin_lineno = 0;
+ u->mark_begin_x = 0;
+ u->xflags = 0;
+ u->to_end = FALSE;
+
+ switch (u->type) {
+ /* We need to start copying data into the undo buffer or we wont be able
+ to restore it later */
+ case ADD:
+ data = charalloc(2);
+ data[0] = fs->current->data[fs->current_x];
+ data[1] = '\0';
+ u->strdata = data;
+ break;
+ case DEL:
+ if (u->begin != strlen(fs->current->data)) {
+ data = mallocstrncpy(NULL, &fs->current->data[u->begin], 2);
+ data[1] = '\0';
+ u->strdata = data;
+ break;
+ }
+ /* Else purposely fall into unsplit code */
+ current_action = u->type = UNSPLIT;
+ case UNSPLIT:
+ if (fs->current->next) {
+ data = mallocstrcpy(NULL, fs->current->next->data);
+ u->strdata = data;
+ }
+ break;
+#ifndef DISABLE_WRAPPING
+ case SPLIT:
+ wrap_loc = break_line(openfile->current->data, fill
+#ifndef DISABLE_HELP
+ , FALSE
+#endif
+ );
+ u->strdata = mallocstrcpy(NULL, &openfile->current->data[wrap_loc]);
+ /* Don't both saving the next line if we're not prepending as a new line
+ will be created */
+ if (prepend_wrap)
+ u->strdata2 = mallocstrcpy(NULL, fs->current->next->data);
+ u->begin = wrap_loc;
+ break;
+#endif /* DISABLE_WRAPPING */
+ case INSERT:
+ case REPLACE:
+ data = mallocstrcpy(NULL, fs->current->data);
+ u->strdata = data;
+ break;
+ case CUT:
+ u->mark_set = openfile->mark_set;
+ if (u->mark_set) {
+ u->mark_begin_lineno = openfile->mark_begin->lineno;
+ u->mark_begin_x = openfile->mark_begin_x;
+ }
+ u->to_end = (ISSET(CUT_TO_END)) ? TRUE : FALSE;
+ last_cutu = u;
+ break;
+ case UNCUT:
+ if (!last_cutu)
+ statusbar(_("Internal error: can't setup uncut. Please save your work."));
+ else if (last_cutu->type == CUT) {
+ u->cutbuffer = last_cutu->cutbuffer;
+ u->cutbottom = last_cutu->cutbottom;
+ }
+ break;
+ case ENTER:
+ break;
+ case OTHER:
+ statusbar(_("Internal error: unknown type. Please save your work."));
+ break;
+ }
+
+#ifdef DEBUG
+ fprintf(stderr, "fs->current->data = \"%s\", current_x = %lu, u->begin = %d, type = %d\n",
+ fs->current->data, (unsigned long) fs->current_x, u->begin, current_action);
+ fprintf(stderr, "left add_undo...\n");
+#endif
+ fs->last_action = current_action;
+}
+
+/* Update an undo item, or determine whether a new one
+ is really needed and bounce the data to add_undo
+ instead. The latter functionality just feels
+ gimmicky and may just be more hassle than
+ it's worth, so it should be axed if needed. */
+void update_undo(undo_type action)
+{
+ undo *u;
+ char *data;
+ int len = 0;
+ openfilestruct *fs = openfile;
+
+ if (!ISSET(UNDOABLE))
+ return;
+
+#ifdef DEBUG
+ fprintf(stderr, "action = %d, fs->last_action = %d, openfile->current->lineno = %lu",
+ action, fs->last_action, (unsigned long) openfile->current->lineno);
+ if (fs->current_undo)
+ fprintf(stderr, "fs->current_undo->lineno = %lu\n", (unsigned long) fs->current_undo->lineno);
+ else
+ fprintf(stderr, "\n");
+#endif
+
+ /* Change to an add if we're not using the same undo struct
+ that we should be using */
+ if (action != fs->last_action
+ || (action != CUT && action != INSERT && action != SPLIT
+ && openfile->current->lineno != fs->current_undo->lineno)) {
+ add_undo(action);
+ return;
+ }
+
+ assert(fs->undotop != NULL);
+ u = fs->undotop;
+
+ switch (u->type) {
+ case ADD:
+#ifdef DEBUG
+ fprintf(stderr, "fs->current->data = \"%s\", current_x = %lu, u->begin = %d\n",
+ fs->current->data, (unsigned long) fs->current_x, u->begin);
+#endif
+ len = strlen(u->strdata) + 2;
+ data = (char *) nrealloc((void *) u->strdata, len * sizeof(char *));
+ data[len-2] = fs->current->data[fs->current_x];
+ data[len-1] = '\0';
+ u->strdata = (char *) data;
+#ifdef DEBUG
+ fprintf(stderr, "current undo data now \"%s\"\n", u->strdata);
+#endif
+ break;
+ case DEL:
+ len = strlen(u->strdata) + 2;
+ assert(len > 2);
+ if (fs->current_x == u->begin) {
+ /* They're deleting */
+ if (!u->xflags)
+ u->xflags = UNDO_DEL_DEL;
+ else if (u->xflags != UNDO_DEL_DEL) {
+ add_undo(action);
+ return;
+ }
+ data = charalloc(len);
+ strcpy(data, u->strdata);
+ data[len-2] = fs->current->data[fs->current_x];;
+ data[len-1] = '\0';
+ free(u->strdata);
+ u->strdata = data;
+ } else if (fs->current_x == u->begin - 1) {
+ /* They're backspacing */
+ if (!u->xflags)
+ u->xflags = UNDO_DEL_BACKSPACE;
+ else if (u->xflags != UNDO_DEL_BACKSPACE) {
+ add_undo(action);
+ return;
+ }
+ data = charalloc(len);
+ data[0] = fs->current->data[fs->current_x];
+ strcpy(&data[1], u->strdata);
+ free(u->strdata);
+ u->strdata = data;
+ u->begin--;
+ } else {
+ /* They deleted something else on the line */
+ add_undo(DEL);
+ return;
+ }
+#ifdef DEBUG
+ fprintf(stderr, "current undo data now \"%s\"\nu->begin = %d\n", u->strdata, u->begin);
+#endif
+ break;
+ case CUT:
+ if (!cutbuffer)
+ break;
+ if (u->cutbuffer)
+ free(u->cutbuffer);
+ u->cutbuffer = copy_filestruct(cutbuffer);
+ /* Compute cutbottom for the uncut using out copy */
+ for (u->cutbottom = u->cutbuffer; u->cutbottom->next != NULL; u->cutbottom = u->cutbottom->next)
+ ;
+ break;
+ case REPLACE:
+ case UNCUT:
+ add_undo(action);
+ break;
+ case INSERT:
+ u->mark_begin_lineno = openfile->current->lineno;
+ break;
+#ifndef DISABLE_WRAPPING
+ case SPLIT:
+ /* This will only be called if we made a completely new line,
+ and as such we should note that so we can destroy it later */
+ u->xflags = UNDO_SPLIT_MADENEW;
+ break;
+#endif /* DISABLE_WRAPPING */
+ case UNSPLIT:
+ /* These cases are handled by the earlier check for a new line and action */
+ case ENTER:
+ case OTHER:
+ break;
+ }
+
+#ifdef DEBUG
+ fprintf(stderr, "Done in udpate_undo (type was %d)\n", action);
+#endif
+ if (fs->last_action != action) {
+#ifdef DEBUG
+ fprintf(stderr, "Starting add_undo for new action as it does not match last_action\n");
+#endif
+ add_undo(action);
+ }
+ fs->last_action = action;
+}
+
+#endif /* !NANO_TINY */
+
+#ifndef DISABLE_WRAPPING
+/* Unset the prepend_wrap flag. We need to do this as soon as we do
+ * something other than type text. */
+void wrap_reset(void)
+{
+ prepend_wrap = FALSE;
+}
+
+/* We wrap the given line. Precondition: we assume the cursor has been
+ * moved forward since the last typed character. Return TRUE if we
+ * wrapped, and FALSE otherwise. */
+bool do_wrap(filestruct *line, bool undoing)
+{
+ size_t line_len;
+ /* The length of the line we wrap. */
+ ssize_t wrap_loc;
+ /* The index of line->data where we wrap. */
+#ifndef NANO_TINY
+ const char *indent_string = NULL;
+ /* Indentation to prepend to the new line. */
+ size_t indent_len = 0;
+ /* The length of indent_string. */
+#endif
+ const char *after_break;
+ /* The text after the wrap point. */
+ size_t after_break_len;
+ /* The length of after_break. */
+ bool prepending = FALSE;
+ /* Do we prepend to the next line? */
+ const char *next_line = NULL;
+ /* The next line, minus indentation. */
+ size_t next_line_len = 0;
+ /* The length of next_line. */
+ char *new_line = NULL;
+ /* The line we create. */
+ size_t new_line_len = 0;
+ /* The eventual length of new_line. */
+
+ /* There are three steps. First, we decide where to wrap. Then, we
+ * create the new wrap line. Finally, we clean up. */
+
+ /* Step 1, finding where to wrap. We are going to add a new line
+ * after a blank character. In this step, we call break_line() to
+ * get the location of the last blank we can break the line at, and
+ * set wrap_loc to the location of the character after it, so that
+ * the blank is preserved at the end of the line.
+ *
+ * If there is no legal wrap point, or we reach the last character
+ * of the line while trying to find one, we should return without
+ * wrapping. Note that if autoindent is turned on, we don't break
+ * at the end of it! */
+ assert(line != NULL && line->data != NULL);
+
+ /* Save the length of the line. */
+ line_len = strlen(line->data);
+
+ /* Find the last blank where we can break the line. */
+ wrap_loc = break_line(line->data, fill
+#ifndef DISABLE_HELP
+ , FALSE
+#endif
+ );
+
+ /* If we couldn't break the line, or we've reached the end of it, we
+ * don't wrap. */
+ if (wrap_loc == -1 || line->data[wrap_loc] == '\0')
+ return FALSE;
+
+ /* Otherwise, move forward to the character just after the blank. */
+ wrap_loc += move_mbright(line->data + wrap_loc, 0);
+
+ /* If we've reached the end of the line, we don't wrap. */
+ if (line->data[wrap_loc] == '\0')
+ return FALSE;
+
+#ifndef NANO_TINY
+ if (!undoing)
+ add_undo(SPLIT);
+
+ /* If autoindent is turned on, and we're on the character just after
+ * the indentation, we don't wrap. */
+ if (ISSET(AUTOINDENT)) {
+ /* Get the indentation of this line. */
+ indent_string = line->data;
+ indent_len = indent_length(indent_string);
+
+ if (wrap_loc == indent_len)
+ return FALSE;
+ }
+#endif
+
+ /* Step 2, making the new wrap line. It will consist of indentation
+ * followed by the text after the wrap point, optionally followed by
+ * a space (if the text after the wrap point doesn't end in a blank)
+ * and the text of the next line, if they can fit without wrapping,
+ * the next line exists, and the prepend_wrap flag is set. */
+
+ /* after_break is the text that will be wrapped to the next line. */
+ after_break = line->data + wrap_loc;
+ after_break_len = line_len - wrap_loc;
+
+ assert(strlen(after_break) == after_break_len);
+
+ /* We prepend the wrapped text to the next line, if the prepend_wrap
+ * flag is set, there is a next line, and prepending would not make
+ * the line too long. */
+ if (prepend_wrap && line != openfile->filebot) {
+ const char *end = after_break + move_mbleft(after_break,
+ after_break_len);
+
+ /* If after_break doesn't end in a blank, make sure it ends in a
+ * space. */
+ if (!is_blank_mbchar(end)) {
+ line_len++;
+ line->data = charealloc(line->data, line_len + 1);
+ line->data[line_len - 1] = ' ';
+ line->data[line_len] = '\0';
+ after_break = line->data + wrap_loc;
+ after_break_len++;
+ openfile->totsize++;
+ }
+
+ next_line = line->next->data;
+ next_line_len = strlen(next_line);
+
+ if (after_break_len + next_line_len <= fill) {
+ prepending = TRUE;
+ new_line_len += next_line_len;
+ }
+ }
+
+ /* new_line_len is now the length of the text that will be wrapped
+ * to the next line, plus (if we're prepending to it) the length of
+ * the text of the next line. */
+ new_line_len += after_break_len;
+
+#ifndef NANO_TINY
+ if (ISSET(AUTOINDENT)) {
+ if (prepending) {
+ /* If we're prepending, the indentation will come from the
+ * next line. */
+ indent_string = next_line;
+ indent_len = indent_length(indent_string);
+ next_line += indent_len;
+ } else {
+ /* Otherwise, it will come from this line, in which case
+ * we should increase new_line_len to make room for it. */
+ new_line_len += indent_len;
+ openfile->totsize += mbstrnlen(indent_string, indent_len);
+ }
+ }
+#endif
+
+ /* Now we allocate the new line and copy the text into it. */
+ new_line = charalloc(new_line_len + 1);
+ new_line[0] = '\0';
+
+#ifndef NANO_TINY
+ if (ISSET(AUTOINDENT)) {
+ /* Copy the indentation. */
+ strncpy(new_line, indent_string, indent_len);
+ new_line[indent_len] = '\0';
+ new_line_len += indent_len;
+ }
+#endif
+
+ /* Copy all the text after the wrap point of the current line. */
+ strcat(new_line, after_break);
+
+ /* Break the current line at the wrap point. */
+ null_at(&line->data, wrap_loc);
+
+ if (prepending) {
+ if (!undoing)
+ update_undo(SPLIT);
+ /* If we're prepending, copy the text from the next line, minus
+ * the indentation that we already copied above. */
+ strcat(new_line, next_line);
+
+ free(line->next->data);
+ line->next->data = new_line;
+
+ /* If the NO_NEWLINES flag isn't set, and text has been added to
+ * the magicline, make a new magicline. */
+ if (!ISSET(NO_NEWLINES) && openfile->filebot->data[0] != '\0')
+ new_magicline();
+ } else {
+ /* Otherwise, make a new line and copy the text after where we
+ * broke this line to the beginning of the new line. */
+ splice_node(openfile->current, make_new_node(openfile->current),
+ openfile->current->next);
+
+ /* If the current line is the last line of the file, move the
+ * last line of the file down to the next line. */
+ if (openfile->filebot == openfile->current)
+ openfile->filebot = openfile->current->next;
+
+ openfile->current->next->data = new_line;
+
+ openfile->totsize++;
+ }
+
+ /* Step 3, clean up. Reposition the cursor and mark, and do some
+ * other sundry things. */
+
+ /* Set the prepend_wrap flag, so that later wraps of this line will
+ * be prepended to the next line. */
+ prepend_wrap = TRUE;
+
+ /* Each line knows its number. We recalculate these if we inserted
+ * a new line. */
+ if (!prepending)
+ renumber(line);
+
+ /* If the cursor was after the break point, we must move it. We
+ * also clear the prepend_wrap flag in this case. */
+ if (openfile->current_x > wrap_loc) {
+ prepend_wrap = FALSE;
+
+ openfile->current = openfile->current->next;
+ openfile->current_x -= wrap_loc
+#ifndef NANO_TINY
+ - indent_len
+#endif
+ ;
+ openfile->placewewant = xplustabs();
+ }
+
+#ifndef NANO_TINY
+ /* If the mark was on this line after the wrap point, we move it
+ * down. If it was on the next line and we prepended to that line,
+ * we move it right. */
+ if (openfile->mark_set) {
+ if (openfile->mark_begin == line && openfile->mark_begin_x >
+ wrap_loc) {
+ openfile->mark_begin = line->next;
+ openfile->mark_begin_x -= wrap_loc - indent_len + 1;
+ } else if (prepending && openfile->mark_begin == line->next)
+ openfile->mark_begin_x += after_break_len;
+ }
+#endif
+
+ return TRUE;
+}
+#endif /* !DISABLE_WRAPPING */
+
+#if !defined(DISABLE_HELP) || !defined(DISABLE_WRAPJUSTIFY)
+/* We are trying to break a chunk off line. We find the last blank such
+ * that the display length to there is at most (goal + 1). If there is
+ * no such blank, then we find the first blank. We then take the last
+ * blank in that group of blanks. The terminating '\0' counts as a
+ * blank, as does a '\n' if newline is TRUE. */
+ssize_t break_line(const char *line, ssize_t goal
+#ifndef DISABLE_HELP
+ , bool newln
+#endif
+ )
+{
+ ssize_t blank_loc = -1;
+ /* Current tentative return value. Index of the last blank we
+ * found with short enough display width. */
+ ssize_t cur_loc = 0;
+ /* Current index in line. */
+ size_t cur_pos = 0;
+ /* Current column position in line. */
+ int line_len;
+
+ assert(line != NULL);
+
+ while (*line != '\0' && goal >= cur_pos) {
+ line_len = parse_mbchar(line, NULL, &cur_pos);
+
+ if (is_blank_mbchar(line)
+#ifndef DISABLE_HELP
+ || (newln && *line == '\n')
+#endif
+ ) {
+ blank_loc = cur_loc;
+
+#ifndef DISABLE_HELP
+ if (newln && *line == '\n')
+ break;
+#endif
+ }
+
+ line += line_len;
+ cur_loc += line_len;
+ }
+
+ if (goal >= cur_pos)
+ /* In fact, the whole line displays shorter than goal. */
+ return cur_loc;
+
+#ifndef DISABLE_HELP
+ if (newln && blank_loc <= 0) {
+ /* If blank was not found or was found only first character,
+ * force line break. */
+ cur_loc -= line_len;
+ return cur_loc;
+ }
+#endif
+
+ if (blank_loc == -1) {
+ /* No blank was found that was short enough. */
+ bool found_blank = FALSE;
+ ssize_t found_blank_loc = 0;
+
+ while (*line != '\0') {
+ line_len = parse_mbchar(line, NULL, NULL);
+
+ if (is_blank_mbchar(line)
+#ifndef DISABLE_HELP
+ || (newln && *line == '\n')
+#endif
+ ) {
+ if (!found_blank)
+ found_blank = TRUE;
+ found_blank_loc = cur_loc;
+ } else if (found_blank)
+ return found_blank_loc;
+
+ line += line_len;
+ cur_loc += line_len;
+ }
+
+ return -1;
+ }
+
+ /* Move to the last blank after blank_loc, if there is one. */
+ line -= cur_loc;
+ line += blank_loc;
+ line_len = parse_mbchar(line, NULL, NULL);
+ line += line_len;
+
+ while (*line != '\0' && (is_blank_mbchar(line)
+#ifndef DISABLE_HELP
+ || (newln && *line == '\n')
+#endif
+ )) {
+#ifndef DISABLE_HELP
+ if (newln && *line == '\n')
+ break;
+#endif
+
+ line_len = parse_mbchar(line, NULL, NULL);
+
+ line += line_len;
+ blank_loc += line_len;
+ }
+
+ return blank_loc;
+}
+#endif /* !DISABLE_HELP || !DISABLE_WRAPJUSTIFY */
+
+#if !defined(NANO_TINY) || !defined(DISABLE_JUSTIFY)
+/* The "indentation" of a line is the whitespace between the quote part
+ * and the non-whitespace of the line. */
+size_t indent_length(const char *line)
+{
+ size_t len = 0;
+ char *blank_mb;
+ int blank_mb_len;
+
+ assert(line != NULL);
+
+ blank_mb = charalloc(mb_cur_max());
+
+ while (*line != '\0') {
+ blank_mb_len = parse_mbchar(line, blank_mb, NULL);
+
+ if (!is_blank_mbchar(blank_mb))
+ break;
+
+ line += blank_mb_len;
+ len += blank_mb_len;
+ }
+
+ free(blank_mb);
+
+ return len;
+}
+#endif /* !NANO_TINY || !DISABLE_JUSTIFY */
+
+#ifndef DISABLE_JUSTIFY
+/* justify_format() replaces blanks with spaces and multiple spaces by 1
+ * (except it maintains up to 2 after a character in punct optionally
+ * followed by a character in brackets, and removes all from the end).
+ *
+ * justify_format() might make paragraph->data shorter, and change the
+ * actual pointer with null_at().
+ *
+ * justify_format() will not look at the first skip characters of
+ * paragraph. skip should be at most strlen(paragraph->data). The
+ * character at paragraph[skip + 1] must not be blank. */
+void justify_format(filestruct *paragraph, size_t skip)
+{
+ char *end, *new_end, *new_paragraph_data;
+ size_t shift = 0;
+#ifndef NANO_TINY
+ size_t mark_shift = 0;
+#endif
+
+ /* These four asserts are assumptions about the input data. */
+ assert(paragraph != NULL);
+ assert(paragraph->data != NULL);
+ assert(skip < strlen(paragraph->data));
+ assert(!is_blank_mbchar(paragraph->data + skip));
+
+ end = paragraph->data + skip;
+ new_paragraph_data = charalloc(strlen(paragraph->data) + 1);
+ strncpy(new_paragraph_data, paragraph->data, skip);
+ new_end = new_paragraph_data + skip;
+
+ while (*end != '\0') {
+ int end_len;
+
+ /* If this character is blank, change it to a space if
+ * necessary, and skip over all blanks after it. */
+ if (is_blank_mbchar(end)) {
+ end_len = parse_mbchar(end, NULL, NULL);
+
+ *new_end = ' ';
+ new_end++;
+ end += end_len;
+
+ while (*end != '\0' && is_blank_mbchar(end)) {
+ end_len = parse_mbchar(end, NULL, NULL);
+
+ end += end_len;
+ shift += end_len;
+
+#ifndef NANO_TINY
+ /* Keep track of the change in the current line. */
+ if (openfile->mark_set && openfile->mark_begin ==
+ paragraph && openfile->mark_begin_x >= end -
+ paragraph->data)
+ mark_shift += end_len;
+#endif
+ }
+ /* If this character is punctuation optionally followed by a
+ * bracket and then followed by blanks, change no more than two
+ * of the blanks to spaces if necessary, and skip over all
+ * blanks after them. */
+ } else if (mbstrchr(punct, end) != NULL) {
+ end_len = parse_mbchar(end, NULL, NULL);
+
+ while (end_len > 0) {
+ *new_end = *end;
+ new_end++;
+ end++;
+ end_len--;
+ }
+
+ if (*end != '\0' && mbstrchr(brackets, end) != NULL) {
+ end_len = parse_mbchar(end, NULL, NULL);
+
+ while (end_len > 0) {
+ *new_end = *end;
+ new_end++;
+ end++;
+ end_len--;
+ }
+ }
+
+ if (*end != '\0' && is_blank_mbchar(end)) {
+ end_len = parse_mbchar(end, NULL, NULL);
+
+ *new_end = ' ';
+ new_end++;
+ end += end_len;
+ }
+
+ if (*end != '\0' && is_blank_mbchar(end)) {
+ end_len = parse_mbchar(end, NULL, NULL);
+
+ *new_end = ' ';
+ new_end++;
+ end += end_len;
+ }
+
+ while (*end != '\0' && is_blank_mbchar(end)) {
+ end_len = parse_mbchar(end, NULL, NULL);
+
+ end += end_len;
+ shift += end_len;
+
+#ifndef NANO_TINY
+ /* Keep track of the change in the current line. */
+ if (openfile->mark_set && openfile->mark_begin ==
+ paragraph && openfile->mark_begin_x >= end -
+ paragraph->data)
+ mark_shift += end_len;
+#endif
+ }
+ /* If this character is neither blank nor punctuation, leave it
+ * unchanged. */
+ } else {
+ end_len = parse_mbchar(end, NULL, NULL);
+
+ while (end_len > 0) {
+ *new_end = *end;
+ new_end++;
+ end++;
+ end_len--;
+ }
+ }
+ }
+
+ assert(*end == '\0');
+
+ *new_end = *end;
+
+ /* If there are spaces at the end of the line, remove them. */
+ while (new_end > new_paragraph_data + skip &&
+ *(new_end - 1) == ' ') {
+ new_end--;
+ shift++;
+ }
+
+ if (shift > 0) {
+ openfile->totsize -= shift;
+ null_at(&new_paragraph_data, new_end - new_paragraph_data);
+ free(paragraph->data);
+ paragraph->data = new_paragraph_data;
+
+#ifndef NANO_TINY
+ /* Adjust the mark coordinates to compensate for the change in
+ * the current line. */
+ if (openfile->mark_set && openfile->mark_begin == paragraph) {
+ openfile->mark_begin_x -= mark_shift;
+ if (openfile->mark_begin_x > new_end - new_paragraph_data)
+ openfile->mark_begin_x = new_end - new_paragraph_data;
+ }
+#endif
+ } else
+ free(new_paragraph_data);
+}
+
+/* The "quote part" of a line is the largest initial substring matching
+ * the quote string. This function returns the length of the quote part
+ * of the given line.
+ *
+ * Note that if !HAVE_REGEX_H then we match concatenated copies of
+ * quotestr. */
+size_t quote_length(const char *line)
+{
+#ifdef HAVE_REGEX_H
+ regmatch_t matches;
+ int rc = regexec(&quotereg, line, 1, &matches, 0);
+
+ if (rc == REG_NOMATCH || matches.rm_so == (regoff_t)-1)
+ return 0;
+ /* matches.rm_so should be 0, since the quote string should start
+ * with the caret ^. */
+ return matches.rm_eo;
+#else /* !HAVE_REGEX_H */
+ size_t qdepth = 0;
+
+ /* Compute quote depth level. */
+ while (strncmp(line + qdepth, quotestr, quotelen) == 0)
+ qdepth += quotelen;
+ return qdepth;
+#endif /* !HAVE_REGEX_H */
+}
+
+/* a_line and b_line are lines of text. The quotation part of a_line is
+ * the first a_quote characters. Check that the quotation part of
+ * b_line is the same. */
+bool quotes_match(const char *a_line, size_t a_quote, const char
+ *b_line)
+{
+ /* Here is the assumption about a_quote. */
+ assert(a_quote == quote_length(a_line));
+
+ return (a_quote == quote_length(b_line) &&
+ strncmp(a_line, b_line, a_quote) == 0);
+}
+
+/* We assume a_line and b_line have no quote part. Then, we return
+ * whether b_line could follow a_line in a paragraph. */
+bool indents_match(const char *a_line, size_t a_indent, const char
+ *b_line, size_t b_indent)
+{
+ assert(a_indent == indent_length(a_line));
+ assert(b_indent == indent_length(b_line));
+
+ return (b_indent <= a_indent &&
+ strncmp(a_line, b_line, b_indent) == 0);
+}
+
+/* Is foo the beginning of a paragraph?
+ *
+ * A line of text consists of a "quote part", followed by an
+ * "indentation part", followed by text. The functions quote_length()
+ * and indent_length() calculate these parts.
+ *
+ * A line is "part of a paragraph" if it has a part not in the quote
+ * part or the indentation.
+ *
+ * A line is "the beginning of a paragraph" if it is part of a
+ * paragraph and
+ * 1) it is the top line of the file, or
+ * 2) the line above it is not part of a paragraph, or
+ * 3) the line above it does not have precisely the same quote
+ * part, or
+ * 4) the indentation of this line is not an initial substring of
+ * the indentation of the previous line, or
+ * 5) this line has no quote part and some indentation, and
+ * autoindent isn't turned on.
+ * The reason for number 5) is that if autoindent isn't turned on,
+ * then an indented line is expected to start a paragraph, as in
+ * books. Thus, nano can justify an indented paragraph only if
+ * autoindent is turned on. */
+bool begpar(const filestruct *const foo)
+{
+ size_t quote_len, indent_len, temp_id_len;
+
+ if (foo == NULL)
+ return FALSE;
+
+ /* Case 1). */
+ if (foo == openfile->fileage)
+ return TRUE;
+
+ quote_len = quote_length(foo->data);
+ indent_len = indent_length(foo->data + quote_len);
+
+ /* Not part of a paragraph. */
+ if (foo->data[quote_len + indent_len] == '\0')
+ return FALSE;
+
+ /* Case 3). */
+ if (!quotes_match(foo->data, quote_len, foo->prev->data))
+ return TRUE;
+
+ temp_id_len = indent_length(foo->prev->data + quote_len);
+
+ /* Case 2) or 5) or 4). */
+ if (foo->prev->data[quote_len + temp_id_len] == '\0' ||
+ (quote_len == 0 && indent_len > 0
+#ifndef NANO_TINY
+ && !ISSET(AUTOINDENT)
+#endif
+ ) || !indents_match(foo->prev->data + quote_len, temp_id_len,
+ foo->data + quote_len, indent_len))
+ return TRUE;
+
+ return FALSE;
+}
+
+/* Is foo inside a paragraph? */
+bool inpar(const filestruct *const foo)
+{
+ size_t quote_len;
+
+ if (foo == NULL)
+ return FALSE;
+
+ quote_len = quote_length(foo->data);
+
+ return (foo->data[quote_len + indent_length(foo->data +
+ quote_len)] != '\0');
+}
+
+/* Move the next par_len lines, starting with first_line, into the
+ * justify buffer, leaving copies of those lines in place. Assume that
+ * par_len is greater than zero, and that there are enough lines after
+ * first_line. */
+void backup_lines(filestruct *first_line, size_t par_len)
+{
+ filestruct *top = first_line;
+ /* The top of the paragraph we're backing up. */
+ filestruct *bot = first_line;
+ /* The bottom of the paragraph we're backing up. */
+ size_t i;
+ /* Generic loop variable. */
+ size_t current_x_save = openfile->current_x;
+ ssize_t fl_lineno_save = first_line->lineno;
+ ssize_t edittop_lineno_save = openfile->edittop->lineno;
+ ssize_t current_lineno_save = openfile->current->lineno;
+#ifndef NANO_TINY
+ bool old_mark_set = openfile->mark_set;
+ ssize_t mb_lineno_save = 0;
+ size_t mark_begin_x_save = 0;
+
+ if (old_mark_set) {
+ mb_lineno_save = openfile->mark_begin->lineno;
+ mark_begin_x_save = openfile->mark_begin_x;
+ }
+#endif
+
+ /* par_len will be one greater than the number of lines between
+ * current and filebot if filebot is the last line in the
+ * paragraph. */
+ assert(par_len > 0 && openfile->current->lineno + par_len <=
+ openfile->filebot->lineno + 1);
+
+ /* Move bot down par_len lines to the line after the last line of
+ * the paragraph, if there is one. */
+ for (i = par_len; i > 0 && bot != openfile->filebot; i--)
+ bot = bot->next;
+
+ /* Move the paragraph from the current buffer's filestruct to the
+ * justify buffer. */
+ move_to_filestruct(&jusbuffer, &jusbottom, top, 0, bot,
+ (i == 1 && bot == openfile->filebot) ? strlen(bot->data) : 0);
+
+ /* Copy the paragraph back to the current buffer's filestruct from
+ * the justify buffer. */
+ copy_from_filestruct(jusbuffer, jusbottom);
+
+ /* Move upward from the last line of the paragraph to the first
+ * line, putting first_line, edittop, current, and mark_begin at the
+ * same lines in the copied paragraph that they had in the original
+ * paragraph. */
+ if (openfile->current != openfile->fileage) {
+ top = openfile->current->prev;
+#ifndef NANO_TINY
+ if (old_mark_set &&
+ openfile->current->lineno == mb_lineno_save) {
+ openfile->mark_begin = openfile->current;
+ openfile->mark_begin_x = mark_begin_x_save;
+ }
+#endif
+ } else
+ top = openfile->current;
+ for (i = par_len; i > 0 && top != NULL; i--) {
+ if (top->lineno == fl_lineno_save)
+ first_line = top;
+ if (top->lineno == edittop_lineno_save)
+ openfile->edittop = top;
+ if (top->lineno == current_lineno_save)
+ openfile->current = top;
+#ifndef NANO_TINY
+ if (old_mark_set && top->lineno == mb_lineno_save) {
+ openfile->mark_begin = top;
+ openfile->mark_begin_x = mark_begin_x_save;
+ }
+#endif
+ top = top->prev;
+ }
+
+ /* Put current_x at the same place in the copied paragraph that it
+ * had in the original paragraph. */
+ openfile->current_x = current_x_save;
+
+ set_modified();
+}
+
+/* Find the beginning of the current paragraph if we're in one, or the
+ * beginning of the next paragraph if we're not. Afterwards, save the
+ * quote length and paragraph length in *quote and *par. Return TRUE if
+ * we found a paragraph, and FALSE if there was an error or we didn't
+ * find a paragraph.
+ *
+ * See the comment at begpar() for more about when a line is the
+ * beginning of a paragraph. */
+bool find_paragraph(size_t *const quote, size_t *const par)
+{
+ size_t quote_len;
+ /* Length of the initial quotation of the paragraph we search
+ * for. */
+ size_t par_len;
+ /* Number of lines in the paragraph we search for. */
+ filestruct *current_save;
+ /* The line at the beginning of the paragraph we search for. */
+ ssize_t current_y_save;
+ /* The y-coordinate at the beginning of the paragraph we search
+ * for. */
+
+#ifdef HAVE_REGEX_H
+ if (quoterc != 0) {
+ statusbar(_("Bad quote string %s: %s"), quotestr, quoteerr);
+ return FALSE;
+ }
+#endif
+
+ assert(openfile->current != NULL);
+
+ /* If we're at the end of the last line of the file, it means that
+ * there aren't any paragraphs left, so get out. */
+ if (openfile->current == openfile->filebot && openfile->current_x ==
+ strlen(openfile->filebot->data))
+ return FALSE;
+
+ /* If the current line isn't in a paragraph, move forward to the
+ * last line of the next paragraph, if any. */
+ if (!inpar(openfile->current)) {
+ do_para_end(FALSE);
+
+ /* If we end up past the beginning of the line, it means that
+ * we're at the end of the last line of the file, and the line
+ * isn't blank, in which case the last line of the file is the
+ * last line of the next paragraph.
+ *
+ * Otherwise, if we end up on a line that's in a paragraph, it
+ * means that we're on the line after the last line of the next
+ * paragraph, in which case we should move back to the last line
+ * of the next paragraph. */
+ if (openfile->current_x == 0) {
+ if (!inpar(openfile->current->prev))
+ return FALSE;
+ if (openfile->current != openfile->fileage)
+ openfile->current = openfile->current->prev;
+ }
+ }
+
+ /* If the current line isn't the first line of the paragraph, move
+ * back to the first line of the paragraph. */
+ if (!begpar(openfile->current))
+ do_para_begin(FALSE);
+
+ /* Now current is the first line of the paragraph. Set quote_len to
+ * the quotation length of that line, and set par_len to the number
+ * of lines in this paragraph. */
+ quote_len = quote_length(openfile->current->data);
+ current_save = openfile->current;
+ current_y_save = openfile->current_y;
+ do_para_end(FALSE);
+ par_len = openfile->current->lineno - current_save->lineno;
+
+ /* If we end up past the beginning of the line, it means that we're
+ * at the end of the last line of the file, and the line isn't
+ * blank, in which case the last line of the file is part of the
+ * paragraph. */
+ if (openfile->current_x > 0)
+ par_len++;
+ openfile->current = current_save;
+ openfile->current_y = current_y_save;
+
+ /* Save the values of quote_len and par_len. */
+ assert(quote != NULL && par != NULL);
+
+ *quote = quote_len;
+ *par = par_len;
+
+ return TRUE;
+}
+
+/* If full_justify is TRUE, justify the entire file. Otherwise, justify
+ * the current paragraph. */
+void do_justify(bool full_justify)
+{
+ filestruct *first_par_line = NULL;
+ /* Will be the first line of the justified paragraph(s), if any.
+ * For restoring after unjustify. */
+ filestruct *last_par_line = NULL;
+ /* Will be the line after the last line of the justified
+ * paragraph(s), if any. Also for restoring after unjustify. */
+ bool filebot_inpar = FALSE;
+ /* Whether the text at filebot is part of the current
+ * paragraph. */
+
+ /* We save these variables to be restored if the user
+ * unjustifies. */
+ filestruct *edittop_save = openfile->edittop;
+ filestruct *current_save = openfile->current;
+ size_t current_x_save = openfile->current_x;
+ size_t pww_save = openfile->placewewant;
+ size_t totsize_save = openfile->totsize;
+#ifndef NANO_TINY
+ filestruct *mark_begin_save = openfile->mark_begin;
+ size_t mark_begin_x_save = openfile->mark_begin_x;
+#endif
+ bool modified_save = openfile->modified;
+
+ int kbinput;
+ bool meta_key, func_key, s_or_t, ran_func, finished;
+ const sc *s;
+
+ /* Move to the beginning of the current line, so that justifying at
+ * the end of the last line of the file, if that line isn't blank,
+ * will work the first time through. */
+ openfile->current_x = 0;
+
+ /* If we're justifying the entire file, start at the beginning. */
+ if (full_justify)
+ openfile->current = openfile->fileage;
+
+ while (TRUE) {
+ size_t i;
+ /* Generic loop variable. */
+ filestruct *curr_first_par_line;
+ /* The first line of the current paragraph. */
+ size_t quote_len;
+ /* Length of the initial quotation of the current
+ * paragraph. */
+ size_t indent_len;
+ /* Length of the initial indentation of the current
+ * paragraph. */
+ size_t par_len;
+ /* Number of lines in the current paragraph. */
+ ssize_t break_pos;
+ /* Where we will break lines. */
+ char *indent_string;
+ /* The first indentation that doesn't match the initial
+ * indentation of the current paragraph. This is put at the
+ * beginning of every line broken off the first justified
+ * line of the paragraph. Note that this works because a
+ * paragraph can only contain two indentations at most: the
+ * initial one, and a different one starting on a line after
+ * the first. See the comment at begpar() for more about
+ * when a line is part of a paragraph. */
+
+ /* Find the first line of the paragraph to be justified. That
+ * is the start of this paragraph if we're in one, or the start
+ * of the next otherwise. Save the quote length and paragraph
+ * length (number of lines). Don't refresh the screen yet,
+ * since we'll do that after we justify.
+ *
+ * If the search failed, we do one of two things. If we're
+ * justifying the whole file, and we've found at least one
+ * paragraph, it means that we should justify all the way to the
+ * last line of the file, so set the last line of the text to be
+ * justified to the last line of the file and break out of the
+ * loop. Otherwise, it means that there are no paragraph(s) to
+ * justify, so refresh the screen and get out. */
+ if (!find_paragraph(&quote_len, &par_len)) {
+ if (full_justify && first_par_line != NULL) {
+ last_par_line = openfile->filebot;
+ break;
+ } else {
+ edit_refresh_needed = TRUE;
+ return;
+ }
+ }
+
+ /* par_len will be one greater than the number of lines between
+ * current and filebot if filebot is the last line in the
+ * paragraph. Set filebot_inpar to TRUE if this is the case. */
+ filebot_inpar = (openfile->current->lineno + par_len ==
+ openfile->filebot->lineno + 1);
+
+ /* If we haven't already done it, move the original paragraph(s)
+ * to the justify buffer, splice a copy of the original
+ * paragraph(s) into the file in the same place, and set
+ * first_par_line to the first line of the copy. */
+ if (first_par_line == NULL) {
+ backup_lines(openfile->current, full_justify ?
+ openfile->filebot->lineno - openfile->current->lineno +
+ ((openfile->filebot->data[0] != '\0') ? 1 : 0) :
+ par_len);
+ first_par_line = openfile->current;
+ }
+
+ /* Set curr_first_par_line to the first line of the current
+ * paragraph. */
+ curr_first_par_line = openfile->current;
+
+ /* Initialize indent_string to a blank string. */
+ indent_string = mallocstrcpy(NULL, "");
+
+ /* Find the first indentation in the paragraph that doesn't
+ * match the indentation of the first line, and save it in
+ * indent_string. If all the indentations are the same, save
+ * the indentation of the first line in indent_string. */
+ {
+ const filestruct *indent_line = openfile->current;
+ bool past_first_line = FALSE;
+
+ for (i = 0; i < par_len; i++) {
+ indent_len = quote_len +
+ indent_length(indent_line->data + quote_len);
+
+ if (indent_len != strlen(indent_string)) {
+ indent_string = mallocstrncpy(indent_string,
+ indent_line->data, indent_len + 1);
+ indent_string[indent_len] = '\0';
+
+ if (past_first_line)
+ break;
+ }
+
+ if (indent_line == openfile->current)
+ past_first_line = TRUE;
+
+ indent_line = indent_line->next;
+ }
+ }
+
+ /* Now tack all the lines of the paragraph together, skipping
+ * the quoting and indentation on all lines after the first. */
+ for (i = 0; i < par_len - 1; i++) {
+ filestruct *next_line = openfile->current->next;
+ size_t line_len = strlen(openfile->current->data);
+ size_t next_line_len =
+ strlen(openfile->current->next->data);
+
+ indent_len = quote_len +
+ indent_length(openfile->current->next->data +
+ quote_len);
+
+ next_line_len -= indent_len;
+ openfile->totsize -= indent_len;
+
+ /* We're just about to tack the next line onto this one. If
+ * this line isn't empty, make sure it ends in a space. */
+ if (line_len > 0 &&
+ openfile->current->data[line_len - 1] != ' ') {
+ line_len++;
+ openfile->current->data =
+ charealloc(openfile->current->data,
+ line_len + 1);
+ openfile->current->data[line_len - 1] = ' ';
+ openfile->current->data[line_len] = '\0';
+ openfile->totsize++;
+ }
+
+ openfile->current->data =
+ charealloc(openfile->current->data, line_len +
+ next_line_len + 1);
+ strcat(openfile->current->data, next_line->data +
+ indent_len);
+
+ /* Don't destroy edittop or filebot! */
+ if (next_line == openfile->edittop)
+ openfile->edittop = openfile->current;
+ if (next_line == openfile->filebot)
+ openfile->filebot = openfile->current;
+
+#ifndef NANO_TINY
+ /* Adjust the mark coordinates to compensate for the change
+ * in the next line. */
+ if (openfile->mark_set && openfile->mark_begin ==
+ next_line) {
+ openfile->mark_begin = openfile->current;
+ openfile->mark_begin_x += line_len - indent_len;
+ }
+#endif
+
+ unlink_node(next_line);
+ delete_node(next_line);
+
+ /* If we've removed the next line, we need to go through
+ * this line again. */
+ i--;
+
+ par_len--;
+ openfile->totsize--;
+ }
+
+ /* Call justify_format() on the paragraph, which will remove
+ * excess spaces from it and change all blank characters to
+ * spaces. */
+ justify_format(openfile->current, quote_len +
+ indent_length(openfile->current->data + quote_len));
+
+ while (par_len > 0 && strlenpt(openfile->current->data) >
+ fill) {
+ size_t line_len = strlen(openfile->current->data);
+
+ indent_len = strlen(indent_string);
+
+ /* If this line is too long, try to wrap it to the next line
+ * to make it short enough. */
+ break_pos = break_line(openfile->current->data + indent_len,
+ fill - strnlenpt(openfile->current->data, indent_len)
+#ifndef DISABLE_HELP
+ , FALSE
+#endif
+ );
+
+ /* We can't break the line, or don't need to, so get out. */
+ if (break_pos == -1 || break_pos + indent_len == line_len)
+ break;
+
+ /* Move forward to the character after the indentation and
+ * just after the space. */
+ break_pos += indent_len + 1;
+
+ assert(break_pos <= line_len);
+
+ /* Make a new line, and copy the text after where we're
+ * going to break this line to the beginning of the new
+ * line. */
+ splice_node(openfile->current,
+ make_new_node(openfile->current),
+ openfile->current->next);
+
+ /* If this paragraph is non-quoted, and autoindent isn't
+ * turned on, set the indentation length to zero so that the
+ * indentation is treated as part of the line. */
+ if (quote_len == 0
+#ifndef NANO_TINY
+ && !ISSET(AUTOINDENT)
+#endif
+ )
+ indent_len = 0;
+
+ /* Copy the text after where we're going to break the
+ * current line to the next line. */
+ openfile->current->next->data = charalloc(indent_len + 1 +
+ line_len - break_pos);
+ strncpy(openfile->current->next->data, indent_string,
+ indent_len);
+ strcpy(openfile->current->next->data + indent_len,
+ openfile->current->data + break_pos);
+
+ par_len++;
+ openfile->totsize += indent_len + 1;
+
+#ifndef NANO_TINY
+ /* Adjust the mark coordinates to compensate for the change
+ * in the current line. */
+ if (openfile->mark_set && openfile->mark_begin ==
+ openfile->current && openfile->mark_begin_x >
+ break_pos) {
+ openfile->mark_begin = openfile->current->next;
+ openfile->mark_begin_x -= break_pos - indent_len;
+ }
+#endif
+
+ /* Break the current line. */
+ null_at(&openfile->current->data, break_pos);
+
+ /* If the current line is the last line of the file, move
+ * the last line of the file down to the next line. */
+ if (openfile->filebot == openfile->current)
+ openfile->filebot = openfile->filebot->next;
+
+ /* Go to the next line. */
+ par_len--;
+ openfile->current_y++;
+ openfile->current = openfile->current->next;
+ }
+
+ /* We're done breaking lines, so we don't need indent_string
+ * anymore. */
+ free(indent_string);
+
+ /* Go to the next line, if possible. If there is no next line,
+ * move to the end of the current line. */
+ if (openfile->current != openfile->filebot) {
+ openfile->current_y++;
+ openfile->current = openfile->current->next;
+ } else
+ openfile->current_x = strlen(openfile->current->data);
+
+ /* Renumber the lines of the now-justified current paragraph,
+ * since both find_paragraph() and edit_refresh() need the line
+ * numbers to be right. */
+ renumber(curr_first_par_line);
+
+ /* We've just finished justifying the paragraph. If we're not
+ * justifying the entire file, break out of the loop.
+ * Otherwise, continue the loop so that we justify all the
+ * paragraphs in the file. */
+ if (!full_justify)
+ break;
+ }
+
+ /* We are now done justifying the paragraph or the file, so clean
+ * up. current_y and totsize have been maintained above. If we
+ * actually justified something, set last_par_line to the new end of
+ * the paragraph. */
+ if (first_par_line != NULL)
+ last_par_line = openfile->current;
+
+ edit_refresh();
+
+#ifndef NANO_TINY
+ /* We're going to set jump_buf so that we return here after a
+ * SIGWINCH instead of to main(). Indicate this. */
+ jump_buf_main = FALSE;
+
+ /* Return here after a SIGWINCH. */
+ sigsetjmp(jump_buf, 1);
+#endif
+
+ statusbar(_("Can now UnJustify!"));
+
+ /* If constant cursor position display is on, make sure the current
+ * cursor position will be properly displayed on the statusbar. */
+ if (ISSET(CONST_UPDATE))
+ do_cursorpos(TRUE);
+
+ /* Display the shortcut list with UnJustify. */
+ shortcut_init(TRUE);
+ display_main_list();
+
+ /* Now get a keystroke and see if it's unjustify. If not, put back
+ * the keystroke and return. */
+ kbinput = do_input(&meta_key, &func_key, &s_or_t, &ran_func,
+ &finished, FALSE);
+ s = get_shortcut(currmenu, &kbinput, &meta_key, &func_key);
+
+ if (s && s->scfunc == DO_UNCUT_TEXT) {
+ /* Splice the justify buffer back into the file, but only if we
+ * actually justified something. */
+ if (first_par_line != NULL) {
+ filestruct *top_save;
+
+ /* Partition the filestruct so that it contains only the
+ * text of the justified paragraph. */
+ filepart = partition_filestruct(first_par_line, 0,
+ last_par_line, filebot_inpar ?
+ strlen(last_par_line->data) : 0);
+
+ /* Remove the text of the justified paragraph, and
+ * replace it with the text in the justify buffer. */
+ free_filestruct(openfile->fileage);
+ openfile->fileage = jusbuffer;
+ openfile->filebot = jusbottom;
+
+ top_save = openfile->fileage;
+
+ /* Unpartition the filestruct so that it contains all the
+ * text again. Note that the justified paragraph has been
+ * replaced with the unjustified paragraph. */
+ unpartition_filestruct(&filepart);
+
+ /* Renumber starting with the beginning line of the old
+ * partition. */
+ renumber(top_save);
+
+ /* Restore the justify we just did (ungrateful user!). */
+ openfile->edittop = edittop_save;
+ openfile->current = current_save;
+ openfile->current_x = current_x_save;
+ openfile->placewewant = pww_save;
+ openfile->totsize = totsize_save;
+#ifndef NANO_TINY
+ if (openfile->mark_set) {
+ openfile->mark_begin = mark_begin_save;
+ openfile->mark_begin_x = mark_begin_x_save;
+ }
+#endif
+ openfile->modified = modified_save;
+
+ /* Clear the justify buffer. */
+ jusbuffer = NULL;
+
+ if (!openfile->modified)
+ titlebar(NULL);
+ edit_refresh_needed = TRUE;
+ }
+ } else {
+ unget_kbinput(kbinput, meta_key, func_key);
+
+ /* Blow away the text in the justify buffer. */
+ free_filestruct(jusbuffer);
+ jusbuffer = NULL;
+ }
+
+ blank_statusbar();
+
+ /* Display the shortcut list with UnCut. */
+ shortcut_init(FALSE);
+ display_main_list();
+}
+
+/* Justify the current paragraph. */
+void do_justify_void(void)
+{
+ do_justify(FALSE);
+}
+
+/* Justify the entire file. */
+void do_full_justify(void)
+{
+ do_justify(TRUE);
+}
+#endif /* !DISABLE_JUSTIFY */
+
+#ifndef DISABLE_SPELLER
+/* A word is misspelled in the file. Let the user replace it. We
+ * return FALSE if the user cancels. */
+bool do_int_spell_fix(const char *word)
+{
+ char *save_search, *save_replace;
+ size_t match_len, current_x_save = openfile->current_x;
+ size_t pww_save = openfile->placewewant;
+ bool meta_key = FALSE, func_key = FALSE;
+ filestruct *edittop_save = openfile->edittop;
+ filestruct *current_save = openfile->current;
+ /* Save where we are. */
+ bool canceled = FALSE;
+ /* The return value. */
+ bool case_sens_set = ISSET(CASE_SENSITIVE);
+#ifndef NANO_TINY
+ bool backwards_search_set = ISSET(BACKWARDS_SEARCH);
+#endif
+#ifdef HAVE_REGEX_H
+ bool regexp_set = ISSET(USE_REGEXP);
+#endif
+#ifndef NANO_TINY
+ bool old_mark_set = openfile->mark_set;
+ bool added_magicline = FALSE;
+ /* Whether we added a magicline after filebot. */
+ bool right_side_up = FALSE;
+ /* TRUE if (mark_begin, mark_begin_x) is the top of the mark,
+ * FALSE if (current, current_x) is. */
+ filestruct *top, *bot;
+ size_t top_x, bot_x;
+#endif
+
+ /* Make sure spell-check is case sensitive. */
+ SET(CASE_SENSITIVE);
+
+#ifndef NANO_TINY
+ /* Make sure spell-check goes forward only. */
+ UNSET(BACKWARDS_SEARCH);
+#endif
+#ifdef HAVE_REGEX_H
+ /* Make sure spell-check doesn't use regular expressions. */
+ UNSET(USE_REGEXP);
+#endif
+
+ /* Save the current search/replace strings. */
+ search_init_globals();
+ save_search = last_search;
+ save_replace = last_replace;
+
+ /* Set the search/replace strings to the misspelled word. */
+ last_search = mallocstrcpy(NULL, word);
+ last_replace = mallocstrcpy(NULL, word);
+
+#ifndef NANO_TINY
+ if (old_mark_set) {
+ /* If the mark is on, partition the filestruct so that it
+ * contains only the marked text; if the NO_NEWLINES flag isn't
+ * set, keep track of whether the text will have a magicline
+ * added when we're done correcting misspelled words; and
+ * turn the mark off. */
+ mark_order((const filestruct **)&top, &top_x,
+ (const filestruct **)&bot, &bot_x, &right_side_up);
+ filepart = partition_filestruct(top, top_x, bot, bot_x);
+ if (!ISSET(NO_NEWLINES))
+ added_magicline = (openfile->filebot->data[0] != '\0');
+ openfile->mark_set = FALSE;
+ }
+#endif
+
+ /* Start from the top of the file. */
+ openfile->edittop = openfile->fileage;
+ openfile->current = openfile->fileage;
+ openfile->current_x = (size_t)-1;
+ openfile->placewewant = 0;
+
+ /* Find the first whole occurrence of word. */
+ findnextstr_wrap_reset();
+ while (findnextstr(TRUE, FALSE, openfile->fileage, 0, word,
+ &match_len)) {
+ if (is_whole_word(openfile->current_x, openfile->current->data,
+ word)) {
+ size_t xpt = xplustabs();
+ char *exp_word = display_string(openfile->current->data,
+ xpt, strnlenpt(openfile->current->data,
+ openfile->current_x + match_len) - xpt, FALSE);
+
+ edit_refresh();
+
+ do_replace_highlight(TRUE, exp_word);
+
+ /* Allow all instances of the word to be corrected. */
+ canceled = (do_prompt(FALSE,
+#ifndef DISABLE_TABCOMP
+ TRUE,
+#endif
+ MSPELL, word,
+ &meta_key, &func_key,
+#ifndef NANO_TINY
+ NULL,
+#endif
+ edit_refresh, _("Edit a replacement")) == -1);
+
+ do_replace_highlight(FALSE, exp_word);
+
+ free(exp_word);
+
+ if (!canceled && strcmp(word, answer) != 0) {
+ openfile->current_x--;
+ do_replace_loop(TRUE, &canceled, openfile->current,
+ &openfile->current_x, word);
+ }
+
+ break;
+ }
+ }
+
+#ifndef NANO_TINY
+ if (old_mark_set) {
+ /* If the mark was on, the NO_NEWLINES flag isn't set, and we
+ * added a magicline, remove it now. */
+ if (!ISSET(NO_NEWLINES) && added_magicline)
+ remove_magicline();
+
+ /* Put the beginning and the end of the mark at the beginning
+ * and the end of the spell-checked text. */
+ if (openfile->fileage == openfile->filebot)
+ bot_x += top_x;
+ if (right_side_up) {
+ openfile->mark_begin_x = top_x;
+ current_x_save = bot_x;
+ } else {
+ current_x_save = top_x;
+ openfile->mark_begin_x = bot_x;
+ }
+
+ /* Unpartition the filestruct so that it contains all the text
+ * again, and turn the mark back on. */
+ unpartition_filestruct(&filepart);
+ openfile->mark_set = TRUE;
+ }
+#endif
+
+ /* Restore the search/replace strings. */
+ free(last_search);
+ last_search = save_search;
+ free(last_replace);
+ last_replace = save_replace;
+
+ /* Restore where we were. */
+ openfile->edittop = edittop_save;
+ openfile->current = current_save;
+ openfile->current_x = current_x_save;
+ openfile->placewewant = pww_save;
+
+ /* Restore case sensitivity setting. */
+ if (!case_sens_set)
+ UNSET(CASE_SENSITIVE);
+
+#ifndef NANO_TINY
+ /* Restore search/replace direction. */
+ if (backwards_search_set)
+ SET(BACKWARDS_SEARCH);
+#endif
+#ifdef HAVE_REGEX_H
+ /* Restore regular expression usage setting. */
+ if (regexp_set)
+ SET(USE_REGEXP);
+#endif
+
+ return !canceled;
+}
+
+/* Internal (integrated) spell checking using the spell program,
+ * filtered through the sort and uniq programs. Return NULL for normal
+ * termination, and the error string otherwise. */
+const char *do_int_speller(const char *tempfile_name)
+{
+ char *read_buff, *read_buff_ptr, *read_buff_word;
+ size_t pipe_buff_size, read_buff_size, read_buff_read, bytesread;
+ int spell_fd[2], sort_fd[2], uniq_fd[2], tempfile_fd = -1;
+ pid_t pid_spell, pid_sort, pid_uniq;
+ int spell_status, sort_status, uniq_status;
+
+ /* Create all three pipes up front. */
+ if (pipe(spell_fd) == -1 || pipe(sort_fd) == -1 ||
+ pipe(uniq_fd) == -1)
+ return _("Could not create pipe");
+
+ statusbar(_("Creating misspelled word list, please wait..."));
+
+ /* A new process to run spell in. */
+ if ((pid_spell = fork()) == 0) {
+ /* Child continues (i.e. future spell process). */
+ close(spell_fd[0]);
+
+ /* Replace the standard input with the temp file. */
+ if ((tempfile_fd = open(tempfile_name, O_RDONLY)) == -1)
+ goto close_pipes_and_exit;
+
+ if (dup2(tempfile_fd, STDIN_FILENO) != STDIN_FILENO)
+ goto close_pipes_and_exit;
+
+ close(tempfile_fd);
+
+ /* Send spell's standard output to the pipe. */
+ if (dup2(spell_fd[1], STDOUT_FILENO) != STDOUT_FILENO)
+ goto close_pipes_and_exit;
+
+ close(spell_fd[1]);
+
+ /* Start the spell program; we are using $PATH. */
+ execlp("spell", "spell", NULL);
+
+ /* This should not be reached if spell is found. */
+ exit(1);
+ }
+
+ /* Parent continues here. */
+ close(spell_fd[1]);
+
+ /* A new process to run sort in. */
+ if ((pid_sort = fork()) == 0) {
+ /* Child continues (i.e. future spell process). Replace the
+ * standard input with the standard output of the old pipe. */
+ if (dup2(spell_fd[0], STDIN_FILENO) != STDIN_FILENO)
+ goto close_pipes_and_exit;
+
+ close(spell_fd[0]);
+
+ /* Send sort's standard output to the new pipe. */
+ if (dup2(sort_fd[1], STDOUT_FILENO) != STDOUT_FILENO)
+ goto close_pipes_and_exit;
+
+ close(sort_fd[1]);
+
+ /* Start the sort program. Use -f to remove mixed case. If
+ * this isn't portable, let me know. */
+ execlp("sort", "sort", "-f", NULL);
+
+ /* This should not be reached if sort is found. */
+ exit(1);
+ }
+
+ close(spell_fd[0]);
+ close(sort_fd[1]);
+
+ /* A new process to run uniq in. */
+ if ((pid_uniq = fork()) == 0) {
+ /* Child continues (i.e. future uniq process). Replace the
+ * standard input with the standard output of the old pipe. */
+ if (dup2(sort_fd[0], STDIN_FILENO) != STDIN_FILENO)
+ goto close_pipes_and_exit;
+
+ close(sort_fd[0]);
+
+ /* Send uniq's standard output to the new pipe. */
+ if (dup2(uniq_fd[1], STDOUT_FILENO) != STDOUT_FILENO)
+ goto close_pipes_and_exit;
+
+ close(uniq_fd[1]);
+
+ /* Start the uniq program; we are using PATH. */
+ execlp("uniq", "uniq", NULL);
+
+ /* This should not be reached if uniq is found. */
+ exit(1);
+ }
+
+ close(sort_fd[0]);
+ close(uniq_fd[1]);
+
+ /* The child process was not forked successfully. */
+ if (pid_spell < 0 || pid_sort < 0 || pid_uniq < 0) {
+ close(uniq_fd[0]);
+ return _("Could not fork");
+ }
+
+ /* Get the system pipe buffer size. */
+ if ((pipe_buff_size = fpathconf(uniq_fd[0], _PC_PIPE_BUF)) < 1) {
+ close(uniq_fd[0]);
+ return _("Could not get size of pipe buffer");
+ }
+
+ /* Read in the returned spelling errors. */
+ read_buff_read = 0;
+ read_buff_size = pipe_buff_size + 1;
+ read_buff = read_buff_ptr = charalloc(read_buff_size);
+
+ while ((bytesread = read(uniq_fd[0], read_buff_ptr,
+ pipe_buff_size)) > 0) {
+ read_buff_read += bytesread;
+ read_buff_size += pipe_buff_size;
+ read_buff = read_buff_ptr = charealloc(read_buff,
+ read_buff_size);
+ read_buff_ptr += read_buff_read;
+ }
+
+ *read_buff_ptr = '\0';
+ close(uniq_fd[0]);
+
+ /* Process the spelling errors. */
+ read_buff_word = read_buff_ptr = read_buff;
+
+ while (*read_buff_ptr != '\0') {
+ if ((*read_buff_ptr == '\r') || (*read_buff_ptr == '\n')) {
+ *read_buff_ptr = '\0';
+ if (read_buff_word != read_buff_ptr) {
+ if (!do_int_spell_fix(read_buff_word)) {
+ read_buff_word = read_buff_ptr;
+ break;
+ }
+ }
+ read_buff_word = read_buff_ptr + 1;
+ }
+ read_buff_ptr++;
+ }
+
+ /* Special case: the last word doesn't end with '\r' or '\n'. */
+ if (read_buff_word != read_buff_ptr)
+ do_int_spell_fix(read_buff_word);
+
+ free(read_buff);
+ search_replace_abort();
+ edit_refresh_needed = TRUE;
+
+ /* Process the end of the spell process. */
+ waitpid(pid_spell, &spell_status, 0);
+ waitpid(pid_sort, &sort_status, 0);
+ waitpid(pid_uniq, &uniq_status, 0);
+
+ if (WIFEXITED(spell_status) == 0 || WEXITSTATUS(spell_status))
+ return _("Error invoking \"spell\"");
+
+ if (WIFEXITED(sort_status) == 0 || WEXITSTATUS(sort_status))
+ return _("Error invoking \"sort -f\"");
+
+ if (WIFEXITED(uniq_status) == 0 || WEXITSTATUS(uniq_status))
+ return _("Error invoking \"uniq\"");
+
+ /* Otherwise... */
+ return NULL;
+
+ close_pipes_and_exit:
+ /* Don't leak any handles. */
+ close(tempfile_fd);
+ close(spell_fd[0]);
+ close(spell_fd[1]);
+ close(sort_fd[0]);
+ close(sort_fd[1]);
+ close(uniq_fd[0]);
+ close(uniq_fd[1]);
+ exit(1);
+}
+
+/* External (alternate) spell checking. Return NULL for normal
+ * termination, and the error string otherwise. */
+const char *do_alt_speller(char *tempfile_name)
+{
+ int alt_spell_status;
+ size_t current_x_save = openfile->current_x;
+ size_t pww_save = openfile->placewewant;
+ ssize_t current_y_save = openfile->current_y;
+ ssize_t lineno_save = openfile->current->lineno;
+ pid_t pid_spell;
+ char *ptr;
+ static int arglen = 3;
+ static char **spellargs = NULL;
+#ifndef NANO_TINY
+ bool old_mark_set = openfile->mark_set;
+ bool added_magicline = FALSE;
+ /* Whether we added a magicline after filebot. */
+ bool right_side_up = FALSE;
+ /* TRUE if (mark_begin, mark_begin_x) is the top of the mark,
+ * FALSE if (current, current_x) is. */
+ filestruct *top, *bot;
+ size_t top_x, bot_x;
+ ssize_t mb_lineno_save = 0;
+ /* We're going to close the current file, and open the output of
+ * the alternate spell command. The line that mark_begin points
+ * to will be freed, so we save the line number and restore it
+ * afterwards. */
+ size_t totsize_save = openfile->totsize;
+ /* Our saved value of totsize, used when we spell-check a marked
+ * selection. */
+
+ if (old_mark_set) {
+ /* If the mark is on, save the number of the line it starts on,
+ * and then turn the mark off. */
+ mb_lineno_save = openfile->mark_begin->lineno;
+ openfile->mark_set = FALSE;
+ }
+#endif
+
+ if (openfile->totsize == 0) {
+ statusbar(_("Finished checking spelling"));
+ return NULL;
+ }
+
+ endwin();
+
+ /* Set up an argument list to pass execvp(). */
+ if (spellargs == NULL) {
+ spellargs = (char **)nmalloc(arglen * sizeof(char *));
+
+ spellargs[0] = strtok(alt_speller, " ");
+ while ((ptr = strtok(NULL, " ")) != NULL) {
+ arglen++;
+ spellargs = (char **)nrealloc(spellargs, arglen *
+ sizeof(char *));
+ spellargs[arglen - 3] = ptr;
+ }
+ spellargs[arglen - 1] = NULL;
+ }
+ spellargs[arglen - 2] = tempfile_name;
+
+ /* Start a new process for the alternate speller. */
+ if ((pid_spell = fork()) == 0) {
+ /* Start alternate spell program; we are using $PATH. */
+ execvp(spellargs[0], spellargs);
+
+ /* Should not be reached, if alternate speller is found!!! */
+ exit(1);
+ }
+
+ /* If we couldn't fork, get out. */
+ if (pid_spell < 0)
+ return _("Could not fork");
+
+#ifndef NANO_TINY
+ /* Don't handle a pending SIGWINCH until the alternate spell checker
+ * is finished and we've loaded the spell-checked file back in. */
+ allow_pending_sigwinch(FALSE);
+#endif
+
+ /* Wait for the alternate spell checker to finish. */
+ wait(&alt_spell_status);
+
+ /* Reenter curses mode. */
+ doupdate();
+
+ /* Restore the terminal to its previous state. */
+ terminal_init();
+
+ /* Turn the cursor back on for sure. */
+ curs_set(1);
+
+ /* The screen might have been resized. If it has, reinitialize all
+ * the windows based on the new screen dimensions. */
+ window_init();
+
+ if (!WIFEXITED(alt_spell_status) ||
+ WEXITSTATUS(alt_spell_status) != 0) {
+ char *alt_spell_error;
+ char *invoke_error = _("Error invoking \"%s\"");
+
+#ifndef NANO_TINY
+ /* Turn the mark back on if it was on before. */
+ openfile->mark_set = old_mark_set;
+#endif
+
+ alt_spell_error =
+ charalloc(strlen(invoke_error) +
+ strlen(alt_speller) + 1);
+ sprintf(alt_spell_error, invoke_error, alt_speller);
+ return alt_spell_error;
+ }
+
+#ifndef NANO_TINY
+ if (old_mark_set) {
+ /* If the mark is on, partition the filestruct so that it
+ * contains only the marked text; if the NO_NEWLINES flag isn't
+ * set, keep track of whether the text will have a magicline
+ * added when we're done correcting misspelled words; and
+ * turn the mark off. */
+ mark_order((const filestruct **)&top, &top_x,
+ (const filestruct **)&bot, &bot_x, &right_side_up);
+ filepart = partition_filestruct(top, top_x, bot, bot_x);
+ if (!ISSET(NO_NEWLINES))
+ added_magicline = (openfile->filebot->data[0] != '\0');
+
+ /* Get the number of characters in the marked text, and subtract
+ * it from the saved value of totsize. */
+ totsize_save -= get_totsize(top, bot);
+ }
+#endif
+
+ /* Replace the text of the current buffer with the spell-checked
+ * text. */
+ replace_buffer(tempfile_name);
+
+#ifndef NANO_TINY
+ if (old_mark_set) {
+ filestruct *top_save = openfile->fileage;
+
+ /* If the mark was on, the NO_NEWLINES flag isn't set, and we
+ * added a magicline, remove it now. */
+ if (!ISSET(NO_NEWLINES) && added_magicline)
+ remove_magicline();
+
+ /* Put the beginning and the end of the mark at the beginning
+ * and the end of the spell-checked text. */
+ if (openfile->fileage == openfile->filebot)
+ bot_x += top_x;
+ if (right_side_up) {
+ openfile->mark_begin_x = top_x;
+ current_x_save = bot_x;
+ } else {
+ current_x_save = top_x;
+ openfile->mark_begin_x = bot_x;
+ }
+
+ /* Unpartition the filestruct so that it contains all the text
+ * again. Note that we've replaced the marked text originally
+ * in the partition with the spell-checked marked text in the
+ * temp file. */
+ unpartition_filestruct(&filepart);
+
+ /* Renumber starting with the beginning line of the old
+ * partition. Also add the number of characters in the
+ * spell-checked marked text to the saved value of totsize, and
+ * then make that saved value the actual value. */
+ renumber(top_save);
+ totsize_save += openfile->totsize;
+ openfile->totsize = totsize_save;
+
+ /* Assign mark_begin to the line where the mark began before. */
+ do_gotopos(mb_lineno_save, openfile->mark_begin_x,
+ current_y_save, 0);
+ openfile->mark_begin = openfile->current;
+
+ /* Assign mark_begin_x to the location in mark_begin where the
+ * mark began before, adjusted for any shortening of the
+ * line. */
+ openfile->mark_begin_x = openfile->current_x;
+
+ /* Turn the mark back on. */
+ openfile->mark_set = TRUE;
+ }
+#endif
+
+ /* Go back to the old position, and mark the file as modified. */
+ do_gotopos(lineno_save, current_x_save, current_y_save, pww_save);
+ set_modified();
+
+#ifndef NANO_TINY
+ /* Handle a pending SIGWINCH again. */
+ allow_pending_sigwinch(TRUE);
+#endif
+
+ return NULL;
+}
+
+/* Spell check the current file. If an alternate spell checker is
+ * specified, use it. Otherwise, use the internal spell checker. */
+void do_spell(void)
+{
+ bool status;
+ FILE *temp_file;
+ char *temp = safe_tempfile(&temp_file);
+ const char *spell_msg;
+
+ if (ISSET(RESTRICTED)) {
+ nano_disabled_msg();
+ return;
+ }
+
+ if (temp == NULL) {
+ statusbar(_("Error writing temp file: %s"), strerror(errno));
+ return;
+ }
+
+ status =
+#ifndef NANO_TINY
+ openfile->mark_set ? write_marked_file(temp, temp_file, TRUE,
+ OVERWRITE) :
+#endif
+ write_file(temp, temp_file, TRUE, OVERWRITE, FALSE);
+
+ if (!status) {
+ statusbar(_("Error writing temp file: %s"), strerror(errno));
+ free(temp);
+ return;
+ }
+
+ spell_msg = (alt_speller != NULL) ? do_alt_speller(temp) :
+ do_int_speller(temp);
+ unlink(temp);
+ free(temp);
+
+ currmenu = MMAIN;
+
+ /* If the spell-checker printed any error messages onscreen, make
+ * sure that they're cleared off. */
+ total_refresh();
+
+ if (spell_msg != NULL) {
+ if (errno == 0)
+ /* Don't display an error message of "Success". */
+ statusbar(_("Spell checking failed: %s"), spell_msg);
+ else
+ statusbar(_("Spell checking failed: %s: %s"), spell_msg,
+ strerror(errno));
+ } else
+ statusbar(_("Finished checking spelling"));
+}
+#endif /* !DISABLE_SPELLER */
+
+#ifndef NANO_TINY
+/* Our own version of "wc". Note that its character counts are in
+ * multibyte characters instead of single-byte characters. */
+void do_wordlinechar_count(void)
+{
+ size_t words = 0, chars = 0;
+ ssize_t nlines = 0;
+ size_t current_x_save = openfile->current_x;
+ size_t pww_save = openfile->placewewant;
+ filestruct *current_save = openfile->current;
+ bool old_mark_set = openfile->mark_set;
+ filestruct *top, *bot;
+ size_t top_x, bot_x;
+
+ if (old_mark_set) {
+ /* If the mark is on, partition the filestruct so that it
+ * contains only the marked text, and turn the mark off. */
+ mark_order((const filestruct **)&top, &top_x,
+ (const filestruct **)&bot, &bot_x, NULL);
+ filepart = partition_filestruct(top, top_x, bot, bot_x);
+ openfile->mark_set = FALSE;
+ }
+
+ /* Start at the top of the file. */
+ openfile->current = openfile->fileage;
+ openfile->current_x = 0;
+ openfile->placewewant = 0;
+
+ /* Keep moving to the next word (counting punctuation characters as
+ * part of a word, as "wc -w" does), without updating the screen,
+ * until we reach the end of the file, incrementing the total word
+ * count whenever we're on a word just before moving. */
+ while (openfile->current != openfile->filebot ||
+ openfile->current->data[openfile->current_x] != '\0') {
+ if (do_next_word(TRUE, FALSE))
+ words++;
+ }
+
+ /* Get the total line and character counts, as "wc -l" and "wc -c"
+ * do, but get the latter in multibyte characters. */
+ if (old_mark_set) {
+ nlines = openfile->filebot->lineno -
+ openfile->fileage->lineno + 1;
+ chars = get_totsize(openfile->fileage, openfile->filebot);
+
+ /* Unpartition the filestruct so that it contains all the text
+ * again, and turn the mark back on. */
+ unpartition_filestruct(&filepart);
+ openfile->mark_set = TRUE;
+ } else {
+ nlines = openfile->filebot->lineno;
+ chars = openfile->totsize;
+ }
+
+ /* Restore where we were. */
+ openfile->current = current_save;
+ openfile->current_x = current_x_save;
+ openfile->placewewant = pww_save;
+
+ /* Display the total word, line, and character counts on the
+ * statusbar. */
+ statusbar(_("%sWords: %lu Lines: %ld Chars: %lu"), old_mark_set ?
+ _("In Selection: ") : "", (unsigned long)words, (long)nlines,
+ (unsigned long)chars);
+}
+#endif /* !NANO_TINY */
+
+/* Get verbatim input. */
+void do_verbatim_input(void)
+{
+ int *kbinput;
+ size_t kbinput_len, i;
+ char *output;
+
+ /* TRANSLATORS: This is displayed when the next keystroke will be
+ * inserted verbatim. */
+ statusbar(_("Verbatim Input"));
+
+ /* Read in all the verbatim characters. */
+ kbinput = get_verbatim_kbinput(edit, &kbinput_len);
+
+ /* If constant cursor position display is on, make sure the current
+ * cursor position will be properly displayed on the statusbar.
+ * Otherwise, blank the statusbar. */
+ if (ISSET(CONST_UPDATE))
+ do_cursorpos(TRUE);
+ else {
+ blank_statusbar();
+ wnoutrefresh(bottomwin);
+ }
+
+ /* Display all the verbatim characters at once, not filtering out
+ * control characters. */
+ output = charalloc(kbinput_len + 1);
+
+ for (i = 0; i < kbinput_len; i++)
+ output[i] = (char)kbinput[i];
+ output[i] = '\0';
+
+ free(kbinput);
+
+ do_output(output, kbinput_len, TRUE);
+
+ free(output);
+}
+
diff --git a/src/utils.c b/src/utils.c
new file mode 100644
index 0000000..ff13a41
--- /dev/null
+++ b/src/utils.c
@@ -0,0 +1,674 @@
+/* $Id: utils.c 4453 2009-12-02 03:36:22Z astyanax $ */
+/**************************************************************************
+ * utils.c *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <string.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <pwd.h>
+#include <ctype.h>
+#include <errno.h>
+
+/* Return the number of decimal digits in n. */
+int digits(size_t n)
+{
+ int i;
+
+ if (n == 0)
+ i = 1;
+ else {
+ for (i = 0; n != 0; n /= 10, i++)
+ ;
+ }
+
+ return i;
+}
+
+/* Return the user's home directory. We use $HOME, and if that fails,
+ * we fall back on the home directory of the effective user ID. */
+void get_homedir(void)
+{
+ if (homedir == NULL) {
+ const char *homenv = getenv("HOME");
+
+ if (homenv == NULL) {
+ const struct passwd *userage = getpwuid(geteuid());
+
+ if (userage != NULL)
+ homenv = userage->pw_dir;
+ }
+ homedir = mallocstrcpy(NULL, homenv);
+ }
+}
+
+/* Read a ssize_t from str, and store it in *val (if val is not NULL).
+ * On error, we return FALSE and don't change *val. Otherwise, we
+ * return TRUE. */
+bool parse_num(const char *str, ssize_t *val)
+{
+ char *first_error;
+ ssize_t j;
+
+ assert(str != NULL);
+
+ j = (ssize_t)strtol(str, &first_error, 10);
+
+ if (errno == ERANGE || *str == '\0' || *first_error != '\0')
+ return FALSE;
+
+ if (val != NULL)
+ *val = j;
+
+ return TRUE;
+}
+
+/* Read two ssize_t's, separated by a comma, from str, and store them in
+ * *line and *column (if they're not both NULL). Return FALSE on error,
+ * or TRUE otherwise. */
+bool parse_line_column(const char *str, ssize_t *line, ssize_t *column)
+{
+ bool retval = TRUE;
+ const char *comma;
+
+ assert(str != NULL);
+
+ comma = strchr(str, ',');
+
+ if (comma != NULL && column != NULL) {
+ if (!parse_num(comma + 1, column))
+ retval = FALSE;
+ }
+
+ if (line != NULL) {
+ if (comma != NULL) {
+ char *str_line = mallocstrncpy(NULL, str, comma - str + 1);
+ str_line[comma - str] = '\0';
+
+ if (str_line[0] != '\0' && !parse_num(str_line, line))
+ retval = FALSE;
+
+ free(str_line);
+ } else if (!parse_num(str, line))
+ retval = FALSE;
+ }
+
+ return retval;
+}
+
+/* Fix the memory allocation for a string. */
+void align(char **str)
+{
+ assert(str != NULL);
+
+ if (*str != NULL)
+ *str = charealloc(*str, strlen(*str) + 1);
+}
+
+/* Null a string at a certain index and align it. */
+void null_at(char **data, size_t index)
+{
+ assert(data != NULL);
+
+ *data = charealloc(*data, index + 1);
+ (*data)[index] = '\0';
+}
+
+/* For non-null-terminated lines. A line, by definition, shouldn't
+ * normally have newlines in it, so encode its nulls as newlines. */
+void unsunder(char *str, size_t true_len)
+{
+ assert(str != NULL);
+
+ for (; true_len > 0; true_len--, str++) {
+ if (*str == '\0')
+ *str = '\n';
+ }
+}
+
+/* For non-null-terminated lines. A line, by definition, shouldn't
+ * normally have newlines in it, so decode its newlines as nulls. */
+void sunder(char *str)
+{
+ assert(str != NULL);
+
+ for (; *str != '\0'; str++) {
+ if (*str == '\n')
+ *str = '\0';
+ }
+}
+
+/* These functions, ngetline() (originally getline()) and ngetdelim()
+ * (originally getdelim()), were adapted from GNU mailutils 0.5
+ * (mailbox/getline.c). Here is the notice from that file, after
+ * converting to the GPL via LGPL clause 3, and with the Free Software
+ * Foundation's address and the copyright years updated:
+ *
+ * GNU Mailutils -- a suite of utilities for electronic mail
+ * Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007
+ * Free Software Foundation, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This library 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 library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301, USA. */
+
+#ifdef ENABLE_NANORC
+
+#ifndef HAVE_GETDELIM
+/* This function is equivalent to getdelim(). */
+ssize_t ngetdelim(char **lineptr, size_t *n, int delim, FILE *stream)
+{
+ size_t indx = 0;
+ int c;
+
+ /* Sanity checks. */
+ if (lineptr == NULL || n == NULL || stream == NULL ||
+ fileno(stream) == -1) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ /* Allocate the line the first time. */
+ if (*lineptr == NULL) {
+ *n = MAX_BUF_SIZE;
+ *lineptr = charalloc(*n);
+ }
+
+ while ((c = getc(stream)) != EOF) {
+ /* Check if more memory is needed. */
+ if (indx >= *n) {
+ *n += MAX_BUF_SIZE;
+ *lineptr = charealloc(*lineptr, *n);
+ }
+
+ /* Put the result in the line. */
+ (*lineptr)[indx++] = (char)c;
+
+ /* Bail out. */
+ if (c == delim)
+ break;
+ }
+
+ /* Make room for the null character. */
+ if (indx >= *n) {
+ *n += MAX_BUF_SIZE;
+ *lineptr = charealloc(*lineptr, *n);
+ }
+
+ /* Null-terminate the buffer. */
+ null_at(lineptr, indx++);
+ *n = indx;
+
+ /* The last line may not have the delimiter. We have to return what
+ * we got, and the error will be seen on the next iteration. */
+ return (c == EOF && (indx - 1) == 0) ? -1 : indx - 1;
+}
+#endif
+
+#ifndef HAVE_GETLINE
+/* This function is equivalent to getline(). */
+ssize_t ngetline(char **lineptr, size_t *n, FILE *stream)
+{
+ return getdelim(lineptr, n, '\n', stream);
+}
+#endif
+#endif /* ENABLE_NANORC */
+
+#ifdef HAVE_REGEX_H
+/* Do the compiled regex in preg and the regex in string match the
+ * beginning or end of a line? */
+bool regexp_bol_or_eol(const regex_t *preg, const char *string)
+{
+ return (regexec(preg, string, 0, NULL, 0) == 0 &&
+ regexec(preg, string, 0, NULL, REG_NOTBOL | REG_NOTEOL) ==
+ REG_NOMATCH);
+}
+
+/* Fix the regex if we're on platforms which requires an adjustment
+ * from GNU-style to BSD-style word boundaries. */
+const char *fixbounds(const char *r) {
+#ifndef GNU_WORDBOUNDS
+ int i, j = 0;
+ char *r2 = charalloc(strlen(r) * 5);
+ char *r3;
+
+#ifdef DEBUG
+ fprintf(stderr, "fixbounds(): Start string = \"%s\"\n", r);
+#endif
+
+ for (i = 0; i < strlen(r); i++) {
+ if (r[i] != '\0' && r[i] == '\\' && (r[i+1] == '>' || r[i+1] == '<')) {
+ strcpy(&r2[j], "[[:");
+ r2[j+3] = r[i+1];
+ strcpy(&r2[j+4], ":]]");
+ i++;
+ j += 6;
+ } else
+ r2[j] = r[i];
+ j++;
+ }
+ r2[j] = '\0';
+ r3 = mallocstrcpy(NULL, r2);
+ free(r2);
+#ifdef DEBUG
+ fprintf(stderr, "fixbounds(): Ending string = \"%s\"\n", r3);
+#endif
+ return (const char *) r3;
+#endif
+
+ return r;
+}
+
+#endif
+
+#ifndef DISABLE_SPELLER
+/* Is the word starting at position pos in buf a whole word? */
+bool is_whole_word(size_t pos, const char *buf, const char *word)
+{
+ char *p = charalloc(mb_cur_max()), *r = charalloc(mb_cur_max());
+ size_t word_end = pos + strlen(word);
+ bool retval;
+
+ assert(buf != NULL && pos <= strlen(buf) && word != NULL);
+
+ parse_mbchar(buf + move_mbleft(buf, pos), p, NULL);
+ parse_mbchar(buf + word_end, r, NULL);
+
+ /* If we're at the beginning of the line or the character before the
+ * word isn't a non-punctuation "word" character, and if we're at
+ * the end of the line or the character after the word isn't a
+ * non-punctuation "word" character, we have a whole word. */
+ retval = (pos == 0 || !is_word_mbchar(p, FALSE)) &&
+ (word_end == strlen(buf) || !is_word_mbchar(r, FALSE));
+
+ free(p);
+ free(r);
+
+ return retval;
+}
+#endif /* !DISABLE_SPELLER */
+
+/* If we are searching backwards, we will find the last match that
+ * starts no later than start. Otherwise we find the first match
+ * starting no earlier than start. If we are doing a regexp search, we
+ * fill in the global variable regmatches with at most 9 subexpression
+ * matches. Also, all .rm_so elements are relative to the start of the
+ * whole match, so regmatches[0].rm_so == 0. */
+const char *strstrwrapper(const char *haystack, const char *needle,
+ const char *start)
+{
+ /* start can be 1 character before the start or after the end of the
+ * line. In either case, we just say no match was found. */
+ if ((start > haystack && *(start - 1) == '\0') || start < haystack)
+ return NULL;
+
+ assert(haystack != NULL && needle != NULL && start != NULL);
+
+#ifdef HAVE_REGEX_H
+ if (ISSET(USE_REGEXP)) {
+#ifndef NANO_TINY
+ if (ISSET(BACKWARDS_SEARCH)) {
+ if (regexec(&search_regexp, haystack, 1, regmatches,
+ 0) == 0 && haystack + regmatches[0].rm_so <= start) {
+ const char *retval = haystack + regmatches[0].rm_so;
+
+ /* Search forward until there are no more matches. */
+ while (regexec(&search_regexp, retval + 1, 1,
+ regmatches, REG_NOTBOL) == 0 &&
+ retval + regmatches[0].rm_so + 1 <= start)
+ retval += regmatches[0].rm_so + 1;
+ /* Finally, put the subexpression matches in global
+ * variable regmatches. The REG_NOTBOL flag doesn't
+ * matter now. */
+ regexec(&search_regexp, retval, 10, regmatches, 0);
+ return retval;
+ }
+ } else
+#endif /* !NANO_TINY */
+ if (regexec(&search_regexp, start, 10, regmatches,
+ (start > haystack) ? REG_NOTBOL : 0) == 0) {
+ const char *retval = start + regmatches[0].rm_so;
+
+ regexec(&search_regexp, retval, 10, regmatches, 0);
+ return retval;
+ }
+ return NULL;
+ }
+#endif /* HAVE_REGEX_H */
+#if !defined(NANO_TINY) || !defined(DISABLE_SPELLER)
+ if (ISSET(CASE_SENSITIVE)) {
+#ifndef NANO_TINY
+ if (ISSET(BACKWARDS_SEARCH))
+ return revstrstr(haystack, needle, start);
+ else
+#endif
+ return strstr(start, needle);
+ }
+#endif /* !DISABLE_SPELLER || !NANO_TINY */
+#ifndef NANO_TINY
+ else if (ISSET(BACKWARDS_SEARCH))
+ return mbrevstrcasestr(haystack, needle, start);
+#endif
+ return mbstrcasestr(start, needle);
+}
+
+/* This is a wrapper for the perror() function. The wrapper temporarily
+ * leaves curses mode, calls perror() (which writes to stderr), and then
+ * reenters curses mode, updating the screen in the process. Note that
+ * nperror() causes the window to flicker once. */
+void nperror(const char *s)
+{
+ endwin();
+ perror(s);
+ doupdate();
+}
+
+/* This is a wrapper for the malloc() function that properly handles
+ * things when we run out of memory. Thanks, BG, many people have been
+ * asking for this... */
+void *nmalloc(size_t howmuch)
+{
+ void *r = malloc(howmuch);
+
+ if (r == NULL && howmuch != 0)
+ die(_("nano is out of memory!"));
+
+ return r;
+}
+
+/* This is a wrapper for the realloc() function that properly handles
+ * things when we run out of memory. */
+void *nrealloc(void *ptr, size_t howmuch)
+{
+ void *r = realloc(ptr, howmuch);
+
+ if (r == NULL && howmuch != 0)
+ die(_("nano is out of memory!"));
+
+ return r;
+}
+
+/* Copy the first n characters of one malloc()ed string to another
+ * pointer. Should be used as: "dest = mallocstrncpy(dest, src,
+ * n);". */
+char *mallocstrncpy(char *dest, const char *src, size_t n)
+{
+ if (src == NULL)
+ src = "";
+
+ if (src != dest)
+ free(dest);
+
+ dest = charalloc(n);
+ strncpy(dest, src, n);
+
+ return dest;
+}
+
+/* Copy one malloc()ed string to another pointer. Should be used as:
+ * "dest = mallocstrcpy(dest, src);". */
+char *mallocstrcpy(char *dest, const char *src)
+{
+ return mallocstrncpy(dest, src, (src == NULL) ? 1 :
+ strlen(src) + 1);
+}
+
+/* Free the malloc()ed string at dest and return the malloc()ed string
+ * at src. Should be used as: "answer = mallocstrassn(answer,
+ * real_dir_from_tilde(answer));". */
+char *mallocstrassn(char *dest, char *src)
+{
+ free(dest);
+ return src;
+}
+
+/* nano scrolls horizontally within a line in chunks. Return the column
+ * number of the first character displayed in the edit window when the
+ * cursor is at the given column. Note that (0 <= column -
+ * get_page_start(column) < COLS). */
+size_t get_page_start(size_t column)
+{
+ if (column == 0 || column < COLS - 1)
+ return 0;
+ else if (COLS > 8)
+ return column - 7 - (column - 7) % (COLS - 8);
+ else
+ return column - (COLS - 2);
+}
+
+/* Return the placewewant associated with current_x, i.e. the zero-based
+ * column position of the cursor. The value will be no smaller than
+ * current_x. */
+size_t xplustabs(void)
+{
+ return strnlenpt(openfile->current->data, openfile->current_x);
+}
+
+/* Return the index in s of the character displayed at the given column,
+ * i.e. the largest value such that strnlenpt(s, actual_x(s, column)) <=
+ * column. */
+size_t actual_x(const char *s, size_t column)
+{
+ size_t i = 0;
+ /* The position in s, returned. */
+ size_t len = 0;
+ /* The screen display width to s[i]. */
+
+ assert(s != NULL);
+
+ while (*s != '\0') {
+ int s_len = parse_mbchar(s, NULL, &len);
+
+ if (len > column)
+ break;
+
+ i += s_len;
+ s += s_len;
+ }
+
+ return i;
+}
+
+/* A strnlen() with tabs and multicolumn characters factored in, similar
+ * to xplustabs(). How many columns wide are the first maxlen characters
+ * of s? */
+size_t strnlenpt(const char *s, size_t maxlen)
+{
+ size_t len = 0;
+ /* The screen display width to s[i]. */
+
+ if (maxlen == 0)
+ return 0;
+
+ assert(s != NULL);
+
+ while (*s != '\0') {
+ int s_len = parse_mbchar(s, NULL, &len);
+
+ s += s_len;
+
+ if (maxlen <= s_len)
+ break;
+
+ maxlen -= s_len;
+ }
+
+ return len;
+}
+
+/* A strlen() with tabs and multicolumn characters factored in, similar
+ * to xplustabs(). How many columns wide is s? */
+size_t strlenpt(const char *s)
+{
+ return strnlenpt(s, (size_t)-1);
+}
+
+/* Append a new magicline to filebot. */
+void new_magicline(void)
+{
+ openfile->filebot->next = (filestruct *)nmalloc(sizeof(filestruct));
+ openfile->filebot->next->data = mallocstrcpy(NULL, "");
+ openfile->filebot->next->prev = openfile->filebot;
+ openfile->filebot->next->next = NULL;
+ openfile->filebot->next->lineno = openfile->filebot->lineno + 1;
+#ifdef ENABLE_COLOR
+ openfile->filebot->next->multidata = NULL;
+#endif
+ openfile->filebot = openfile->filebot->next;
+ openfile->totsize++;
+}
+
+#ifndef NANO_TINY
+/* Remove the magicline from filebot, if there is one and it isn't the
+ * only line in the file. Assume that edittop and current are not at
+ * filebot. */
+void remove_magicline(void)
+{
+ if (openfile->filebot->data[0] == '\0' &&
+ openfile->filebot != openfile->fileage) {
+ assert(openfile->filebot != openfile->edittop && openfile->filebot != openfile->current);
+
+ openfile->filebot = openfile->filebot->prev;
+ free_filestruct(openfile->filebot->next);
+ openfile->filebot->next = NULL;
+ openfile->totsize--;
+ }
+}
+
+/* Set top_x and bot_x to the top and bottom x-coordinates of the mark,
+ * respectively, based on the locations of top and bot. If
+ * right_side_up isn't NULL, set it to TRUE if the mark begins with
+ * (mark_begin, mark_begin_x) and ends with (current, current_x), or
+ * FALSE otherwise. */
+void mark_order(const filestruct **top, size_t *top_x, const filestruct
+ **bot, size_t *bot_x, bool *right_side_up)
+{
+ assert(top != NULL && top_x != NULL && bot != NULL && bot_x != NULL);
+
+ if ((openfile->current->lineno == openfile->mark_begin->lineno &&
+ openfile->current_x > openfile->mark_begin_x) ||
+ openfile->current->lineno > openfile->mark_begin->lineno) {
+ *top = openfile->mark_begin;
+ *top_x = openfile->mark_begin_x;
+ *bot = openfile->current;
+ *bot_x = openfile->current_x;
+ if (right_side_up != NULL)
+ *right_side_up = TRUE;
+ } else {
+ *bot = openfile->mark_begin;
+ *bot_x = openfile->mark_begin_x;
+ *top = openfile->current;
+ *top_x = openfile->current_x;
+ if (right_side_up != NULL)
+ *right_side_up = FALSE;
+ }
+}
+#endif
+
+/* Calculate the number of characters between begin and end, and return
+ * it. */
+size_t get_totsize(const filestruct *begin, const filestruct *end)
+{
+ size_t totsize = 0;
+ const filestruct *f;
+
+ /* Go through the lines from begin to end->prev, if we can. */
+ for (f = begin; f != end && f != NULL; f = f->next) {
+ /* Count the number of characters on this line. */
+ totsize += mbstrlen(f->data);
+
+ /* Count the newline if we have one. */
+ if (f->next != NULL)
+ totsize++;
+ }
+
+ /* Go through the line at end, if we can. */
+ if (f != NULL) {
+ /* Count the number of characters on this line. */
+ totsize += mbstrlen(f->data);
+
+ /* Count the newline if we have one. */
+ if (f->next != NULL)
+ totsize++;
+ }
+
+ return totsize;
+}
+
+/* Get back a pointer given a line number in the current openfilestruct */
+filestruct *fsfromline(ssize_t lineno)
+{
+ filestruct *f = openfile->current;
+
+ if (lineno <= openfile->current->lineno)
+ for (; f->lineno != lineno && f != openfile->fileage; f = f->prev)
+ ;
+ else
+ for (; f->lineno != lineno && f->next != NULL; f = f->next)
+ ;
+
+ if (f->lineno != lineno)
+ f = NULL;
+ return f;
+}
+
+#ifdef DEBUG
+/* Dump the filestruct inptr to stderr. */
+void dump_filestruct(const filestruct *inptr)
+{
+ if (inptr == openfile->fileage)
+ fprintf(stderr, "Dumping file buffer to stderr...\n");
+ else if (inptr == cutbuffer)
+ fprintf(stderr, "Dumping cutbuffer to stderr...\n");
+ else
+ fprintf(stderr, "Dumping a buffer to stderr...\n");
+
+ while (inptr != NULL) {
+ fprintf(stderr, "(%ld) %s\n", (long)inptr->lineno, inptr->data);
+ inptr = inptr->next;
+ }
+}
+
+/* Dump the current buffer's filestruct to stderr in reverse. */
+void dump_filestruct_reverse(void)
+{
+ const filestruct *fileptr = openfile->filebot;
+
+ while (fileptr != NULL) {
+ fprintf(stderr, "(%ld) %s\n", (long)fileptr->lineno,
+ fileptr->data);
+ fileptr = fileptr->prev;
+ }
+}
+#endif /* DEBUG */
diff --git a/src/winio.c b/src/winio.c
new file mode 100644
index 0000000..1aef2a9
--- /dev/null
+++ b/src/winio.c
@@ -0,0 +1,3587 @@
+/* $Id: winio.c 4484 2010-03-07 19:35:46Z astyanax $ */
+/**************************************************************************
+ * winio.c *
+ * *
+ * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, *
+ * 2008, 2009 Free Software Foundation, Inc. *
+ * 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 *
+ * the Free Software Foundation; either version 3, or (at your option) *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301, USA. *
+ * *
+ **************************************************************************/
+
+#include "proto.h"
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include <unistd.h>
+#include <ctype.h>
+
+static int *key_buffer = NULL;
+ /* The keystroke buffer, containing all the keystrokes we
+ * haven't handled yet at a given point. */
+static size_t key_buffer_len = 0;
+ /* The length of the keystroke buffer. */
+static int statusblank = 0;
+ /* The number of keystrokes left after we call statusbar(),
+ * before we actually blank the statusbar. */
+static bool disable_cursorpos = FALSE;
+ /* Should we temporarily disable constant cursor position
+ * display? */
+
+/* Control character compatibility:
+ *
+ * - NANO_BACKSPACE_KEY is Ctrl-H, which is Backspace under ASCII, ANSI,
+ * VT100, and VT220.
+ * - NANO_TAB_KEY is Ctrl-I, which is Tab under ASCII, ANSI, VT100,
+ * VT220, and VT320.
+ * - NANO_ENTER_KEY is Ctrl-M, which is Enter under ASCII, ANSI, VT100,
+ * VT220, and VT320.
+ * - NANO_XON_KEY is Ctrl-Q, which is XON under ASCII, ANSI, VT100,
+ * VT220, and VT320.
+ * - NANO_XOFF_KEY is Ctrl-S, which is XOFF under ASCII, ANSI, VT100,
+ * VT220, and VT320.
+ * - NANO_CONTROL_8 is Ctrl-8 (Ctrl-?), which is Delete under ASCII,
+ * ANSI, VT100, and VT220, and which is Backspace under VT320.
+ *
+ * Note: VT220 and VT320 also generate Esc [ 3 ~ for Delete. By
+ * default, xterm assumes it's running on a VT320 and generates Ctrl-8
+ * (Ctrl-?) for Backspace and Esc [ 3 ~ for Delete. This causes
+ * problems for VT100-derived terminals such as the FreeBSD console,
+ * which expect Ctrl-H for Backspace and Ctrl-8 (Ctrl-?) for Delete, and
+ * on which the VT320 sequences are translated by the keypad to KEY_DC
+ * and [nothing]. We work around this conflict via the REBIND_DELETE
+ * flag: if it's not set, we assume VT320 compatibility, and if it is,
+ * we assume VT100 compatibility. Thanks to Lee Nelson and Wouter van
+ * Hemel for helping work this conflict out.
+ *
+ * Escape sequence compatibility:
+ *
+ * We support escape sequences for ANSI, VT100, VT220, VT320, the Linux
+ * console, the FreeBSD console, the Mach console, xterm, rxvt, Eterm,
+ * and Terminal. Among these, there are several conflicts and
+ * omissions, outlined as follows:
+ *
+ * - Tab on ANSI == PageUp on FreeBSD console; the former is omitted.
+ * (Ctrl-I is also Tab on ANSI, which we already support.)
+ * - PageDown on FreeBSD console == Center (5) on numeric keypad with
+ * NumLock off on Linux console; the latter is omitted. (The editing
+ * keypad key is more important to have working than the numeric
+ * keypad key, because the latter has no value when NumLock is off.)
+ * - F1 on FreeBSD console == the mouse key on xterm/rxvt/Eterm; the
+ * latter is omitted. (Mouse input will only work properly if the
+ * extended keypad value KEY_MOUSE is generated on mouse events
+ * instead of the escape sequence.)
+ * - F9 on FreeBSD console == PageDown on Mach console; the former is
+ * omitted. (The editing keypad is more important to have working
+ * than the function keys, because the functions of the former are not
+ * arbitrary and the functions of the latter are.)
+ * - F10 on FreeBSD console == PageUp on Mach console; the former is
+ * omitted. (Same as above.)
+ * - F13 on FreeBSD console == End on Mach console; the former is
+ * omitted. (Same as above.)
+ * - F15 on FreeBSD console == Shift-Up on rxvt/Eterm; the former is
+ * omitted. (The arrow keys, with or without modifiers, are more
+ * important to have working than the function keys, because the
+ * functions of the former are not arbitrary and the functions of the
+ * latter are.)
+ * - F16 on FreeBSD console == Shift-Down on rxvt/Eterm; the former is
+ * omitted. (Same as above.) */
+
+/* Read in a sequence of keystrokes from win and save them in the
+ * keystroke buffer. This should only be called when the keystroke
+ * buffer is empty. */
+void get_key_buffer(WINDOW *win)
+{
+ int input;
+ size_t errcount;
+
+ /* If the keystroke buffer isn't empty, get out. */
+ if (key_buffer != NULL)
+ return;
+
+ /* Read in the first character using blocking input. */
+#ifndef NANO_TINY
+ allow_pending_sigwinch(TRUE);
+#endif
+
+ /* Just before reading in the first character, display any pending
+ * screen updates. */
+ doupdate();
+
+ errcount = 0;
+ if (nodelay_mode) {
+ if ((input = wgetch(win)) == ERR)
+ return;
+ } else
+ while ((input = wgetch(win)) == ERR) {
+ errcount++;
+
+ /* If we've failed to get a character MAX_BUF_SIZE times in a
+ * row, assume that the input source we were using is gone and
+ * die gracefully. We could check if errno is set to EIO
+ * ("Input/output error") and die gracefully in that case, but
+ * it's not always set properly. Argh. */
+ if (errcount == MAX_BUF_SIZE)
+ handle_hupterm(0);
+ }
+
+#ifndef NANO_TINY
+ allow_pending_sigwinch(FALSE);
+#endif
+
+ /* Increment the length of the keystroke buffer, and save the value
+ * of the keystroke at the end of it. */
+ key_buffer_len++;
+ key_buffer = (int *)nmalloc(sizeof(int));
+ key_buffer[0] = input;
+
+ /* Read in the remaining characters using non-blocking input. */
+ nodelay(win, TRUE);
+
+ while (TRUE) {
+#ifndef NANO_TINY
+ allow_pending_sigwinch(TRUE);
+#endif
+
+ input = wgetch(win);
+
+ /* If there aren't any more characters, stop reading. */
+ if (input == ERR)
+ break;
+
+ /* Otherwise, increment the length of the keystroke buffer, and
+ * save the value of the keystroke at the end of it. */
+ key_buffer_len++;
+ key_buffer = (int *)nrealloc(key_buffer, key_buffer_len *
+ sizeof(int));
+ key_buffer[key_buffer_len - 1] = input;
+
+#ifndef NANO_TINY
+ allow_pending_sigwinch(FALSE);
+#endif
+ }
+
+ /* Switch back to non-blocking input. */
+ nodelay(win, FALSE);
+
+#ifdef DEBUG
+ fprintf(stderr, "get_key_buffer(): key_buffer_len = %lu\n", (unsigned long)key_buffer_len);
+#endif
+}
+
+/* Return the length of the keystroke buffer. */
+size_t get_key_buffer_len(void)
+{
+ return key_buffer_len;
+}
+
+/* Add the keystrokes in input to the keystroke buffer. */
+void unget_input(int *input, size_t input_len)
+{
+#ifndef NANO_TINY
+ allow_pending_sigwinch(TRUE);
+ allow_pending_sigwinch(FALSE);
+#endif
+
+ /* If input is empty, get out. */
+ if (input_len == 0)
+ return;
+
+ /* If adding input would put the keystroke buffer beyond maximum
+ * capacity, only add enough of input to put it at maximum
+ * capacity. */
+ if (key_buffer_len + input_len < key_buffer_len)
+ input_len = (size_t)-1 - key_buffer_len;
+
+ /* Add the length of input to the length of the keystroke buffer,
+ * and reallocate the keystroke buffer so that it has enough room
+ * for input. */
+ key_buffer_len += input_len;
+ key_buffer = (int *)nrealloc(key_buffer, key_buffer_len *
+ sizeof(int));
+
+ /* If the keystroke buffer wasn't empty before, move its beginning
+ * forward far enough so that we can add input to its beginning. */
+ if (key_buffer_len > input_len)
+ memmove(key_buffer + input_len, key_buffer,
+ (key_buffer_len - input_len) * sizeof(int));
+
+ /* Copy input to the beginning of the keystroke buffer. */
+ memcpy(key_buffer, input, input_len * sizeof(int));
+}
+
+/* Put back the character stored in kbinput, putting it in byte range
+ * beforehand. If meta_key is TRUE, put back the Escape character after
+ * putting back kbinput. If func_key is TRUE, put back the function key
+ * (a value outside byte range) without putting it in byte range. */
+void unget_kbinput(int kbinput, bool meta_key, bool func_key)
+{
+ if (!func_key)
+ kbinput = (char)kbinput;
+
+ unget_input(&kbinput, 1);
+
+ if (meta_key) {
+ kbinput = NANO_CONTROL_3;
+ unget_input(&kbinput, 1);
+ }
+}
+
+/* Try to read input_len characters from the keystroke buffer. If the
+ * keystroke buffer is empty and win isn't NULL, try to read in more
+ * characters from win and add them to the keystroke buffer before doing
+ * anything else. If the keystroke buffer is empty and win is NULL,
+ * return NULL. */
+int *get_input(WINDOW *win, size_t input_len)
+{
+ int *input;
+
+#ifndef NANO_TINY
+ allow_pending_sigwinch(TRUE);
+ allow_pending_sigwinch(FALSE);
+#endif
+
+ if (key_buffer_len == 0) {
+ if (win != NULL) {
+ get_key_buffer(win);
+
+ if (key_buffer_len == 0)
+ return NULL;
+ } else
+ return NULL;
+ }
+
+ /* If input_len is greater than the length of the keystroke buffer,
+ * only read the number of characters in the keystroke buffer. */
+ if (input_len > key_buffer_len)
+ input_len = key_buffer_len;
+
+ /* Subtract input_len from the length of the keystroke buffer, and
+ * allocate input so that it has enough room for input_len
+ * keystrokes. */
+ key_buffer_len -= input_len;
+ input = (int *)nmalloc(input_len * sizeof(int));
+
+ /* Copy input_len keystrokes from the beginning of the keystroke
+ * buffer into input. */
+ memcpy(input, key_buffer, input_len * sizeof(int));
+
+ /* If the keystroke buffer is empty, mark it as such. */
+ if (key_buffer_len == 0) {
+ free(key_buffer);
+ key_buffer = NULL;
+ /* If the keystroke buffer isn't empty, move its beginning forward
+ * far enough so that the keystrokes in input are no longer at its
+ * beginning. */
+ } else {
+ memmove(key_buffer, key_buffer + input_len, key_buffer_len *
+ sizeof(int));
+ key_buffer = (int *)nrealloc(key_buffer, key_buffer_len *
+ sizeof(int));
+ }
+
+ return input;
+}
+
+/* Read in a single character. If it's ignored, swallow it and go on.
+ * Otherwise, try to translate it from ASCII, meta key sequences, escape
+ * sequences, and/or extended keypad values. Set meta_key to TRUE when
+ * we get a meta key sequence, and set func_key to TRUE when we get an
+ * extended keypad value. Supported extended keypad values consist of
+ * [arrow key], Ctrl-[arrow key], Shift-[arrow key], Enter, Backspace,
+ * the editing keypad (Insert, Delete, Home, End, PageUp, and PageDown),
+ * the function keypad (F1-F16), and the numeric keypad with NumLock
+ * off. Assume nodelay(win) is FALSE. */
+int get_kbinput(WINDOW *win, bool *meta_key, bool *func_key)
+{
+ int kbinput;
+
+ /* Read in a character and interpret it. Continue doing this until
+ * we get a recognized value or sequence. */
+ while ((kbinput = parse_kbinput(win, meta_key, func_key)) == ERR);
+
+ /* If we read from the edit window, blank the statusbar if we need
+ * to. */
+ if (win == edit)
+ check_statusblank();
+
+ return kbinput;
+}
+
+/* Translate ASCII characters, extended keypad values, and escape
+ * sequences into their corresponding key values. Set meta_key to TRUE
+ * when we get a meta key sequence, and set func_key to TRUE when we get
+ * a function key. Assume nodelay(win) is FALSE. */
+int parse_kbinput(WINDOW *win, bool *meta_key, bool *func_key)
+{
+ static int escapes = 0, byte_digits = 0;
+ int *kbinput, retval = ERR;
+
+ *meta_key = FALSE;
+ *func_key = FALSE;
+
+ /* Read in a character. */
+ if (nodelay_mode) {
+ kbinput = get_input(win, 1);
+ if (kbinput == 0)
+ return 0;
+ } else
+ while ((kbinput = get_input(win, 1)) == NULL);
+
+ switch (*kbinput) {
+ case ERR:
+ break;
+ case NANO_CONTROL_3:
+ /* Increment the escape counter. */
+ escapes++;
+ switch (escapes) {
+ case 1:
+ /* One escape: wait for more input. */
+ case 2:
+ /* Two escapes: wait for more input. */
+ case 3:
+ /* Three escapes: wait for more input. */
+ break;
+ default:
+ /* More than three escapes: limit the escape counter
+ * to no more than two, and wait for more input. */
+ escapes %= 3;
+ }
+ break;
+ default:
+ switch (escapes) {
+ case 0:
+ /* One non-escape: normal input mode. Save the
+ * non-escape character as the result. */
+ retval = *kbinput;
+ break;
+ case 1:
+ /* Reset the escape counter. */
+ escapes = 0;
+ if (get_key_buffer_len() == 0) {
+ /* One escape followed by a non-escape, and
+ * there aren't any other keystrokes waiting:
+ * meta key sequence mode. Set meta_key to
+ * TRUE, and save the lowercase version of the
+ * non-escape character as the result. */
+ *meta_key = TRUE;
+ retval = tolower(*kbinput);
+ } else
+ /* One escape followed by a non-escape, and
+ * there are other keystrokes waiting: escape
+ * sequence mode. Interpret the escape
+ * sequence. */
+ retval = parse_escape_seq_kbinput(win,
+ *kbinput);
+ break;
+ case 2:
+ if (get_key_buffer_len() == 0) {
+ if (('0' <= *kbinput && *kbinput <= '2' &&
+ byte_digits == 0) || ('0' <= *kbinput &&
+ *kbinput <= '9' && byte_digits > 0)) {
+ /* Two escapes followed by one or more
+ * decimal digits, and there aren't any
+ * other keystrokes waiting: byte sequence
+ * mode. If the byte sequence's range is
+ * limited to 2XX (the first digit is in the
+ * '0' to '2' range and it's the first
+ * digit, or it's in the '0' to '9' range
+ * and it's not the first digit), increment
+ * the byte sequence counter and interpret
+ * the digit. If the byte sequence's range
+ * is not limited to 2XX, fall through. */
+ int byte;
+
+ byte_digits++;
+ byte = get_byte_kbinput(*kbinput);
+
+ if (byte != ERR) {
+ char *byte_mb;
+ int byte_mb_len, *seq, i;
+
+ /* If we've read in a complete byte
+ * sequence, reset the escape counter
+ * and the byte sequence counter, and
+ * put back the corresponding byte
+ * value. */
+ escapes = 0;
+ byte_digits = 0;
+
+ /* Put back the multibyte equivalent of
+ * the byte value. */
+ byte_mb = make_mbchar((long)byte,
+ &byte_mb_len);
+
+ seq = (int *)nmalloc(byte_mb_len *
+ sizeof(int));
+
+ for (i = 0; i < byte_mb_len; i++)
+ seq[i] = (unsigned char)byte_mb[i];
+
+ unget_input(seq, byte_mb_len);
+
+ free(byte_mb);
+ free(seq);
+ }
+ } else {
+ /* Reset the escape counter. */
+ escapes = 0;
+ if (byte_digits == 0)
+ /* Two escapes followed by a non-decimal
+ * digit or a decimal digit that would
+ * create a byte sequence greater than
+ * 2XX, we're not in the middle of a
+ * byte sequence, and there aren't any
+ * other keystrokes waiting: control
+ * character sequence mode. Interpret
+ * the control sequence and save the
+ * corresponding control character as
+ * the result. */
+ retval = get_control_kbinput(*kbinput);
+ else {
+ /* If we're in the middle of a byte
+ * sequence, reset the byte sequence
+ * counter and save the character we got
+ * as the result. */
+ byte_digits = 0;
+ retval = *kbinput;
+ }
+ }
+ } else {
+ /* Two escapes followed by a non-escape, and
+ * there are other keystrokes waiting: combined
+ * meta and escape sequence mode. Reset the
+ * escape counter, set meta_key to TRUE, and
+ * interpret the escape sequence. */
+ escapes = 0;
+ *meta_key = TRUE;
+ retval = parse_escape_seq_kbinput(win,
+ *kbinput);
+ }
+ break;
+ case 3:
+ /* Reset the escape counter. */
+ escapes = 0;
+ if (get_key_buffer_len() == 0)
+ /* Three escapes followed by a non-escape, and
+ * there aren't any other keystrokes waiting:
+ * normal input mode. Save the non-escape
+ * character as the result. */
+ retval = *kbinput;
+ else
+ /* Three escapes followed by a non-escape, and
+ * there are other keystrokes waiting: combined
+ * control character and escape sequence mode.
+ * Interpret the escape sequence, and interpret
+ * the result as a control sequence. */
+ retval = get_control_kbinput(
+ parse_escape_seq_kbinput(win,
+ *kbinput));
+ break;
+ }
+ }
+
+ if (retval != ERR) {
+ switch (retval) {
+ case NANO_CONTROL_8:
+ retval = ISSET(REBIND_DELETE) ? sc_seq_or(DO_DELETE, 0) :
+ sc_seq_or(DO_BACKSPACE, 0);
+ break;
+ case KEY_DOWN:
+#ifdef KEY_SDOWN
+ /* ncurses and Slang don't support KEY_SDOWN. */
+ case KEY_SDOWN:
+#endif
+ retval = sc_seq_or(DO_DOWN_VOID, *kbinput);
+ break;
+ case KEY_UP:
+#ifdef KEY_SUP
+ /* ncurses and Slang don't support KEY_SUP. */
+ case KEY_SUP:
+#endif
+ retval = sc_seq_or(DO_UP_VOID, *kbinput);
+ break;
+ case KEY_LEFT:
+#ifdef KEY_SLEFT
+ /* Slang doesn't support KEY_SLEFT. */
+ case KEY_SLEFT:
+#endif
+ retval = sc_seq_or(DO_LEFT, *kbinput);
+ break;
+ case KEY_RIGHT:
+#ifdef KEY_SRIGHT
+ /* Slang doesn't support KEY_SRIGHT. */
+ case KEY_SRIGHT:
+#endif
+ retval = sc_seq_or(DO_RIGHT, *kbinput);
+ break;
+#ifdef KEY_SHOME
+ /* HP-UX 10-11 and Slang don't support KEY_SHOME. */
+ case KEY_SHOME:
+#endif
+ case KEY_A1: /* Home (7) on numeric keypad with
+ * NumLock off. */
+ retval = sc_seq_or(DO_HOME, *kbinput);
+ break;
+ case KEY_BACKSPACE:
+ retval = sc_seq_or(DO_BACKSPACE, *kbinput);
+ break;
+#ifdef KEY_SDC
+ /* Slang doesn't support KEY_SDC. */
+ case KEY_SDC:
+ if (ISSET(REBIND_DELETE))
+ retval = sc_seq_or(DO_DELETE, *kbinput);
+ else
+ retval = sc_seq_or(DO_BACKSPACE, *kbinput);
+ break;
+#endif
+#ifdef KEY_SIC
+ /* Slang doesn't support KEY_SIC. */
+ case KEY_SIC:
+ retval = sc_seq_or(DO_INSERTFILE_VOID, *kbinput);
+ break;
+#endif
+ case KEY_C3: /* PageDown (4) on numeric keypad with
+ * NumLock off. */
+ retval = sc_seq_or(DO_PAGE_DOWN, *kbinput);
+ break;
+ case KEY_A3: /* PageUp (9) on numeric keypad with
+ * NumLock off. */
+ retval = sc_seq_or(DO_PAGE_UP, *kbinput);
+ break;
+ case KEY_ENTER:
+ retval = sc_seq_or(DO_ENTER, *kbinput);
+ break;
+ case KEY_B2: /* Center (5) on numeric keypad with
+ * NumLock off. */
+ retval = ERR;
+ break;
+ case KEY_C1: /* End (1) on numeric keypad with
+ * NumLock off. */
+#ifdef KEY_SEND
+ /* HP-UX 10-11 and Slang don't support KEY_SEND. */
+ case KEY_SEND:
+#endif
+ retval = sc_seq_or(DO_END, *kbinput);
+ break;
+#ifdef KEY_BEG
+ /* Slang doesn't support KEY_BEG. */
+ case KEY_BEG: /* Center (5) on numeric keypad with
+ * NumLock off. */
+ retval = ERR;
+ break;
+#endif
+#ifdef KEY_CANCEL
+ /* Slang doesn't support KEY_CANCEL. */
+ case KEY_CANCEL:
+#ifdef KEY_SCANCEL
+ /* Slang doesn't support KEY_SCANCEL. */
+ case KEY_SCANCEL:
+#endif
+ retval = first_sc_for(currmenu, CANCEL_MSG)->seq;
+ break;
+#endif
+#ifdef KEY_SBEG
+ /* Slang doesn't support KEY_SBEG. */
+ case KEY_SBEG: /* Center (5) on numeric keypad with
+ * NumLock off. */
+ retval = ERR;
+ break;
+#endif
+#ifdef KEY_SSUSPEND
+ /* Slang doesn't support KEY_SSUSPEND. */
+ case KEY_SSUSPEND:
+ retval = sc_seq_or(DO_SUSPEND_VOID, 0);
+ break;
+#endif
+#ifdef KEY_SUSPEND
+ /* Slang doesn't support KEY_SUSPEND. */
+ case KEY_SUSPEND:
+ retval = sc_seq_or(DO_SUSPEND_VOID, 0);
+ break;
+#endif
+#ifdef PDCURSES
+ case KEY_SHIFT_L:
+ case KEY_SHIFT_R:
+ case KEY_CONTROL_L:
+ case KEY_CONTROL_R:
+ case KEY_ALT_L:
+ case KEY_ALT_R:
+ retval = ERR;
+ break;
+#endif
+#if !defined(NANO_TINY) && defined(KEY_RESIZE)
+ /* Since we don't change the default SIGWINCH handler when
+ * NANO_TINY is defined, KEY_RESIZE is never generated.
+ * Also, Slang and SunOS 5.7-5.9 don't support
+ * KEY_RESIZE. */
+ case KEY_RESIZE:
+ retval = ERR;
+ break;
+#endif
+ }
+
+ /* If our result is an extended keypad value (i.e. a value
+ * outside of byte range), set func_key to TRUE. */
+ if (retval != ERR)
+ *func_key = !is_byte(retval);
+ }
+
+#ifdef DEBUG
+ fprintf(stderr, "parse_kbinput(): kbinput = %d, meta_key = %s, func_key = %s, escapes = %d, byte_digits = %d, retval = %d\n", *kbinput, *meta_key ? "TRUE" : "FALSE", *func_key ? "TRUE" : "FALSE", escapes, byte_digits, retval);
+#endif
+
+ free(kbinput);
+
+ /* Return the result. */
+ return retval;
+}
+
+/* Translate escape sequences, most of which correspond to extended
+ * keypad values, into their corresponding key values. These sequences
+ * are generated when the keypad doesn't support the needed keys.
+ * Assume that Escape has already been read in. */
+int get_escape_seq_kbinput(const int *seq, size_t seq_len)
+{
+ int retval = ERR;
+
+ if (seq_len > 1) {
+ switch (seq[0]) {
+ case 'O':
+ switch (seq[1]) {
+ case '1':
+ if (seq_len >= 3) {
+ switch (seq[2]) {
+ case ';':
+ if (seq_len >= 4) {
+ switch (seq[3]) {
+ case '2':
+ if (seq_len >= 5) {
+ switch (seq[4]) {
+ case 'A': /* Esc O 1 ; 2 A == Shift-Up on
+ * Terminal. */
+ case 'B': /* Esc O 1 ; 2 B == Shift-Down on
+ * Terminal. */
+ case 'C': /* Esc O 1 ; 2 C == Shift-Right on
+ * Terminal. */
+ case 'D': /* Esc O 1 ; 2 D == Shift-Left on
+ * Terminal. */
+ retval = get_escape_seq_abcd(seq[4]);
+ break;
+ case 'P': /* Esc O 1 ; 2 P == F13 on
+ * Terminal. */
+ retval = KEY_F(13);
+ break;
+ case 'Q': /* Esc O 1 ; 2 Q == F14 on
+ * Terminal. */
+ retval = KEY_F(14);
+ break;
+ case 'R': /* Esc O 1 ; 2 R == F15 on
+ * Terminal. */
+ retval = KEY_F(15);
+ break;
+ case 'S': /* Esc O 1 ; 2 S == F16 on
+ * Terminal. */
+ retval = KEY_F(16);
+ break;
+ }
+ }
+ break;
+ case '5':
+ if (seq_len >= 5) {
+ switch (seq[4]) {
+ case 'A': /* Esc O 1 ; 5 A == Ctrl-Up on
+ * Terminal. */
+ case 'B': /* Esc O 1 ; 5 B == Ctrl-Down on
+ * Terminal. */
+ case 'C': /* Esc O 1 ; 5 C == Ctrl-Right on
+ * Terminal. */
+ case 'D': /* Esc O 1 ; 5 D == Ctrl-Left on
+ * Terminal. */
+ retval = get_escape_seq_abcd(seq[4]);
+ break;
+ }
+ }
+ break;
+ }
+ }
+ break;
+ }
+ }
+ break;
+ case '2':
+ if (seq_len >= 3) {
+ switch (seq[2]) {
+ case 'P': /* Esc O 2 P == F13 on
+ * xterm. */
+ retval = KEY_F(13);
+ break;
+ case 'Q': /* Esc O 2 Q == F14 on
+ * xterm. */
+ retval = KEY_F(14);
+ break;
+ case 'R': /* Esc O 2 R == F15 on
+ * xterm. */
+ retval = KEY_F(15);
+ break;
+ case 'S': /* Esc O 2 S == F16 on
+ * xterm. */
+ retval = KEY_F(16);
+ break;
+ }
+ }
+ break;
+ case 'A': /* Esc O A == Up on VT100/VT320/xterm. */
+ case 'B': /* Esc O B == Down on
+ * VT100/VT320/xterm. */
+ case 'C': /* Esc O C == Right on
+ * VT100/VT320/xterm. */
+ case 'D': /* Esc O D == Left on
+ * VT100/VT320/xterm. */
+ retval = get_escape_seq_abcd(seq[1]);
+ break;
+ case 'E': /* Esc O E == Center (5) on numeric keypad
+ * with NumLock off on xterm. */
+ retval = KEY_B2;
+ break;
+ case 'F': /* Esc O F == End on xterm/Terminal. */
+ retval = sc_seq_or(DO_END, 0);
+ break;
+ case 'H': /* Esc O H == Home on xterm/Terminal. */
+ retval = sc_seq_or(DO_HOME, 0);;
+ break;
+ case 'M': /* Esc O M == Enter on numeric keypad with
+ * NumLock off on VT100/VT220/VT320/xterm/
+ * rxvt/Eterm. */
+ retval = sc_seq_or(DO_HOME, 0);;
+ break;
+ case 'P': /* Esc O P == F1 on VT100/VT220/VT320/Mach
+ * console. */
+ retval = KEY_F(1);
+ break;
+ case 'Q': /* Esc O Q == F2 on VT100/VT220/VT320/Mach
+ * console. */
+ retval = KEY_F(2);
+ break;
+ case 'R': /* Esc O R == F3 on VT100/VT220/VT320/Mach
+ * console. */
+ retval = KEY_F(3);
+ break;
+ case 'S': /* Esc O S == F4 on VT100/VT220/VT320/Mach
+ * console. */
+ retval = KEY_F(4);
+ break;
+ case 'T': /* Esc O T == F5 on Mach console. */
+ retval = KEY_F(5);
+ break;
+ case 'U': /* Esc O U == F6 on Mach console. */
+ retval = KEY_F(6);
+ break;
+ case 'V': /* Esc O V == F7 on Mach console. */
+ retval = KEY_F(7);
+ break;
+ case 'W': /* Esc O W == F8 on Mach console. */
+ retval = KEY_F(8);
+ break;
+ case 'X': /* Esc O X == F9 on Mach console. */
+ retval = KEY_F(9);
+ break;
+ case 'Y': /* Esc O Y == F10 on Mach console. */
+ retval = KEY_F(10);
+ break;
+ case 'a': /* Esc O a == Ctrl-Up on rxvt. */
+ case 'b': /* Esc O b == Ctrl-Down on rxvt. */
+ case 'c': /* Esc O c == Ctrl-Right on rxvt. */
+ case 'd': /* Esc O d == Ctrl-Left on rxvt. */
+ retval = get_escape_seq_abcd(seq[1]);
+ break;
+ case 'j': /* Esc O j == '*' on numeric keypad with
+ * NumLock off on VT100/VT220/VT320/xterm/
+ * rxvt/Eterm/Terminal. */
+ retval = '*';
+ break;
+ case 'k': /* Esc O k == '+' on numeric keypad with
+ * NumLock off on VT100/VT220/VT320/xterm/
+ * rxvt/Eterm/Terminal. */
+ retval = '+';
+ break;
+ case 'l': /* Esc O l == ',' on numeric keypad with
+ * NumLock off on VT100/VT220/VT320/xterm/
+ * rxvt/Eterm/Terminal. */
+ retval = ',';
+ break;
+ case 'm': /* Esc O m == '-' on numeric keypad with
+ * NumLock off on VT100/VT220/VT320/xterm/
+ * rxvt/Eterm/Terminal. */
+ retval = '-';
+ break;
+ case 'n': /* Esc O n == Delete (.) on numeric keypad
+ * with NumLock off on VT100/VT220/VT320/
+ * xterm/rxvt/Eterm/Terminal. */
+ retval = sc_seq_or(DO_DELETE, 0);;
+ break;
+ case 'o': /* Esc O o == '/' on numeric keypad with
+ * NumLock off on VT100/VT220/VT320/xterm/
+ * rxvt/Eterm/Terminal. */
+ retval = '/';
+ break;
+ case 'p': /* Esc O p == Insert (0) on numeric keypad
+ * with NumLock off on VT100/VT220/VT320/
+ * rxvt/Eterm/Terminal. */
+ retval = sc_seq_or(DO_INSERTFILE_VOID, 0);;
+ break;
+ case 'q': /* Esc O q == End (1) on numeric keypad
+ * with NumLock off on VT100/VT220/VT320/
+ * rxvt/Eterm/Terminal. */
+ retval = sc_seq_or(DO_END, 0);;
+ break;
+ case 'r': /* Esc O r == Down (2) on numeric keypad
+ * with NumLock off on VT100/VT220/VT320/
+ * rxvt/Eterm/Terminal. */
+ retval = sc_seq_or(DO_DOWN_VOID, 0);;
+ break;
+ case 's': /* Esc O s == PageDown (3) on numeric
+ * keypad with NumLock off on VT100/VT220/
+ * VT320/rxvt/Eterm/Terminal. */
+ retval = sc_seq_or(DO_PAGE_DOWN, 0);;
+ break;
+ case 't': /* Esc O t == Left (4) on numeric keypad
+ * with NumLock off on VT100/VT220/VT320/
+ * rxvt/Eterm/Terminal. */
+ retval = sc_seq_or(DO_LEFT, 0);;
+ break;
+ case 'u': /* Esc O u == Center (5) on numeric keypad
+ * with NumLock off on VT100/VT220/VT320/
+ * rxvt/Eterm. */
+ retval = KEY_B2;
+ break;
+ case 'v': /* Esc O v == Right (6) on numeric keypad
+ * with NumLock off on VT100/VT220/VT320/
+ * rxvt/Eterm/Terminal. */
+ retval = sc_seq_or(DO_RIGHT, 0);
+ break;
+ case 'w': /* Esc O w == Home (7) on numeric keypad
+ * with NumLock off on VT100/VT220/VT320/
+ * rxvt/Eterm/Terminal. */
+ retval = sc_seq_or(DO_HOME, 0);
+ break;
+ case 'x': /* Esc O x == Up (8) on numeric keypad
+ * with NumLock off on VT100/VT220/VT320/
+ * rxvt/Eterm/Terminal. */
+ retval = sc_seq_or(DO_UP_VOID, 0);
+ break;
+ case 'y': /* Esc O y == PageUp (9) on numeric keypad
+ * with NumLock off on VT100/VT220/VT320/
+ * rxvt/Eterm/Terminal. */
+ retval = sc_seq_or(DO_PAGE_UP, 0);
+ break;
+ }
+ break;
+ case 'o':
+ switch (seq[1]) {
+ case 'a': /* Esc o a == Ctrl-Up on Eterm. */
+ case 'b': /* Esc o b == Ctrl-Down on Eterm. */
+ case 'c': /* Esc o c == Ctrl-Right on Eterm. */
+ case 'd': /* Esc o d == Ctrl-Left on Eterm. */
+ retval = get_escape_seq_abcd(seq[1]);
+ break;
+ }
+ break;
+ case '[':
+ switch (seq[1]) {
+ case '1':
+ if (seq_len >= 3) {
+ switch (seq[2]) {
+ case '1': /* Esc [ 1 1 ~ == F1 on rxvt/
+ * Eterm. */
+ retval = KEY_F(1);
+ break;
+ case '2': /* Esc [ 1 2 ~ == F2 on rxvt/
+ * Eterm. */
+ retval = KEY_F(2);
+ break;
+ case '3': /* Esc [ 1 3 ~ == F3 on rxvt/
+ * Eterm. */
+ retval = KEY_F(3);
+ break;
+ case '4': /* Esc [ 1 4 ~ == F4 on rxvt/
+ * Eterm. */
+ retval = KEY_F(4);
+ break;
+ case '5': /* Esc [ 1 5 ~ == F5 on xterm/
+ * rxvt/Eterm. */
+ retval = KEY_F(5);
+ break;
+ case '7': /* Esc [ 1 7 ~ == F6 on
+ * VT220/VT320/Linux console/
+ * xterm/rxvt/Eterm. */
+ retval = KEY_F(6);
+ break;
+ case '8': /* Esc [ 1 8 ~ == F7 on
+ * VT220/VT320/Linux console/
+ * xterm/rxvt/Eterm. */
+ retval = KEY_F(7);
+ break;
+ case '9': /* Esc [ 1 9 ~ == F8 on
+ * VT220/VT320/Linux console/
+ * xterm/rxvt/Eterm. */
+ retval = KEY_F(8);
+ break;
+ case ';':
+ if (seq_len >= 4) {
+ switch (seq[3]) {
+ case '2':
+ if (seq_len >= 5) {
+ switch (seq[4]) {
+ case 'A': /* Esc [ 1 ; 2 A == Shift-Up on
+ * xterm. */
+ case 'B': /* Esc [ 1 ; 2 B == Shift-Down on
+ * xterm. */
+ case 'C': /* Esc [ 1 ; 2 C == Shift-Right on
+ * xterm. */
+ case 'D': /* Esc [ 1 ; 2 D == Shift-Left on
+ * xterm. */
+ retval = get_escape_seq_abcd(seq[4]);
+ break;
+ }
+ }
+ break;
+ case '5':
+ if (seq_len >= 5) {
+ switch (seq[4]) {
+ case 'A': /* Esc [ 1 ; 5 A == Ctrl-Up on
+ * xterm. */
+ case 'B': /* Esc [ 1 ; 5 B == Ctrl-Down on
+ * xterm. */
+ case 'C': /* Esc [ 1 ; 5 C == Ctrl-Right on
+ * xterm. */
+ case 'D': /* Esc [ 1 ; 5 D == Ctrl-Left on
+ * xterm. */
+ retval = get_escape_seq_abcd(seq[4]);
+ break;
+ }
+ }
+ break;
+ }
+ }
+ break;
+ default: /* Esc [ 1 ~ == Home on
+ * VT320/Linux console. */
+ retval = sc_seq_or(DO_HOME, 0);;
+ break;
+ }
+ }
+ break;
+ case '2':
+ if (seq_len >= 3) {
+ switch (seq[2]) {
+ case '0': /* Esc [ 2 0 ~ == F9 on
+ * VT220/VT320/Linux console/
+ * xterm/rxvt/Eterm. */
+ retval = KEY_F(9);
+ break;
+ case '1': /* Esc [ 2 1 ~ == F10 on
+ * VT220/VT320/Linux console/
+ * xterm/rxvt/Eterm. */
+ retval = KEY_F(10);
+ break;
+ case '3': /* Esc [ 2 3 ~ == F11 on
+ * VT220/VT320/Linux console/
+ * xterm/rxvt/Eterm. */
+ retval = KEY_F(11);
+ break;
+ case '4': /* Esc [ 2 4 ~ == F12 on
+ * VT220/VT320/Linux console/
+ * xterm/rxvt/Eterm. */
+ retval = KEY_F(12);
+ break;
+ case '5': /* Esc [ 2 5 ~ == F13 on
+ * VT220/VT320/Linux console/
+ * rxvt/Eterm. */
+ retval = KEY_F(13);
+ break;
+ case '6': /* Esc [ 2 6 ~ == F14 on
+ * VT220/VT320/Linux console/
+ * rxvt/Eterm. */
+ retval = KEY_F(14);
+ break;
+ case '8': /* Esc [ 2 8 ~ == F15 on
+ * VT220/VT320/Linux console/
+ * rxvt/Eterm. */
+ retval = KEY_F(15);
+ break;
+ case '9': /* Esc [ 2 9 ~ == F16 on
+ * VT220/VT320/Linux console/
+ * rxvt/Eterm. */
+ retval = KEY_F(16);
+ break;
+ default: /* Esc [ 2 ~ == Insert on
+ * VT220/VT320/Linux console/
+ * xterm/Terminal. */
+ retval = sc_seq_or(DO_INSERTFILE_VOID, 0);;
+ break;
+ }
+ }
+ break;
+ case '3': /* Esc [ 3 ~ == Delete on VT220/VT320/
+ * Linux console/xterm/Terminal. */
+ retval = sc_seq_or(DO_DELETE, 0);;
+ break;
+ case '4': /* Esc [ 4 ~ == End on VT220/VT320/Linux
+ * console/xterm. */
+ retval = sc_seq_or(DO_END, 0);;
+ break;
+ case '5': /* Esc [ 5 ~ == PageUp on VT220/VT320/
+ * Linux console/xterm/Terminal;
+ * Esc [ 5 ^ == PageUp on Eterm. */
+ retval = sc_seq_or(DO_PAGE_UP, 0);;
+ break;
+ case '6': /* Esc [ 6 ~ == PageDown on VT220/VT320/
+ * Linux console/xterm/Terminal;
+ * Esc [ 6 ^ == PageDown on Eterm. */
+ retval = sc_seq_or(DO_PAGE_DOWN, 0);;
+ break;
+ case '7': /* Esc [ 7 ~ == Home on rxvt. */
+ retval = sc_seq_or(DO_HOME, 0);
+ break;
+ case '8': /* Esc [ 8 ~ == End on rxvt. */
+ retval = sc_seq_or(DO_END, 0);
+ break;
+ case '9': /* Esc [ 9 == Delete on Mach console. */
+ retval = sc_seq_or(DO_DELETE, 0);;
+ break;
+ case '@': /* Esc [ @ == Insert on Mach console. */
+ retval = sc_seq_or(DO_INSERTFILE_VOID, 0);;
+ break;
+ case 'A': /* Esc [ A == Up on ANSI/VT220/Linux
+ * console/FreeBSD console/Mach console/
+ * rxvt/Eterm/Terminal. */
+ case 'B': /* Esc [ B == Down on ANSI/VT220/Linux
+ * console/FreeBSD console/Mach console/
+ * rxvt/Eterm/Terminal. */
+ case 'C': /* Esc [ C == Right on ANSI/VT220/Linux
+ * console/FreeBSD console/Mach console/
+ * rxvt/Eterm/Terminal. */
+ case 'D': /* Esc [ D == Left on ANSI/VT220/Linux
+ * console/FreeBSD console/Mach console/
+ * rxvt/Eterm/Terminal. */
+ retval = get_escape_seq_abcd(seq[1]);
+ break;
+ case 'E': /* Esc [ E == Center (5) on numeric keypad
+ * with NumLock off on FreeBSD console/
+ * Terminal. */
+ retval = KEY_B2;
+ break;
+ case 'F': /* Esc [ F == End on FreeBSD
+ * console/Eterm. */
+ retval = sc_seq_or(DO_END, 0);
+ break;
+ case 'G': /* Esc [ G == PageDown on FreeBSD
+ * console. */
+ retval = sc_seq_or(DO_PAGE_DOWN, 0);
+ break;
+ case 'H': /* Esc [ H == Home on ANSI/VT220/FreeBSD
+ * console/Mach console/Eterm. */
+ retval = sc_seq_or(DO_HOME, 0);
+ break;
+ case 'I': /* Esc [ I == PageUp on FreeBSD
+ * console. */
+ retval = sc_seq_or(DO_PAGE_UP, 0);
+ break;
+ case 'L': /* Esc [ L == Insert on ANSI/FreeBSD
+ * console. */
+ retval = sc_seq_or(DO_INSERTFILE_VOID, 0);
+ break;
+ case 'M': /* Esc [ M == F1 on FreeBSD console. */
+ retval = KEY_F(1);
+ break;
+ case 'N': /* Esc [ N == F2 on FreeBSD console. */
+ retval = KEY_F(2);
+ break;
+ case 'O':
+ if (seq_len >= 3) {
+ switch (seq[2]) {
+ case 'P': /* Esc [ O P == F1 on
+ * xterm. */
+ retval = KEY_F(1);
+ break;
+ case 'Q': /* Esc [ O Q == F2 on
+ * xterm. */
+ retval = KEY_F(2);
+ break;
+ case 'R': /* Esc [ O R == F3 on
+ * xterm. */
+ retval = KEY_F(3);
+ break;
+ case 'S': /* Esc [ O S == F4 on
+ * xterm. */
+ retval = KEY_F(4);
+ break;
+ }
+ } else
+ /* Esc [ O == F3 on FreeBSD console. */
+ retval = KEY_F(3);
+ break;
+ case 'P': /* Esc [ P == F4 on FreeBSD console. */
+ retval = KEY_F(4);
+ break;
+ case 'Q': /* Esc [ Q == F5 on FreeBSD console. */
+ retval = KEY_F(5);
+ break;
+ case 'R': /* Esc [ R == F6 on FreeBSD console. */
+ retval = KEY_F(6);
+ break;
+ case 'S': /* Esc [ S == F7 on FreeBSD console. */
+ retval = KEY_F(7);
+ break;
+ case 'T': /* Esc [ T == F8 on FreeBSD console. */
+ retval = KEY_F(8);
+ break;
+ case 'U': /* Esc [ U == PageDown on Mach console. */
+ retval = sc_seq_or(DO_PAGE_DOWN, 0);
+ break;
+ case 'V': /* Esc [ V == PageUp on Mach console. */
+ retval = sc_seq_or(DO_PAGE_UP, 0);
+ break;
+ case 'W': /* Esc [ W == F11 on FreeBSD console. */
+ retval = KEY_F(11);
+ break;
+ case 'X': /* Esc [ X == F12 on FreeBSD console. */
+ retval = KEY_F(12);
+ break;
+ case 'Y': /* Esc [ Y == End on Mach console. */
+ retval = sc_seq_or(DO_END, 0);
+ break;
+ case 'Z': /* Esc [ Z == F14 on FreeBSD console. */
+ retval = KEY_F(14);
+ break;
+ case 'a': /* Esc [ a == Shift-Up on rxvt/Eterm. */
+ case 'b': /* Esc [ b == Shift-Down on rxvt/Eterm. */
+ case 'c': /* Esc [ c == Shift-Right on rxvt/
+ * Eterm. */
+ case 'd': /* Esc [ d == Shift-Left on rxvt/Eterm. */
+ retval = get_escape_seq_abcd(seq[1]);
+ break;
+ case '[':
+ if (seq_len >= 3) {
+ switch (seq[2]) {
+ case 'A': /* Esc [ [ A == F1 on Linux
+ * console. */
+ retval = KEY_F(1);
+ break;
+ case 'B': /* Esc [ [ B == F2 on Linux
+ * console. */
+ retval = KEY_F(2);
+ break;
+ case 'C': /* Esc [ [ C == F3 on Linux
+ * console. */
+ retval = KEY_F(3);
+ break;
+ case 'D': /* Esc [ [ D == F4 on Linux
+ * console. */
+ retval = KEY_F(4);
+ break;
+ case 'E': /* Esc [ [ E == F5 on Linux
+ * console. */
+ retval = KEY_F(5);
+ break;
+ }
+ }
+ break;
+ }
+ break;
+ }
+ }
+
+#ifdef DEBUG
+ fprintf(stderr, "get_escape_seq_kbinput(): retval = %d\n", retval);
+#endif
+
+ return retval;
+}
+
+/* Return the equivalent arrow key value for the case-insensitive
+ * letters A (up), B (down), C (right), and D (left). These are common
+ * to many escape sequences. */
+int get_escape_seq_abcd(int kbinput)
+{
+ switch (tolower(kbinput)) {
+ case 'a':
+ return sc_seq_or(DO_UP_VOID, 0);;
+ case 'b':
+ return sc_seq_or(DO_DOWN_VOID, 0);;
+ case 'c':
+ return sc_seq_or(DO_RIGHT, 0);;
+ case 'd':
+ return sc_seq_or(DO_LEFT, 0);;
+ default:
+ return ERR;
+ }
+}
+
+/* Interpret the escape sequence in the keystroke buffer, the first
+ * character of which is kbinput. Assume that the keystroke buffer
+ * isn't empty, and that the initial escape has already been read in. */
+int parse_escape_seq_kbinput(WINDOW *win, int kbinput)
+{
+ int retval, *seq;
+ size_t seq_len;
+
+ /* Put back the non-escape character, get the complete escape
+ * sequence, translate the sequence into its corresponding key
+ * value, and save that as the result. */
+ unget_input(&kbinput, 1);
+ seq_len = get_key_buffer_len();
+ seq = get_input(NULL, seq_len);
+ retval = get_escape_seq_kbinput(seq, seq_len);
+
+ free(seq);
+
+ /* If we got an unrecognized escape sequence, throw it out. */
+ if (retval == ERR) {
+ if (win == edit) {
+ statusbar(_("Unknown Command"));
+ beep();
+ }
+ }
+
+#ifdef DEBUG
+ fprintf(stderr, "parse_escape_seq_kbinput(): kbinput = %d, seq_len = %lu, retval = %d\n", kbinput, (unsigned long)seq_len, retval);
+#endif
+
+ return retval;
+}
+
+/* Translate a byte sequence: turn a three-digit decimal number (from
+ * 000 to 255) into its corresponding byte value. */
+int get_byte_kbinput(int kbinput)
+{
+ static int byte_digits = 0, byte = 0;
+ int retval = ERR;
+
+ /* Increment the byte digit counter. */
+ byte_digits++;
+
+ switch (byte_digits) {
+ case 1:
+ /* First digit: This must be from zero to two. Put it in
+ * the 100's position of the byte sequence holder. */
+ if ('0' <= kbinput && kbinput <= '2')
+ byte = (kbinput - '0') * 100;
+ else
+ /* This isn't the start of a byte sequence. Return this
+ * character as the result. */
+ retval = kbinput;
+ break;
+ case 2:
+ /* Second digit: This must be from zero to five if the first
+ * was two, and may be any decimal value if the first was
+ * zero or one. Put it in the 10's position of the byte
+ * sequence holder. */
+ if (('0' <= kbinput && kbinput <= '5') || (byte < 200 &&
+ '6' <= kbinput && kbinput <= '9'))
+ byte += (kbinput - '0') * 10;
+ else
+ /* This isn't the second digit of a byte sequence.
+ * Return this character as the result. */
+ retval = kbinput;
+ break;
+ case 3:
+ /* Third digit: This must be from zero to five if the first
+ * was two and the second was between zero and five, and may
+ * be any decimal value if the first was zero or one and the
+ * second was between six and nine. Put it in the 1's
+ * position of the byte sequence holder. */
+ if (('0' <= kbinput && kbinput <= '5') || (byte < 250 &&
+ '6' <= kbinput && kbinput <= '9')) {
+ byte += kbinput - '0';
+ /* If this character is a valid decimal value, then the
+ * byte sequence is complete. */
+ retval = byte;
+ } else
+ /* This isn't the third digit of a byte sequence.
+ * Return this character as the result. */
+ retval = kbinput;
+ break;
+ default:
+ /* If there are more than three digits, return this
+ * character as the result. (Maybe we should produce an
+ * error instead?) */
+ retval = kbinput;
+ break;
+ }
+
+ /* If we have a result, reset the byte digit counter and the byte
+ * sequence holder. */
+ if (retval != ERR) {
+ byte_digits = 0;
+ byte = 0;
+ }
+
+#ifdef DEBUG
+ fprintf(stderr, "get_byte_kbinput(): kbinput = %d, byte_digits = %d, byte = %d, retval = %d\n", kbinput, byte_digits, byte, retval);
+#endif
+
+ return retval;
+}
+
+#ifdef ENABLE_UTF8
+/* If the character in kbinput is a valid hexadecimal digit, multiply it
+ * by factor and add the result to uni. */
+long add_unicode_digit(int kbinput, long factor, long *uni)
+{
+ long retval = ERR;
+
+ if ('0' <= kbinput && kbinput <= '9')
+ *uni += (kbinput - '0') * factor;
+ else if ('a' <= tolower(kbinput) && tolower(kbinput) <= 'f')
+ *uni += (tolower(kbinput) - 'a' + 10) * factor;
+ else
+ /* If this character isn't a valid hexadecimal value, save it as
+ * the result. */
+ retval = kbinput;
+
+ return retval;
+}
+
+/* Translate a Unicode sequence: turn a six-digit hexadecimal number
+ * (from 000000 to 10FFFF, case-insensitive) into its corresponding
+ * multibyte value. */
+long get_unicode_kbinput(int kbinput)
+{
+ static int uni_digits = 0;
+ static long uni = 0;
+ long retval = ERR;
+
+ /* Increment the Unicode digit counter. */
+ uni_digits++;
+
+ switch (uni_digits) {
+ case 1:
+ /* First digit: This must be zero or one. Put it in the
+ * 0x100000's position of the Unicode sequence holder. */
+ if ('0' <= kbinput && kbinput <= '1')
+ uni = (kbinput - '0') * 0x100000;
+ else
+ /* This isn't the first digit of a Unicode sequence.
+ * Return this character as the result. */
+ retval = kbinput;
+ break;
+ case 2:
+ /* Second digit: This must be zero if the first was one, and
+ * may be any hexadecimal value if the first was zero. Put
+ * it in the 0x10000's position of the Unicode sequence
+ * holder. */
+ if (uni == 0 || '0' == kbinput)
+ retval = add_unicode_digit(kbinput, 0x10000, &uni);
+ else
+ /* This isn't the second digit of a Unicode sequence.
+ * Return this character as the result. */
+ retval = kbinput;
+ break;
+ case 3:
+ /* Third digit: This may be any hexadecimal value. Put it
+ * in the 0x1000's position of the Unicode sequence
+ * holder. */
+ retval = add_unicode_digit(kbinput, 0x1000, &uni);
+ break;
+ case 4:
+ /* Fourth digit: This may be any hexadecimal value. Put it
+ * in the 0x100's position of the Unicode sequence
+ * holder. */
+ retval = add_unicode_digit(kbinput, 0x100, &uni);
+ break;
+ case 5:
+ /* Fifth digit: This may be any hexadecimal value. Put it
+ * in the 0x10's position of the Unicode sequence holder. */
+ retval = add_unicode_digit(kbinput, 0x10, &uni);
+ break;
+ case 6:
+ /* Sixth digit: This may be any hexadecimal value. Put it
+ * in the 0x1's position of the Unicode sequence holder. */
+ retval = add_unicode_digit(kbinput, 0x1, &uni);
+ /* If this character is a valid hexadecimal value, then the
+ * Unicode sequence is complete. */
+ if (retval == ERR)
+ retval = uni;
+ break;
+ default:
+ /* If there are more than six digits, return this character
+ * as the result. (Maybe we should produce an error
+ * instead?) */
+ retval = kbinput;
+ break;
+ }
+
+ /* If we have a result, reset the Unicode digit counter and the
+ * Unicode sequence holder. */
+ if (retval != ERR) {
+ uni_digits = 0;
+ uni = 0;
+ }
+
+#ifdef DEBUG
+ fprintf(stderr, "get_unicode_kbinput(): kbinput = %d, uni_digits = %d, uni = %ld, retval = %ld\n", kbinput, uni_digits, uni, retval);
+#endif
+
+ return retval;
+}
+#endif /* ENABLE_UTF8 */
+
+/* Translate a control character sequence: turn an ASCII non-control
+ * character into its corresponding control character. */
+int get_control_kbinput(int kbinput)
+{
+ int retval;
+
+ /* Ctrl-Space (Ctrl-2, Ctrl-@, Ctrl-`) */
+ if (kbinput == ' ' || kbinput == '2')
+ retval = NANO_CONTROL_SPACE;
+ /* Ctrl-/ (Ctrl-7, Ctrl-_) */
+ else if (kbinput == '/')
+ retval = NANO_CONTROL_7;
+ /* Ctrl-3 (Ctrl-[, Esc) to Ctrl-7 (Ctrl-/, Ctrl-_) */
+ else if ('3' <= kbinput && kbinput <= '7')
+ retval = kbinput - 24;
+ /* Ctrl-8 (Ctrl-?) */
+ else if (kbinput == '8' || kbinput == '?')
+ retval = NANO_CONTROL_8;
+ /* Ctrl-@ (Ctrl-Space, Ctrl-2, Ctrl-`) to Ctrl-_ (Ctrl-/, Ctrl-7) */
+ else if ('@' <= kbinput && kbinput <= '_')
+ retval = kbinput - '@';
+ /* Ctrl-` (Ctrl-2, Ctrl-Space, Ctrl-@) to Ctrl-~ (Ctrl-6, Ctrl-^) */
+ else if ('`' <= kbinput && kbinput <= '~')
+ retval = kbinput - '`';
+ else
+ retval = kbinput;
+
+#ifdef DEBUG
+ fprintf(stderr, "get_control_kbinput(): kbinput = %d, retval = %d\n", kbinput, retval);
+#endif
+
+ return retval;
+}
+
+/* Put the output-formatted characters in output back into the keystroke
+ * buffer, so that they can be parsed and displayed as output again. */
+void unparse_kbinput(char *output, size_t output_len)
+{
+ int *input;
+ size_t i;
+
+ if (output_len == 0)
+ return;
+
+ input = (int *)nmalloc(output_len * sizeof(int));
+
+ for (i = 0; i < output_len; i++)
+ input[i] = (int)output[i];
+
+ unget_input(input, output_len);
+
+ free(input);
+}
+
+/* Read in a stream of characters verbatim, and return the length of the
+ * string in kbinput_len. Assume nodelay(win) is FALSE. */
+int *get_verbatim_kbinput(WINDOW *win, size_t *kbinput_len)
+{
+ int *retval;
+
+ /* Turn off flow control characters if necessary so that we can type
+ * them in verbatim, and turn the keypad off if necessary so that we
+ * don't get extended keypad values. */
+ if (ISSET(PRESERVE))
+ disable_flow_control();
+ if (!ISSET(REBIND_KEYPAD))
+ keypad(win, FALSE);
+
+ /* Read in a stream of characters and interpret it if possible. */
+ retval = parse_verbatim_kbinput(win, kbinput_len);
+
+ /* Turn flow control characters back on if necessary and turn the
+ * keypad back on if necessary now that we're done. */
+ if (ISSET(PRESERVE))
+ enable_flow_control();
+ if (!ISSET(REBIND_KEYPAD))
+ keypad(win, TRUE);
+
+ return retval;
+}
+
+/* Read in a stream of all available characters, and return the length
+ * of the string in kbinput_len. Translate the first few characters of
+ * the input into the corresponding multibyte value if possible. After
+ * that, leave the input as-is. */
+int *parse_verbatim_kbinput(WINDOW *win, size_t *kbinput_len)
+{
+ int *kbinput, *retval;
+
+ /* Read in the first keystroke. */
+ while ((kbinput = get_input(win, 1)) == NULL);
+
+#ifdef ENABLE_UTF8
+ if (using_utf8()) {
+ /* Check whether the first keystroke is a valid hexadecimal
+ * digit. */
+ long uni = get_unicode_kbinput(*kbinput);
+
+ /* If the first keystroke isn't a valid hexadecimal digit, put
+ * back the first keystroke. */
+ if (uni != ERR)
+ unget_input(kbinput, 1);
+
+ /* Otherwise, read in keystrokes until we have a complete
+ * Unicode sequence, and put back the corresponding Unicode
+ * value. */
+ else {
+ char *uni_mb;
+ int uni_mb_len, *seq, i;
+
+ if (win == edit)
+ /* TRANSLATORS: This is displayed during the input of a
+ * six-digit hexadecimal Unicode character code. */
+ statusbar(_("Unicode Input"));
+
+ while (uni == ERR) {
+ while ((kbinput = get_input(win, 1)) == NULL);
+
+ uni = get_unicode_kbinput(*kbinput);
+ }
+
+ /* Put back the multibyte equivalent of the Unicode
+ * value. */
+ uni_mb = make_mbchar(uni, &uni_mb_len);
+
+ seq = (int *)nmalloc(uni_mb_len * sizeof(int));
+
+ for (i = 0; i < uni_mb_len; i++)
+ seq[i] = (unsigned char)uni_mb[i];
+
+ unget_input(seq, uni_mb_len);
+
+ free(seq);
+ free(uni_mb);
+ }
+ } else
+#endif /* ENABLE_UTF8 */
+
+ /* Put back the first keystroke. */
+ unget_input(kbinput, 1);
+
+ free(kbinput);
+
+ /* Get the complete sequence, and save the characters in it as the
+ * result. */
+ *kbinput_len = get_key_buffer_len();
+ retval = get_input(NULL, *kbinput_len);
+
+ return retval;
+}
+
+#ifndef DISABLE_MOUSE
+/* Handle any mouse event that may have occurred. We currently handle
+ * releases/clicks of the first mouse button. If allow_shortcuts is
+ * TRUE, releasing/clicking on a visible shortcut will put back the
+ * keystroke associated with that shortcut. If NCURSES_MOUSE_VERSION is
+ * at least 2, we also currently handle presses of the fourth mouse
+ * button (upward rolls of the mouse wheel) by putting back the
+ * keystrokes to move up, and presses of the fifth mouse button
+ * (downward rolls of the mouse wheel) by putting back the keystrokes to
+ * move down. We also store the coordinates of a mouse event that needs
+ * to be handled in mouse_x and mouse_y, relative to the entire screen.
+ * Return -1 on error, 0 if the mouse event needs to be handled, 1 if
+ * it's been handled by putting back keystrokes that need to be handled.
+ * or 2 if it's been ignored. Assume that KEY_MOUSE has already been
+ * read in. */
+int get_mouseinput(int *mouse_x, int *mouse_y, bool allow_shortcuts)
+{
+ MEVENT mevent;
+ bool in_bottomwin;
+ subnfunc *f;
+
+ *mouse_x = -1;
+ *mouse_y = -1;
+
+ /* First, get the actual mouse event. */
+ if (getmouse(&mevent) == ERR)
+ return -1;
+
+ /* Save the screen coordinates where the mouse event took place. */
+ *mouse_x = mevent.x;
+ *mouse_y = mevent.y;
+
+ in_bottomwin = wenclose(bottomwin, *mouse_y, *mouse_x);
+
+ /* Handle releases/clicks of the first mouse button. */
+ if (mevent.bstate & (BUTTON1_RELEASED | BUTTON1_CLICKED)) {
+ /* If we're allowing shortcuts, the current shortcut list is
+ * being displayed on the last two lines of the screen, and the
+ * first mouse button was released on/clicked inside it, we need
+ * to figure out which shortcut was released on/clicked and put
+ * back the equivalent keystroke(s) for it. */
+ if (allow_shortcuts && !ISSET(NO_HELP) && in_bottomwin) {
+ int i;
+ /* The width of all the shortcuts, except for the last
+ * two, in the shortcut list in bottomwin. */
+ int j;
+ /* The y-coordinate relative to the beginning of the
+ * shortcut list in bottomwin. */
+ size_t currslen;
+ /* The number of shortcuts in the current shortcut
+ * list. */
+
+ /* Translate the mouse event coordinates so that they're
+ * relative to bottomwin. */
+ wmouse_trafo(bottomwin, mouse_y, mouse_x, FALSE);
+
+ /* Handle releases/clicks of the first mouse button on the
+ * statusbar elsewhere. */
+ if (*mouse_y == 0) {
+ /* Restore the untranslated mouse event coordinates, so
+ * that they're relative to the entire screen again. */
+ *mouse_x = mevent.x;
+ *mouse_y = mevent.y;
+
+ return 0;
+ }
+
+ /* Calculate the y-coordinate relative to the beginning of
+ * the shortcut list in bottomwin. */
+ j = *mouse_y - 1;
+
+ /* Get the shortcut lists' length. */
+ if (currmenu == MMAIN)
+ currslen = MAIN_VISIBLE;
+ else {
+ currslen = length_of_list(currmenu);
+
+ /* We don't show any more shortcuts than the main list
+ * does. */
+ if (currslen > MAIN_VISIBLE)
+ currslen = MAIN_VISIBLE;
+ }
+
+ /* Calculate the width of all of the shortcuts in the list
+ * except for the last two, which are longer by (COLS % i)
+ * columns so as to not waste space. */
+ if (currslen < 2)
+ i = COLS / (MAIN_VISIBLE / 2);
+ else
+ i = COLS / ((currslen / 2) + (currslen % 2));
+
+ /* Calculate the x-coordinate relative to the beginning of
+ * the shortcut list in bottomwin, and add it to j. j
+ * should now be the index in the shortcut list of the
+ * shortcut we released/clicked on. */
+ j = (*mouse_x / i) * 2 + j;
+
+ /* Adjust j if we released on the last two shortcuts. */
+ if ((j >= currslen) && (*mouse_x % i < COLS % i))
+ j -= 2;
+
+ /* Ignore releases/clicks of the first mouse button beyond
+ * the last shortcut. */
+ if (j >= currslen)
+ return 2;
+
+ /* Go through the shortcut list to determine which shortcut
+ * we released/clicked on. */
+ f = allfuncs;
+
+ for (; j > 0; j--) {
+ if (f->next != NULL)
+ f = f->next;
+
+ while (f->next != NULL && ((f->menus & currmenu) == 0
+#ifndef DISABLE_HELP
+ || strlen(f->help) == 0
+#endif
+ ))
+ f = f->next;
+ }
+
+
+ /* And put back the equivalent key. */
+ if (f != NULL) {
+ const sc *s = first_sc_for(currmenu, f->scfunc);
+ if (s != NULL)
+ unget_kbinput(s->seq, s->type == META, FALSE);
+ }
+ } else
+ /* Handle releases/clicks of the first mouse button that
+ * aren't on the current shortcut list elsewhere. */
+ return 0;
+ }
+#if NCURSES_MOUSE_VERSION >= 2
+ /* Handle presses of the fourth mouse button (upward rolls of the
+ * mouse wheel) and presses of the fifth mouse button (downward
+ * rolls of the mouse wheel) . */
+ else if (mevent.bstate & (BUTTON4_PRESSED | BUTTON5_PRESSED)) {
+ bool in_edit = wenclose(edit, *mouse_y, *mouse_x);
+
+ if (in_bottomwin)
+ /* Translate the mouse event coordinates so that they're
+ * relative to bottomwin. */
+ wmouse_trafo(bottomwin, mouse_y, mouse_x, FALSE);
+
+ if (in_edit || (in_bottomwin && *mouse_y == 0)) {
+ int i;
+
+ /* One upward roll of the mouse wheel is equivalent to
+ * moving up three lines, and one downward roll of the mouse
+ * wheel is equivalent to moving down three lines. */
+ for (i = 0; i < 3; i++)
+ unget_kbinput((mevent.bstate & BUTTON4_PRESSED) ?
+ sc_seq_or(DO_UP_VOID, 0) : sc_seq_or(DO_DOWN_VOID, 0), FALSE,
+ FALSE);
+
+ return 1;
+ } else
+ /* Ignore presses of the fourth mouse button and presses of
+ * the fifth mouse buttons that aren't on the edit window or
+ * the statusbar. */
+ return 2;
+ }
+#endif
+
+ /* Ignore all other mouse events. */
+ return 2;
+}
+#endif /* !DISABLE_MOUSE */
+
+/* Return the shortcut corresponding to the values of kbinput (the key
+ * itself), meta_key (whether the key is a meta sequence), and func_key
+ * (whether the key is a function key), if any. The shortcut will be
+ * the first one in the list (control key, meta key sequence, function
+ * key, other meta key sequence) for the corresponding function. For
+ * example, passing in a meta key sequence that corresponds to a
+ * function with a control key, a function key, and a meta key sequence
+ * will return the control key corresponding to that function. */
+const sc *get_shortcut(int menu, int *kbinput, bool
+ *meta_key, bool *func_key)
+{
+ sc *s;
+
+#ifdef DEBUG
+ fprintf(stderr, "get_shortcut(): kbinput = %d, meta_key = %s, func_key = %s\n", *kbinput, *meta_key ? "TRUE" : "FALSE", *func_key ? "TRUE" : "FALSE");
+#endif
+
+ /* Check for shortcuts. */
+ for (s = sclist; s != NULL; s = s->next) {
+ if ((menu & s->menu)
+ && ((s->type == META && *meta_key == TRUE && *kbinput == s->seq)
+ || (s->type != META && *kbinput == s->seq))) {
+#ifdef DEBUG
+ fprintf (stderr, "matched seq \"%s\" and btw meta was %d (menus %d = %d)\n", s->keystr, *meta_key, menu, s->menu);
+#endif
+ return s;
+ }
+ }
+#ifdef DEBUG
+ fprintf (stderr, "matched nothing btw meta was %d\n", *meta_key);
+#endif
+
+ return NULL;
+}
+
+
+/* Try to get a function back from a window. Just a wrapper so
+ functions to need to create function_key meta_key blah blah
+ mmenu - what menu name to look through for valid funcs */
+const subnfunc *getfuncfromkey(WINDOW *win)
+{
+ int kbinput;
+ bool func_key = FALSE, meta_key = FALSE;
+ const sc *s;
+ const subnfunc *f;
+
+ kbinput = parse_kbinput(win, &meta_key, &func_key);
+ if (kbinput == 0)
+ return NULL;
+
+ s = get_shortcut(currmenu, &kbinput, &meta_key, &func_key);
+ if (!s)
+ return NULL;
+
+ f = sctofunc((sc *) s);
+ return f;
+
+}
+
+
+
+/* Move to (x, y) in win, and display a line of n spaces with the
+ * current attributes. */
+void blank_line(WINDOW *win, int y, int x, int n)
+{
+ wmove(win, y, x);
+
+ for (; n > 0; n--)
+ waddch(win, ' ');
+}
+
+/* Blank the first line of the top portion of the window. */
+void blank_titlebar(void)
+{
+ blank_line(topwin, 0, 0, COLS);
+}
+
+/* If the MORE_SPACE flag isn't set, blank the second line of the top
+ * portion of the window. */
+void blank_topbar(void)
+{
+ if (!ISSET(MORE_SPACE))
+ blank_line(topwin, 1, 0, COLS);
+}
+
+/* Blank all the lines of the middle portion of the window, i.e. the
+ * edit window. */
+void blank_edit(void)
+{
+ int i;
+
+ for (i = 0; i < editwinrows; i++)
+ blank_line(edit, i, 0, COLS);
+}
+
+/* Blank the first line of the bottom portion of the window. */
+void blank_statusbar(void)
+{
+ blank_line(bottomwin, 0, 0, COLS);
+}
+
+/* If the NO_HELP flag isn't set, blank the last two lines of the bottom
+ * portion of the window. */
+void blank_bottombars(void)
+{
+ if (!ISSET(NO_HELP)) {
+ blank_line(bottomwin, 1, 0, COLS);
+ blank_line(bottomwin, 2, 0, COLS);
+ }
+}
+
+/* Check if the number of keystrokes needed to blank the statusbar has
+ * been pressed. If so, blank the statusbar, unless constant cursor
+ * position display is on. */
+void check_statusblank(void)
+{
+ if (statusblank > 0) {
+ statusblank--;
+
+ if (statusblank == 0 && !ISSET(CONST_UPDATE)) {
+ blank_statusbar();
+ wnoutrefresh(bottomwin);
+ reset_cursor();
+ wnoutrefresh(edit);
+ }
+ }
+}
+
+/* Convert buf into a string that can be displayed on screen. The
+ * caller wants to display buf starting with column start_col, and
+ * extending for at most len columns. start_col is zero-based. len is
+ * one-based, so len == 0 means you get "" returned. The returned
+ * string is dynamically allocated, and should be freed. If dollars is
+ * TRUE, the caller might put "$" at the beginning or end of the line if
+ * it's too long. */
+char *display_string(const char *buf, size_t start_col, size_t len, bool
+ dollars)
+{
+ size_t start_index;
+ /* Index in buf of the first character shown. */
+ size_t column;
+ /* Screen column that start_index corresponds to. */
+ size_t alloc_len;
+ /* The length of memory allocated for converted. */
+ char *converted;
+ /* The string we return. */
+ size_t index;
+ /* Current position in converted. */
+ char *buf_mb;
+ int buf_mb_len;
+
+ /* If dollars is TRUE, make room for the "$" at the end of the
+ * line. */
+ if (dollars && len > 0 && strlenpt(buf) > start_col + len)
+ len--;
+
+ if (len == 0)
+ return mallocstrcpy(NULL, "");
+
+ buf_mb = charalloc(mb_cur_max());
+
+ start_index = actual_x(buf, start_col);
+ column = strnlenpt(buf, start_index);
+
+ assert(column <= start_col);
+
+ /* Make sure there's enough room for the initial character, whether
+ * it's a multibyte control character, a non-control multibyte
+ * character, a tab character, or a null terminator. Rationale:
+ *
+ * multibyte control character followed by a null terminator:
+ * 1 byte ('^') + mb_cur_max() bytes + 1 byte ('\0')
+ * multibyte non-control character followed by a null terminator:
+ * mb_cur_max() bytes + 1 byte ('\0')
+ * tab character followed by a null terminator:
+ * mb_cur_max() bytes + (tabsize - 1) bytes + 1 byte ('\0')
+ *
+ * Since tabsize has a minimum value of 1, it can substitute for 1
+ * byte above. */
+ alloc_len = (mb_cur_max() + tabsize + 1) * MAX_BUF_SIZE;
+ converted = charalloc(alloc_len);
+
+ index = 0;
+
+ if (buf[start_index] != '\0' && buf[start_index] != '\t' &&
+ (column < start_col || (dollars && column > 0))) {
+ /* We don't display all of buf[start_index] since it starts to
+ * the left of the screen. */
+ buf_mb_len = parse_mbchar(buf + start_index, buf_mb, NULL);
+
+ if (is_cntrl_mbchar(buf_mb)) {
+ if (column < start_col) {
+ char *ctrl_buf_mb = charalloc(mb_cur_max());
+ int ctrl_buf_mb_len, i;
+
+ ctrl_buf_mb = control_mbrep(buf_mb, ctrl_buf_mb,
+ &ctrl_buf_mb_len);
+
+ for (i = 0; i < ctrl_buf_mb_len; i++)
+ converted[index++] = ctrl_buf_mb[i];
+
+ start_col += mbwidth(ctrl_buf_mb);
+
+ free(ctrl_buf_mb);
+
+ start_index += buf_mb_len;
+ }
+ }
+#ifdef ENABLE_UTF8
+ else if (using_utf8() && mbwidth(buf_mb) == 2) {
+ if (column >= start_col) {
+ converted[index++] = ' ';
+ start_col++;
+ }
+
+ converted[index++] = ' ';
+ start_col++;
+
+ start_index += buf_mb_len;
+ }
+#endif
+ }
+
+ while (buf[start_index] != '\0') {
+ buf_mb_len = parse_mbchar(buf + start_index, buf_mb, NULL);
+
+ /* Make sure there's enough room for the next character, whether
+ * it's a multibyte control character, a non-control multibyte
+ * character, a tab character, or a null terminator. */
+ if (index + mb_cur_max() + tabsize + 1 >= alloc_len - 1) {
+ alloc_len += (mb_cur_max() + tabsize + 1) * MAX_BUF_SIZE;
+ converted = charealloc(converted, alloc_len);
+ }
+
+ /* If buf contains a tab character, interpret it. */
+ if (*buf_mb == '\t') {
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+ if (ISSET(WHITESPACE_DISPLAY)) {
+ int i;
+
+ for (i = 0; i < whitespace_len[0]; i++)
+ converted[index++] = whitespace[i];
+ } else
+#endif
+ converted[index++] = ' ';
+ start_col++;
+ while (start_col % tabsize != 0) {
+ converted[index++] = ' ';
+ start_col++;
+ }
+ /* If buf contains a control character, interpret it. If buf
+ * contains an invalid multibyte control character, display it
+ * as such.*/
+ } else if (is_cntrl_mbchar(buf_mb)) {
+ char *ctrl_buf_mb = charalloc(mb_cur_max());
+ int ctrl_buf_mb_len, i;
+
+ converted[index++] = '^';
+ start_col++;
+
+ ctrl_buf_mb = control_mbrep(buf_mb, ctrl_buf_mb,
+ &ctrl_buf_mb_len);
+
+ for (i = 0; i < ctrl_buf_mb_len; i++)
+ converted[index++] = ctrl_buf_mb[i];
+
+ start_col += mbwidth(ctrl_buf_mb);
+
+ free(ctrl_buf_mb);
+ /* If buf contains a space character, interpret it. */
+ } else if (*buf_mb == ' ') {
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+ if (ISSET(WHITESPACE_DISPLAY)) {
+ int i;
+
+ for (i = whitespace_len[0]; i < whitespace_len[0] +
+ whitespace_len[1]; i++)
+ converted[index++] = whitespace[i];
+ } else
+#endif
+ converted[index++] = ' ';
+ start_col++;
+ /* If buf contains a non-control character, interpret it. If
+ * buf contains an invalid multibyte non-control character,
+ * display it as such. */
+ } else {
+ char *nctrl_buf_mb = charalloc(mb_cur_max());
+ int nctrl_buf_mb_len, i;
+
+ nctrl_buf_mb = mbrep(buf_mb, nctrl_buf_mb,
+ &nctrl_buf_mb_len);
+
+ for (i = 0; i < nctrl_buf_mb_len; i++)
+ converted[index++] = nctrl_buf_mb[i];
+
+ start_col += mbwidth(nctrl_buf_mb);
+
+ free(nctrl_buf_mb);
+ }
+
+ start_index += buf_mb_len;
+ }
+
+ free(buf_mb);
+
+ assert(alloc_len >= index + 1);
+
+ /* Null-terminate converted. */
+ converted[index] = '\0';
+
+ /* Make sure converted takes up no more than len columns. */
+ index = actual_x(converted, len);
+ null_at(&converted, index);
+
+ return converted;
+}
+
+/* If path is NULL, we're in normal editing mode, so display the current
+ * version of nano, the current filename, and whether the current file
+ * has been modified on the titlebar. If path isn't NULL, we're in the
+ * file browser, and path contains the directory to start the file
+ * browser in, so display the current version of nano and the contents
+ * of path on the titlebar. */
+void titlebar(const char *path)
+{
+ int space = COLS;
+ /* The space we have available for display. */
+ size_t verlen = strlenpt(PACKAGE_STRING) + 1;
+ /* The length of the version message in columns, plus one for
+ * padding. */
+ const char *prefix;
+ /* "DIR:", "File:", or "New Buffer". Goes before filename. */
+ size_t prefixlen;
+ /* The length of the prefix in columns, plus one for padding. */
+ const char *state;
+ /* "Modified", "View", or "". Shows the state of this
+ * buffer. */
+ size_t statelen = 0;
+ /* The length of the state in columns, or the length of
+ * "Modified" if the state is blank and we're not in the file
+ * browser. */
+ char *exppath = NULL;
+ /* The filename, expanded for display. */
+ bool newfie = FALSE;
+ /* Do we say "New Buffer"? */
+ bool dots = FALSE;
+ /* Do we put an ellipsis before the path? */
+
+ assert(path != NULL || openfile->filename != NULL);
+
+ wattron(topwin, reverse_attr);
+
+ blank_titlebar();
+
+ /* space has to be at least 4: two spaces before the version message,
+ * at least one character of the version message, and one space
+ * after the version message. */
+ if (space < 4)
+ space = 0;
+ else {
+ /* Limit verlen to 1/3 the length of the screen in columns,
+ * minus three columns for spaces. */
+ if (verlen > (COLS / 3) - 3)
+ verlen = (COLS / 3) - 3;
+ }
+
+ if (space >= 4) {
+ /* Add a space after the version message, and account for both
+ * it and the two spaces before it. */
+ mvwaddnstr(topwin, 0, 2, PACKAGE_STRING,
+ actual_x(PACKAGE_STRING, verlen));
+ verlen += 3;
+
+ /* Account for the full length of the version message. */
+ space -= verlen;
+ }
+
+#ifndef DISABLE_BROWSER
+ /* Don't display the state if we're in the file browser. */
+ if (path != NULL)
+ state = "";
+ else
+#endif
+ state = openfile->modified ? _("Modified") : ISSET(VIEW_MODE) ?
+ _("View") : "";
+
+ statelen = strlenpt((*state == '\0' && path == NULL) ?
+ _("Modified") : state);
+
+ /* If possible, add a space before state. */
+ if (space > 0 && statelen < space)
+ statelen++;
+ else
+ goto the_end;
+
+#ifndef DISABLE_BROWSER
+ /* path should be a directory if we're in the file browser. */
+ if (path != NULL)
+ prefix = _("DIR:");
+ else
+#endif
+ if (openfile->filename[0] == '\0') {
+ prefix = _("New Buffer");
+ newfie = TRUE;
+ } else
+ prefix = _("File:");
+
+ prefixlen = strnlenpt(prefix, space - statelen) + 1;
+
+ /* If newfie is FALSE, add a space after prefix. */
+ if (!newfie && prefixlen + statelen < space)
+ prefixlen++;
+
+ /* If we're not in the file browser, set path to the current
+ * filename. */
+ if (path == NULL)
+ path = openfile->filename;
+
+ /* Account for the full lengths of the prefix and the state. */
+ if (space >= prefixlen + statelen)
+ space -= prefixlen + statelen;
+ else
+ space = 0;
+ /* space is now the room we have for the filename. */
+
+ if (!newfie) {
+ size_t lenpt = strlenpt(path), start_col;
+
+ /* Don't set dots to TRUE if we have fewer than eight columns
+ * (i.e. one column for padding, plus seven columns for a
+ * filename). */
+ dots = (space >= 8 && lenpt >= space);
+
+ if (dots) {
+ start_col = lenpt - space + 3;
+ space -= 3;
+ } else
+ start_col = 0;
+
+ exppath = display_string(path, start_col, space, FALSE);
+ }
+
+ /* If dots is TRUE, we will display something like "File:
+ * ...ename". */
+ if (dots) {
+ mvwaddnstr(topwin, 0, verlen - 1, prefix, actual_x(prefix,
+ prefixlen));
+ if (space <= -3 || newfie)
+ goto the_end;
+ waddch(topwin, ' ');
+ waddnstr(topwin, "...", space + 3);
+ if (space <= 0)
+ goto the_end;
+ waddstr(topwin, exppath);
+ } else {
+ size_t exppathlen = newfie ? 0 : strlenpt(exppath);
+ /* The length of the expanded filename. */
+
+ /* There is room for the whole filename, so we center it. */
+ mvwaddnstr(topwin, 0, verlen + ((space - exppathlen) / 3),
+ prefix, actual_x(prefix, prefixlen));
+ if (!newfie) {
+ waddch(topwin, ' ');
+ waddstr(topwin, exppath);
+ }
+ }
+
+ the_end:
+ free(exppath);
+
+ if (state[0] != '\0') {
+ if (statelen >= COLS - 1)
+ mvwaddnstr(topwin, 0, 0, state, actual_x(state, COLS));
+ else {
+ assert(COLS - statelen - 1 >= 0);
+
+ mvwaddnstr(topwin, 0, COLS - statelen - 1, state,
+ actual_x(state, statelen));
+ }
+ }
+
+ wattroff(topwin, reverse_attr);
+
+ wnoutrefresh(topwin);
+ reset_cursor();
+ wnoutrefresh(edit);
+}
+
+/* Mark the current file as modified if it isn't already, and then
+ * update the titlebar to display the file's new status. */
+void set_modified(void)
+{
+ if (!openfile->modified) {
+ openfile->modified = TRUE;
+ titlebar(NULL);
+ }
+}
+
+/* Display a message on the statusbar, and set disable_cursorpos to
+ * TRUE, so that the message won't be immediately overwritten if
+ * constant cursor position display is on. */
+void statusbar(const char *msg, ...)
+{
+ va_list ap;
+ char *bar, *foo;
+ size_t start_x, foo_len;
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+ bool old_whitespace;
+#endif
+
+ va_start(ap, msg);
+
+ /* Curses mode is turned off. If we use wmove() now, it will muck
+ * up the terminal settings. So we just use vfprintf(). */
+ if (isendwin()) {
+ vfprintf(stderr, msg, ap);
+ va_end(ap);
+ return;
+ }
+
+ blank_statusbar();
+
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+ old_whitespace = ISSET(WHITESPACE_DISPLAY);
+ UNSET(WHITESPACE_DISPLAY);
+#endif
+ bar = charalloc(mb_cur_max() * (COLS - 3));
+ vsnprintf(bar, mb_cur_max() * (COLS - 3), msg, ap);
+ va_end(ap);
+ foo = display_string(bar, 0, COLS - 4, FALSE);
+#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
+ if (old_whitespace)
+ SET(WHITESPACE_DISPLAY);
+#endif
+ free(bar);
+ foo_len = strlenpt(foo);
+ start_x = (COLS - foo_len - 4) / 2;
+
+ wmove(bottomwin, 0, start_x);
+ wattron(bottomwin, reverse_attr);
+ waddstr(bottomwin, "[ ");
+ waddstr(bottomwin, foo);
+ free(foo);
+ waddstr(bottomwin, " ]");
+ wattroff(bottomwin, reverse_attr);
+ wnoutrefresh(bottomwin);
+ reset_cursor();
+ wnoutrefresh(edit);
+ /* Leave the cursor at its position in the edit window, not in
+ * the statusbar. */
+
+ disable_cursorpos = TRUE;
+
+ /* If we're doing quick statusbar blanking, and constant cursor
+ * position display is off, blank the statusbar after only one
+ * keystroke. Otherwise, blank it after twenty-six keystrokes, as
+ * Pico does. */
+ statusblank =
+#ifndef NANO_TINY
+ ISSET(QUICK_BLANK) && !ISSET(CONST_UPDATE) ? 1 :
+#endif
+ 26;
+}
+
+/* Display the shortcut list in s on the last two rows of the bottom
+ * portion of the window. */
+void bottombars(int menu)
+{
+ size_t i, colwidth, slen;
+ subnfunc *f;
+ const sc *s;
+
+ if (ISSET(NO_HELP))
+ return;
+
+ if (menu == MMAIN) {
+ slen = MAIN_VISIBLE;
+
+ assert(slen <= length_of_list(menu));
+ } else {
+ slen = length_of_list(menu);
+
+ /* Don't show any more shortcuts than the main list does. */
+ if (slen > MAIN_VISIBLE)
+ slen = MAIN_VISIBLE;
+ }
+
+ /* There will be this many characters per column, except for the
+ * last two, which will be longer by (COLS % colwidth) columns so as
+ * to not waste space. We need at least three columns to display
+ * anything properly. */
+ colwidth = COLS / ((slen / 2) + (slen % 2));
+
+ blank_bottombars();
+
+#ifdef DEBUG
+ fprintf(stderr, "In bottombars, and slen == \"%d\"\n", (int) slen);
+#endif
+
+ for (f = allfuncs, i = 0; i < slen && f != NULL; f = f->next) {
+
+#ifdef DEBUG
+ fprintf(stderr, "Checking menu items....");
+#endif
+ if ((f->menus & menu) == 0)
+ continue;
+
+ if (!f->desc || strlen(f->desc) == 0)
+ continue;
+
+#ifdef DEBUG
+ fprintf(stderr, "found one! f->menus = %d, desc = \"%s\"\n", f->menus, f->desc);
+#endif
+ s = first_sc_for(menu, f->scfunc);
+ if (s == NULL) {
+#ifdef DEBUG
+ fprintf(stderr, "Whoops, guess not, no shortcut key found for func!\n");
+#endif
+ continue;
+ }
+ wmove(bottomwin, 1 + i % 2, (i / 2) * colwidth);
+#ifdef DEBUG
+ fprintf(stderr, "Calling onekey with keystr \"%s\" and desc \"%s\"\n", s->keystr, f->desc);
+#endif
+ onekey(s->keystr, _(f->desc), colwidth + (COLS % colwidth));
+ i++;
+ }
+
+ wnoutrefresh(bottomwin);
+ reset_cursor();
+ wnoutrefresh(edit);
+}
+
+/* Write a shortcut key to the help area at the bottom of the window.
+ * keystroke is e.g. "^G" and desc is e.g. "Get Help". We are careful
+ * to write at most len characters, even if len is very small and
+ * keystroke and desc are long. Note that waddnstr(,,(size_t)-1) adds
+ * the whole string! We do not bother padding the entry with blanks. */
+void onekey(const char *keystroke, const char *desc, size_t len)
+{
+ size_t keystroke_len = strlenpt(keystroke) + 1;
+
+ assert(keystroke != NULL && desc != NULL);
+
+ wattron(bottomwin, reverse_attr);
+ waddnstr(bottomwin, keystroke, actual_x(keystroke, len));
+ wattroff(bottomwin, reverse_attr);
+
+ if (len > keystroke_len)
+ len -= keystroke_len;
+ else
+ len = 0;
+
+ if (len > 0) {
+ waddch(bottomwin, ' ');
+ waddnstr(bottomwin, desc, actual_x(desc, len));
+ }
+}
+
+/* Reset current_y, based on the position of current, and put the cursor
+ * in the edit window at (current_y, current_x). */
+void reset_cursor(void)
+{
+ size_t xpt;
+ /* If we haven't opened any files yet, put the cursor in the top
+ * left corner of the edit window and get out. */
+ if (openfile == NULL) {
+ wmove(edit, 0, 0);
+ return;
+ }
+
+ xpt = xplustabs();
+
+ if (ISSET(SOFTWRAP)) {
+ filestruct *tmp;
+ openfile->current_y = 0;
+
+ for (tmp = openfile->edittop; tmp && tmp != openfile->current; tmp = tmp->next)
+ openfile->current_y += 1 + strlenpt(tmp->data) / COLS;
+
+ openfile->current_y += xplustabs() / COLS;
+ if (openfile->current_y < editwinrows)
+ wmove(edit, openfile->current_y, xpt % COLS);
+ } else {
+ openfile->current_y = openfile->current->lineno -
+ openfile->edittop->lineno;
+
+ if (openfile->current_y < editwinrows)
+ wmove(edit, openfile->current_y, xpt - get_page_start(xpt));
+ }
+}
+
+/* edit_draw() takes care of the job of actually painting a line into
+ * the edit window. fileptr is the line to be painted, at row line of
+ * the window. converted is the actual string to be written to the
+ * window, with tabs and control characters replaced by strings of
+ * regular characters. start is the column number of the first
+ * character of this page. That is, the first character of converted
+ * corresponds to character number actual_x(fileptr->data, start) of the
+ * line. */
+void edit_draw(filestruct *fileptr, const char *converted, int
+ line, size_t start)
+{
+#if !defined(NANO_TINY) || defined(ENABLE_COLOR)
+ size_t startpos = actual_x(fileptr->data, start);
+ /* The position in fileptr->data of the leftmost character
+ * that displays at least partially on the window. */
+ size_t endpos = actual_x(fileptr->data, start + COLS - 1) + 1;
+ /* The position in fileptr->data of the first character that is
+ * completely off the window to the right.
+ *
+ * Note that endpos might be beyond the null terminator of the
+ * string. */
+#endif
+
+ assert(openfile != NULL && fileptr != NULL && converted != NULL);
+ assert(strlenpt(converted) <= COLS);
+
+ /* Just paint the string in any case (we'll add color or reverse on
+ * just the text that needs it). */
+ mvwaddstr(edit, line, 0, converted);
+
+#ifdef ENABLE_COLOR
+ /* If color syntaxes are available and turned on, we need to display
+ * them. */
+ if (openfile->colorstrings != NULL && !ISSET(NO_COLOR_SYNTAX)) {
+ const colortype *tmpcolor = openfile->colorstrings;
+
+ /* Set up multi-line color data for this line if it's not yet calculated */
+ if (fileptr->multidata == NULL && openfile->syntax
+ && openfile->syntax->nmultis > 0) {
+ int i;
+ fileptr->multidata = (short *) nmalloc(openfile->syntax->nmultis * sizeof(short));
+ for (i = 0; i < openfile->syntax->nmultis; i++)
+ fileptr->multidata[i] = -1; /* Assue this applies until we know otherwise */
+ }
+ for (; tmpcolor != NULL; tmpcolor = tmpcolor->next) {
+ int x_start;
+ /* Starting column for mvwaddnstr. Zero-based. */
+ int paintlen;
+ /* Number of chars to paint on this line. There are
+ * COLS characters on a whole line. */
+ size_t index;
+ /* Index in converted where we paint. */
+ regmatch_t startmatch;
+ /* Match position for start_regex. */
+ regmatch_t endmatch;
+ /* Match position for end_regex. */
+
+ if (tmpcolor->bright)
+ wattron(edit, A_BOLD);
+ wattron(edit, COLOR_PAIR(tmpcolor->pairnum));
+ /* Two notes about regexec(). A return value of zero means
+ * that there is a match. Also, rm_eo is the first
+ * non-matching character after the match. */
+
+ /* First case, tmpcolor is a single-line expression. */
+ if (tmpcolor->end == NULL) {
+ size_t k = 0;
+
+ /* We increment k by rm_eo, to move past the end of the
+ * last match. Even though two matches may overlap, we
+ * want to ignore them, so that we can highlight e.g. C
+ * strings correctly. */
+ while (k < endpos) {
+ /* Note the fifth parameter to regexec(). It says
+ * not to match the beginning-of-line character
+ * unless k is zero. If regexec() returns
+ * REG_NOMATCH, there are no more matches in the
+ * line. */
+ if (regexec(tmpcolor->start, &fileptr->data[k], 1,
+ &startmatch, (k == 0) ? 0 : REG_NOTBOL) ==
+ REG_NOMATCH)
+ break;
+ /* Translate the match to the beginning of the
+ * line. */
+ startmatch.rm_so += k;
+ startmatch.rm_eo += k;
+
+ /* Skip over a zero-length regex match. */
+ if (startmatch.rm_so == startmatch.rm_eo)
+ startmatch.rm_eo++;
+ else if (startmatch.rm_so < endpos &&
+ startmatch.rm_eo > startpos) {
+ x_start = (startmatch.rm_so <= startpos) ? 0 :
+ strnlenpt(fileptr->data,
+ startmatch.rm_so) - start;
+
+ index = actual_x(converted, x_start);
+
+ paintlen = actual_x(converted + index,
+ strnlenpt(fileptr->data,
+ startmatch.rm_eo) - start - x_start);
+
+ assert(0 <= x_start && 0 <= paintlen);
+
+ mvwaddnstr(edit, line, x_start, converted +
+ index, paintlen);
+ }
+ k = startmatch.rm_eo;
+ }
+ } else if (fileptr->multidata != NULL && fileptr->multidata[tmpcolor->id] != CNONE) {
+ /* This is a multi-line regex. There are two steps.
+ * First, we have to see if the beginning of the line is
+ * colored by a start on an earlier line, and an end on
+ * this line or later.
+ *
+ * We find the first line before fileptr matching the
+ * start. If every match on that line is followed by an
+ * end, then go to step two. Otherwise, find the next
+ * line after start_line matching the end. If that line
+ * is not before fileptr, then paint the beginning of
+ * this line. */
+ const filestruct *start_line = fileptr->prev;
+ /* The first line before fileptr matching start. */
+ regoff_t start_col;
+ /* Where it starts in that line. */
+ const filestruct *end_line;
+ short md = fileptr->multidata[tmpcolor->id];
+
+ if (md == -1)
+ fileptr->multidata[tmpcolor->id] = CNONE; /* until we find out otherwise */
+ else if (md == CNONE)
+ continue;
+ else if (md == CWHOLELINE) {
+ mvwaddnstr(edit, line, 0, converted, -1);
+ continue;
+ } else if (md == CBEGINBEFORE) {
+ regexec(tmpcolor->end, fileptr->data, 1, &endmatch, 0);
+ paintlen = actual_x(converted, strnlenpt(fileptr->data,
+ endmatch.rm_eo) - start);
+ mvwaddnstr(edit, line, 0, converted, paintlen);
+ continue;
+ }
+
+ while (start_line != NULL && regexec(tmpcolor->start,
+ start_line->data, 1, &startmatch, 0) ==
+ REG_NOMATCH) {
+ /* If there is an end on this line, there is no need
+ * to look for starts on earlier lines. */
+ if (regexec(tmpcolor->end, start_line->data, 0,
+ NULL, 0) == 0)
+ goto step_two;
+ start_line = start_line->prev;
+ }
+
+ /* Skip over a zero-length regex match. */
+ if (startmatch.rm_so == startmatch.rm_eo)
+ startmatch.rm_eo++;
+ else {
+ /* No start found, so skip to the next step. */
+ if (start_line == NULL)
+ goto step_two;
+ /* Now start_line is the first line before fileptr
+ * containing a start match. Is there a start on
+ * this line not followed by an end on this line? */
+ start_col = 0;
+ while (TRUE) {
+ start_col += startmatch.rm_so;
+ startmatch.rm_eo -= startmatch.rm_so;
+ if (regexec(tmpcolor->end, start_line->data +
+ start_col + startmatch.rm_eo, 0, NULL,
+ (start_col + startmatch.rm_eo == 0) ?
+ 0 : REG_NOTBOL) == REG_NOMATCH)
+ /* No end found after this start. */
+ break;
+ start_col++;
+ if (regexec(tmpcolor->start, start_line->data +
+ start_col, 1, &startmatch,
+ REG_NOTBOL) == REG_NOMATCH)
+ /* No later start on this line. */
+ goto step_two;
+ }
+ /* Indeed, there is a start not followed on this
+ * line by an end. */
+
+ /* We have already checked that there is no end
+ * before fileptr and after the start. Is there an
+ * end after the start at all? We don't paint
+ * unterminated starts. */
+ end_line = fileptr;
+ while (end_line != NULL && regexec(tmpcolor->end,
+ end_line->data, 1, &endmatch, 0) == REG_NOMATCH)
+ end_line = end_line->next;
+
+ /* No end found, or it is too early. */
+ if (end_line == NULL || (end_line == fileptr &&
+ endmatch.rm_eo <= startpos))
+ goto step_two;
+
+ /* Now paint the start of fileptr. If the start of
+ * fileptr is on a different line from the end,
+ * paintlen is -1, meaning that everything on the
+ * line gets painted. Otherwise, paintlen is the
+ * expanded location of the end of the match minus
+ * the expanded location of the beginning of the
+ * page. */
+ if (end_line != fileptr) {
+ paintlen = -1;
+ fileptr->multidata[tmpcolor->id] = CWHOLELINE;
+ } else {
+ paintlen = actual_x(converted,
+ strnlenpt(fileptr->data,
+ endmatch.rm_eo) - start);
+ fileptr->multidata[tmpcolor->id] = CBEGINBEFORE;
+ }
+ mvwaddnstr(edit, line, 0, converted, paintlen);
+ step_two:
+ /* Second step, we look for starts on this line. */
+ start_col = 0;
+
+ while (start_col < endpos) {
+ if (regexec(tmpcolor->start, fileptr->data +
+ start_col, 1, &startmatch, (start_col ==
+ 0) ? 0 : REG_NOTBOL) == REG_NOMATCH ||
+ start_col + startmatch.rm_so >= endpos)
+ /* No more starts on this line. */
+ break;
+ /* Translate the match to be relative to the
+ * beginning of the line. */
+ startmatch.rm_so += start_col;
+ startmatch.rm_eo += start_col;
+
+ x_start = (startmatch.rm_so <= startpos) ? 0 :
+ strnlenpt(fileptr->data,
+ startmatch.rm_so) - start;
+
+ index = actual_x(converted, x_start);
+
+ if (regexec(tmpcolor->end, fileptr->data +
+ startmatch.rm_eo, 1, &endmatch,
+ (startmatch.rm_eo == 0) ? 0 :
+ REG_NOTBOL) == 0) {
+ /* Translate the end match to be relative to
+ * the beginning of the line. */
+ endmatch.rm_so += startmatch.rm_eo;
+ endmatch.rm_eo += startmatch.rm_eo;
+ /* There is an end on this line. But does
+ * it appear on this page, and is the match
+ * more than zero characters long? */
+ if (endmatch.rm_eo > startpos &&
+ endmatch.rm_eo > startmatch.rm_so) {
+ paintlen = actual_x(converted + index,
+ strnlenpt(fileptr->data,
+ endmatch.rm_eo) - start -
+ x_start);
+
+ assert(0 <= x_start && x_start < COLS);
+
+ mvwaddnstr(edit, line, x_start,
+ converted + index, paintlen);
+ if (paintlen > 0)
+ fileptr->multidata[tmpcolor->id] = CSTARTENDHERE;
+
+ }
+ } else {
+ /* There is no end on this line. But we
+ * haven't yet looked for one on later
+ * lines. */
+ end_line = fileptr->next;
+
+ while (end_line != NULL &&
+ regexec(tmpcolor->end, end_line->data,
+ 0, NULL, 0) == REG_NOMATCH)
+ end_line = end_line->next;
+
+ if (end_line != NULL) {
+ assert(0 <= x_start && x_start < COLS);
+
+ mvwaddnstr(edit, line, x_start,
+ converted + index, -1);
+ /* We painted to the end of the line, so
+ * don't bother checking any more
+ * starts. */
+ fileptr->multidata[tmpcolor->id] = CENDAFTER;
+ break;
+ }
+ }
+ start_col = startmatch.rm_so + 1;
+ }
+ }
+ }
+
+ wattroff(edit, A_BOLD);
+ wattroff(edit, COLOR_PAIR(tmpcolor->pairnum));
+ }
+ }
+#endif /* ENABLE_COLOR */
+
+#ifndef NANO_TINY
+ /* If the mark is on, we need to display it. */
+ if (openfile->mark_set && (fileptr->lineno <=
+ openfile->mark_begin->lineno || fileptr->lineno <=
+ openfile->current->lineno) && (fileptr->lineno >=
+ openfile->mark_begin->lineno || fileptr->lineno >=
+ openfile->current->lineno)) {
+ /* fileptr is at least partially selected. */
+ const filestruct *top;
+ /* Either current or mark_begin, whichever is first. */
+ size_t top_x;
+ /* current_x or mark_begin_x, corresponding to top. */
+ const filestruct *bot;
+ size_t bot_x;
+ int x_start;
+ /* Starting column for mvwaddnstr(). Zero-based. */
+ int paintlen;
+ /* Number of characters to paint on this line. There are
+ * COLS characters on a whole line. */
+ size_t index;
+ /* Index in converted where we paint. */
+
+ mark_order(&top, &top_x, &bot, &bot_x, NULL);
+
+ if (top->lineno < fileptr->lineno || top_x < startpos)
+ top_x = startpos;
+ if (bot->lineno > fileptr->lineno || bot_x > endpos)
+ bot_x = endpos;
+
+ /* The selected bit of fileptr is on this page. */
+ if (top_x < endpos && bot_x > startpos) {
+ assert(startpos <= top_x);
+
+ /* x_start is the expanded location of the beginning of the
+ * mark minus the beginning of the page. */
+ x_start = strnlenpt(fileptr->data, top_x) - start;
+
+ /* If the end of the mark is off the page, paintlen is -1,
+ * meaning that everything on the line gets painted.
+ * Otherwise, paintlen is the expanded location of the end
+ * of the mark minus the expanded location of the beginning
+ * of the mark. */
+ if (bot_x >= endpos)
+ paintlen = -1;
+ else
+ paintlen = strnlenpt(fileptr->data, bot_x) - (x_start +
+ start);
+
+ /* If x_start is before the beginning of the page, shift
+ * paintlen x_start characters to compensate, and put
+ * x_start at the beginning of the page. */
+ if (x_start < 0) {
+ paintlen += x_start;
+ x_start = 0;
+ }
+
+ assert(x_start >= 0 && x_start <= strlen(converted));
+
+ index = actual_x(converted, x_start);
+
+ if (paintlen > 0)
+ paintlen = actual_x(converted + index, paintlen);
+
+ wattron(edit, reverse_attr);
+ mvwaddnstr(edit, line, x_start, converted + index,
+ paintlen);
+ wattroff(edit, reverse_attr);
+ }
+ }
+#endif /* !NANO_TINY */
+}
+
+/* Just update one line in the edit buffer. This is basically a wrapper
+ * for edit_draw(). The line will be displayed starting with
+ * fileptr->data[index]. Likely arguments are current_x or zero.
+ * Returns: Number of additiona lines consumed (needed for SOFTWRAP)
+ */
+int update_line(filestruct *fileptr, size_t index)
+{
+ int line = 0;
+ int extralinesused = 0;
+ /* The line in the edit window that we want to update. */
+ char *converted;
+ /* fileptr->data converted to have tabs and control characters
+ * expanded. */
+ size_t page_start;
+ filestruct *tmp;
+
+ assert(fileptr != NULL);
+
+ if (ISSET(SOFTWRAP)) {
+ for (tmp = openfile->edittop; tmp && tmp != fileptr; tmp = tmp->next) {
+ line += 1 + (strlenpt(tmp->data) / COLS);
+ }
+ } else
+ line = fileptr->lineno - openfile->edittop->lineno;
+
+ if (line < 0 || line >= editwinrows)
+ return 1;
+
+ /* First, blank out the line. */
+ blank_line(edit, line, 0, COLS);
+
+ /* Next, convert variables that index the line to their equivalent
+ * positions in the expanded line. */
+ if (ISSET(SOFTWRAP))
+ index = 0;
+ else
+ index = strnlenpt(fileptr->data, index);
+ page_start = get_page_start(index);
+
+ /* Expand the line, replacing tabs with spaces, and control
+ * characters with their displayed forms. */
+ converted = display_string(fileptr->data, page_start, COLS, !ISSET(SOFTWRAP));
+
+#ifdef DEBUG
+ if (ISSET(SOFTWRAP) && strlen(converted) >= COLS - 2)
+ fprintf(stderr, "update_line(): converted(1) line = %s\n", converted);
+#endif
+
+
+ /* Paint the line. */
+ edit_draw(fileptr, converted, line, page_start);
+ free(converted);
+
+ if (!ISSET(SOFTWRAP)) {
+ if (page_start > 0)
+ mvwaddch(edit, line, 0, '$');
+ if (strlenpt(fileptr->data) > page_start + COLS)
+ mvwaddch(edit, line, COLS - 1, '$');
+ } else {
+ int full_length = strlenpt(fileptr->data);
+ for (index += COLS; index <= full_length && line < editwinrows; index += COLS) {
+ line++;
+#ifdef DEBUG
+ fprintf(stderr, "update_line(): Softwrap code, moving to %d index %lu\n", line, (unsigned long) index);
+#endif
+ blank_line(edit, line, 0, COLS);
+
+ /* Expand the line, replacing tabs with spaces, and control
+ * characters with their displayed forms. */
+ converted = display_string(fileptr->data, index, COLS, !ISSET(SOFTWRAP));
+#ifdef DEBUG
+ if (ISSET(SOFTWRAP) && strlen(converted) >= COLS - 2)
+ fprintf(stderr, "update_line(): converted(2) line = %s\n", converted);
+#endif
+
+ /* Paint the line. */
+ edit_draw(fileptr, converted, line, index);
+ free(converted);
+ extralinesused++;
+ }
+ }
+ return extralinesused;
+}
+
+/* Return TRUE if we need an update after moving horizontally, and FALSE
+ * otherwise. We need one if the mark is on or if pww_save and
+ * placewewant are on different pages. */
+bool need_horizontal_update(size_t pww_save)
+{
+ return
+#ifndef NANO_TINY
+ openfile->mark_set ||
+#endif
+ get_page_start(pww_save) !=
+ get_page_start(openfile->placewewant);
+}
+
+/* Return TRUE if we need an update after moving vertically, and FALSE
+ * otherwise. We need one if the mark is on or if pww_save and
+ * placewewant are on different pages. */
+bool need_vertical_update(size_t pww_save)
+{
+ return
+#ifndef NANO_TINY
+ openfile->mark_set ||
+#endif
+ get_page_start(pww_save) !=
+ get_page_start(openfile->placewewant);
+}
+
+/* When edittop changes, try and figure out how many lines
+ * we really have to work with (i.e. set maxrows)
+ */
+void compute_maxrows(void)
+{
+ int n;
+ filestruct *foo = openfile->edittop;
+
+ if (!ISSET(SOFTWRAP)) {
+ maxrows = editwinrows;
+ return;
+ }
+
+ maxrows = 0;
+ for (n = 0; n < editwinrows && foo; n++) {
+ maxrows ++;
+ n += strlenpt(foo->data) / COLS;
+ foo = foo->next;
+ }
+
+ if (n < editwinrows)
+ maxrows += editwinrows - n;
+
+#ifdef DEBUG
+ fprintf(stderr, "compute_maxrows(): maxrows = %ld\n", maxrows);
+#endif
+}
+
+/* Scroll the edit window in the given direction and the given number
+ * of lines, and draw new lines on the blank lines left after the
+ * scrolling. direction is the direction to scroll, either UP_DIR or
+ * DOWN_DIR, and nlines is the number of lines to scroll. We change
+ * edittop, and assume that current and current_x are up to date. We
+ * also assume that scrollok(edit) is FALSE. */
+void edit_scroll(scroll_dir direction, ssize_t nlines)
+{
+ filestruct *foo;
+ ssize_t i, extracuzsoft = 0;
+ bool do_redraw = FALSE;
+
+ /* Don't bother scrolling less than one line. */
+ if (nlines < 1)
+ return;
+
+ if (need_vertical_update(0))
+ do_redraw = TRUE;
+
+
+ /* If using soft wrapping, we want to scroll down enough to display the entire next
+ line, if possible... */
+ if (ISSET(SOFTWRAP) && direction == DOWN_DIR) {
+#ifdef DEBUG
+ fprintf(stderr, "Softwrap: Entering check for extracuzsoft\n");
+#endif
+ for (i = maxrows, foo = openfile->edittop; foo && i > 0; i--, foo = foo->next)
+ ;
+
+ if (foo) {
+ extracuzsoft += strlenpt(foo->data) / COLS;
+#ifdef DEBUG
+ fprintf(stderr, "Setting extracuzsoft to %lu due to strlen %lu of line %lu\n", (unsigned long) extracuzsoft,
+ (unsigned long) strlenpt(foo->data), (unsigned long) foo->lineno);
+#endif
+
+ /* Now account for whether the edittop line itself is >COLS, if scrolling down */
+ for (foo = openfile->edittop; foo && extracuzsoft > 0; nlines++) {
+ extracuzsoft -= 1 + strlenpt(foo->data) / COLS;
+#ifdef DEBUG
+ fprintf(stderr, "Edittop adjustment, setting nlines to %lu\n", (unsigned long) nlines);
+#endif
+ if (foo == openfile->filebot)
+ break;
+ foo = foo->next;
+ }
+ }
+ }
+
+ /* Part 1: nlines is the number of lines we're going to scroll the
+ * text of the edit window. */
+
+ /* Move the top line of the edit window up or down (depending on the
+ * value of direction) nlines lines, or as many lines as we can if
+ * there are fewer than nlines lines available. */
+ for (i = nlines; i > 0; i--) {
+ if (direction == UP_DIR) {
+ if (openfile->edittop == openfile->fileage)
+ break;
+ openfile->edittop = openfile->edittop->prev;
+ } else {
+ if (openfile->edittop == openfile->filebot)
+ break;
+ openfile->edittop = openfile->edittop->next;
+ }
+ /* Don't over-scroll on long lines */
+ if (ISSET(SOFTWRAP)) {
+ ssize_t len = strlenpt(openfile->edittop->data) / COLS;
+ i -= len;
+ if (len > 0)
+ do_redraw = TRUE;
+ }
+ }
+
+ /* Limit nlines to the number of lines we could scroll. */
+ nlines -= i;
+
+ /* Don't bother scrolling zero lines or more than the number of
+ * lines in the edit window minus one; in both cases, get out, and
+ * call edit_refresh() beforehand if we need to. */
+ if (nlines == 0 || do_redraw || nlines >= editwinrows) {
+ if (do_redraw || nlines >= editwinrows)
+ edit_refresh_needed = TRUE;
+ return;
+ }
+
+ /* Scroll the text of the edit window up or down nlines lines,
+ * depending on the value of direction. */
+ scrollok(edit, TRUE);
+ wscrl(edit, (direction == UP_DIR) ? -nlines : nlines);
+ scrollok(edit, FALSE);
+
+ /* Part 2: nlines is the number of lines in the scrolled region of
+ * the edit window that we need to draw. */
+
+ /* If the top or bottom line of the file is now visible in the edit
+ * window, we need to draw the entire edit window. */
+ if ((direction == UP_DIR && openfile->edittop ==
+ openfile->fileage) || (direction == DOWN_DIR &&
+ openfile->edittop->lineno + editwinrows - 1 >=
+ openfile->filebot->lineno))
+ nlines = editwinrows;
+
+ /* If the scrolled region contains only one line, and the line
+ * before it is visible in the edit window, we need to draw it too.
+ * If the scrolled region contains more than one line, and the lines
+ * before and after the scrolled region are visible in the edit
+ * window, we need to draw them too. */
+ nlines += (nlines == 1) ? 1 : 2;
+
+ if (nlines > editwinrows)
+ nlines = editwinrows;
+
+ /* If we scrolled up, we're on the line before the scrolled
+ * region. */
+ foo = openfile->edittop;
+
+ /* If we scrolled down, move down to the line before the scrolled
+ * region. */
+ if (direction == DOWN_DIR) {
+ for (i = editwinrows - nlines; i > 0 && foo != NULL; i--)
+ foo = foo->next;
+ }
+
+ /* Draw new lines on any blank lines before or inside the scrolled
+ * region. If we scrolled down and we're on the top line, or if we
+ * scrolled up and we're on the bottom line, the line won't be
+ * blank, so we don't need to draw it unless the mark is on or we're
+ * not on the first page. */
+ for (i = nlines; i > 0 && foo != NULL; i--) {
+ if ((i == nlines && direction == DOWN_DIR) || (i == 1 &&
+ direction == UP_DIR)) {
+ if (do_redraw)
+ update_line(foo, (foo == openfile->current) ?
+ openfile->current_x : 0);
+ } else
+ update_line(foo, (foo == openfile->current) ?
+ openfile->current_x : 0);
+ foo = foo->next;
+ }
+}
+
+/* Update any lines between old_current and current that need to be
+ * updated. Use this if we've moved without changing any text. */
+void edit_redraw(filestruct *old_current, size_t pww_save)
+{
+ bool do_redraw = need_vertical_update(0) ||
+ need_vertical_update(pww_save);
+ filestruct *foo = NULL;
+
+ /* If either old_current or current is offscreen, scroll the edit
+ * window until it's onscreen and get out. */
+ if (old_current->lineno < openfile->edittop->lineno ||
+ old_current->lineno >= openfile->edittop->lineno +
+ maxrows || openfile->current->lineno <
+ openfile->edittop->lineno || openfile->current->lineno >=
+ openfile->edittop->lineno + maxrows) {
+
+#ifdef DEBUG
+ fprintf(stderr, "edit_redraw(): line %lu was offscreen, oldcurrent = %lu edittop = %lu", openfile->current->lineno,
+ old_current->lineno, openfile->edittop->lineno);
+#endif
+ filestruct *old_edittop = openfile->edittop;
+ ssize_t nlines;
+
+#ifndef NANO_TINY
+ /* If the mark is on, update all the lines between old_current
+ * and either the old first line or old last line (depending on
+ * whether we've scrolled up or down) of the edit window. */
+ if (openfile->mark_set) {
+ ssize_t old_lineno;
+
+ if (old_edittop->lineno < openfile->edittop->lineno)
+ old_lineno = old_edittop->lineno;
+ else
+ old_lineno = (old_edittop->lineno + maxrows <=
+ openfile->filebot->lineno) ?
+ old_edittop->lineno + editwinrows :
+ openfile->filebot->lineno;
+
+ foo = old_current;
+
+ while (foo->lineno != old_lineno) {
+ update_line(foo, 0);
+
+ foo = (foo->lineno > old_lineno) ? foo->prev :
+ foo->next;
+ }
+ }
+#endif /* !NANO_TINY */
+
+ /* Put edittop in range of current, get the difference in lines
+ * between the original edittop and the current edittop, and
+ * then restore the original edittop. */
+ edit_update(CENTER);
+
+ /* Update old_current if we're not on the same page as
+ * before. */
+ if (do_redraw)
+ update_line(old_current, 0);
+
+#ifndef NANO_TINY
+ /* If the mark is on, update all the lines between the old first
+ * line or old last line of the edit window (depending on
+ * whether we've scrolled up or down) and current. */
+ if (openfile->mark_set) {
+ while (foo->lineno != openfile->current->lineno) {
+ update_line(foo, 0);
+
+ foo = (foo->lineno > openfile->current->lineno) ?
+ foo->prev : foo->next;
+ }
+ }
+#endif /* !NANO_TINY */
+
+ return;
+ }
+
+ /* Update old_current and current if we're not on the same page as
+ * before. If the mark is on, update all the lines between
+ * old_current and current too. */
+ foo = old_current;
+
+ while (foo != openfile->current) {
+ if (do_redraw)
+ update_line(foo, 0);
+
+#ifndef NANO_TINY
+ if (!openfile->mark_set)
+#endif
+ break;
+
+#ifndef NANO_TINY
+ foo = (foo->lineno > openfile->current->lineno) ? foo->prev :
+ foo->next;
+#endif
+ }
+
+ if (do_redraw)
+ update_line(openfile->current, openfile->current_x);
+}
+
+/* Refresh the screen without changing the position of lines. Use this
+ * if we've moved and changed text. */
+void edit_refresh(void)
+{
+ filestruct *foo;
+ int nlines;
+
+ /* Figure out what maxrows should really be */
+ compute_maxrows();
+
+ if (openfile->current->lineno < openfile->edittop->lineno ||
+ openfile->current->lineno >= openfile->edittop->lineno +
+ maxrows) {
+
+#ifdef DEBUG
+ fprintf(stderr, "edit_refresh(): line = %d, edittop %d + maxrows %d\n", openfile->current->lineno, openfile->edittop->lineno, maxrows);
+#endif
+
+ /* Put the top line of the edit window in range of the current
+ * line. */
+ edit_update(CENTER);
+ }
+
+ foo = openfile->edittop;
+
+#ifdef DEBUG
+ fprintf(stderr, "edit_refresh(): edittop->lineno = %ld\n", (long)openfile->edittop->lineno);
+#endif
+
+ for (nlines = 0; nlines < editwinrows && foo != NULL; nlines++) {
+ nlines += update_line(foo, (foo == openfile->current) ?
+ openfile->current_x : 0);
+ foo = foo->next;
+ }
+
+ for (; nlines < editwinrows; nlines++)
+ blank_line(edit, nlines, 0, COLS);
+
+ reset_cursor();
+ wnoutrefresh(edit);
+}
+
+/* Move edittop to put it in range of current, keeping current in the
+ * same place. location determines how we move it: if it's CENTER, we
+ * center current, and if it's NONE, we put current current_y lines
+ * below edittop. */
+void edit_update(update_type location)
+{
+ filestruct *foo = openfile->current;
+ int goal;
+
+ /* If location is CENTER, we move edittop up (editwinrows / 2)
+ * lines. This puts current at the center of the screen. If
+ * location is NONE, we move edittop up current_y lines if current_y
+ * is in range of the screen, 0 lines if current_y is less than 0,
+ * or (editwinrows - 1) lines if current_y is greater than
+ * (editwinrows - 1). This puts current at the same place on the
+ * screen as before, or at the top or bottom of the screen if
+ * edittop is beyond either. */
+ if (location == CENTER)
+ goal = editwinrows / 2;
+ else {
+ goal = openfile->current_y;
+
+ /* Limit goal to (editwinrows - 1) lines maximum. */
+ if (goal > editwinrows - 1)
+ goal = editwinrows - 1;
+ }
+
+ for (; goal > 0 && foo->prev != NULL; goal--) {
+ foo = foo->prev;
+ if (ISSET(SOFTWRAP) && foo)
+ goal -= strlenpt(foo->data) / COLS;
+ }
+ openfile->edittop = foo;
+#ifdef DEBUG
+ fprintf(stderr, "edit_udpate(), setting edittop to lineno %d\n", openfile->edittop->lineno);
+#endif
+ compute_maxrows();
+ edit_refresh_needed = TRUE;
+}
+
+/* Unconditionally redraw the entire screen. */
+void total_redraw(void)
+{
+#ifdef USE_SLANG
+ /* Slang curses emulation brain damage, part 4: Slang doesn't define
+ * curscr. */
+ SLsmg_touch_screen();
+ SLsmg_refresh();
+#else
+ wrefresh(curscr);
+#endif
+}
+
+/* Unconditionally redraw the entire screen, and then refresh it using
+ * the current file. */
+void total_refresh(void)
+{
+ total_redraw();
+ titlebar(NULL);
+ edit_refresh();
+ bottombars(currmenu);
+}
+
+/* Display the main shortcut list on the last two rows of the bottom
+ * portion of the window. */
+void display_main_list(void)
+{
+ bottombars(MMAIN);
+}
+
+/* If constant is TRUE, we display the current cursor position only if
+ * disable_cursorpos is FALSE. Otherwise, we display it
+ * unconditionally and set disable_cursorpos to FALSE. If constant is
+ * TRUE and disable_cursorpos is TRUE, we also set disable_cursorpos to
+ * FALSE, so that we leave the current statusbar alone this time, and
+ * display the current cursor position next time. */
+void do_cursorpos(bool constant)
+{
+ filestruct *f;
+ char c;
+ size_t i, cur_xpt = xplustabs() + 1;
+ size_t cur_lenpt = strlenpt(openfile->current->data) + 1;
+ int linepct, colpct, charpct;
+
+ assert(openfile->fileage != NULL && openfile->current != NULL);
+
+ f = openfile->current->next;
+ c = openfile->current->data[openfile->current_x];
+
+ openfile->current->next = NULL;
+ openfile->current->data[openfile->current_x] = '\0';
+
+ i = get_totsize(openfile->fileage, openfile->current);
+
+ openfile->current->data[openfile->current_x] = c;
+ openfile->current->next = f;
+
+ if (constant && disable_cursorpos) {
+ disable_cursorpos = FALSE;
+ return;
+ }
+
+ /* Display the current cursor position on the statusbar, and set
+ * disable_cursorpos to FALSE. */
+ linepct = 100 * openfile->current->lineno /
+ openfile->filebot->lineno;
+ colpct = 100 * cur_xpt / cur_lenpt;
+ charpct = (openfile->totsize == 0) ? 0 : 100 * i /
+ openfile->totsize;
+
+ statusbar(
+ _("line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%lu (%d%%)"),
+ (long)openfile->current->lineno,
+ (long)openfile->filebot->lineno, linepct,
+ (unsigned long)cur_xpt, (unsigned long)cur_lenpt, colpct,
+ (unsigned long)i, (unsigned long)openfile->totsize, charpct);
+
+ disable_cursorpos = FALSE;
+}
+
+/* Unconditionally display the current cursor position. */
+void do_cursorpos_void(void)
+{
+ do_cursorpos(FALSE);
+}
+
+void enable_nodelay(void)
+{
+ nodelay_mode = TRUE;
+ nodelay(edit, TRUE);
+}
+
+void disable_nodelay(void)
+{
+ nodelay_mode = FALSE;
+ nodelay(edit, FALSE);
+}
+
+
+/* Highlight the current word being replaced or spell checked. We
+ * expect word to have tabs and control characters expanded. */
+void do_replace_highlight(bool highlight, const char *word)
+{
+ size_t y = xplustabs(), word_len = strlenpt(word);
+
+ y = get_page_start(y) + COLS - y;
+ /* Now y is the number of columns that we can display on this
+ * line. */
+
+ assert(y > 0);
+
+ if (word_len > y)
+ y--;
+
+ reset_cursor();
+ wnoutrefresh(edit);
+
+ if (highlight)
+ wattron(edit, reverse_attr);
+
+ /* This is so we can show zero-length matches. */
+ if (word_len == 0)
+ waddch(edit, ' ');
+ else
+ waddnstr(edit, word, actual_x(word, y));
+
+ if (word_len > y)
+ waddch(edit, '$');
+
+ if (highlight)
+ wattroff(edit, reverse_attr);
+}
+
+#ifdef NANO_EXTRA
+#define CREDIT_LEN 55
+#define XLCREDIT_LEN 8
+
+/* Easter egg: Display credits. Assume nodelay(edit) and scrollok(edit)
+ * are FALSE. */
+void do_credits(void)
+{
+ bool old_more_space = ISSET(MORE_SPACE);
+ bool old_no_help = ISSET(NO_HELP);
+ int kbinput = ERR, crpos = 0, xlpos = 0;
+ const char *credits[CREDIT_LEN] = {
+ NULL, /* "The nano text editor" */
+ NULL, /* "version" */
+ VERSION,
+ "",
+ NULL, /* "Brought to you by:" */
+ "Chris Allegretta",
+ "Jordi Mallach",
+ "Adam Rogoyski",
+ "Rob Siemborski",
+ "Rocco Corsi",
+ "David Lawrence Ramsey",
+ "David Benbennick",
+ "Mike Frysinger",
+ "Ken Tyler",
+ "Sven Guckes",
+ NULL, /* credits[15], handled below. */
+ "Pauli Virtanen",
+ "Daniele Medri",
+ "Clement Laforet",
+ "Tedi Heriyanto",
+ "Bill Soudan",
+ "Christian Weisgerber",
+ "Erik Andersen",
+ "Big Gaute",
+ "Joshua Jensen",
+ "Ryan Krebs",
+ "Albert Chin",
+ "",
+ NULL, /* "Special thanks to:" */
+ "Plattsburgh State University",
+ "Benet Laboratories",
+ "Amy Allegretta",
+ "Linda Young",
+ "Jeremy Robichaud",
+ "Richard Kolb II",
+ NULL, /* "The Free Software Foundation" */
+ "Linus Torvalds",
+ NULL, /* "For ncurses:" */
+ "Thomas Dickey",
+ "Pavel Curtis",
+ "Zeyd Ben-Halim",
+ "Eric S. Raymond",
+ NULL, /* "and anyone else we forgot..." */
+ NULL, /* "Thank you for using nano!" */
+ "",
+ "",
+ "",
+ "",
+ "(C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007",
+ "Free Software Foundation, Inc.",
+ "",
+ "",
+ "",
+ "",
+ "http://www.nano-editor.org/"
+ };
+
+ const char *xlcredits[XLCREDIT_LEN] = {
+ N_("The nano text editor"),
+ N_("version"),
+ N_("Brought to you by:"),
+ N_("Special thanks to:"),
+ N_("The Free Software Foundation"),
+ N_("For ncurses:"),
+ N_("and anyone else we forgot..."),
+ N_("Thank you for using nano!")
+ };
+
+ /* credits[15]: Make sure this name is displayed properly, since we
+ * can't dynamically assign it above, using Unicode 00F6 (Latin
+ * Small Letter O with Diaresis) if applicable. */
+ credits[15] =
+#ifdef ENABLE_UTF8
+ using_utf8() ? "Florian K\xC3\xB6nig" :
+#endif
+ "Florian K\xF6nig";
+
+ if (!old_more_space || !old_no_help) {
+ SET(MORE_SPACE);
+ SET(NO_HELP);
+ window_init();
+ }
+
+ curs_set(0);
+ nodelay(edit, TRUE);
+
+ blank_titlebar();
+ blank_topbar();
+ blank_edit();
+ blank_statusbar();
+ blank_bottombars();
+
+ wrefresh(topwin);
+ wrefresh(edit);
+ wrefresh(bottomwin);
+ napms(700);
+
+ for (crpos = 0; crpos < CREDIT_LEN + editwinrows / 2; crpos++) {
+ if ((kbinput = wgetch(edit)) != ERR)
+ break;
+
+ if (crpos < CREDIT_LEN) {
+ const char *what;
+ size_t start_x;
+
+ if (credits[crpos] == NULL) {
+ assert(0 <= xlpos && xlpos < XLCREDIT_LEN);
+
+ what = _(xlcredits[xlpos]);
+ xlpos++;
+ } else
+ what = credits[crpos];
+
+ start_x = COLS / 2 - strlenpt(what) / 2 - 1;
+ mvwaddstr(edit, editwinrows - 1 - (editwinrows % 2),
+ start_x, what);
+ }
+
+ wrefresh(edit);
+
+ if ((kbinput = wgetch(edit)) != ERR)
+ break;
+ napms(700);
+
+ scrollok(edit, TRUE);
+ wscrl(edit, 1);
+ scrollok(edit, FALSE);
+ wrefresh(edit);
+
+ if ((kbinput = wgetch(edit)) != ERR)
+ break;
+ napms(700);
+
+ scrollok(edit, TRUE);
+ wscrl(edit, 1);
+ scrollok(edit, FALSE);
+ wrefresh(edit);
+ }
+
+ if (kbinput != ERR)
+ ungetch(kbinput);
+
+ if (!old_more_space || !old_no_help) {
+ UNSET(MORE_SPACE);
+ UNSET(NO_HELP);
+ window_init();
+ }
+
+ curs_set(1);
+ nodelay(edit, FALSE);
+
+ total_refresh();
+}
+#endif /* NANO_EXTRA */