Compare commits
64 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d2cd65c967 | ||
|
|
90941714d2 | ||
|
|
cb7fa25d3d | ||
|
|
fedd724086 | ||
|
|
d87b34121f | ||
|
|
b998483369 | ||
|
|
9756d62d93 | ||
|
|
581bc60d0c | ||
|
|
d7ad75adb3 | ||
|
|
9ee2a0d0bc | ||
|
|
ac139dd6a6 | ||
|
|
f7ee9e6996 | ||
|
|
3ea0a8f1d6 | ||
|
|
8c36f8876c | ||
|
|
3dbb2783d3 | ||
|
|
331fc7a6f4 | ||
|
|
c5174aaef3 | ||
|
|
e7a5893245 | ||
|
|
9e2934fd27 | ||
|
|
4eb7aa04f3 | ||
|
|
ff269f8873 | ||
|
|
09a8084943 | ||
|
|
56b24b5909 | ||
|
|
7262358381 | ||
|
|
28fdf444e5 | ||
|
|
d00e6dfacd | ||
|
|
75155dff51 | ||
|
|
9200544269 | ||
|
|
acf2ac244d | ||
|
|
556b3a0028 | ||
|
|
24ccaf1e0f | ||
|
|
2ddb841940 | ||
|
|
ce478115e4 | ||
|
|
40a24b7372 | ||
|
|
90b780b5d7 | ||
|
|
19ed700690 | ||
|
|
2773184d92 | ||
|
|
184e1a6a4e | ||
|
|
8be8ce2086 | ||
|
|
7e0e29d3bb | ||
|
|
8a646adec4 | ||
|
|
984b5366cd | ||
|
|
4a9c8589b2 | ||
|
|
0779835ce4 | ||
|
|
d022eace15 | ||
|
|
2ff25693f3 | ||
|
|
9149e610b3 | ||
|
|
24946bd77a | ||
|
|
35788ff48c | ||
|
|
9956e530d0 | ||
|
|
7ffc01f00c | ||
|
|
e106a87841 | ||
|
|
7cd9f74b51 | ||
|
|
150c50d512 | ||
|
|
a131c7c029 | ||
|
|
8b4ca4a30b | ||
|
|
25f4e58ff4 | ||
|
|
d819a4cf06 | ||
|
|
04fec91362 | ||
|
|
8a0de3bb3f | ||
|
|
650e8a406b | ||
|
|
0f5dfef8b0 | ||
|
|
be77c6119f | ||
|
|
1866609311 |
8
.cvsignore
Normal file
8
.cvsignore
Normal file
@@ -0,0 +1,8 @@
|
||||
Makefile
|
||||
confdefs.h
|
||||
config.cache
|
||||
config.h
|
||||
config.log
|
||||
config.status
|
||||
nano
|
||||
stamp-h
|
||||
79
ChangeLog
79
ChangeLog
@@ -1,3 +1,82 @@
|
||||
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, similaer 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:nanogettsr().
|
||||
- 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 spellinf fucntions
|
||||
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 accomodate
|
||||
the klugey 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_hilight()
|
||||
- New function, displays the currently selected word as hilighted
|
||||
in the spell check. Called from do_replace_loop (Rocco Corsi).
|
||||
- Added calls to curs_set(0) and (1) to diable the cursor when
|
||||
hilighting, looks much better.
|
||||
- es.po:
|
||||
- Traditional Spanish strings updates.
|
||||
|
||||
nano 0.9.21 - 11/23/2000
|
||||
- AUTHORS
|
||||
- Added Rocco Corsi.
|
||||
|
||||
15
NEWS
15
NEWS
@@ -1,3 +1,18 @@
|
||||
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-
|
||||
|
||||
6
TODO
6
TODO
@@ -15,10 +15,8 @@ Current Version:
|
||||
- Better statusbar interaction (scrolling, tab completion for filename)
|
||||
[needed for version 1.0] [DONE]
|
||||
- Now do username completion [DONE].
|
||||
|
||||
Needed for version 1.0:
|
||||
- Unjustify command (^U after ^J)
|
||||
- Username completion (~user).
|
||||
- Unjustify command (^U after ^J) [DONE =-].
|
||||
- Username completion (~user) [DONE =-].
|
||||
|
||||
For Next Version:
|
||||
- Undo/Redo key?
|
||||
|
||||
13
acconfig.h
13
acconfig.h
@@ -24,3 +24,16 @@
|
||||
/* Define to use the slang wrappers for curses instead of native curses */
|
||||
#undef USE_SLANG
|
||||
|
||||
/* Define this to enable the extra stuff */
|
||||
#undef NANO_EXTRA
|
||||
|
||||
/* Define to disable the tab completion code Chris worked so hard on! */
|
||||
#undef DISABLE_TABCOMP
|
||||
|
||||
/* Define this to disable the justify routine */
|
||||
#undef DISABLE_JUSTIFY
|
||||
|
||||
/* Define this to disable the use(full|less) spelling functions */
|
||||
#undef DISABLE_SPELL
|
||||
|
||||
|
||||
|
||||
12
config.h.in
12
config.h.in
@@ -76,6 +76,18 @@
|
||||
/* Define to use the slang wrappers for curses instead of native curses */
|
||||
#undef USE_SLANG
|
||||
|
||||
/* Define this to enable the extra stuff */
|
||||
#undef NANO_EXTRA
|
||||
|
||||
/* Define to disable the tab completion code Chris worked so hard on! */
|
||||
#undef DISABLE_TABCOMP
|
||||
|
||||
/* Define this to disable the justify routine */
|
||||
#undef DISABLE_JUSTIFY
|
||||
|
||||
/* Define this to disable the use(full|less) spelling functions */
|
||||
#undef DISABLE_SPELL
|
||||
|
||||
/* Define if you have the __argz_count function. */
|
||||
#undef HAVE___ARGZ_COUNT
|
||||
|
||||
|
||||
26
configure.in
26
configure.in
@@ -1,7 +1,7 @@
|
||||
# $Id$
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(nano.c)
|
||||
AM_INIT_AUTOMAKE(nano, 0.9.21)
|
||||
AM_INIT_AUTOMAKE(nano, 0.9.22)
|
||||
AM_CONFIG_HEADER(config.h:config.h.in)
|
||||
ALL_LINGUAS="es de fr it id fi"
|
||||
|
||||
@@ -21,6 +21,30 @@ AC_ARG_ENABLE(tiny,
|
||||
AC_DEFINE(NANO_SMALL) tiny_support=yes
|
||||
fi])
|
||||
|
||||
AC_ARG_ENABLE(extra,
|
||||
[ --enable-extra Enable extra (optional) functions, including easter eggs],
|
||||
[if test x$enableval = xyes; then
|
||||
AC_DEFINE(NANO_EXTRA) extra_support=yes
|
||||
fi])
|
||||
|
||||
AC_ARG_ENABLE(tabcomp,
|
||||
[ --disable-tabcomp Disables tab completion code for a smaller binary],
|
||||
[if test x$enableval != xyes; then
|
||||
AC_DEFINE(DISABLE_TABCOMP)
|
||||
fi])
|
||||
|
||||
AC_ARG_ENABLE(justify,
|
||||
[ --disable-justify Disable justify/unjustify function],
|
||||
[if test x$enableval != xyes; then
|
||||
AC_DEFINE(DISABLE_JUSTIFY)
|
||||
fi])
|
||||
|
||||
AC_ARG_ENABLE(spell,
|
||||
[ --disable-speller Disables spell checker function],
|
||||
[if test x$enableval != xyes; then
|
||||
AC_DEFINE(DISABLE_SPELL)
|
||||
fi])
|
||||
|
||||
AC_MSG_CHECKING(whether to use slang)
|
||||
CURSES_LIB_NAME=""
|
||||
AC_ARG_WITH(slang,
|
||||
|
||||
16
faq.html
16
faq.html
@@ -46,7 +46,9 @@ THE HECK DO I DO NOW?</a></font>
|
||||
<br><font color="#330000"><a href="#3.2">3.3. Why does everything go into
|
||||
/usr/local?</a></font>
|
||||
<br><font color="#330000"><a href="#3.4">3.4. I get errors about 'bindtextdomain',
|
||||
'gettext' and/or 'gettextdomain'. What can I do about it?</a></font></blockquote>
|
||||
'gettext' and/or 'gettextdomain'. What can I do about it?</a></font>
|
||||
<br><font color="#330000"><a href="#3.5">3.5. Nano should automatically
|
||||
run strip on the binary when installing it!</a></font></blockquote>
|
||||
|
||||
<h2>
|
||||
<font color="#330000"><a href="#4">4. Running</a></font></h2>
|
||||
@@ -187,7 +189,7 @@ nano was developed).</font></blockquote>
|
||||
of nano?</font></h2>
|
||||
|
||||
<blockquote><font color="#330000">The current version of nano *should*
|
||||
be 0.9.21. Of course you should always check the nano hompage to
|
||||
be 0.9.22. Of course you should always check the nano hompage to
|
||||
see what the latest and greatest version is.</font></blockquote>
|
||||
|
||||
<h2>
|
||||
@@ -330,6 +332,14 @@ install</b>.</font></blockquote>
|
||||
and see if that solves your problem. You make need to do a <b>make
|
||||
clean ; make</b> to get it to work fully.</font></blockquote>
|
||||
|
||||
<h2>
|
||||
<a NAME="3.5"></a><font color="#330000">3.5. Nano should automatically
|
||||
run strip on the binary when installing it!</font></h2>
|
||||
|
||||
<blockquote><font color="#330000">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.</font></blockquote>
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<h1>
|
||||
<a NAME="4"></a><font color="#330000">4. Running</font></h1>
|
||||
@@ -376,7 +386,7 @@ will get the same shortcuts at the bottom as Pico.</font></blockquote>
|
||||
string, the string I last searched for is already in front of my
|
||||
cursor! !What happened?!</font></h2>
|
||||
|
||||
<blockquote><font color="#330000">In nano version 0.9.21, the default is
|
||||
<blockquote><font color="#330000">In nano version 0.9.22, 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
|
||||
|
||||
327
files.c
327
files.c
@@ -179,7 +179,7 @@ int read_file(int fd, char *filename)
|
||||
buf[0] = 0;
|
||||
}
|
||||
/* Did we even GET a file? */
|
||||
if (totsize == 0) {
|
||||
if (totsize == 0 || fileptr == NULL) {
|
||||
new_file();
|
||||
statusbar(_("Read %d lines"), num_lines);
|
||||
return 1;
|
||||
@@ -245,6 +245,7 @@ int open_file(char *filename, int insert, int quiet)
|
||||
int do_insertfile(void)
|
||||
{
|
||||
int i;
|
||||
char *realname = NULL;
|
||||
|
||||
wrap_reset();
|
||||
i = statusq(1, writefile_list, WRITEFILE_LIST_LEN, "",
|
||||
@@ -255,7 +256,14 @@ int do_insertfile(void)
|
||||
fprintf(stderr, "filename is %s", answer);
|
||||
#endif
|
||||
|
||||
i = open_file(answer, 1, 0);
|
||||
#ifndef DISABLE_TABCOMP
|
||||
realname = real_dir_from_tilde(answer);
|
||||
#else
|
||||
realname = mallocstrcpy(realname, answer);
|
||||
#endif
|
||||
|
||||
i = open_file(realname, 1, 0);
|
||||
free(realname);
|
||||
|
||||
dump_buffer(fileage);
|
||||
set_modified();
|
||||
@@ -285,16 +293,17 @@ int do_insertfile(void)
|
||||
* we don't set the global variable filename to it's name, and don't
|
||||
* print out how many lines we wrote on the statusbar.
|
||||
*
|
||||
* Note that tmp is only set to 1 for storing temporary files internal
|
||||
* to the editor, and is completely different from TEMP_OPT.
|
||||
* tmp means we are writing a tmp file in a secute fashion. We use
|
||||
* it when spell checking or dumping the file on an error.
|
||||
*/
|
||||
int write_file(char *name, int tmp)
|
||||
{
|
||||
long size, lineswritten = 0;
|
||||
char buf[PATH_MAX + 1];
|
||||
filestruct *fileptr;
|
||||
int fd, mask = 0;
|
||||
int fd, mask = 0, realexists;
|
||||
struct stat st;
|
||||
static char *realname = NULL;
|
||||
|
||||
if (!strcmp(name, "")) {
|
||||
statusbar(_("Cancelled"));
|
||||
@@ -303,16 +312,31 @@ int write_file(char *name, int tmp)
|
||||
titlebar();
|
||||
fileptr = fileage;
|
||||
|
||||
if (realname != NULL)
|
||||
free(realname);
|
||||
|
||||
#ifndef DISABLE_TABCOMP
|
||||
realname = real_dir_from_tilde(name);
|
||||
#else
|
||||
realname = mallocstrcpy(realname, name);
|
||||
#endif
|
||||
|
||||
/* Save the state of file at the end of the symlink */
|
||||
realexists = stat(realname, &st);
|
||||
|
||||
/* Check to see if the file is a regular file and FOLLOW_SYMLINKS is
|
||||
set. If so then don't do the delete and recreate code which would
|
||||
cause unexpected behavior */
|
||||
lstat(name, &st);
|
||||
lstat(realname, &st);
|
||||
|
||||
/* Open the file and truncate it. Trust the symlink. */
|
||||
if ((ISSET(FOLLOW_SYMLINKS) || !S_ISLNK(st.st_mode)) && !tmp) {
|
||||
/* New case: if the file exists, just give up. Easy way out of
|
||||
all security issues */
|
||||
if (tmp && realexists != -1)
|
||||
return -1;
|
||||
else if (ISSET(FOLLOW_SYMLINKS) || !S_ISLNK(st.st_mode)) {
|
||||
|
||||
if ((fd = open(name, O_WRONLY | O_CREAT | O_TRUNC,
|
||||
/* Open the file and truncate it. Trust the symlink. */
|
||||
if ((fd = open(realname, O_WRONLY | O_CREAT | O_TRUNC,
|
||||
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH |
|
||||
S_IWOTH)) == -1) {
|
||||
if (ISSET(TEMP_OPT)) {
|
||||
@@ -321,18 +345,19 @@ int write_file(char *name, int tmp)
|
||||
}
|
||||
statusbar(_("Could not open file for writing: %s"),
|
||||
strerror(errno));
|
||||
free(realname);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
/* Don't follow symlink. Create new file. */
|
||||
else {
|
||||
if (strlen(name) > (PATH_MAX - 7)) {
|
||||
if (strlen(realname) > (PATH_MAX - 7)) {
|
||||
statusbar(_("Could not open file: Path length exceeded."));
|
||||
return -1;
|
||||
}
|
||||
|
||||
memset(buf, 0x00, PATH_MAX + 1);
|
||||
strcat(buf, name);
|
||||
strcat(buf, realname);
|
||||
strcat(buf, ".XXXXXX");
|
||||
if ((fd = mkstemp(buf)) == -1) {
|
||||
if (ISSET(TEMP_OPT)) {
|
||||
@@ -385,13 +410,13 @@ int write_file(char *name, int tmp)
|
||||
|
||||
|
||||
if (close(fd) == -1) {
|
||||
statusbar(_("Could not close %s: %s"), name, strerror(errno));
|
||||
statusbar(_("Could not close %s: %s"), realname, strerror(errno));
|
||||
unlink(buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!ISSET(FOLLOW_SYMLINKS) || tmp) {
|
||||
if (stat(name, &st) == -1) {
|
||||
if (realexists == -1) {
|
||||
/* Use default umask as file permisions if file is a new file. */
|
||||
mask = umask(0);
|
||||
umask(mask);
|
||||
@@ -404,47 +429,51 @@ int write_file(char *name, int tmp)
|
||||
} else {
|
||||
/* Use permissions from file we are overwriting. */
|
||||
mask = st.st_mode;
|
||||
if (unlink(name) == -1) {
|
||||
if (unlink(realname) == -1) {
|
||||
if (errno != ENOENT) {
|
||||
statusbar(_("Could not open %s for writing: %s"),
|
||||
name, strerror(errno));
|
||||
realname, strerror(errno));
|
||||
unlink(buf);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (link(buf, name) != -1)
|
||||
unlink(buf);
|
||||
else if (errno != EPERM) {
|
||||
statusbar(_("Could not open %s for writing: %s"),
|
||||
if (!tmp) {
|
||||
if (link(buf, realname) != -1)
|
||||
unlink(buf);
|
||||
else if (errno != EPERM) {
|
||||
statusbar(_("Could not open %s for writing: %s"),
|
||||
name, strerror(errno));
|
||||
unlink(buf);
|
||||
return -1;
|
||||
} else if (rename(buf, name) == -1) { /* Try a rename?? */
|
||||
statusbar(_("Could not open %s for writing: %s"),
|
||||
name, strerror(errno));
|
||||
unlink(buf);
|
||||
return -1;
|
||||
unlink(buf);
|
||||
return -1;
|
||||
} else if (rename(buf, realname) == -1) { /* Try a rename?? */
|
||||
statusbar(_("Could not open %s for writing: %s"),
|
||||
realname, strerror(errno));
|
||||
unlink(buf);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (chmod(name, mask) == -1) {
|
||||
if (chmod(realname, mask) == -1)
|
||||
statusbar(_("Could not set permissions %o on %s: %s"),
|
||||
mask, name, strerror(errno));
|
||||
}
|
||||
mask, realname, strerror(errno));
|
||||
|
||||
}
|
||||
if (!tmp) {
|
||||
strncpy(filename, name, 132);
|
||||
strncpy(filename, realname, 132);
|
||||
statusbar(_("Wrote %d lines"), lineswritten);
|
||||
UNSET(MODIFIED);
|
||||
titlebar();
|
||||
}
|
||||
UNSET(MODIFIED);
|
||||
titlebar();
|
||||
return 1;
|
||||
}
|
||||
|
||||
int do_writeout(int exiting)
|
||||
{
|
||||
int i = 0;
|
||||
#ifdef NANO_EXTRA
|
||||
static int did_cred = 0;
|
||||
#endif
|
||||
|
||||
answer = mallocstrcpy(answer, filename);
|
||||
|
||||
@@ -471,6 +500,14 @@ int do_writeout(int exiting)
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, _("filename is %s"), answer);
|
||||
#endif
|
||||
|
||||
#ifdef NANO_EXTRA
|
||||
if (exiting && !ISSET(TEMP_OPT) && !strcasecmp(answer, "zzy") && !did_cred) {
|
||||
do_credits();
|
||||
did_cred = 1;
|
||||
return - 1;
|
||||
}
|
||||
#endif
|
||||
if (strcmp(answer, filename)) {
|
||||
struct stat st;
|
||||
if (!stat(answer, &st)) {
|
||||
@@ -497,6 +534,110 @@ int do_writeout_void(void)
|
||||
return do_writeout(0);
|
||||
}
|
||||
|
||||
#ifndef DISABLE_TABCOMP
|
||||
static char **homedirs;
|
||||
|
||||
/* Return a malloc()ed string containing the actual directory, used
|
||||
* to convert ~user and ~/ notation...
|
||||
*/
|
||||
char *real_dir_from_tilde (char *buf)
|
||||
{
|
||||
char *dirtmp = NULL, *line = NULL, byte[1], *lineptr;
|
||||
int fd, i, status, searchctr = 1;
|
||||
|
||||
if (buf[0] == '~') {
|
||||
if (buf[1] == '~')
|
||||
goto abort; /* Handle ~~ without segfaulting =) */
|
||||
else if (buf[1] == '/') {
|
||||
if (getenv("HOME") != NULL) {
|
||||
dirtmp = nmalloc(strlen(buf) + 2 + strlen(getenv("HOME")));
|
||||
|
||||
sprintf(dirtmp, "%s/%s", getenv("HOME"), &buf[2]);
|
||||
}
|
||||
}
|
||||
else if (buf[1] != 0) {
|
||||
|
||||
if((fd = open("/etc/passwd", O_RDONLY)) == -1)
|
||||
goto abort;
|
||||
|
||||
/* Figure how how much of of the str we need to compare */
|
||||
for (searchctr = 1; buf[searchctr] != '/' &&
|
||||
buf[searchctr] != 0; searchctr++)
|
||||
;
|
||||
|
||||
do {
|
||||
i = 0;
|
||||
line = nmalloc(1);
|
||||
while ((status = read(fd, byte, 1)) != 0 && byte[0] != '\n') {
|
||||
|
||||
line[i] = byte[0];
|
||||
i++;
|
||||
line = nrealloc(line, i+1);
|
||||
}
|
||||
line[i] = 0;
|
||||
|
||||
if (i == 0)
|
||||
goto abort;
|
||||
|
||||
line[i] = 0;
|
||||
lineptr = strtok(line, ":");
|
||||
|
||||
if (!strncmp(lineptr, &buf[1], searchctr - 1)) {
|
||||
|
||||
/* Okay, skip to the password portion now */
|
||||
for (i = 0; i <= 4 && lineptr != NULL; i++)
|
||||
lineptr = strtok(NULL, ":");
|
||||
|
||||
if (lineptr == NULL)
|
||||
goto abort;
|
||||
|
||||
/* Else copy the new string into the new buf */
|
||||
dirtmp = nmalloc(strlen(buf) + 2 + strlen(lineptr));
|
||||
|
||||
sprintf(dirtmp, "%s%s", lineptr, &buf[searchctr]);
|
||||
free(line);
|
||||
break;
|
||||
}
|
||||
|
||||
free(line);
|
||||
|
||||
} while (status != 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
dirtmp = mallocstrcpy(dirtmp, buf);
|
||||
|
||||
return dirtmp;
|
||||
|
||||
abort:
|
||||
dirtmp = mallocstrcpy(dirtmp, buf);
|
||||
return dirtmp;
|
||||
}
|
||||
|
||||
/* Tack a slash onto the string we're completing if it's a directory */
|
||||
int append_slash_if_dir(char *buf, int *lastWasTab, int *place)
|
||||
{
|
||||
char *dirptr;
|
||||
struct stat fileinfo;
|
||||
int ret = 0;
|
||||
|
||||
dirptr = real_dir_from_tilde(buf);
|
||||
|
||||
if (stat(dirptr, &fileinfo) == -1)
|
||||
ret = 0;
|
||||
else if (S_ISDIR(fileinfo.st_mode)) {
|
||||
strncat(buf, "/", 1);
|
||||
*place += 1;
|
||||
/* now we start over again with # of tabs so far */
|
||||
*lastWasTab = 0;
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
if (dirptr != buf)
|
||||
free(dirptr);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* These functions (username_tab_completion, cwd_tab_completion, and
|
||||
@@ -517,24 +658,90 @@ int do_writeout_void(void)
|
||||
* This code may safely be consumed by a BSD or GPL license.
|
||||
*/
|
||||
|
||||
#if 0
|
||||
char **username_tab_completion(char *buf, int *num_matches)
|
||||
{
|
||||
char **matches = (char **) NULL;
|
||||
*num_matches = 0;
|
||||
char **matches = (char **) NULL, *line = NULL, *lineptr;
|
||||
char *matchline = NULL, *matchdir = NULL;
|
||||
|
||||
int fd, i = 0, status = 1;
|
||||
char byte[1];
|
||||
|
||||
if((fd = open("/etc/passwd", O_RDONLY)) == -1) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (homedirs != NULL) {
|
||||
for (i = 0; i < *num_matches; i++)
|
||||
free(homedirs[i]);
|
||||
free(homedirs);
|
||||
homedirs = (char **) NULL;
|
||||
*num_matches = 0;
|
||||
}
|
||||
matches = nmalloc(BUFSIZ);
|
||||
homedirs = nmalloc(BUFSIZ);
|
||||
strcat(buf, "*");
|
||||
do {
|
||||
i = 0;
|
||||
line = nmalloc(1);
|
||||
while ((status = read(fd, byte, 1)) != 0 && byte[0] != '\n') {
|
||||
|
||||
line[i] = byte[0];
|
||||
i++;
|
||||
line = nrealloc(line, i+1);
|
||||
}
|
||||
|
||||
if (i == 0)
|
||||
break;
|
||||
|
||||
line[i] = 0;
|
||||
lineptr = strtok(line, ":");
|
||||
|
||||
if (check_wildcard_match(line, &buf[1]) == TRUE) {
|
||||
|
||||
if (*num_matches == BUFSIZ)
|
||||
break;
|
||||
|
||||
/* Cool, found a match. Add it to the list
|
||||
* This makes a lot more sense to me (Chris) this way...
|
||||
*/
|
||||
matchline = nmalloc(strlen(line) + 2);
|
||||
sprintf(matchline, "~%s", line);
|
||||
|
||||
for (i = 0; i <= 4 && lineptr != NULL; i++)
|
||||
lineptr = strtok(NULL, ":");
|
||||
|
||||
if (lineptr == NULL)
|
||||
break;
|
||||
|
||||
matchdir = mallocstrcpy(matchdir, lineptr);
|
||||
homedirs[*num_matches] = matchdir;
|
||||
matches[*num_matches] = matchline;
|
||||
|
||||
++*num_matches;
|
||||
|
||||
/* If there's no more room, bail out */
|
||||
if (*num_matches == BUFSIZ)
|
||||
break;
|
||||
}
|
||||
|
||||
free(line);
|
||||
|
||||
} while (status != 0);
|
||||
|
||||
close(fd);
|
||||
return matches;
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "\nin username_tab_completion\n");
|
||||
#endif
|
||||
return (matches);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* This was originally called exe_n_cwd_tab_completion, but we're not
|
||||
worried about executables, only filenames :> */
|
||||
|
||||
char **cwd_tab_completion(char *buf, int *num_matches)
|
||||
{
|
||||
char *dirName, *tmp = NULL, *tmp2 = NULL;
|
||||
char *dirName, *dirtmp = NULL, *tmp = NULL, *tmp2 = NULL;
|
||||
char **matches = (char **) NULL;
|
||||
DIR *dir;
|
||||
struct dirent *next;
|
||||
@@ -569,6 +776,17 @@ char **cwd_tab_completion(char *buf, int *num_matches)
|
||||
fprintf(stderr, "\ntmp = %s\n", tmp);
|
||||
#endif
|
||||
|
||||
dirtmp = real_dir_from_tilde(dirName);
|
||||
free(dirName);
|
||||
dirName = dirtmp;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "\nDir = %s\n", dirName);
|
||||
fprintf(stderr, "\nbuf = %s\n", buf);
|
||||
fprintf(stderr, "\ntmp = %s\n", tmp);
|
||||
#endif
|
||||
|
||||
|
||||
dir = opendir(dirName);
|
||||
if (!dir) {
|
||||
/* Don't print an error, just shut up and return */
|
||||
@@ -616,9 +834,8 @@ char *input_tab(char *buf, int place, int *lastWasTab, int *newplace)
|
||||
static int num_matches = 0, match_matches = 0;
|
||||
static char **matches = (char **) NULL;
|
||||
int pos = place, i = 0, col = 0, editline = 0;
|
||||
int longestname = 0;
|
||||
int longestname = 0, is_dir = 0;
|
||||
char *foo;
|
||||
struct stat fileinfo;
|
||||
|
||||
if (*lastWasTab == FALSE) {
|
||||
char *tmp, *copyto, *matchBuf;
|
||||
@@ -648,9 +865,9 @@ char *input_tab(char *buf, int place, int *lastWasTab, int *newplace)
|
||||
/* If the word starts with `~' and there is no slash in the word,
|
||||
* then try completing this word as a username. */
|
||||
|
||||
/* FIXME -- this check is broken!
|
||||
/* FIXME -- this check is broken! */
|
||||
if (*tmp == '~' && !strchr(tmp, '/'))
|
||||
matches = username_tab_completion(tmp, &num_matches); */
|
||||
matches = username_tab_completion(tmp, &num_matches);
|
||||
|
||||
/* Try to match everything in the current working directory that
|
||||
* matches. */
|
||||
@@ -680,21 +897,11 @@ char *input_tab(char *buf, int place, int *lastWasTab, int *newplace)
|
||||
} else
|
||||
tmp = buf;
|
||||
|
||||
if (!strcmp(tmp, matches[0])) {
|
||||
if (!strcmp(tmp, matches[0]))
|
||||
is_dir = append_slash_if_dir(buf, lastWasTab, newplace);
|
||||
|
||||
/* Is it a directory? */
|
||||
if (stat(buf, &fileinfo) == -1)
|
||||
break;
|
||||
else if (S_ISDIR(fileinfo.st_mode)) {
|
||||
|
||||
/* Tack on a slash */
|
||||
strncat(buf, "/", 1);
|
||||
*newplace += 1;
|
||||
/* now we start over with 0 tabs so far */
|
||||
*lastWasTab = 0;
|
||||
}
|
||||
if (is_dir)
|
||||
break;
|
||||
}
|
||||
|
||||
copyto = tmp;
|
||||
for (pos = 0; *tmp == matches[0][pos] &&
|
||||
@@ -705,14 +912,9 @@ char *input_tab(char *buf, int place, int *lastWasTab, int *newplace)
|
||||
strncpy(copyto, matches[0], strlen(matches[0]) + 1);
|
||||
*newplace += strlen(matches[0]) - pos;
|
||||
|
||||
if (stat(buf, &fileinfo) == -1)
|
||||
break;
|
||||
else if (S_ISDIR(fileinfo.st_mode)) {
|
||||
strncat(buf, "/", 1);
|
||||
*newplace += 1;
|
||||
/* now we start over again with # of tabs so far */
|
||||
*lastWasTab = 0;
|
||||
}
|
||||
/* Is it a directory? */
|
||||
append_slash_if_dir(buf, lastWasTab, newplace);
|
||||
|
||||
break;
|
||||
default:
|
||||
/* Check to see if all matches share a beginning, and if so
|
||||
@@ -815,3 +1017,4 @@ char *input_tab(char *buf, int place, int *lastWasTab, int *newplace)
|
||||
curs_set(1);
|
||||
return buf;
|
||||
}
|
||||
#endif
|
||||
|
||||
16
global.c
16
global.c
@@ -156,7 +156,7 @@ void toggle_init(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
void shortcut_init(void)
|
||||
void shortcut_init(int unjustify)
|
||||
{
|
||||
char *nano_help_msg = "", *nano_writeout_msg = "", *nano_exit_msg = "",
|
||||
*nano_goto_msg = "", *nano_justify_msg = "", *nano_replace_msg =
|
||||
@@ -170,7 +170,7 @@ void shortcut_init(void)
|
||||
"", *nano_mark_msg = "", *nano_delete_msg =
|
||||
"", *nano_backspace_msg = "", *nano_tab_msg =
|
||||
"", *nano_enter_msg = "", *nano_case_msg =
|
||||
"", *nano_cancel_msg = "";
|
||||
"", *nano_cancel_msg = "", *nano_unjustify_msg;
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
nano_help_msg = _("Invoke the help menu");
|
||||
@@ -178,6 +178,7 @@ void shortcut_init(void)
|
||||
nano_exit_msg = _("Exit from nano");
|
||||
nano_goto_msg = _("Goto a specific line number");
|
||||
nano_justify_msg = _("Justify the current paragraph");
|
||||
nano_unjustify_msg = _("Unjustify after a justify");
|
||||
nano_replace_msg = _("Replace text within the editor");
|
||||
nano_insert_msg = _("Insert another file into the current one");
|
||||
nano_whereis_msg = _("Search for text within the editor");
|
||||
@@ -255,7 +256,11 @@ void shortcut_init(void)
|
||||
sc_init_one(&main_list[8], NANO_CUT_KEY, _("Cut Text"),
|
||||
nano_cut_msg, 0, NANO_CUT_FKEY, 0, NOVIEW, do_cut_text);
|
||||
|
||||
sc_init_one(&main_list[9], NANO_UNCUT_KEY, _("UnCut Txt"),
|
||||
if (unjustify)
|
||||
sc_init_one(&main_list[9], NANO_UNJUSTIFY_KEY, _("UnJustify"),
|
||||
nano_unjustify_msg, 0, 0, 0, NOVIEW, do_uncut_text);
|
||||
else
|
||||
sc_init_one(&main_list[9], NANO_UNCUT_KEY, _("UnCut Txt"),
|
||||
nano_uncut_msg,
|
||||
0, NANO_UNCUT_FKEY, 0, NOVIEW, do_uncut_text);
|
||||
|
||||
@@ -405,10 +410,7 @@ void shortcut_init(void)
|
||||
sc_init_one(&writefile_list[0], NANO_CANCEL_KEY, _("Cancel"),
|
||||
nano_cancel_msg, 0, 0, 0, VIEW, 0);
|
||||
|
||||
sc_init_one(&spell_list[0], NANO_HELP_KEY, _("Get Help"),
|
||||
nano_help_msg, 0, 0, 0, VIEW, do_help);
|
||||
|
||||
sc_init_one(&spell_list[1], NANO_CANCEL_KEY, _("Cancel"),
|
||||
sc_init_one(&spell_list[0], NANO_CANCEL_KEY, _("Cancel"),
|
||||
nano_cancel_msg, 0, 0, 0, VIEW, 0);
|
||||
|
||||
toggle_init();
|
||||
|
||||
3
intl/.cvsignore
Normal file
3
intl/.cvsignore
Normal file
@@ -0,0 +1,3 @@
|
||||
Makefile
|
||||
libintl.h
|
||||
po2tbl.sed
|
||||
49
nano.1
49
nano.1
@@ -1,20 +1,16 @@
|
||||
.\" Hey, EMACS: -*- nroff -*-
|
||||
.\" Hey, EMACS: -*- nroff -*-
|
||||
.\" nano.1 is copyright 1999-2000 by
|
||||
.\" Chris Allegretta <chrisa@asty.org>
|
||||
.\"
|
||||
.\" This is free documentation, see the latest version of the GNU General
|
||||
.\" Public License for copying conditions. There is NO warranty.
|
||||
.\"
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.TH NANO 1 "July 28, 2000"
|
||||
.TH NANO 1 "December 2, 2000"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
.\" .nh disable hyphenation
|
||||
.\" .hy enable hyphenation
|
||||
.\" .ad l left justify
|
||||
.\" .ad b justify to both left and right margins
|
||||
.\" .nf disable filling
|
||||
.\" .fi enable filling
|
||||
.\" .br insert line break
|
||||
.\" .sp <n> insert n+1 empty lines
|
||||
.\" for manpage-specific macros, see man(7)
|
||||
.SH NAME
|
||||
nano \- Nano's ANOther editor, an enhanced free Pico Clone
|
||||
.SH SYNOPSIS
|
||||
@@ -29,14 +25,12 @@ command.
|
||||
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||
.\" respectively.
|
||||
\fBnano\fP was originally known as TIP (TIP Isn't Pico). It 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 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,
|
||||
.B nano
|
||||
also implements some missing (or disabled by
|
||||
default) features in Pico, such as "search and replace" and "goto line
|
||||
number".
|
||||
also implements some missing (or disabled by default) features in Pico,
|
||||
such as "search and replace" and "goto line number".
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-T (\-\-tabsize)
|
||||
@@ -92,16 +86,27 @@ Enable suspend ability.
|
||||
.TP
|
||||
.B \+LINE
|
||||
Places cursor at LINE on startup.
|
||||
.SH NOTES
|
||||
Nano will try to dump the buffer into an emergency file in some cases.
|
||||
Mainly, this will happen if Nano recieves a SIGHUP or runs out of
|
||||
memory, when it will write the buffer into a file named "nano.save" if the
|
||||
buffer didn't have a name already, or will add a ".save" suffix to the
|
||||
current finename. Nano will \fBnot\fP write this file if a previous one
|
||||
exists in the current directory.
|
||||
.SH BUGS
|
||||
Please send any comments or bug reports to
|
||||
.br
|
||||
.B nano@nano-editor.org.
|
||||
.br
|
||||
The nano mailing list is available from
|
||||
.br
|
||||
.B nano-devel@lists.sourceforge.net.
|
||||
To subscribe, email to nano-devel-request@lists.sourceforge.net with a
|
||||
subject of "subscribe".
|
||||
.SH HOMEPAGE
|
||||
http://www.nano-editor.org
|
||||
.SH AUTHOR
|
||||
Chris Allegretta <chrisa@asty.org>, et al. This manual page was
|
||||
originally written by Jordi Mallach <jordi@sindominio.net>, for the Debian
|
||||
GNU/Linux system (but may be used by others).
|
||||
Chris Allegretta <chrisa@asty.org>, et al (see AUTHORS for details).
|
||||
This manual page was originally written by Jordi Mallach
|
||||
<jordi@sindominio.net>, for the Debian GNU/Linux system (but may be
|
||||
used by others).
|
||||
|
||||
59
nano.1.html
59
nano.1.html
@@ -3,21 +3,11 @@ Content-type: text/html
|
||||
<HTML><HEAD><TITLE>Manpage of NANO</TITLE>
|
||||
</HEAD><BODY>
|
||||
<H1>NANO</H1>
|
||||
Section: User Commands (1)<BR>Updated: July 28, 2000<BR><A HREF="#index">Index</A>
|
||||
Section: User Commands (1)<BR>Updated: December 2, 2000<BR><A HREF="#index">Index</A>
|
||||
<A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<A NAME="lbAB"> </A>
|
||||
<H2>NAME</H2>
|
||||
|
||||
@@ -43,15 +33,13 @@ command.
|
||||
|
||||
|
||||
|
||||
<B>nano</B> was originally known as TIP (TIP Isn't Pico). It 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,
|
||||
<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's look and feel,
|
||||
<B>nano</B>
|
||||
|
||||
also implements some missing (or disabled by
|
||||
default) features in Pico, such as "search and replace" and "goto line
|
||||
number".
|
||||
also implements some missing (or disabled by default) features in Pico,
|
||||
such as "search and replace" and "goto line number".
|
||||
<A NAME="lbAE"> </A>
|
||||
<H2>OPTIONS</H2>
|
||||
|
||||
@@ -129,26 +117,42 @@ Enable suspend ability.
|
||||
Places cursor at LINE on startup.
|
||||
</DL>
|
||||
<A NAME="lbAF"> </A>
|
||||
<H2>NOTES</H2>
|
||||
|
||||
Nano will try to dump the buffer into an emergency file in some cases.
|
||||
Mainly, this will happen if Nano recieves a SIGHUP or runs out of
|
||||
memory, when it will write the buffer into a file named "nano.save" if the
|
||||
buffer didn't have a name already, or will add a ".save" suffix to the
|
||||
current finename. Nano will <B>not</B> write this file if a previous one
|
||||
exists in the current directory.
|
||||
<A NAME="lbAG"> </A>
|
||||
<H2>BUGS</H2>
|
||||
|
||||
Please send any comments or bug reports to
|
||||
<BR>
|
||||
|
||||
<B><A HREF="mailto:nano@nano-editor.org">nano@nano-editor.org</A>.</B>
|
||||
|
||||
<BR>
|
||||
|
||||
The nano mailing list is available from
|
||||
<BR>
|
||||
|
||||
<B><A HREF="mailto:nano-devel@lists.sourceforge.net">nano-devel@lists.sourceforge.net</A>.</B>
|
||||
|
||||
To subscribe, email to <A HREF="mailto:nano-devel-request@lists.sourceforge.net">nano-devel-request@lists.sourceforge.net</A> with a
|
||||
subject of "subscribe".
|
||||
<A NAME="lbAG"> </A>
|
||||
<A NAME="lbAH"> </A>
|
||||
<H2>HOMEPAGE</H2>
|
||||
|
||||
<A HREF="http://www.nano-editor.org">http://www.nano-editor.org</A>
|
||||
<A NAME="lbAH"> </A>
|
||||
<A NAME="lbAI"> </A>
|
||||
<H2>AUTHOR</H2>
|
||||
|
||||
Chris Allegretta <<A HREF="mailto:chrisa@asty.org">chrisa@asty.org</A>>, et al. This manual page was
|
||||
originally written by Jordi Mallach <<A HREF="mailto:jordi@sindominio.net">jordi@sindominio.net</A>>, for the Debian
|
||||
GNU/Linux system (but may be used by others).
|
||||
Chris Allegretta <<A HREF="mailto:chrisa@asty.org">chrisa@asty.org</A>>, et al (see AUTHORS for details).
|
||||
This manual page was originally written by Jordi Mallach
|
||||
<<A HREF="mailto:jordi@sindominio.net">jordi@sindominio.net</A>>, for the Debian GNU/Linux system (but may be
|
||||
used by others).
|
||||
<P>
|
||||
|
||||
<HR>
|
||||
@@ -158,14 +162,15 @@ GNU/Linux system (but may be used by others).
|
||||
<DT><A HREF="#lbAC">SYNOPSIS</A><DD>
|
||||
<DT><A HREF="#lbAD">DESCRIPTION</A><DD>
|
||||
<DT><A HREF="#lbAE">OPTIONS</A><DD>
|
||||
<DT><A HREF="#lbAF">BUGS</A><DD>
|
||||
<DT><A HREF="#lbAG">HOMEPAGE</A><DD>
|
||||
<DT><A HREF="#lbAH">AUTHOR</A><DD>
|
||||
<DT><A HREF="#lbAF">NOTES</A><DD>
|
||||
<DT><A HREF="#lbAG">BUGS</A><DD>
|
||||
<DT><A HREF="#lbAH">HOMEPAGE</A><DD>
|
||||
<DT><A HREF="#lbAI">AUTHOR</A><DD>
|
||||
</DL>
|
||||
<HR>
|
||||
This document was created by
|
||||
<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
|
||||
using the manual pages.<BR>
|
||||
Time: 21:33:46 GMT, November 19, 2000
|
||||
Time: 04:21:24 GMT, December 03, 2000
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
181
nano.c
181
nano.c
@@ -104,6 +104,8 @@ RETSIGTYPE finish(int sigage)
|
||||
void die(char *msg, ...)
|
||||
{
|
||||
va_list ap;
|
||||
char *name;
|
||||
int i;
|
||||
|
||||
va_start(ap, msg);
|
||||
vfprintf(stderr, msg, ap);
|
||||
@@ -112,12 +114,15 @@ void die(char *msg, ...)
|
||||
/* if we can't save we have REAL bad problems,
|
||||
* but we might as well TRY. */
|
||||
if (filename[0] == '\0') {
|
||||
write_file("nano.save", 0);
|
||||
name = "nano.save";
|
||||
i = write_file(name, 1);
|
||||
} else {
|
||||
char buf[BUFSIZ];
|
||||
strncpy(buf, filename, BUFSIZ);
|
||||
strncat(buf, ".save", BUFSIZ - strlen(buf));
|
||||
write_file(buf, 0);
|
||||
|
||||
char *buf = nmalloc(strlen(filename) + 6);
|
||||
strcpy(buf, filename);
|
||||
strcat(buf, ".save");
|
||||
i = write_file(buf, 1);
|
||||
name = buf;
|
||||
}
|
||||
/* Restore the old term settings */
|
||||
tcsetattr(0, TCSANOW, &oldterm);
|
||||
@@ -128,7 +133,10 @@ void die(char *msg, ...)
|
||||
endwin();
|
||||
|
||||
fprintf(stderr, msg);
|
||||
fprintf(stderr, _("\nBuffer written to 'nano.save'\n"));
|
||||
if (i != -1)
|
||||
fprintf(stderr, _("\nBuffer written to %s\n"), name);
|
||||
else
|
||||
fprintf(stderr, _("\nNo %s written (file exists?)\n"), name);
|
||||
|
||||
exit(1); /* We have a problem: exit w/ errorlevel(1) */
|
||||
}
|
||||
@@ -417,7 +425,29 @@ void version(void)
|
||||
printf(_(" nano version %s by Chris Allegretta (compiled %s, %s)\n"),
|
||||
VERSION, __TIME__, __DATE__);
|
||||
printf(_
|
||||
(" Email: nano@nano-editor.org Web: http://www.nano-editor.org\n"));
|
||||
(" Email: nano@nano-editor.org Web: http://www.nano-editor.org"));
|
||||
printf(_("\n Compiled options:"));
|
||||
|
||||
#ifdef NANO_SMALL
|
||||
printf(" --enable-tiny");
|
||||
#endif
|
||||
#ifdef NANO_EXTRA
|
||||
printf(" --enable-extra");
|
||||
#endif
|
||||
#ifdef DISABLE_TABCOMP
|
||||
printf(" --disable-tabcomp");
|
||||
#endif
|
||||
#ifdef DISABLE_JUSTIFY
|
||||
printf(" --disable-justify");
|
||||
#endif
|
||||
#ifdef DISABLE_SPELL
|
||||
printf(" --disable-spell");
|
||||
#endif
|
||||
#ifdef USE_SLANG
|
||||
printf(" --with-slang");
|
||||
#endif
|
||||
printf("\n");
|
||||
|
||||
}
|
||||
|
||||
filestruct *make_new_node(filestruct * prevnode)
|
||||
@@ -477,10 +507,19 @@ int no_help(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef NANO_SMALL
|
||||
void nano_small_msg(void)
|
||||
{
|
||||
statusbar("Sorry, this function not available with nano-tiny option");
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(DISABLE_JUSTIFY) || defined(DISABLE_SPELL)
|
||||
void nano_disabled_msg(void)
|
||||
{
|
||||
statusbar("Sorry, support for this function has been disabled");
|
||||
}
|
||||
#endif
|
||||
|
||||
/* The user typed a printable character; add it to the edit buffer */
|
||||
void do_char(char ch)
|
||||
@@ -579,12 +618,13 @@ int do_enter_void(void)
|
||||
|
||||
void do_next_word(void)
|
||||
{
|
||||
filestruct *fileptr;
|
||||
filestruct *fileptr, *old;
|
||||
int i;
|
||||
|
||||
if (current == NULL)
|
||||
return;
|
||||
|
||||
old = current;
|
||||
i = current_x;
|
||||
for (fileptr = current; fileptr != NULL; fileptr = fileptr->next) {
|
||||
if (fileptr == current) {
|
||||
@@ -612,8 +652,19 @@ void do_next_word(void)
|
||||
|
||||
current_x = i;
|
||||
placewewant = xplustabs();
|
||||
|
||||
if (current->lineno >= editbot->lineno)
|
||||
edit_update(current, CENTER);
|
||||
else {
|
||||
/* If we've jumped lines, refresh the old line. We can't just use
|
||||
* current->prev here, because we may have skipped over some blank
|
||||
* lines, in which case the previous line is the wrong one.
|
||||
*/
|
||||
if (current != old)
|
||||
update_line(old, 0);
|
||||
|
||||
update_line(current, current_x);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1051,13 +1102,13 @@ void wrap_reset(void)
|
||||
UNSET(SAMELINEWRAP);
|
||||
}
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
#if !defined(NANO_SMALL) && !defined(DISABLE_SPELL)
|
||||
|
||||
int do_int_spell_fix(char *word)
|
||||
{
|
||||
char *prevanswer = NULL, *save_search = NULL, *save_replace = NULL;
|
||||
filestruct *begin, *begin_top;
|
||||
int i = 0, beginx, beginx_top;
|
||||
filestruct *begin;
|
||||
int i = 0, j = 0, beginx, beginx_top;
|
||||
|
||||
/* save where we are */
|
||||
begin = current;
|
||||
@@ -1074,25 +1125,32 @@ int do_int_spell_fix(char *word)
|
||||
last_replace = mallocstrcpy(last_replace, word);
|
||||
|
||||
/* start from the top of file */
|
||||
begin_top = current = fileage;
|
||||
beginx_top = current_x = -1;
|
||||
current = fileage;
|
||||
current_x = beginx_top = -1;
|
||||
|
||||
search_last_line = FALSE;
|
||||
|
||||
edit_update(fileage, TOP);
|
||||
|
||||
/* make sure word is still mis-spelt (i.e. when multi-errors) */
|
||||
if (findnextstr(TRUE, begin_top, beginx_top, prevanswer) != NULL)
|
||||
if (findnextstr(TRUE, fileage, beginx_top, prevanswer) != NULL)
|
||||
{
|
||||
do_replace_highlight(TRUE, prevanswer);
|
||||
|
||||
/* allow replace word to be corrected */
|
||||
i = statusq(0, spell_list, SPELL_LIST_LEN, last_replace,
|
||||
_("Edit a replacement"));
|
||||
|
||||
do_replace_highlight(FALSE, prevanswer);
|
||||
|
||||
/* start from the start of this line again */
|
||||
current = begin_top;
|
||||
current = fileage;
|
||||
current_x = beginx_top;
|
||||
|
||||
search_last_line = FALSE;
|
||||
|
||||
/* allow replace word to be corrected */
|
||||
i = statusq(0, replace_list_2, REPLACE_LIST_2_LEN, last_replace,
|
||||
_("Edit a replacement"));
|
||||
|
||||
do_replace_loop(prevanswer, begin_top, &beginx_top, TRUE, &i);
|
||||
j = i;
|
||||
do_replace_loop(prevanswer, fileage, &beginx_top, TRUE, &j);
|
||||
}
|
||||
|
||||
/* restore the search/replace strings */
|
||||
@@ -1112,7 +1170,7 @@ int do_int_spell_fix(char *word)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
#if !defined(NANO_SMALL) && !defined(DISABLE_SPELL)
|
||||
|
||||
/* Integrated spell checking using 'spell' program */
|
||||
int do_int_speller(char *tempfile_name)
|
||||
@@ -1153,6 +1211,7 @@ int do_int_speller(char *tempfile_name)
|
||||
}
|
||||
close(tempfile_fd);
|
||||
|
||||
|
||||
/* send spell's standard out to the pipe */
|
||||
|
||||
if (dup2(in_fd[1], STDOUT_FILENO) != STDOUT_FILENO) {
|
||||
@@ -1241,7 +1300,7 @@ int do_int_speller(char *tempfile_name)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
#if !defined(NANO_SMALL) && !defined(DISABLE_SPELL)
|
||||
|
||||
/* External spell checking */
|
||||
int do_alt_speller(char *file_name)
|
||||
@@ -1293,9 +1352,12 @@ int do_alt_speller(char *file_name)
|
||||
int do_spell(void)
|
||||
{
|
||||
|
||||
#ifdef NANO_SMALL
|
||||
#if defined(NANO_SMALL)
|
||||
nano_small_msg();
|
||||
return (TRUE);
|
||||
#elif defined(DISABLE_SPELL)
|
||||
nano_disabled_msg();
|
||||
return (TRUE);
|
||||
#else
|
||||
char *temp;
|
||||
int spell_res;
|
||||
@@ -1306,8 +1368,10 @@ int do_spell(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (write_file(temp, 1) == -1)
|
||||
if (write_file(temp, 1) == -1) {
|
||||
statusbar(_("Spell checking failed: unable to write temp file!"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (alt_speller)
|
||||
spell_res = do_alt_speller(temp);
|
||||
@@ -1435,8 +1499,7 @@ void do_mouse(void)
|
||||
/* Handler for SIGHUP */
|
||||
RETSIGTYPE handle_hup(int signal)
|
||||
{
|
||||
write_file("nano.save", 0);
|
||||
finish(1);
|
||||
die(_("Received SIGHUP"));
|
||||
}
|
||||
|
||||
/* What do we do when we catch the suspend signal */
|
||||
@@ -1597,7 +1660,7 @@ int do_tab(void)
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
#if !defined(NANO_SMALL) && !defined(DISABLE_JUSTIFY)
|
||||
int empty_line(const char *data)
|
||||
{
|
||||
while (*data) {
|
||||
@@ -1649,10 +1712,16 @@ void justify_format(char *data)
|
||||
|
||||
int do_justify(void)
|
||||
{
|
||||
#ifndef NANO_SMALL
|
||||
#ifdef NANO_SMALL
|
||||
nano_small_msg();
|
||||
return 1;
|
||||
#elif defined(DISABLE_JUSTIFY)
|
||||
nano_disabled_msg();
|
||||
return 1;
|
||||
#else
|
||||
int slen = 0; /* length of combined lines on one line. */
|
||||
int initial_y;
|
||||
filestruct *initial = NULL;
|
||||
int initial_y, kbinput;
|
||||
filestruct *initial = NULL, *tmpjust = NULL, *cutbak, *tmptop, *tmpbot;
|
||||
|
||||
if (empty_line(current->data)) {
|
||||
/* Justify starting at first non-empty line. */
|
||||
@@ -1690,6 +1759,12 @@ int do_justify(void)
|
||||
initial_y = current_y;
|
||||
|
||||
set_modified();
|
||||
cutbak = cutbuffer; /* Got to like cutbak ;) */
|
||||
cutbuffer = NULL;
|
||||
|
||||
tmptop = current;
|
||||
tmpjust = copy_node(current);
|
||||
add_to_cutbuffer(tmpjust);
|
||||
/* Put the whole paragraph into one big line. */
|
||||
while (current->next && !isspace((int) current->next->data[0])
|
||||
&& current->next->data[0]) {
|
||||
@@ -1697,6 +1772,10 @@ int do_justify(void)
|
||||
int len = strlen(current->data);
|
||||
int len2 = strlen(current->next->data);
|
||||
|
||||
tmpjust = NULL;
|
||||
tmpjust = copy_node(current->next);
|
||||
add_to_cutbuffer(tmpjust);
|
||||
|
||||
/* length of both strings plus space between strings and ending \0. */
|
||||
current->data = nrealloc(current->data, len + len2 + 2);
|
||||
current->data[len++] = ' ';
|
||||
@@ -1761,6 +1840,7 @@ int do_justify(void)
|
||||
} while ((strlenpt(current->data) > (fill))
|
||||
&& !no_spaces(current->data));
|
||||
}
|
||||
tmpbot = current;
|
||||
|
||||
if (current->next)
|
||||
current = current->next;
|
||||
@@ -1783,10 +1863,37 @@ int do_justify(void)
|
||||
}
|
||||
|
||||
edit_refresh();
|
||||
statusbar(_("Justify Complete"));
|
||||
return 1;
|
||||
#else
|
||||
nano_small_msg();
|
||||
statusbar(_("Can now UnJustify!"));
|
||||
/* Change the shortcut list to display the unjustify code */
|
||||
shortcut_init(1);
|
||||
display_main_list();
|
||||
reset_cursor();
|
||||
|
||||
/* Now get a keystroke and see if it's unjustify, if not unget the keytroke
|
||||
and return */
|
||||
if ((kbinput = wgetch(edit)) != NANO_UNJUSTIFY_KEY)
|
||||
ungetch(kbinput);
|
||||
else {
|
||||
/* Else restore the justify we just did (ungrateful user!) */
|
||||
if (tmptop->prev != NULL)
|
||||
tmptop->prev->next = tmpbot->next;
|
||||
else
|
||||
fileage = current;
|
||||
tmpbot->next->prev = tmptop->prev;
|
||||
current = tmpbot->next;
|
||||
tmpbot->next = NULL;
|
||||
do_uncut_text();
|
||||
if (tmptop->prev == NULL)
|
||||
edit_refresh();
|
||||
|
||||
free_filestruct(tmptop);
|
||||
blank_statusbar_refresh();
|
||||
}
|
||||
shortcut_init(0);
|
||||
display_main_list();
|
||||
free_filestruct(cutbuffer);
|
||||
cutbuffer = cutbak;
|
||||
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
@@ -1873,7 +1980,7 @@ void do_toggle(int which)
|
||||
|
||||
switch (toggles[which].val) {
|
||||
case TOGGLE_PICOMODE_KEY:
|
||||
shortcut_init();
|
||||
shortcut_init(0);
|
||||
display_main_list();
|
||||
break;
|
||||
case TOGGLE_SUSPEND_KEY:
|
||||
@@ -2088,7 +2195,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
/* Set up some global variables */
|
||||
global_init();
|
||||
shortcut_init();
|
||||
shortcut_init(0);
|
||||
init_help_msg();
|
||||
help_init();
|
||||
signal_init();
|
||||
@@ -2330,7 +2437,9 @@ int main(int argc, char *argv[])
|
||||
#ifdef PDCURSES
|
||||
case 541: /* ???? */
|
||||
case 542: /* Control and alt in Windows *shrug* */
|
||||
case 543: /* Right ctrl key */
|
||||
case 544:
|
||||
case 545: /* Right alt key */
|
||||
#endif
|
||||
|
||||
break;
|
||||
|
||||
3
nano.h
3
nano.h
@@ -212,6 +212,7 @@ know what you're doing */
|
||||
#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_CONTROL_U
|
||||
#define NANO_UP_KEY NANO_CONTROL_P
|
||||
#define NANO_DOWN_KEY NANO_CONTROL_N
|
||||
#define NANO_FORWARD_KEY NANO_CONTROL_F
|
||||
@@ -244,7 +245,7 @@ know what you're doing */
|
||||
#define GOTO_LIST_LEN 3
|
||||
#define WRITEFILE_LIST_LEN 1
|
||||
#define HELP_LIST_LEN 3
|
||||
#define SPELL_LIST_LEN 3
|
||||
#define SPELL_LIST_LEN 1
|
||||
|
||||
#ifdef HAVE_REGEX_H
|
||||
#define TOGGLE_LEN 9
|
||||
|
||||
7
po/.cvsignore
Normal file
7
po/.cvsignore
Normal file
@@ -0,0 +1,7 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
POTFILES
|
||||
*.gmo
|
||||
*.pot
|
||||
cat-id*
|
||||
stamp-cat*
|
||||
238
po/cat-id-tbl.c
238
po/cat-id-tbl.c
@@ -1,238 +0,0 @@
|
||||
/* Automatically generated by po2tbl.sed from nano.pot. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "libgettext.h"
|
||||
|
||||
const struct _msg_ent _msg_tbl[] = {
|
||||
{"", 1},
|
||||
{"add_to_cutbuffer called with inptr->data = %s\n", 2},
|
||||
{"Blew away cutbuffer =)\n", 3},
|
||||
{"read_line: not on first line and prev is NULL", 4},
|
||||
{"Read %d lines", 5},
|
||||
{"\"%s\" not found", 6},
|
||||
{"New File", 7},
|
||||
{"File \"%s\" is a directory", 8},
|
||||
{"Reading File", 9},
|
||||
{"File to insert [from ./] ", 10},
|
||||
{"Cancelled", 11},
|
||||
{"Could not open file for writing: %s", 12},
|
||||
{"Could not open file: Path length exceeded.", 13},
|
||||
{"Wrote >%s\n", 14},
|
||||
{"Could not close %s: %s", 15},
|
||||
{"Could not open %s for writing: %s", 16},
|
||||
{"Could not set permissions %o on %s: %s", 17},
|
||||
{"Wrote %d lines", 18},
|
||||
{"File Name to write", 19},
|
||||
{"filename is %s", 20},
|
||||
{"File exists, OVERWRITE ?", 21},
|
||||
{"(more)", 22},
|
||||
{"Constant cursor position", 23},
|
||||
{"Auto indent", 24},
|
||||
{"Suspend", 25},
|
||||
{"Help mode", 26},
|
||||
{"Pico mode", 27},
|
||||
{"Mouse support", 28},
|
||||
{"Cut to end", 29},
|
||||
{"Regular expressions", 30},
|
||||
{"Auto wrap", 31},
|
||||
{"Invoke the help menu", 32},
|
||||
{"Write the current file to disk", 33},
|
||||
{"Exit from nano", 34},
|
||||
{"Goto a specific line number", 35},
|
||||
{"Justify the current paragraph", 36},
|
||||
{"Replace text within the editor", 37},
|
||||
{"Insert another file into the current one", 38},
|
||||
{"Search for text within the editor", 39},
|
||||
{"Move to the previous screen", 40},
|
||||
{"Move to the next screen", 41},
|
||||
{"Cut the current line and store it in the cutbuffer", 42},
|
||||
{"Uncut from the cutbuffer into the current line", 43},
|
||||
{"Show the posititon of the cursor", 44},
|
||||
{"Invoke the spell checker (if available)", 45},
|
||||
{"Move up one line", 46},
|
||||
{"Move down one line", 47},
|
||||
{"Move forward one character", 48},
|
||||
{"Move back one character", 49},
|
||||
{"Move to the beginning of the current line", 50},
|
||||
{"Move to the end of the current line", 51},
|
||||
{"Go to the first line of the file", 52},
|
||||
{"Go to the last line of the file", 53},
|
||||
{"Refresh (redraw) the current screen", 54},
|
||||
{"Mark text at the current cursor location", 55},
|
||||
{"Delete the character under the cursor", 56},
|
||||
{"Delete the character to the left of the cursor", 57},
|
||||
{"Insert a tab character", 58},
|
||||
{"Insert a carriage return at the cursor position", 59},
|
||||
{"Make the current search or replace case (in)sensitive", 60},
|
||||
{"Cancel the current function", 61},
|
||||
{"Get Help", 62},
|
||||
{"WriteOut", 63},
|
||||
{"Exit", 64},
|
||||
{"Goto Line", 65},
|
||||
{"Justify", 66},
|
||||
{"Replace", 67},
|
||||
{"Read File", 68},
|
||||
{"Where Is", 69},
|
||||
{"Prev Page", 70},
|
||||
{"Next Page", 71},
|
||||
{"Cut Text", 72},
|
||||
{"UnCut Txt", 73},
|
||||
{"Cur Pos", 74},
|
||||
{"To Spell", 75},
|
||||
{"Up", 76},
|
||||
{"Down", 77},
|
||||
{"Forward", 78},
|
||||
{"Back", 79},
|
||||
{"Home", 80},
|
||||
{"End", 81},
|
||||
{"Refresh", 82},
|
||||
{"Mark Text", 83},
|
||||
{"Delete", 84},
|
||||
{"Backspace", 85},
|
||||
{"Tab", 86},
|
||||
{"Enter", 87},
|
||||
{"First Line", 88},
|
||||
{"Last Line", 89},
|
||||
{"Case Sens", 90},
|
||||
{"Cancel", 91},
|
||||
{"No Replace", 92},
|
||||
{"\
|
||||
\n\
|
||||
Buffer written to 'nano.save'\n", 93},
|
||||
{"Key illegal in VIEW mode", 94},
|
||||
{"\
|
||||
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 are entered with the Control (Ctrl) key. \
|
||||
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. The \
|
||||
following keystrokes are available in the main editor window. Optional keys \
|
||||
are shown in parentheses:\n\
|
||||
\n", 95},
|
||||
{"free_node(): free'd a node, YAY!\n", 96},
|
||||
{"free_node(): free'd last node.\n", 97},
|
||||
{"\
|
||||
Usage: nano [GNU long option] [option] +LINE <file>\n\
|
||||
\n", 98},
|
||||
{"Option\t\tLong option\t\tMeaning\n", 99},
|
||||
{" -T \t\t--tabsize=[num]\t\tSet width of a tab to num\n", 100},
|
||||
{" -R\t\t--regexp\t\tUse regular expressions for search\n", 101},
|
||||
{" -V \t\t--version\t\tPrint version information and exit\n", 102},
|
||||
{" -c \t\t--const\t\t\tConstantly show cursor position\n", 103},
|
||||
{" -h \t\t--help\t\t\tShow this message\n", 104},
|
||||
{" -k \t\t--cut\t\t\tLet ^K cut from cursor to end of line\n", 105},
|
||||
{" -i \t\t--autoindent\t\tAutomatically indent new lines\n", 106},
|
||||
{" -l \t\t--nofollow\t\tDon't follow symbolic links, overwrite\n", 107},
|
||||
{" -m \t\t--mouse\t\t\tEnable mouse\n", 108},
|
||||
{"\
|
||||
-r [#cols] \t--fill=[#cols]\t\tSet fill cols to (wrap lines at) #cols\n", 109},
|
||||
{" -p\t \t--pico\t\t\tEmulate Pico as closely as possible\n", 110},
|
||||
{" -s [prog] \t--speller=[prog]\tEnable alternate speller\n", 111},
|
||||
{" -t \t\t--tempfile\t\tAuto save on exit, don't prompt\n", 112},
|
||||
{" -v \t\t--view\t\t\tView (read only) mode\n", 113},
|
||||
{" -w \t\t--nowrap\t\tDon't wrap long lines\n", 114},
|
||||
{" -x \t\t--nohelp\t\tDon't show help window\n", 115},
|
||||
{" -z \t\t--suspend\t\tEnable suspend\n", 116},
|
||||
{" +LINE\t\t\t\t\tStart at line number LINE\n", 117},
|
||||
{"\
|
||||
Usage: nano [option] +LINE <file>\n\
|
||||
\n", 118},
|
||||
{"Option\t\tMeaning\n", 119},
|
||||
{" -T [num]\tSet width of a tab to num\n", 120},
|
||||
{" -R\t\tUse regular expressions for search\n", 121},
|
||||
{" -V \t\tPrint version information and exit\n", 122},
|
||||
{" -c \t\tConstantly show cursor position\n", 123},
|
||||
{" -h \t\tShow this message\n", 124},
|
||||
{" -k \t\tLet ^K cut from cursor to end of line\n", 125},
|
||||
{" -i \t\tAutomatically indent new lines\n", 126},
|
||||
{" -l \t\tDon't follow symbolic links, overwrite\n", 127},
|
||||
{" -m \t\tEnable mouse\n", 128},
|
||||
{" -r [#cols] \tSet fill cols to (wrap lines at) #cols\n", 129},
|
||||
{" -s [prog] \tEnable alternate speller\n", 130},
|
||||
{" -p \t\tEmulate Pico as closely as possible\n", 131},
|
||||
{" -t \t\tAuto save on exit, don't prompt\n", 132},
|
||||
{" -v \t\tView (read only) mode\n", 133},
|
||||
{" -w \t\tDon't wrap long lines\n", 134},
|
||||
{" -x \t\tDon't show help window\n", 135},
|
||||
{" -z \t\tEnable suspend\n", 136},
|
||||
{" +LINE\t\tStart at line number LINE\n", 137},
|
||||
{" nano version %s by Chris Allegretta (compiled %s, %s)\n", 138},
|
||||
{" Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org\n", 139},
|
||||
{"Mark Set", 140},
|
||||
{"Mark UNset", 141},
|
||||
{"check_wrap called with inptr->data=\"%s\"\n", 142},
|
||||
{"current->data now = \"%s\"\n", 143},
|
||||
{"After, data = \"%s\"\n", 144},
|
||||
{"Edit a replacement", 145},
|
||||
{"Could not create a temporary filename: %s", 146},
|
||||
{"Finished checking spelling", 147},
|
||||
{"Spell checking failed", 148},
|
||||
{"Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? ", 149},
|
||||
{"Cannot resize top win", 150},
|
||||
{"Cannot move top win", 151},
|
||||
{"Cannot resize edit win", 152},
|
||||
{"Cannot move edit win", 153},
|
||||
{"Cannot resize bottom win", 154},
|
||||
{"Cannot move bottom win", 155},
|
||||
{"Justify Complete", 156},
|
||||
{"%s enable/disable", 157},
|
||||
{"enabled", 158},
|
||||
{"disabled", 159},
|
||||
{"Main: set up windows\n", 160},
|
||||
{"Main: bottom win\n", 161},
|
||||
{"Main: open file\n", 162},
|
||||
{"I got Alt-O-%c! (%d)\n", 163},
|
||||
{"I got Alt-[-1-%c! (%d)\n", 164},
|
||||
{"I got Alt-[-2-%c! (%d)\n", 165},
|
||||
{"I got Alt-[-%c! (%d)\n", 166},
|
||||
{"I got Alt-%c! (%d)\n", 167},
|
||||
{"Case Sensitive Regexp Search%s%s", 168},
|
||||
{"Regexp Search%s%s", 169},
|
||||
{"Case Sensitive Search%s%s", 170},
|
||||
{"Search%s%s", 171},
|
||||
{" (to replace)", 172},
|
||||
{"Search Cancelled", 173},
|
||||
{"\"%s...\" not found", 174},
|
||||
{"Search Wrapped", 175},
|
||||
{"Replaced %d occurences", 176},
|
||||
{"Replaced 1 occurence", 177},
|
||||
{"Replace Cancelled", 178},
|
||||
{"Replace this instance?", 179},
|
||||
{"Replace failed: unknown subexpression!", 180},
|
||||
{"Replace with [%s]", 181},
|
||||
{"Replace with", 182},
|
||||
{"Enter line number", 183},
|
||||
{"Aborted", 184},
|
||||
{"Come on, be reasonable", 185},
|
||||
{"Only %d lines available, skipping to last line", 186},
|
||||
{"actual_x_from_start for xplus=%d returned %d\n", 187},
|
||||
{"input '%c' (%d)\n", 188},
|
||||
{"New Buffer", 189},
|
||||
{" File: ...", 190},
|
||||
{"Modified", 191},
|
||||
{"Moved to (%d, %d) in edit buffer\n", 192},
|
||||
{"current->data = \"%s\"\n", 193},
|
||||
{"I got \"%s\"\n", 194},
|
||||
{"Yes", 195},
|
||||
{"All", 196},
|
||||
{"No", 197},
|
||||
{"do_cursorpos: linepct = %f, bytepct = %f\n", 198},
|
||||
{"line %d of %d (%.0f%%), character %d of %d (%.0f%%)", 199},
|
||||
{"Dumping file buffer to stderr...\n", 200},
|
||||
{"Dumping cutbuffer to stderr...\n", 201},
|
||||
{"Dumping a buffer to stderr...\n", 202},
|
||||
};
|
||||
|
||||
int _msg_tbl_length = 202;
|
||||
423
po/id.po
423
po/id.po
@@ -6,7 +6,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: nano-0.9.10\n"
|
||||
"POT-Creation-Date: 2000-11-22 20:20-0500\n"
|
||||
"POT-Creation-Date: 2000-12-02 22:34-0500\n"
|
||||
"PO-Revision-Date: 2000-06-08 20:56+07:00\n"
|
||||
"Last-Translator: Tedi Heriyanto <tedi-h@usa.net>\n"
|
||||
"Language-Team: Indonesian <id@li.org>\n"
|
||||
@@ -51,63 +51,63 @@ msgstr "File \"%s\" adalah sebuah direktori"
|
||||
msgid "Reading File"
|
||||
msgstr "Membaca File"
|
||||
|
||||
#: files.c:251
|
||||
#: files.c:252
|
||||
msgid "File to insert [from ./] "
|
||||
msgstr "File untuk disisipkan "
|
||||
|
||||
#: files.c:276 files.c:300 files.c:488 nano.c:1355
|
||||
#: files.c:284 files.c:309 files.c:525 nano.c:1419
|
||||
msgid "Cancelled"
|
||||
msgstr "Dibatalkan"
|
||||
|
||||
#: files.c:322 files.c:342 files.c:356 files.c:373 files.c:379
|
||||
#: files.c:346 files.c:367 files.c:381 files.c:398 files.c:404
|
||||
#, c-format
|
||||
msgid "Could not open file for writing: %s"
|
||||
msgstr "Tidak dapat membuka file untuk menulis: %s"
|
||||
|
||||
#: files.c:330
|
||||
#: files.c:355
|
||||
msgid "Could not open file: Path length exceeded."
|
||||
msgstr "Tidak dapat membuka file: panjang path terlampaui"
|
||||
|
||||
#: files.c:361
|
||||
#: files.c:386
|
||||
#, c-format
|
||||
msgid "Wrote >%s\n"
|
||||
msgstr "Tulis >%s\n"
|
||||
|
||||
#: files.c:388
|
||||
#: files.c:413
|
||||
#, c-format
|
||||
msgid "Could not close %s: %s"
|
||||
msgstr "Tidak dapat menutup %s: %s"
|
||||
|
||||
#. Try a rename??
|
||||
#: files.c:409 files.c:420 files.c:425
|
||||
#: files.c:434 files.c:446 files.c:451
|
||||
#, c-format
|
||||
msgid "Could not open %s for writing: %s"
|
||||
msgstr "Tidak dapat membuka %s untuk menulis: %s"
|
||||
|
||||
#: files.c:431
|
||||
#: files.c:458
|
||||
#, c-format
|
||||
msgid "Could not set permissions %o on %s: %s"
|
||||
msgstr "Tidak dapat menset permisi %o pada %s: %s"
|
||||
|
||||
#: files.c:438
|
||||
#: files.c:464
|
||||
#, c-format
|
||||
msgid "Wrote %d lines"
|
||||
msgstr "Menulis %d baris"
|
||||
|
||||
#: files.c:467
|
||||
#: files.c:496
|
||||
msgid "File Name to write"
|
||||
msgstr "Nama file untuk ditulis"
|
||||
|
||||
#: files.c:472
|
||||
#: files.c:501
|
||||
#, c-format
|
||||
msgid "filename is %s"
|
||||
msgstr "Namafile adalah %s"
|
||||
|
||||
#: files.c:477
|
||||
#: files.c:514
|
||||
msgid "File exists, OVERWRITE ?"
|
||||
msgstr "File ada, DITIMPA ?"
|
||||
|
||||
#: files.c:801
|
||||
#: files.c:1003
|
||||
msgid "(more)"
|
||||
msgstr ""
|
||||
|
||||
@@ -170,244 +170,261 @@ msgid "Justify the current paragraph"
|
||||
msgstr "Justifikasi paragraf ini"
|
||||
|
||||
#: global.c:181
|
||||
msgid "Unjustify after a justify"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:182
|
||||
msgid "Replace text within the editor"
|
||||
msgstr "Ganti teks dalam editor"
|
||||
|
||||
#: global.c:182
|
||||
#: global.c:183
|
||||
msgid "Insert another file into the current one"
|
||||
msgstr "Sertakan file lain ke file ini"
|
||||
|
||||
#: global.c:183
|
||||
#: global.c:184
|
||||
msgid "Search for text within the editor"
|
||||
msgstr "Cari teks dalam editor"
|
||||
|
||||
#: global.c:184
|
||||
#: global.c:185
|
||||
msgid "Move to the previous screen"
|
||||
msgstr "Pindah ke layar sebelumnya"
|
||||
|
||||
#: global.c:185
|
||||
#: global.c:186
|
||||
msgid "Move to the next screen"
|
||||
msgstr "Pindah ke layar berikut"
|
||||
|
||||
#: global.c:186
|
||||
#: global.c:187
|
||||
msgid "Cut the current line and store it in the cutbuffer"
|
||||
msgstr "Hapus baris saat ini dan taruh dalam cutbuffer"
|
||||
|
||||
#: global.c:187
|
||||
#: global.c:188
|
||||
msgid "Uncut from the cutbuffer into the current line"
|
||||
msgstr "Kembalikan dari cutbuffer ke baris ini"
|
||||
|
||||
#: global.c:188
|
||||
#: global.c:189
|
||||
msgid "Show the posititon of the cursor"
|
||||
msgstr "Tampilkan posisi kursor"
|
||||
|
||||
#: global.c:189
|
||||
#: global.c:190
|
||||
msgid "Invoke the spell checker (if available)"
|
||||
msgstr "Panggil spell checker (jika ada)"
|
||||
|
||||
#: global.c:190
|
||||
#: global.c:191
|
||||
msgid "Move up one line"
|
||||
msgstr "Naik satu baris"
|
||||
|
||||
#: global.c:191
|
||||
#: global.c:192
|
||||
msgid "Move down one line"
|
||||
msgstr "Turun satu baris"
|
||||
|
||||
#: global.c:192
|
||||
#: global.c:193
|
||||
msgid "Move forward one character"
|
||||
msgstr "Pindah satu karakter ke depan"
|
||||
|
||||
#: global.c:193
|
||||
#: global.c:194
|
||||
msgid "Move back one character"
|
||||
msgstr "Pindah satu karakter ke belakang"
|
||||
|
||||
#: global.c:194
|
||||
#: global.c:195
|
||||
msgid "Move to the beginning of the current line"
|
||||
msgstr "Pindah ke awal baris ini"
|
||||
|
||||
#: global.c:195
|
||||
#: global.c:196
|
||||
msgid "Move to the end of the current line"
|
||||
msgstr "Pindah ke akhir baris ini"
|
||||
|
||||
#: global.c:196
|
||||
#: global.c:197
|
||||
msgid "Go to the first line of the file"
|
||||
msgstr "Ke baris terawal file"
|
||||
|
||||
#: global.c:197
|
||||
#: global.c:198
|
||||
msgid "Go to the last line of the file"
|
||||
msgstr "Ke baris terakhir file"
|
||||
|
||||
#: global.c:198
|
||||
#: global.c:199
|
||||
msgid "Refresh (redraw) the current screen"
|
||||
msgstr "Refresh layar saat ini"
|
||||
|
||||
#: global.c:199
|
||||
#: global.c:200
|
||||
msgid "Mark text at the current cursor location"
|
||||
msgstr "Tandai teks pada lokasi kursor saat ini"
|
||||
|
||||
#: global.c:200
|
||||
#: global.c:201
|
||||
msgid "Delete the character under the cursor"
|
||||
msgstr "Hapus karakter pada kursor"
|
||||
|
||||
#: global.c:202
|
||||
#: global.c:203
|
||||
msgid "Delete the character to the left of the cursor"
|
||||
msgstr "Hapus satu karakter di kiri kursor"
|
||||
|
||||
#: global.c:203
|
||||
#: global.c:204
|
||||
msgid "Insert a tab character"
|
||||
msgstr "Masukkan karakter tab"
|
||||
|
||||
#: global.c:204
|
||||
#: global.c:205
|
||||
msgid "Insert a carriage return at the cursor position"
|
||||
msgstr "Sertakan carriage return di posisi kursor"
|
||||
|
||||
#: global.c:206
|
||||
#: global.c:207
|
||||
msgid "Make the current search or replace case (in)sensitive"
|
||||
msgstr "Jadikan pencarian/penggantian saat ini case (in)sensitive"
|
||||
|
||||
#: global.c:207
|
||||
#: global.c:208
|
||||
msgid "Cancel the current function"
|
||||
msgstr "Batalkan fungsi ini"
|
||||
|
||||
#: global.c:211 global.c:323 global.c:408
|
||||
#: global.c:212 global.c:328
|
||||
msgid "Get Help"
|
||||
msgstr "Cari Bantuan"
|
||||
|
||||
#: global.c:214 global.c:222
|
||||
#: global.c:215 global.c:223
|
||||
msgid "WriteOut"
|
||||
msgstr "Tulis"
|
||||
|
||||
#: global.c:218 global.c:397
|
||||
#: global.c:219 global.c:402
|
||||
#, fuzzy
|
||||
msgid "Exit"
|
||||
msgstr "Keluar"
|
||||
|
||||
#: global.c:226 global.c:319 global.c:341 global.c:361
|
||||
#: global.c:227 global.c:324 global.c:346 global.c:366
|
||||
msgid "Goto Line"
|
||||
msgstr "Ke baris"
|
||||
|
||||
#: global.c:231 global.c:310
|
||||
#: global.c:232 global.c:315
|
||||
msgid "Justify"
|
||||
msgstr "Justifikasi"
|
||||
|
||||
#: global.c:235 global.c:306 global.c:337
|
||||
#: global.c:236 global.c:311 global.c:342
|
||||
msgid "Replace"
|
||||
msgstr "Ganti"
|
||||
|
||||
#: global.c:239
|
||||
#: global.c:240
|
||||
msgid "Read File"
|
||||
msgstr "Baca File"
|
||||
|
||||
#: global.c:243
|
||||
#: global.c:244
|
||||
msgid "Where Is"
|
||||
msgstr "Di mana"
|
||||
|
||||
#: global.c:247 global.c:389
|
||||
#: global.c:248 global.c:394
|
||||
msgid "Prev Page"
|
||||
msgstr "Halaman sebelumnya"
|
||||
|
||||
#: global.c:251 global.c:393
|
||||
#: global.c:252 global.c:398
|
||||
msgid "Next Page"
|
||||
msgstr "Halaman berikutnya"
|
||||
|
||||
#: global.c:255
|
||||
#: global.c:256
|
||||
msgid "Cut Text"
|
||||
msgstr "Potong Teks"
|
||||
|
||||
#: global.c:258
|
||||
#: global.c:260
|
||||
#, fuzzy
|
||||
msgid "UnJustify"
|
||||
msgstr "Justifikasi"
|
||||
|
||||
#: global.c:263
|
||||
msgid "UnCut Txt"
|
||||
msgstr "UnCut Teks"
|
||||
|
||||
#: global.c:262
|
||||
#: global.c:267
|
||||
msgid "Cur Pos"
|
||||
msgstr "Pos Kursor"
|
||||
|
||||
#: global.c:266
|
||||
#: global.c:271
|
||||
msgid "To Spell"
|
||||
msgstr "Mengeja"
|
||||
|
||||
#: global.c:270
|
||||
#: global.c:275
|
||||
msgid "Up"
|
||||
msgstr "Naik"
|
||||
|
||||
#: global.c:273
|
||||
#: global.c:278
|
||||
msgid "Down"
|
||||
msgstr "Turun"
|
||||
|
||||
#: global.c:276
|
||||
#: global.c:281
|
||||
msgid "Forward"
|
||||
msgstr "Depan"
|
||||
|
||||
#: global.c:279
|
||||
#: global.c:284
|
||||
msgid "Back"
|
||||
msgstr "Belakang"
|
||||
|
||||
#: global.c:282
|
||||
#: global.c:287
|
||||
msgid "Home"
|
||||
msgstr "Awal"
|
||||
|
||||
#: global.c:285
|
||||
#: global.c:290
|
||||
msgid "End"
|
||||
msgstr "Akhir"
|
||||
|
||||
#: global.c:288
|
||||
#: global.c:293
|
||||
msgid "Refresh"
|
||||
msgstr "Refresh"
|
||||
|
||||
#: global.c:291
|
||||
#: global.c:296
|
||||
msgid "Mark Text"
|
||||
msgstr "Tandai Teks"
|
||||
|
||||
#: global.c:294
|
||||
#: global.c:299
|
||||
msgid "Delete"
|
||||
msgstr "Hapus"
|
||||
|
||||
#: global.c:298
|
||||
#: global.c:303
|
||||
msgid "Backspace"
|
||||
msgstr "Backspace"
|
||||
|
||||
#: global.c:302
|
||||
#: global.c:307
|
||||
msgid "Tab"
|
||||
msgstr "Tab"
|
||||
|
||||
#: global.c:314
|
||||
#: global.c:319
|
||||
msgid "Enter"
|
||||
msgstr "Enter"
|
||||
|
||||
#: global.c:327 global.c:348 global.c:369 global.c:379
|
||||
#: global.c:332 global.c:353 global.c:374 global.c:384
|
||||
msgid "First Line"
|
||||
msgstr "Baris pertama"
|
||||
|
||||
#: global.c:330 global.c:351 global.c:372 global.c:382
|
||||
#: global.c:335 global.c:356 global.c:377 global.c:387
|
||||
msgid "Last Line"
|
||||
msgstr "Baris terakhir"
|
||||
|
||||
#: global.c:333 global.c:354
|
||||
#: global.c:338 global.c:359
|
||||
msgid "Case Sens"
|
||||
msgstr "Case Sens"
|
||||
|
||||
#: global.c:344 global.c:364 global.c:375 global.c:385 global.c:401
|
||||
#: global.c:405 global.c:411 winio.c:1020
|
||||
#: global.c:349 global.c:369 global.c:380 global.c:390 global.c:406
|
||||
#: global.c:410 global.c:413 winio.c:1028
|
||||
msgid "Cancel"
|
||||
msgstr "Batal"
|
||||
|
||||
#: global.c:357
|
||||
#: global.c:362
|
||||
msgid "No Replace"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:131
|
||||
#: nano.c:137
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Buffer written to 'nano.save'\n"
|
||||
"Buffer written to %s\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Buffer ditulis ke 'nano.save'\n"
|
||||
|
||||
#: nano.c:138
|
||||
#: nano.c:139
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"No %s written (file exists?)\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:146
|
||||
msgid "Key illegal in VIEW mode"
|
||||
msgstr "Kunci ilegal dalam mode VIEW"
|
||||
|
||||
#: nano.c:175
|
||||
#: nano.c:183
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
" nano help text\n"
|
||||
@@ -445,99 +462,99 @@ msgstr ""
|
||||
"Kunci-kunci opsional ditunjukkan dalam kurung:\n"
|
||||
"\n"
|
||||
|
||||
#: nano.c:278
|
||||
#: nano.c:286
|
||||
msgid "free_node(): free'd a node, YAY!\n"
|
||||
msgstr "free_node(): bebaskan sebuah node, YAY!\n"
|
||||
|
||||
#: nano.c:283
|
||||
#: nano.c:291
|
||||
msgid "free_node(): free'd last node.\n"
|
||||
msgstr "free_node(): bebaskan node terakhir.\n"
|
||||
|
||||
#: nano.c:335
|
||||
#: nano.c:343
|
||||
msgid ""
|
||||
"Usage: nano [GNU long option] [option] +LINE <file>\n"
|
||||
"\n"
|
||||
msgstr "Pemakaian: nano [GNU long option] [option] +LINE <file>\n"
|
||||
|
||||
#: nano.c:336
|
||||
#: nano.c:344
|
||||
msgid "Option\t\tLong option\t\tMeaning\n"
|
||||
msgstr "Option: Long option Arti\n"
|
||||
|
||||
#: nano.c:338
|
||||
#: nano.c:346
|
||||
msgid " -T \t\t--tabsize=[num]\t\tSet width of a tab to num\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:341
|
||||
#: nano.c:349
|
||||
msgid " -R\t\t--regexp\t\tUse regular expressions for search\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:345
|
||||
#: nano.c:353
|
||||
msgid " -V \t\t--version\t\tPrint version information and exit\n"
|
||||
msgstr "-V --version Tampilkan versi dan keluar\n"
|
||||
|
||||
#: nano.c:347
|
||||
#: nano.c:355
|
||||
msgid " -c \t\t--const\t\t\tConstantly show cursor position\n"
|
||||
msgstr "-c --const Menampilkan posisi kursor secara konstan\n"
|
||||
|
||||
#: nano.c:349
|
||||
#: nano.c:357
|
||||
msgid " -h \t\t--help\t\t\tShow this message\n"
|
||||
msgstr "-h --help Tampilkan pesan ini\n"
|
||||
|
||||
#: nano.c:352
|
||||
#: nano.c:360
|
||||
msgid " -k \t\t--cut\t\t\tLet ^K cut from cursor to end of line\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:355
|
||||
#: nano.c:363
|
||||
msgid " -i \t\t--autoindent\t\tAutomatically indent new lines\n"
|
||||
msgstr "-i --autoindent Indentasi baris barus secara otomatis\n"
|
||||
|
||||
#: nano.c:357
|
||||
#: nano.c:365
|
||||
msgid " -l \t\t--nofollow\t\tDon't follow symbolic links, overwrite\n"
|
||||
msgstr "-l --nofollow Jangan ikuti link simbolik, timpa\n"
|
||||
|
||||
#: nano.c:360
|
||||
#: nano.c:368
|
||||
msgid " -m \t\t--mouse\t\t\tEnable mouse\n"
|
||||
msgstr "-m --mouse Aktifkan mouse\n"
|
||||
|
||||
#: nano.c:365
|
||||
#: nano.c:373
|
||||
msgid ""
|
||||
" -r [#cols] \t--fill=[#cols]\t\tSet fill cols to (wrap lines at) #cols\n"
|
||||
msgstr "-r [#cols] --fill=[#cols] Set fill col ke (wrap line di) #cols\n"
|
||||
|
||||
#: nano.c:367
|
||||
#: nano.c:375
|
||||
msgid " -p\t \t--pico\t\t\tEmulate Pico as closely as possible\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:369
|
||||
#: nano.c:377
|
||||
msgid " -s [prog] \t--speller=[prog]\tEnable alternate speller\n"
|
||||
msgstr "-s [prog] --speller=[prog] Aktifkan speller alternatif\n"
|
||||
|
||||
#: nano.c:371
|
||||
#: nano.c:379
|
||||
msgid " -t \t\t--tempfile\t\tAuto save on exit, don't prompt\n"
|
||||
msgstr ""
|
||||
"-t --tempfile Autosave saat keluar, jangan minta konfirmasi\n"
|
||||
|
||||
#: nano.c:373
|
||||
#: nano.c:381
|
||||
msgid " -v \t\t--view\t\t\tView (read only) mode\n"
|
||||
msgstr "-v --view Mode Tampil (baca saja)\n"
|
||||
|
||||
#: nano.c:375
|
||||
#: nano.c:383
|
||||
msgid " -w \t\t--nowrap\t\tDon't wrap long lines\n"
|
||||
msgstr "-w --nowrap Jangan wrap baris panjang\n"
|
||||
|
||||
#: nano.c:377
|
||||
#: nano.c:385
|
||||
msgid " -x \t\t--nohelp\t\tDon't show help window\n"
|
||||
msgstr "-x --nohelp Jangan tampilkan jendela bantuan\n"
|
||||
|
||||
#: nano.c:379
|
||||
#: nano.c:387
|
||||
msgid " -z \t\t--suspend\t\tEnable suspend\n"
|
||||
msgstr "-z --suspend Aktifkan suspend\n"
|
||||
|
||||
#: nano.c:381
|
||||
#: nano.c:389
|
||||
msgid " +LINE\t\t\t\t\tStart at line number LINE\n"
|
||||
msgstr "+LINE Mulai pada nomor baris LINE\n"
|
||||
|
||||
#: nano.c:383
|
||||
#: nano.c:391
|
||||
msgid ""
|
||||
"Usage: nano [option] +LINE <file>\n"
|
||||
"\n"
|
||||
@@ -545,210 +562,224 @@ msgstr ""
|
||||
"Pemakaian: nano [option] +LINE <file>\n"
|
||||
"\n"
|
||||
|
||||
#: nano.c:384
|
||||
#: nano.c:392
|
||||
msgid "Option\t\tMeaning\n"
|
||||
msgstr "Option Arti\n"
|
||||
|
||||
#: nano.c:385
|
||||
#: nano.c:393
|
||||
msgid " -T [num]\tSet width of a tab to num\n"
|
||||
msgstr " -T [num]\tGanti lebar tabulasi manjadi num\n"
|
||||
|
||||
#: nano.c:386
|
||||
#: nano.c:394
|
||||
msgid " -R\t\tUse regular expressions for search\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:387
|
||||
#: nano.c:395
|
||||
msgid " -V \t\tPrint version information and exit\n"
|
||||
msgstr "-V Tampilkan informasi versi dan keluar\n"
|
||||
|
||||
#: nano.c:388
|
||||
#: nano.c:396
|
||||
msgid " -c \t\tConstantly show cursor position\n"
|
||||
msgstr "-c Menampilkan posisi kursor secara konstan\n"
|
||||
|
||||
#: nano.c:389
|
||||
#: nano.c:397
|
||||
msgid " -h \t\tShow this message\n"
|
||||
msgstr "-h Tampilkan pesan ini\n"
|
||||
|
||||
#: nano.c:391
|
||||
#: nano.c:399
|
||||
msgid " -k \t\tLet ^K cut from cursor to end of line\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:393
|
||||
#: nano.c:401
|
||||
msgid " -i \t\tAutomatically indent new lines\n"
|
||||
msgstr "-i Indent baris barus secara otomatis\n"
|
||||
|
||||
#: nano.c:395
|
||||
#: nano.c:403
|
||||
msgid " -l \t\tDon't follow symbolic links, overwrite\n"
|
||||
msgstr "-l Jangan ikuti link simbolik, timpa\n"
|
||||
|
||||
#: nano.c:398
|
||||
#: nano.c:406
|
||||
msgid " -m \t\tEnable mouse\n"
|
||||
msgstr "-m Aktifkan mouse\n"
|
||||
|
||||
#: nano.c:402
|
||||
#: nano.c:410
|
||||
msgid " -r [#cols] \tSet fill cols to (wrap lines at) #cols\n"
|
||||
msgstr "-r [#cols] Set fill col ke (wrap line di) #cols\n"
|
||||
|
||||
#: nano.c:403
|
||||
#: nano.c:411
|
||||
msgid " -s [prog] \tEnable alternate speller\n"
|
||||
msgstr "-s [prog] Aktifkan speller alternatif\n"
|
||||
|
||||
#: nano.c:404
|
||||
#: nano.c:412
|
||||
msgid " -p \t\tEmulate Pico as closely as possible\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:405
|
||||
#: nano.c:413
|
||||
msgid " -t \t\tAuto save on exit, don't prompt\n"
|
||||
msgstr "-t Autosave saat keluar, jangan minta konfirmasi.\n"
|
||||
|
||||
#: nano.c:406
|
||||
#: nano.c:414
|
||||
msgid " -v \t\tView (read only) mode\n"
|
||||
msgstr "-v Mode Tampil (baca saja)\n"
|
||||
|
||||
#: nano.c:407
|
||||
#: nano.c:415
|
||||
msgid " -w \t\tDon't wrap long lines\n"
|
||||
msgstr "-w Jangan wrap baris panjang\n"
|
||||
|
||||
#: nano.c:408
|
||||
#: nano.c:416
|
||||
msgid " -x \t\tDon't show help window\n"
|
||||
msgstr "-x Jangan tampilkan jendela bantuan\n"
|
||||
|
||||
#: nano.c:409
|
||||
#: nano.c:417
|
||||
msgid " -z \t\tEnable suspend\n"
|
||||
msgstr "-z Aktifkan suspend\n"
|
||||
|
||||
#: nano.c:410
|
||||
#: nano.c:418
|
||||
msgid " +LINE\t\tStart at line number LINE\n"
|
||||
msgstr "+LINE Mulai pada nomor baris LINE\n"
|
||||
|
||||
#: nano.c:417
|
||||
#: nano.c:425
|
||||
#, c-format
|
||||
msgid " nano version %s by Chris Allegretta (compiled %s, %s)\n"
|
||||
msgstr "nano versi %s oleh Chris Allegretta (compiled %s, %s)\n"
|
||||
|
||||
#: nano.c:420
|
||||
msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org\n"
|
||||
#: nano.c:428
|
||||
#, fuzzy
|
||||
msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org"
|
||||
msgstr " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org\n"
|
||||
|
||||
#: nano.c:455
|
||||
#: nano.c:429
|
||||
msgid ""
|
||||
"\n"
|
||||
" Compiled options:"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:485
|
||||
msgid "Mark Set"
|
||||
msgstr "Set Tanda"
|
||||
|
||||
#: nano.c:460
|
||||
#: nano.c:490
|
||||
msgid "Mark UNset"
|
||||
msgstr "Unset Tanda"
|
||||
|
||||
#: nano.c:887
|
||||
#: nano.c:938
|
||||
#, c-format
|
||||
msgid "check_wrap called with inptr->data=\"%s\"\n"
|
||||
msgstr "check_wrap dipanggil dengan inptr->data=\"%s\"\n"
|
||||
|
||||
#: nano.c:938
|
||||
#: nano.c:989
|
||||
#, c-format
|
||||
msgid "current->data now = \"%s\"\n"
|
||||
msgstr "current->data sekarang =\"%s\"\n"
|
||||
|
||||
#: nano.c:991
|
||||
#: nano.c:1042
|
||||
#, c-format
|
||||
msgid "After, data = \"%s\"\n"
|
||||
msgstr "Setelah, data= \"%s\"\n"
|
||||
|
||||
#: nano.c:1093
|
||||
#: nano.c:1142
|
||||
msgid "Edit a replacement"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1304
|
||||
#: nano.c:1366
|
||||
#, c-format
|
||||
msgid "Could not create a temporary filename: %s"
|
||||
msgstr "Tidak dapat membuat nama file sementara: %s"
|
||||
|
||||
#: nano.c:1320
|
||||
#: nano.c:1372
|
||||
msgid "Spell checking failed: unable to write temp file!"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1384
|
||||
msgid "Finished checking spelling"
|
||||
msgstr "Selesai memeriksa ejaan"
|
||||
|
||||
#: nano.c:1322
|
||||
#: nano.c:1386
|
||||
msgid "Spell checking failed"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1342
|
||||
#: nano.c:1406
|
||||
msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
|
||||
msgstr "Simpan buffer termodifikasi (JAWAB \"No\" AKAN MENGHAPUS PERUBAHAN) ?"
|
||||
|
||||
#: nano.c:1505
|
||||
#: nano.c:1502
|
||||
msgid "Received SIGHUP"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1568
|
||||
msgid "Cannot resize top win"
|
||||
msgstr "Tidak dapat menganti ukuran jendela atas"
|
||||
|
||||
#: nano.c:1507
|
||||
#: nano.c:1570
|
||||
msgid "Cannot move top win"
|
||||
msgstr "Tidak dapat memindahkan jendela atas"
|
||||
|
||||
#: nano.c:1509
|
||||
#: nano.c:1572
|
||||
msgid "Cannot resize edit win"
|
||||
msgstr "Tidak dapat mengganti ukuran jendela edit"
|
||||
|
||||
#: nano.c:1511
|
||||
#: nano.c:1574
|
||||
msgid "Cannot move edit win"
|
||||
msgstr "Tidak dapat memindah jendela edit"
|
||||
|
||||
#: nano.c:1513
|
||||
#: nano.c:1576
|
||||
msgid "Cannot resize bottom win"
|
||||
msgstr "Tidak dapat mengganti ukuran jendela bawah"
|
||||
|
||||
#: nano.c:1515
|
||||
#: nano.c:1578
|
||||
msgid "Cannot move bottom win"
|
||||
msgstr "Tidak dapat memindah jendela bawah"
|
||||
|
||||
#: nano.c:1786
|
||||
#, fuzzy
|
||||
msgid "Justify Complete"
|
||||
msgstr "Justifikasi"
|
||||
#: nano.c:1866
|
||||
msgid "Can now UnJustify!"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1854
|
||||
#: nano.c:1961
|
||||
#, c-format
|
||||
msgid "%s enable/disable"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1866
|
||||
#: nano.c:1973
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1867
|
||||
#: nano.c:1974
|
||||
msgid "disabled"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:2097
|
||||
#: nano.c:2204
|
||||
msgid "Main: set up windows\n"
|
||||
msgstr "Main: menset jendela\n"
|
||||
|
||||
#: nano.c:2110
|
||||
#: nano.c:2217
|
||||
msgid "Main: bottom win\n"
|
||||
msgstr "Main: jendela bawah\n"
|
||||
|
||||
#: nano.c:2116
|
||||
#: nano.c:2223
|
||||
msgid "Main: open file\n"
|
||||
msgstr "Main: membuka file\n"
|
||||
|
||||
#: nano.c:2153
|
||||
#: nano.c:2260
|
||||
#, fuzzy, c-format
|
||||
msgid "I got Alt-O-%c! (%d)\n"
|
||||
msgstr "Saya mendapat Alt-%c! (%d)\n"
|
||||
|
||||
#: nano.c:2175
|
||||
#: nano.c:2282
|
||||
#, fuzzy, c-format
|
||||
msgid "I got Alt-[-1-%c! (%d)\n"
|
||||
msgstr "Saya mendapat Alt-%c! (%d)\n"
|
||||
|
||||
#: nano.c:2208
|
||||
#: nano.c:2315
|
||||
#, fuzzy, c-format
|
||||
msgid "I got Alt-[-2-%c! (%d)\n"
|
||||
msgstr "Saya mendapat Alt-%c! (%d)\n"
|
||||
|
||||
#: nano.c:2256
|
||||
#: nano.c:2363
|
||||
#, c-format
|
||||
msgid "I got Alt-[-%c! (%d)\n"
|
||||
msgstr "Saya mendapat Alt-%c! (%d)\n"
|
||||
|
||||
#: nano.c:2282
|
||||
#: nano.c:2389
|
||||
#, c-format
|
||||
msgid "I got Alt-%c! (%d)\n"
|
||||
msgstr "Saya mendapat Alt-%c! (%d)\n"
|
||||
@@ -778,7 +809,7 @@ msgstr "Pencarian%s%s"
|
||||
msgid " (to replace)"
|
||||
msgstr " (ganti)"
|
||||
|
||||
#: search.c:136 search.c:318
|
||||
#: search.c:136 search.c:321
|
||||
msgid "Search Cancelled"
|
||||
msgstr "Batalkan pencarian"
|
||||
|
||||
@@ -791,124 +822,160 @@ msgstr "\"%s\" tidak ditemukan"
|
||||
msgid "Search Wrapped"
|
||||
msgstr "Pancarian diulangi dari awal"
|
||||
|
||||
#: search.c:340
|
||||
#: search.c:343
|
||||
#, c-format
|
||||
msgid "Replaced %d occurences"
|
||||
msgstr "%d tempat terganti"
|
||||
|
||||
#: search.c:342
|
||||
#: search.c:345
|
||||
msgid "Replaced 1 occurence"
|
||||
msgstr "Terganti 1 tempat"
|
||||
|
||||
#: search.c:479 search.c:575 search.c:591
|
||||
#: search.c:504 search.c:608 search.c:624
|
||||
msgid "Replace Cancelled"
|
||||
msgstr "Batalkan penggantian"
|
||||
|
||||
#: search.c:525
|
||||
#: search.c:554
|
||||
msgid "Replace this instance?"
|
||||
msgstr "Ganti kata ini?"
|
||||
|
||||
#: search.c:533
|
||||
#: search.c:566
|
||||
msgid "Replace failed: unknown subexpression!"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:616
|
||||
#: search.c:649
|
||||
#, c-format
|
||||
msgid "Replace with [%s]"
|
||||
msgstr "Ganti dengan [%s]"
|
||||
|
||||
#: search.c:620 search.c:624
|
||||
#: search.c:653 search.c:657
|
||||
msgid "Replace with"
|
||||
msgstr "Ganti dengan"
|
||||
|
||||
#. Ask for it
|
||||
#: search.c:659
|
||||
#: search.c:692
|
||||
msgid "Enter line number"
|
||||
msgstr "Masukkan nomor baris"
|
||||
|
||||
#: search.c:661
|
||||
#: search.c:694
|
||||
msgid "Aborted"
|
||||
msgstr "Dibatalkan"
|
||||
|
||||
#: search.c:681
|
||||
#: search.c:714
|
||||
msgid "Come on, be reasonable"
|
||||
msgstr "Ayo, yang masuk akal"
|
||||
|
||||
#: search.c:686
|
||||
#: search.c:719
|
||||
#, c-format
|
||||
msgid "Only %d lines available, skipping to last line"
|
||||
msgstr "Hanya %d baris tersedia, melompat ke baris akhir"
|
||||
|
||||
#: winio.c:120
|
||||
#: winio.c:121
|
||||
#, fuzzy, c-format
|
||||
msgid "actual_x_from_start for xplus=%d returned %d\n"
|
||||
msgstr "actual_x untuk xplus=%d mengembalikan %d\n"
|
||||
|
||||
#: winio.c:433
|
||||
#: winio.c:441
|
||||
#, c-format
|
||||
msgid "input '%c' (%d)\n"
|
||||
msgstr "input '%c' (%d)\n"
|
||||
|
||||
#: winio.c:471
|
||||
#: winio.c:479
|
||||
msgid "New Buffer"
|
||||
msgstr "Buffer baru"
|
||||
|
||||
#: winio.c:474
|
||||
#: winio.c:482
|
||||
msgid " File: ..."
|
||||
msgstr " File: ..."
|
||||
|
||||
#: winio.c:482
|
||||
#: winio.c:490
|
||||
msgid "Modified"
|
||||
msgstr "Dimodifikasi"
|
||||
|
||||
#: winio.c:934
|
||||
#: winio.c:942
|
||||
#, c-format
|
||||
msgid "Moved to (%d, %d) in edit buffer\n"
|
||||
msgstr "Pindah ke (%d, %d) dalam buffer edit\n"
|
||||
|
||||
#: winio.c:945
|
||||
#: winio.c:953
|
||||
#, c-format
|
||||
msgid "current->data = \"%s\"\n"
|
||||
msgstr "current->data = \"%s\"\n"
|
||||
|
||||
#: winio.c:990
|
||||
#: winio.c:998
|
||||
#, c-format
|
||||
msgid "I got \"%s\"\n"
|
||||
msgstr "Saya mendapat \"%s\"\n"
|
||||
|
||||
#: winio.c:1015
|
||||
#: winio.c:1023
|
||||
msgid "Yes"
|
||||
msgstr "Ya"
|
||||
|
||||
#: winio.c:1017
|
||||
#: winio.c:1025
|
||||
msgid "All"
|
||||
msgstr "Semua"
|
||||
|
||||
#: winio.c:1019
|
||||
#: winio.c:1027
|
||||
msgid "No"
|
||||
msgstr "Tidak"
|
||||
|
||||
#: winio.c:1156
|
||||
#: winio.c:1164
|
||||
#, c-format
|
||||
msgid "do_cursorpos: linepct = %f, bytepct = %f\n"
|
||||
msgstr "do_cursorpos: linepct = %f, bytepct = %f\n"
|
||||
|
||||
#: winio.c:1160
|
||||
#: winio.c:1168
|
||||
msgid "line %d of %d (%.0f%%), character %d of %d (%.0f%%)"
|
||||
msgstr "baris %d dari %d (%f.0f%%), karakter %d dari %d (%.0f%%)"
|
||||
|
||||
#: winio.c:1288
|
||||
#: winio.c:1296
|
||||
msgid "Dumping file buffer to stderr...\n"
|
||||
msgstr "Kirim buffer file ke stderr...\n"
|
||||
|
||||
#: winio.c:1290
|
||||
#: winio.c:1298
|
||||
msgid "Dumping cutbuffer to stderr...\n"
|
||||
msgstr "Kirim cutbuffer ke stderr...\n"
|
||||
|
||||
#: winio.c:1292
|
||||
#: winio.c:1300
|
||||
msgid "Dumping a buffer to stderr...\n"
|
||||
msgstr "Kirim buffer ke stderr...\n"
|
||||
|
||||
#: winio.c:1341
|
||||
msgid "The nano text editor"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1342
|
||||
msgid "version "
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1343
|
||||
msgid "Brought to you by:"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1344
|
||||
msgid "Special thanks to:"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1345
|
||||
msgid "The Free Software Foundation"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1346
|
||||
msgid "Pavel Curtis, Zeyd Ben-Halim and Eric S. Raymond for ncurses"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1347
|
||||
msgid "and anyone else we forgot..."
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1348
|
||||
msgid "Thank you for using nano!\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Justify Complete"
|
||||
#~ msgstr "Justifikasi"
|
||||
|
||||
#~ msgid " -p\t \t--pico\t\t\tMake bottom 2 lines more Pico-like\n"
|
||||
#~ msgstr "-p --pico Buat dua baris terbawah seperti Pico\n"
|
||||
|
||||
|
||||
419
po/nano.pot
419
po/nano.pot
@@ -6,7 +6,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2000-11-22 20:20-0500\n"
|
||||
"POT-Creation-Date: 2000-12-02 00:33-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"
|
||||
@@ -51,63 +51,63 @@ msgstr ""
|
||||
msgid "Reading File"
|
||||
msgstr ""
|
||||
|
||||
#: files.c:251
|
||||
#: files.c:252
|
||||
msgid "File to insert [from ./] "
|
||||
msgstr ""
|
||||
|
||||
#: files.c:276 files.c:300 files.c:488 nano.c:1355
|
||||
#: files.c:284 files.c:309 files.c:521 nano.c:1419
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: files.c:322 files.c:342 files.c:356 files.c:373 files.c:379
|
||||
#: files.c:343 files.c:364 files.c:378 files.c:395 files.c:401
|
||||
#, c-format
|
||||
msgid "Could not open file for writing: %s"
|
||||
msgstr ""
|
||||
|
||||
#: files.c:330
|
||||
#: files.c:352
|
||||
msgid "Could not open file: Path length exceeded."
|
||||
msgstr ""
|
||||
|
||||
#: files.c:361
|
||||
#: files.c:383
|
||||
#, c-format
|
||||
msgid "Wrote >%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: files.c:388
|
||||
#: files.c:410
|
||||
#, c-format
|
||||
msgid "Could not close %s: %s"
|
||||
msgstr ""
|
||||
|
||||
#. Try a rename??
|
||||
#: files.c:409 files.c:420 files.c:425
|
||||
#: files.c:431 files.c:442 files.c:447
|
||||
#, c-format
|
||||
msgid "Could not open %s for writing: %s"
|
||||
msgstr ""
|
||||
|
||||
#: files.c:431
|
||||
#: files.c:453
|
||||
#, c-format
|
||||
msgid "Could not set permissions %o on %s: %s"
|
||||
msgstr ""
|
||||
|
||||
#: files.c:438
|
||||
#: files.c:460
|
||||
#, c-format
|
||||
msgid "Wrote %d lines"
|
||||
msgstr ""
|
||||
|
||||
#: files.c:467
|
||||
#: files.c:492
|
||||
msgid "File Name to write"
|
||||
msgstr ""
|
||||
|
||||
#: files.c:472
|
||||
#: files.c:497
|
||||
#, c-format
|
||||
msgid "filename is %s"
|
||||
msgstr ""
|
||||
|
||||
#: files.c:477
|
||||
#: files.c:510
|
||||
msgid "File exists, OVERWRITE ?"
|
||||
msgstr ""
|
||||
|
||||
#: files.c:801
|
||||
#: files.c:999
|
||||
msgid "(more)"
|
||||
msgstr ""
|
||||
|
||||
@@ -168,241 +168,256 @@ msgid "Justify the current paragraph"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:181
|
||||
msgid "Replace text within the editor"
|
||||
msgid "Unjustify after a justify"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:182
|
||||
msgid "Insert another file into the current one"
|
||||
msgid "Replace text within the editor"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:183
|
||||
msgid "Search for text within the editor"
|
||||
msgid "Insert another file into the current one"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:184
|
||||
msgid "Move to the previous screen"
|
||||
msgid "Search for text within the editor"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:185
|
||||
msgid "Move to the next screen"
|
||||
msgid "Move to the previous screen"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:186
|
||||
msgid "Cut the current line and store it in the cutbuffer"
|
||||
msgid "Move to the next screen"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:187
|
||||
msgid "Uncut from the cutbuffer into the current line"
|
||||
msgid "Cut the current line and store it in the cutbuffer"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:188
|
||||
msgid "Show the posititon of the cursor"
|
||||
msgid "Uncut from the cutbuffer into the current line"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:189
|
||||
msgid "Invoke the spell checker (if available)"
|
||||
msgid "Show the posititon of the cursor"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:190
|
||||
msgid "Move up one line"
|
||||
msgid "Invoke the spell checker (if available)"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:191
|
||||
msgid "Move down one line"
|
||||
msgid "Move up one line"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:192
|
||||
msgid "Move forward one character"
|
||||
msgid "Move down one line"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:193
|
||||
msgid "Move back one character"
|
||||
msgid "Move forward one character"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:194
|
||||
msgid "Move to the beginning of the current line"
|
||||
msgid "Move back one character"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:195
|
||||
msgid "Move to the end of the current line"
|
||||
msgid "Move to the beginning of the current line"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:196
|
||||
msgid "Go to the first line of the file"
|
||||
msgid "Move to the end of the current line"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:197
|
||||
msgid "Go to the last line of the file"
|
||||
msgid "Go to the first line of the file"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:198
|
||||
msgid "Refresh (redraw) the current screen"
|
||||
msgid "Go to the last line of the file"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:199
|
||||
msgid "Mark text at the current cursor location"
|
||||
msgid "Refresh (redraw) the current screen"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:200
|
||||
msgid "Mark text at the current cursor location"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:201
|
||||
msgid "Delete the character under the cursor"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:202
|
||||
#: global.c:203
|
||||
msgid "Delete the character to the left of the cursor"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:203
|
||||
#: global.c:204
|
||||
msgid "Insert a tab character"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:204
|
||||
#: global.c:205
|
||||
msgid "Insert a carriage return at the cursor position"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:206
|
||||
#: global.c:207
|
||||
msgid "Make the current search or replace case (in)sensitive"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:207
|
||||
#: global.c:208
|
||||
msgid "Cancel the current function"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:211 global.c:323 global.c:408
|
||||
#: global.c:212 global.c:328
|
||||
msgid "Get Help"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:214 global.c:222
|
||||
#: global.c:215 global.c:223
|
||||
msgid "WriteOut"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:218 global.c:397
|
||||
#: global.c:219 global.c:402
|
||||
msgid "Exit"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:226 global.c:319 global.c:341 global.c:361
|
||||
#: global.c:227 global.c:324 global.c:346 global.c:366
|
||||
msgid "Goto Line"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:231 global.c:310
|
||||
#: global.c:232 global.c:315
|
||||
msgid "Justify"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:235 global.c:306 global.c:337
|
||||
#: global.c:236 global.c:311 global.c:342
|
||||
msgid "Replace"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:239
|
||||
#: global.c:240
|
||||
msgid "Read File"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:243
|
||||
#: global.c:244
|
||||
msgid "Where Is"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:247 global.c:389
|
||||
#: global.c:248 global.c:394
|
||||
msgid "Prev Page"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:251 global.c:393
|
||||
#: global.c:252 global.c:398
|
||||
msgid "Next Page"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:255
|
||||
#: global.c:256
|
||||
msgid "Cut Text"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:258
|
||||
#: global.c:260
|
||||
msgid "UnJustify"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:263
|
||||
msgid "UnCut Txt"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:262
|
||||
#: global.c:267
|
||||
msgid "Cur Pos"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:266
|
||||
#: global.c:271
|
||||
msgid "To Spell"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:270
|
||||
#: global.c:275
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:273
|
||||
#: global.c:278
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:276
|
||||
#: global.c:281
|
||||
msgid "Forward"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:279
|
||||
#: global.c:284
|
||||
msgid "Back"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:282
|
||||
#: global.c:287
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:285
|
||||
#: global.c:290
|
||||
msgid "End"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:288
|
||||
#: global.c:293
|
||||
msgid "Refresh"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:291
|
||||
#: global.c:296
|
||||
msgid "Mark Text"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:294
|
||||
#: global.c:299
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:298
|
||||
#: global.c:303
|
||||
msgid "Backspace"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:302
|
||||
#: global.c:307
|
||||
msgid "Tab"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:314
|
||||
#: global.c:319
|
||||
msgid "Enter"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:327 global.c:348 global.c:369 global.c:379
|
||||
#: global.c:332 global.c:353 global.c:374 global.c:384
|
||||
msgid "First Line"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:330 global.c:351 global.c:372 global.c:382
|
||||
#: global.c:335 global.c:356 global.c:377 global.c:387
|
||||
msgid "Last Line"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:333 global.c:354
|
||||
#: global.c:338 global.c:359
|
||||
msgid "Case Sens"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:344 global.c:364 global.c:375 global.c:385 global.c:401
|
||||
#: global.c:405 global.c:411 winio.c:1020
|
||||
#: global.c:349 global.c:369 global.c:380 global.c:390 global.c:406
|
||||
#: global.c:410 global.c:413 winio.c:1028
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: global.c:357
|
||||
#: global.c:362
|
||||
msgid "No Replace"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:131
|
||||
#: nano.c:137
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Buffer written to 'nano.save'\n"
|
||||
"Buffer written to %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:138
|
||||
#: nano.c:139
|
||||
msgid ""
|
||||
"\n"
|
||||
"No .save file written (symlink encountered?)\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:146
|
||||
msgid "Key illegal in VIEW mode"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:175
|
||||
#: nano.c:183
|
||||
msgid ""
|
||||
" nano help text\n"
|
||||
"\n"
|
||||
@@ -423,306 +438,320 @@ msgid ""
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:278
|
||||
#: nano.c:286
|
||||
msgid "free_node(): free'd a node, YAY!\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:283
|
||||
#: nano.c:291
|
||||
msgid "free_node(): free'd last node.\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:335
|
||||
#: nano.c:343
|
||||
msgid ""
|
||||
"Usage: nano [GNU long option] [option] +LINE <file>\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:336
|
||||
#: nano.c:344
|
||||
msgid "Option\t\tLong option\t\tMeaning\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:338
|
||||
#: nano.c:346
|
||||
msgid " -T \t\t--tabsize=[num]\t\tSet width of a tab to num\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:341
|
||||
#: nano.c:349
|
||||
msgid " -R\t\t--regexp\t\tUse regular expressions for search\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:345
|
||||
#: nano.c:353
|
||||
msgid " -V \t\t--version\t\tPrint version information and exit\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:347
|
||||
#: nano.c:355
|
||||
msgid " -c \t\t--const\t\t\tConstantly show cursor position\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:349
|
||||
#: nano.c:357
|
||||
msgid " -h \t\t--help\t\t\tShow this message\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:352
|
||||
#: nano.c:360
|
||||
msgid " -k \t\t--cut\t\t\tLet ^K cut from cursor to end of line\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:355
|
||||
#: nano.c:363
|
||||
msgid " -i \t\t--autoindent\t\tAutomatically indent new lines\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:357
|
||||
#: nano.c:365
|
||||
msgid " -l \t\t--nofollow\t\tDon't follow symbolic links, overwrite\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:360
|
||||
#: nano.c:368
|
||||
msgid " -m \t\t--mouse\t\t\tEnable mouse\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:365
|
||||
#: nano.c:373
|
||||
msgid ""
|
||||
" -r [#cols] \t--fill=[#cols]\t\tSet fill cols to (wrap lines at) #cols\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:367
|
||||
#: nano.c:375
|
||||
msgid " -p\t \t--pico\t\t\tEmulate Pico as closely as possible\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:369
|
||||
#: nano.c:377
|
||||
msgid " -s [prog] \t--speller=[prog]\tEnable alternate speller\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:371
|
||||
#: nano.c:379
|
||||
msgid " -t \t\t--tempfile\t\tAuto save on exit, don't prompt\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:373
|
||||
#: nano.c:381
|
||||
msgid " -v \t\t--view\t\t\tView (read only) mode\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:375
|
||||
#: nano.c:383
|
||||
msgid " -w \t\t--nowrap\t\tDon't wrap long lines\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:377
|
||||
#: nano.c:385
|
||||
msgid " -x \t\t--nohelp\t\tDon't show help window\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:379
|
||||
#: nano.c:387
|
||||
msgid " -z \t\t--suspend\t\tEnable suspend\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:381
|
||||
#: nano.c:389
|
||||
msgid " +LINE\t\t\t\t\tStart at line number LINE\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:383
|
||||
#: nano.c:391
|
||||
msgid ""
|
||||
"Usage: nano [option] +LINE <file>\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:384
|
||||
#: nano.c:392
|
||||
msgid "Option\t\tMeaning\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:385
|
||||
#: nano.c:393
|
||||
msgid " -T [num]\tSet width of a tab to num\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:386
|
||||
#: nano.c:394
|
||||
msgid " -R\t\tUse regular expressions for search\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:387
|
||||
#: nano.c:395
|
||||
msgid " -V \t\tPrint version information and exit\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:388
|
||||
#: nano.c:396
|
||||
msgid " -c \t\tConstantly show cursor position\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:389
|
||||
#: nano.c:397
|
||||
msgid " -h \t\tShow this message\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:391
|
||||
#: nano.c:399
|
||||
msgid " -k \t\tLet ^K cut from cursor to end of line\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:393
|
||||
#: nano.c:401
|
||||
msgid " -i \t\tAutomatically indent new lines\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:395
|
||||
#: nano.c:403
|
||||
msgid " -l \t\tDon't follow symbolic links, overwrite\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:398
|
||||
#: nano.c:406
|
||||
msgid " -m \t\tEnable mouse\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:402
|
||||
#: nano.c:410
|
||||
msgid " -r [#cols] \tSet fill cols to (wrap lines at) #cols\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:403
|
||||
#: nano.c:411
|
||||
msgid " -s [prog] \tEnable alternate speller\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:404
|
||||
#: nano.c:412
|
||||
msgid " -p \t\tEmulate Pico as closely as possible\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:405
|
||||
#: nano.c:413
|
||||
msgid " -t \t\tAuto save on exit, don't prompt\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:406
|
||||
#: nano.c:414
|
||||
msgid " -v \t\tView (read only) mode\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:407
|
||||
#: nano.c:415
|
||||
msgid " -w \t\tDon't wrap long lines\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:408
|
||||
#: nano.c:416
|
||||
msgid " -x \t\tDon't show help window\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:409
|
||||
#: nano.c:417
|
||||
msgid " -z \t\tEnable suspend\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:410
|
||||
#: nano.c:418
|
||||
msgid " +LINE\t\tStart at line number LINE\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:417
|
||||
#: nano.c:425
|
||||
#, c-format
|
||||
msgid " nano version %s by Chris Allegretta (compiled %s, %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:420
|
||||
msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org\n"
|
||||
#: nano.c:428
|
||||
msgid " Email: nano@nano-editor.org\tWeb: http://www.nano-editor.org"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:455
|
||||
#: nano.c:429
|
||||
msgid ""
|
||||
"\n"
|
||||
" Compiled options:"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:485
|
||||
msgid "Mark Set"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:460
|
||||
#: nano.c:490
|
||||
msgid "Mark UNset"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:887
|
||||
#, c-format
|
||||
msgid "check_wrap called with inptr->data=\"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:938
|
||||
#, c-format
|
||||
msgid "check_wrap called with inptr->data=\"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:989
|
||||
#, c-format
|
||||
msgid "current->data now = \"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:991
|
||||
#: nano.c:1042
|
||||
#, c-format
|
||||
msgid "After, data = \"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1093
|
||||
#: nano.c:1142
|
||||
msgid "Edit a replacement"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1304
|
||||
#: nano.c:1366
|
||||
#, c-format
|
||||
msgid "Could not create a temporary filename: %s"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1320
|
||||
#: nano.c:1372
|
||||
msgid "Spell checking failed: unable to write temp file!"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1384
|
||||
msgid "Finished checking spelling"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1322
|
||||
#: nano.c:1386
|
||||
msgid "Spell checking failed"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1342
|
||||
#: nano.c:1406
|
||||
msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1505
|
||||
#: nano.c:1502
|
||||
msgid "Received SIGHUP"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1568
|
||||
msgid "Cannot resize top win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1507
|
||||
#: nano.c:1570
|
||||
msgid "Cannot move top win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1509
|
||||
#: nano.c:1572
|
||||
msgid "Cannot resize edit win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1511
|
||||
#: nano.c:1574
|
||||
msgid "Cannot move edit win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1513
|
||||
#: nano.c:1576
|
||||
msgid "Cannot resize bottom win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1515
|
||||
#: nano.c:1578
|
||||
msgid "Cannot move bottom win"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1786
|
||||
msgid "Justify Complete"
|
||||
#: nano.c:1866
|
||||
msgid "Can now UnJustify!"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1854
|
||||
#: nano.c:1961
|
||||
#, c-format
|
||||
msgid "%s enable/disable"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1866
|
||||
#: nano.c:1973
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:1867
|
||||
#: nano.c:1974
|
||||
msgid "disabled"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:2097
|
||||
#: nano.c:2204
|
||||
msgid "Main: set up windows\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:2110
|
||||
#: nano.c:2217
|
||||
msgid "Main: bottom win\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:2116
|
||||
#: nano.c:2223
|
||||
msgid "Main: open file\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:2153
|
||||
#: nano.c:2260
|
||||
#, c-format
|
||||
msgid "I got Alt-O-%c! (%d)\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:2175
|
||||
#: nano.c:2282
|
||||
#, c-format
|
||||
msgid "I got Alt-[-1-%c! (%d)\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:2208
|
||||
#: nano.c:2315
|
||||
#, c-format
|
||||
msgid "I got Alt-[-2-%c! (%d)\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:2256
|
||||
#: nano.c:2363
|
||||
#, c-format
|
||||
msgid "I got Alt-[-%c! (%d)\n"
|
||||
msgstr ""
|
||||
|
||||
#: nano.c:2282
|
||||
#: nano.c:2389
|
||||
#, c-format
|
||||
msgid "I got Alt-%c! (%d)\n"
|
||||
msgstr ""
|
||||
@@ -751,7 +780,7 @@ msgstr ""
|
||||
msgid " (to replace)"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:136 search.c:318
|
||||
#: search.c:136 search.c:321
|
||||
msgid "Search Cancelled"
|
||||
msgstr ""
|
||||
|
||||
@@ -764,120 +793,152 @@ msgstr ""
|
||||
msgid "Search Wrapped"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:340
|
||||
#: search.c:343
|
||||
#, c-format
|
||||
msgid "Replaced %d occurences"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:342
|
||||
#: search.c:345
|
||||
msgid "Replaced 1 occurence"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:479 search.c:575 search.c:591
|
||||
#: search.c:504 search.c:608 search.c:624
|
||||
msgid "Replace Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:525
|
||||
#: search.c:554
|
||||
msgid "Replace this instance?"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:533
|
||||
#: search.c:566
|
||||
msgid "Replace failed: unknown subexpression!"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:616
|
||||
#: search.c:649
|
||||
#, c-format
|
||||
msgid "Replace with [%s]"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:620 search.c:624
|
||||
#: search.c:653 search.c:657
|
||||
msgid "Replace with"
|
||||
msgstr ""
|
||||
|
||||
#. Ask for it
|
||||
#: search.c:659
|
||||
#: search.c:692
|
||||
msgid "Enter line number"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:661
|
||||
#: search.c:694
|
||||
msgid "Aborted"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:681
|
||||
#: search.c:714
|
||||
msgid "Come on, be reasonable"
|
||||
msgstr ""
|
||||
|
||||
#: search.c:686
|
||||
#: search.c:719
|
||||
#, c-format
|
||||
msgid "Only %d lines available, skipping to last line"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:120
|
||||
#: winio.c:121
|
||||
#, c-format
|
||||
msgid "actual_x_from_start for xplus=%d returned %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:433
|
||||
#: winio.c:441
|
||||
#, c-format
|
||||
msgid "input '%c' (%d)\n"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:471
|
||||
#: winio.c:479
|
||||
msgid "New Buffer"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:474
|
||||
#: winio.c:482
|
||||
msgid " File: ..."
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:482
|
||||
#: winio.c:490
|
||||
msgid "Modified"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:934
|
||||
#: winio.c:942
|
||||
#, c-format
|
||||
msgid "Moved to (%d, %d) in edit buffer\n"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:945
|
||||
#: winio.c:953
|
||||
#, c-format
|
||||
msgid "current->data = \"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:990
|
||||
#: winio.c:998
|
||||
#, c-format
|
||||
msgid "I got \"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1015
|
||||
#: winio.c:1023
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1017
|
||||
#: winio.c:1025
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1019
|
||||
#: winio.c:1027
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1156
|
||||
#: winio.c:1164
|
||||
#, c-format
|
||||
msgid "do_cursorpos: linepct = %f, bytepct = %f\n"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1160
|
||||
#: winio.c:1168
|
||||
msgid "line %d of %d (%.0f%%), character %d of %d (%.0f%%)"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1288
|
||||
#: winio.c:1296
|
||||
msgid "Dumping file buffer to stderr...\n"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1290
|
||||
#: winio.c:1298
|
||||
msgid "Dumping cutbuffer to stderr...\n"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1292
|
||||
#: winio.c:1300
|
||||
msgid "Dumping a buffer to stderr...\n"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1341
|
||||
msgid "The nano text editor"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1342
|
||||
msgid "version "
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1343
|
||||
msgid "Brought to you by:"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1344
|
||||
msgid "Special thanks to:"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1345
|
||||
msgid "The Free Software Foundation"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1346
|
||||
msgid "Pavel Curtis, Zeyd Ben-Halim and Eric S. Raymond for ncurses"
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1347
|
||||
msgid "and anyone else we forgot..."
|
||||
msgstr ""
|
||||
|
||||
#: winio.c:1348
|
||||
msgid "Thank you for using nano!\n"
|
||||
msgstr ""
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
timestamp
|
||||
11
proto.h
11
proto.h
@@ -88,9 +88,11 @@ int do_down(void);
|
||||
int do_left(void);
|
||||
int do_right(void);
|
||||
int check_wildcard_match(const char *text, const char *pattern);
|
||||
char *input_tab(char *buf, int place, int *lastWasTab, int *newplace);
|
||||
|
||||
void shortcut_init(void);
|
||||
char *input_tab(char *buf, int place, int *lastWasTab, int *newplace);
|
||||
char *real_dir_from_tilde(char *buf);
|
||||
|
||||
void shortcut_init(int unjustify);
|
||||
void lowercase(char *src);
|
||||
void blank_bottombars(void);
|
||||
void check_wrap(filestruct * inptr, char ch);
|
||||
@@ -129,6 +131,11 @@ void page_up_center(void);
|
||||
void blank_edit(void);
|
||||
void search_init_globals(void);
|
||||
void replace_abort(void);
|
||||
void add_to_cutbuffer(filestruct * inptr);
|
||||
void do_replace_highlight(int highlight_flag, char *word);
|
||||
#ifdef NANO_EXTRA
|
||||
void do_credits(void);
|
||||
#endif
|
||||
|
||||
int do_writeout_void(void), do_exit(void), do_gotoline_void(void);
|
||||
int do_insertfile(void), do_search(void), page_up(void), page_down(void);
|
||||
|
||||
47
search.c
47
search.c
@@ -202,11 +202,11 @@ filestruct *findnextstr(int quiet, filestruct * begin, int beginx,
|
||||
{
|
||||
filestruct *fileptr;
|
||||
char *searchstr, *found = NULL, *tmp;
|
||||
int past_editbot = 0, current_x_find = current_x;
|
||||
int past_editbot = 0, current_x_find;
|
||||
|
||||
fileptr = current;
|
||||
|
||||
current_x_find++;
|
||||
current_x_find = current_x + 1;
|
||||
|
||||
/* Are we searching the last line? (i.e. the line where search started) */
|
||||
if ((fileptr == begin) && (current_x_find < beginx))
|
||||
@@ -251,18 +251,21 @@ filestruct *findnextstr(int quiet, filestruct * begin, int beginx,
|
||||
}
|
||||
|
||||
/* We found an instance */
|
||||
current = fileptr;
|
||||
current_x = 0;
|
||||
current_x_find = 0;
|
||||
for (tmp = fileptr->data; tmp != found; tmp++)
|
||||
current_x++;
|
||||
current_x_find++;
|
||||
|
||||
/* Ensure we haven't wrap around again! */
|
||||
if ((search_last_line) && (current_x >= beginx)) {
|
||||
if ((search_last_line) && (current_x_find >= beginx)) {
|
||||
if (!quiet)
|
||||
not_found_msg(needle);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Set globals now that we are sure we found something */
|
||||
current = fileptr;
|
||||
current_x = current_x_find;
|
||||
|
||||
if (past_editbot)
|
||||
edit_update(fileptr, CENTER);
|
||||
else
|
||||
@@ -465,6 +468,28 @@ char *replace_line(void)
|
||||
return copy;
|
||||
}
|
||||
|
||||
/* highlight the current word being replaced or spell checked */
|
||||
void do_replace_highlight(int highlight_flag, char *word)
|
||||
{
|
||||
char *highlight_word = NULL;
|
||||
|
||||
highlight_word = mallocstrcpy(highlight_word, ¤t->data[current_x]);
|
||||
highlight_word[strlen(word)] = '\0';
|
||||
|
||||
reset_cursor();
|
||||
|
||||
if (highlight_flag)
|
||||
wattron(edit, A_REVERSE);
|
||||
|
||||
waddstr(edit, highlight_word);
|
||||
|
||||
if (highlight_flag)
|
||||
wattroff(edit, A_REVERSE);
|
||||
|
||||
free(highlight_word);
|
||||
}
|
||||
|
||||
/* step through each replace word and prompt user before replacing word */
|
||||
int do_replace_loop(char *prevanswer, filestruct *begin, int *beginx,
|
||||
int wholewords, int *i)
|
||||
{
|
||||
@@ -521,9 +546,17 @@ int do_replace_loop(char *prevanswer, filestruct *begin, int *beginx,
|
||||
}
|
||||
|
||||
/* If we're here, we've found the search string */
|
||||
if (!replaceall)
|
||||
if (!replaceall) {
|
||||
|
||||
curs_set(0);
|
||||
do_replace_highlight(TRUE, prevanswer);
|
||||
|
||||
*i = do_yesno(1, 1, _("Replace this instance?"));
|
||||
|
||||
do_replace_highlight(FALSE, prevanswer);
|
||||
curs_set(1);
|
||||
}
|
||||
|
||||
if (*i > 0 || replaceall) { /* Yes, replace it!!!! */
|
||||
if (*i == 2)
|
||||
replaceall = 1;
|
||||
|
||||
2
utils.c
2
utils.c
@@ -154,6 +154,7 @@ void new_magicline(void)
|
||||
totlines++;
|
||||
}
|
||||
|
||||
#ifndef DISABLE_TABCOMP
|
||||
/*
|
||||
* Routine to see if a text string is matched by a wildcard pattern.
|
||||
* Returns TRUE if the text is matched, or FALSE if it is not matched
|
||||
@@ -253,3 +254,4 @@ int check_wildcard_match(const char *text, const char *pattern)
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
113
winio.c
113
winio.c
@@ -22,6 +22,7 @@
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include "config.h"
|
||||
#include "proto.h"
|
||||
#include "nano.h"
|
||||
@@ -247,8 +248,11 @@ int nanogetstr(int allowtabs, char *buf, char *def, shortcut s[], int slen,
|
||||
int start_x)
|
||||
{
|
||||
int kbinput = 0, j = 0, x = 0, xend;
|
||||
int x_left = 0, inputlen, tabbed = 0, shift = 0;
|
||||
int x_left = 0, inputlen, tabbed = 0;
|
||||
char *inputbuf;
|
||||
#ifndef DISABLE_TABCOMP
|
||||
int shift = 0;
|
||||
#endif
|
||||
|
||||
inputbuf = nmalloc(strlen(def) + 1);
|
||||
inputbuf[0] = 0;
|
||||
@@ -286,13 +290,15 @@ int nanogetstr(int allowtabs, char *buf, char *def, shortcut s[], int slen,
|
||||
case 343:
|
||||
ungetch(13); /* Enter on iris-ansi $TERM, sometimes */
|
||||
break;
|
||||
/* Stuff we want to ignore */
|
||||
#ifdef PDCURSES
|
||||
/* Stuff we want to ignore with PDCURSES */
|
||||
case 541:
|
||||
case 542:
|
||||
case 543: /* Right ctrl again */
|
||||
case 544:
|
||||
break;
|
||||
case 545: /* Right alt again */
|
||||
#endif
|
||||
break;
|
||||
case KEY_HOME:
|
||||
x = x_left;
|
||||
nanoget_repaint(buf, inputbuf, x);
|
||||
@@ -340,6 +346,7 @@ int nanogetstr(int allowtabs, char *buf, char *def, shortcut s[], int slen,
|
||||
x--;
|
||||
nanoget_repaint(buf, inputbuf, x);
|
||||
break;
|
||||
#ifndef DISABLE_TABCOMP
|
||||
case NANO_CONTROL_I:
|
||||
if (allowtabs) {
|
||||
shift = 0;
|
||||
@@ -349,6 +356,7 @@ int nanogetstr(int allowtabs, char *buf, char *def, shortcut s[], int slen,
|
||||
nanoget_repaint(buf, inputbuf, x);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case KEY_LEFT:
|
||||
if (x > strlen(buf))
|
||||
x--;
|
||||
@@ -1322,3 +1330,102 @@ void fix_editbot(void)
|
||||
for (i = 0; (i <= editwinrows - 1) && (editbot->next != NULL)
|
||||
&& (editbot != filebot); i++, editbot = editbot->next);
|
||||
}
|
||||
|
||||
#ifdef NANO_EXTRA
|
||||
#define CREDIT_LEN 45
|
||||
void do_credits(void)
|
||||
{
|
||||
int i, j = 0, k, place = 0, start_x;
|
||||
char *what;
|
||||
|
||||
char *nanotext = _("The nano text editor");
|
||||
char *version = _("version ");
|
||||
char *brought = _("Brought to you by:");
|
||||
char *specialthx = _("Special thanks to:");
|
||||
char *fsf = _("The Free Software Foundation");
|
||||
char *ncurses = _("Pavel Curtis, Zeyd Ben-Halim and Eric S. Raymond for ncurses");
|
||||
char *anyonelse = _("and anyone else we forgot...");
|
||||
char *thankyou = _("Thank you for using nano!\n");
|
||||
|
||||
char *credits[CREDIT_LEN] = {nanotext,
|
||||
version,
|
||||
VERSION,
|
||||
"",
|
||||
brought,
|
||||
"Chris Allegretta",
|
||||
"Jordi Mallach",
|
||||
"Adam Rogoyski",
|
||||
"Rob Siemborski",
|
||||
"Rocco Corsi",
|
||||
"Ken Tyler",
|
||||
"Sven Guckes",
|
||||
"Florian König",
|
||||
"Pauli Virtanen",
|
||||
"Daniele Medri",
|
||||
"Clement Laforet",
|
||||
"Tedi Heriyanto",
|
||||
"Bill Soudan",
|
||||
"Christian Weisgerber",
|
||||
"Erik Anderson",
|
||||
"Big Gaute",
|
||||
"Joshua Jensen",
|
||||
"",
|
||||
specialthx,
|
||||
"Plattsburgh State University",
|
||||
"Benet Laboratories",
|
||||
"Amy Allegretta",
|
||||
"Linda Young",
|
||||
"Jeremy Robichaud",
|
||||
"Richard Kolb II",
|
||||
fsf,
|
||||
"Linus Torvalds",
|
||||
ncurses,
|
||||
anyonelse,
|
||||
thankyou,
|
||||
"", "", "", "",
|
||||
"(c) 2000 Chris Allegretta",
|
||||
"", "", "", "",
|
||||
"www.nano-editor.org"
|
||||
};
|
||||
|
||||
curs_set(0);
|
||||
nodelay(edit, TRUE);
|
||||
blank_bottombars();
|
||||
mvwaddstr(topwin, 0, 0, hblank);
|
||||
blank_edit();
|
||||
wrefresh(edit);
|
||||
wrefresh(bottomwin);
|
||||
wrefresh(topwin);
|
||||
|
||||
while (wgetch(edit) == ERR) {
|
||||
for (k = 0; k <= 1; k++) {
|
||||
blank_edit();
|
||||
for (i = editwinrows / 2 - 1; i >= (editwinrows / 2 - 1 - j); i--) {
|
||||
mvwaddstr(edit, i * 2 - k, 0, hblank);
|
||||
|
||||
if (place - (editwinrows / 2 - 1 - i) < CREDIT_LEN)
|
||||
what = credits[place - (editwinrows / 2 - 1 - i)];
|
||||
else
|
||||
what = "";
|
||||
|
||||
start_x = center_x - strlen(what) / 2 - 1;
|
||||
mvwaddstr(edit, i * 2 - k, start_x, what);
|
||||
}
|
||||
usleep(700000);
|
||||
wrefresh(edit);
|
||||
}
|
||||
if (j < editwinrows / 2 - 1)
|
||||
j++;
|
||||
|
||||
place++;
|
||||
|
||||
if (place >= CREDIT_LEN + editwinrows / 2)
|
||||
break;
|
||||
}
|
||||
|
||||
nodelay(edit, FALSE);
|
||||
curs_set(1);
|
||||
display_main_list();
|
||||
total_refresh();
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user