Merged in changes from CVS trunk.
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-290 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-161
This commit is contained in:
commit
ab4b17bed7
33 changed files with 1337 additions and 276 deletions
|
@ -1,3 +1,17 @@
|
|||
2004-05-08 Thien-Thi Nguyen <ttn@gnu.org>
|
||||
|
||||
* cvtmail.c: Throughout, replace 0 destined for `exit' arg
|
||||
with `EXIT_SUCCESS'. Likewise, replace 1 with `EXIT_FAILURE'.
|
||||
(main): Use `EXIT_SUCCESS' or `EXIT_FAILURE' for return value.
|
||||
|
||||
* ebrowse.c, emacsclient.c, fakemail.c, hexl.c,
|
||||
make-docfile.c, movemail.c, profile.c, sorted-doc.c,
|
||||
test-distrib.c, update-game-score.c, yow.c: Likewise.
|
||||
|
||||
2004-05-08 Thien-Thi Nguyen <ttn@gnu.org>
|
||||
|
||||
* Makefile.in (emacsclient${EXEEXT}): Use makefile var `version'.
|
||||
|
||||
2004-05-07 Thien-Thi Nguyen <ttn@gnu.org>
|
||||
|
||||
* b2m.c (GOOD, BAD): Delete macros. Throughout,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Makefile for lib-src subdirectory in GNU Emacs.
|
||||
# Copyright (C) 1985, 1987, 1988, 1993, 1994, 2002, 2003
|
||||
# Copyright (C) 1985, 1987, 1988, 1993, 1994, 2002, 2003, 2004
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
@ -447,7 +447,7 @@ yow${EXEEXT}: ${srcdir}/yow.c ../src/epaths.h
|
|||
|
||||
emacsclient${EXEEXT}: ${srcdir}/emacsclient.c ../src/config.h $(GETOPTDEPS)
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/emacsclient.c $(GETOPTOBJS) \
|
||||
-DVERSION=`sed -n -e '/(defconst emacs-version/ s/^[^"]*\("[^"]*"\).*/\1/p' ${srcdir}/../lisp/version.el` \
|
||||
-DVERSION="\"${version}\"" \
|
||||
$(LOADLIBES) -o emacsclient
|
||||
|
||||
hexl${EXEEXT}: ${srcdir}/hexl.c ../src/config.h
|
||||
|
|
|
@ -119,7 +119,7 @@ main (argc, argv)
|
|||
}
|
||||
fclose (mddf);
|
||||
fclose (mfilef);
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -148,7 +148,7 @@ fatal (s1, s2)
|
|||
char *s1, *s2;
|
||||
{
|
||||
error (s1, s2);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -157,7 +157,7 @@ sysfail (s)
|
|||
{
|
||||
fprintf (stderr, "cvtmail: ");
|
||||
perror (s);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
char *
|
||||
|
@ -183,3 +183,5 @@ xrealloc (ptr, size)
|
|||
|
||||
/* arch-tag: b93c25a9-9012-44f1-b78b-9cc7aed44a7a
|
||||
(do not change this comment) */
|
||||
|
||||
/* cvtmail.c ends here */
|
||||
|
|
|
@ -564,7 +564,7 @@ xmalloc (nbytes)
|
|||
if (p == NULL)
|
||||
{
|
||||
yyerror ("out of memory", NULL);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
@ -581,7 +581,7 @@ xrealloc (p, sz)
|
|||
if (p == NULL)
|
||||
{
|
||||
yyerror ("out of memory", NULL);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
@ -3671,7 +3671,7 @@ usage (error)
|
|||
int error;
|
||||
{
|
||||
puts (USAGE);
|
||||
exit (error ? 1 : 0);
|
||||
exit (error ? EXIT_FAILURE : EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
|
@ -3688,7 +3688,7 @@ version ()
|
|||
printf ("ebrowse %s\n", VERSION);
|
||||
puts ("Copyright (C) 1992-1999, 2000, 2001 Free Software Foundation, Inc.");
|
||||
puts ("This program is distributed under the same terms as Emacs.");
|
||||
exit (0);
|
||||
exit (EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
|
@ -3925,7 +3925,7 @@ main (argc, argv)
|
|||
if (yyout == NULL)
|
||||
{
|
||||
yyerror ("cannot open output file `%s'", out_filename);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3970,11 +3970,10 @@ main (argc, argv)
|
|||
if (yyout != stdout)
|
||||
fclose (yyout);
|
||||
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/* ebrowse.c ends here. */
|
||||
|
||||
/* arch-tag: fc03b4bc-91a9-4c3d-b3b9-12a77fa86dd8
|
||||
(do not change this comment) */
|
||||
|
||||
/* ebrowse.c ends here */
|
||||
|
|
|
@ -48,9 +48,6 @@ Boston, MA 02111-1307, USA. */
|
|||
char *getenv (), *getwd ();
|
||||
char *getcwd ();
|
||||
|
||||
/* This is defined with -D from the compilation command,
|
||||
which extracts it from ../lisp/version.el. */
|
||||
|
||||
#ifndef VERSION
|
||||
#define VERSION "unspecified"
|
||||
#endif
|
||||
|
@ -157,7 +154,7 @@ decode_options (argc, argv)
|
|||
|
||||
case 'V':
|
||||
printf ("emacsclient %s\n", VERSION);
|
||||
exit (0);
|
||||
exit (EXIT_SUCCESS);
|
||||
break;
|
||||
|
||||
case 't':
|
||||
|
@ -176,7 +173,7 @@ decode_options (argc, argv)
|
|||
|
||||
default:
|
||||
fprintf (stderr, "Try `%s --help' for more information\n", progname);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -209,7 +206,7 @@ The following OPTIONS are accepted:\n\
|
|||
Editor to fallback to if the server is not running\n\
|
||||
\n\
|
||||
Report bugs to bug-gnu-emacs@gnu.org.\n", progname);
|
||||
exit (0);
|
||||
exit (EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
/* Like malloc but get fatal error if memory is exhausted. */
|
||||
|
@ -222,7 +219,7 @@ xmalloc (size)
|
|||
if (result == NULL)
|
||||
{
|
||||
perror ("malloc");
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -236,7 +233,7 @@ xstrdup (const char *s)
|
|||
if (result == NULL)
|
||||
{
|
||||
perror ("strdup");
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -336,7 +333,7 @@ fail (void)
|
|||
}
|
||||
else
|
||||
{
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -520,7 +517,7 @@ main (argc, argv)
|
|||
{
|
||||
fprintf (stderr, "%s: file name or argument required\n", progname);
|
||||
fprintf (stderr, "Try `%s --help' for more information\n", progname);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -598,7 +595,7 @@ main (argc, argv)
|
|||
{
|
||||
fprintf (stderr, "%s: socket-name %s too long",
|
||||
argv[0], socket_name);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sock_status = socket_status (server.sun_path);
|
||||
|
@ -819,9 +816,7 @@ To start the server in Emacs, type \"M-x server-start\".\n",
|
|||
|
||||
/* Maybe wait for an answer. */
|
||||
if (nowait)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
|
||||
if (!eval && !tty)
|
||||
{
|
||||
|
@ -883,7 +878,7 @@ To start the server in Emacs, type \"M-x server-start\".\n",
|
|||
fflush (stdout);
|
||||
fsync (1);
|
||||
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
#endif /* HAVE_SOCKETS */
|
||||
|
@ -905,3 +900,5 @@ strerror (errnum)
|
|||
|
||||
/* arch-tag: f39bb9c4-73eb-477e-896d-50832e2ca9a7
|
||||
(do not change this comment) */
|
||||
|
||||
/* emacsclient.c ends here */
|
||||
|
|
|
@ -169,7 +169,7 @@ fatal (s1, s2)
|
|||
char *s1, *s2;
|
||||
{
|
||||
error (s1, s2);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Like malloc but get fatal error if memory is exhausted. */
|
||||
|
@ -410,7 +410,7 @@ close_the_streams ()
|
|||
no_problems = (no_problems &&
|
||||
((*rem->action) (rem->handle) == 0));
|
||||
the_streams = ((stream_list) NULL);
|
||||
return (no_problems ? 0 : 1);
|
||||
return (no_problems ? EXIT_SUCCESS : EXIT_FAILURE);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -667,7 +667,7 @@ read_header ()
|
|||
if (next_line == ((line_list *) NULL))
|
||||
{
|
||||
/* Not a valid header */
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
*next_line = new_list ();
|
||||
(*next_line)->string = alloc_string (length);
|
||||
|
@ -753,3 +753,5 @@ main (argc, argv)
|
|||
|
||||
/* arch-tag: acb0afa6-315a-4c5b-b9e3-def5725c8783
|
||||
(do not change this comment) */
|
||||
|
||||
/* fakemail.c ends here */
|
||||
|
|
|
@ -270,15 +270,17 @@ main (argc, argv)
|
|||
fclose (fp);
|
||||
|
||||
} while (*argv != NULL);
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
void
|
||||
usage ()
|
||||
{
|
||||
fprintf (stderr, "usage: %s [-de] [-iso]\n", progname);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* arch-tag: 20e04fb7-926e-4e48-be86-64fe869ecdaa
|
||||
(do not change this comment) */
|
||||
|
||||
/* hexl.c ends here */
|
||||
|
|
|
@ -104,7 +104,7 @@ fatal (s1, s2)
|
|||
char *s1, *s2;
|
||||
{
|
||||
error (s1, s2);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Like malloc but get fatal error if memory is exhausted. */
|
||||
|
@ -1210,3 +1210,5 @@ scan_lisp_file (filename, mode)
|
|||
|
||||
/* arch-tag: f7203aaf-991a-4238-acb5-601db56f2894
|
||||
(do not change this comment) */
|
||||
|
||||
/* make-docfile.c ends here */
|
||||
|
|
|
@ -216,7 +216,7 @@ main (argc, argv)
|
|||
preserve_mail++;
|
||||
break;
|
||||
default:
|
||||
exit(1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -234,7 +234,7 @@ main (argc, argv)
|
|||
#else
|
||||
fprintf (stderr, "Usage: movemail [-p] inbox destfile%s\n", "");
|
||||
#endif
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
inname = argv[optind];
|
||||
|
@ -536,12 +536,12 @@ main (argc, argv)
|
|||
if (spool_name)
|
||||
mailunlock ();
|
||||
#endif
|
||||
exit (0);
|
||||
exit (EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
wait (&status);
|
||||
if (!WIFEXITED (status))
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
else if (WRETCODE (status) != 0)
|
||||
exit (WRETCODE (status));
|
||||
|
||||
|
@ -554,7 +554,7 @@ main (argc, argv)
|
|||
|
||||
#endif /* ! DISABLE_DIRECT_ACCESS */
|
||||
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef MAIL_USE_MAILLOCK
|
||||
|
@ -607,7 +607,7 @@ fatal (s1, s2)
|
|||
if (delete_lockname)
|
||||
unlink (delete_lockname);
|
||||
error (s1, s2, 0);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Print error message. `s1' is printf control string, `s2' and `s3'
|
||||
|
@ -709,6 +709,8 @@ char Errmsg[200]; /* POP errors, at least, can exceed
|
|||
* If the mailbox is in the form "po:username:hostname", then it is
|
||||
* modified by this function -- the second colon is replaced by a
|
||||
* null.
|
||||
*
|
||||
* Return a value suitable for passing to `exit'.
|
||||
*/
|
||||
|
||||
int
|
||||
|
@ -736,19 +738,19 @@ popmail (mailbox, outfile, preserve, password, reverse_order)
|
|||
if (! server)
|
||||
{
|
||||
error ("Error connecting to POP server: %s", pop_error, 0);
|
||||
return (1);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (pop_stat (server, &nmsgs, &nbytes))
|
||||
{
|
||||
error ("Error getting message count from POP server: %s", pop_error, 0);
|
||||
return (1);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (!nmsgs)
|
||||
{
|
||||
pop_close (server);
|
||||
return (0);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
mbfi = open (outfile, O_WRONLY | O_CREAT | O_EXCL, 0666);
|
||||
|
@ -756,7 +758,7 @@ popmail (mailbox, outfile, preserve, password, reverse_order)
|
|||
{
|
||||
pop_close (server);
|
||||
error ("Error in open: %s, %s", strerror (errno), outfile);
|
||||
return (1);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
fchown (mbfi, getuid (), -1);
|
||||
|
||||
|
@ -766,7 +768,7 @@ popmail (mailbox, outfile, preserve, password, reverse_order)
|
|||
error ("Error in fdopen: %s", strerror (errno), 0);
|
||||
close (mbfi);
|
||||
unlink (outfile);
|
||||
return (1);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (reverse_order)
|
||||
|
@ -789,7 +791,7 @@ popmail (mailbox, outfile, preserve, password, reverse_order)
|
|||
{
|
||||
error (Errmsg, 0, 0);
|
||||
close (mbfi);
|
||||
return (1);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
mbx_delimit_end (mbf);
|
||||
fflush (mbf);
|
||||
|
@ -798,7 +800,7 @@ popmail (mailbox, outfile, preserve, password, reverse_order)
|
|||
error ("Error in fflush: %s", strerror (errno), 0);
|
||||
pop_close (server);
|
||||
close (mbfi);
|
||||
return (1);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -812,14 +814,14 @@ popmail (mailbox, outfile, preserve, password, reverse_order)
|
|||
if (fsync (mbfi) < 0)
|
||||
{
|
||||
error ("Error in fsync: %s", strerror (errno), 0);
|
||||
return (1);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (close (mbfi) == -1)
|
||||
{
|
||||
error ("Error in close: %s", strerror (errno), 0);
|
||||
return (1);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (! preserve)
|
||||
|
@ -829,17 +831,17 @@ popmail (mailbox, outfile, preserve, password, reverse_order)
|
|||
{
|
||||
error ("Error from POP server: %s", pop_error, 0);
|
||||
pop_close (server);
|
||||
return (1);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
if (pop_quit (server))
|
||||
{
|
||||
error ("Error from POP server: %s", pop_error, 0);
|
||||
return (1);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
return (0);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -957,3 +959,5 @@ strerror (errnum)
|
|||
|
||||
/* arch-tag: 1c323112-41fe-4fe5-8de9-494de631f73f
|
||||
(do not change this comment) */
|
||||
|
||||
/* movemail.c ends here */
|
||||
|
|
|
@ -55,7 +55,7 @@ char *
|
|||
get_time ()
|
||||
{
|
||||
if (watch_not_started)
|
||||
exit (1); /* call reset_watch first ! */
|
||||
exit (EXIT_FAILURE); /* call reset_watch first ! */
|
||||
EMACS_GET_TIME (TV2);
|
||||
EMACS_SUB_TIME (TV2, TV2, TV1);
|
||||
sprintf (time_string, "%lu.%06lu", (unsigned long)EMACS_SECS (TV2), (unsigned long)EMACS_USECS (TV2));
|
||||
|
@ -94,14 +94,16 @@ main ()
|
|||
puts (get_time ());
|
||||
break;
|
||||
case 'q':
|
||||
exit (0);
|
||||
exit (EXIT_SUCCESS);
|
||||
}
|
||||
/* Anything remaining on the line is ignored. */
|
||||
while (c != '\n' && c != EOF)
|
||||
c = getchar ();
|
||||
}
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* arch-tag: 8db68f7e-2322-4944-a315-dba349bdbf39
|
||||
(do not change this comment) */
|
||||
|
||||
/* profile.c ends here */
|
||||
|
|
|
@ -75,7 +75,7 @@ fatal (s1, s2)
|
|||
char *s1, *s2;
|
||||
{
|
||||
error (s1, s2);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Like malloc but get fatal error if memory is exhausted. */
|
||||
|
@ -279,8 +279,10 @@ main ()
|
|||
printf ("@bye\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
/* arch-tag: ce28f204-1e70-4b34-8210-3d54a5662071
|
||||
(do not change this comment) */
|
||||
|
||||
/* sorted-doc.c ends here */
|
||||
|
|
|
@ -100,11 +100,10 @@ have been corrupted in the files of Emacs, and it will not work.\n",
|
|||
exit (2);
|
||||
}
|
||||
close (fd);
|
||||
#ifdef VMS
|
||||
exit (1); /* On VMS, success is 1. */
|
||||
#endif
|
||||
return (0);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
/* arch-tag: 3a89005d-df98-4c32-aa9f-33570e16a26a
|
||||
(do not change this comment) */
|
||||
|
||||
/* test-distrib.c ends here */
|
||||
|
|
|
@ -111,7 +111,7 @@ lose (msg)
|
|||
const char *msg;
|
||||
{
|
||||
fprintf (stderr, "%s\n", msg);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
void lose_syserr P_ ((const char *msg)) NO_RETURN;
|
||||
|
@ -138,7 +138,7 @@ lose_syserr (msg)
|
|||
const char *msg;
|
||||
{
|
||||
fprintf (stderr, "%s: %s\n", msg, strerror (errno));
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
char *
|
||||
|
@ -199,7 +199,7 @@ main (argc, argv)
|
|||
switch (c)
|
||||
{
|
||||
case 'h':
|
||||
usage (0);
|
||||
usage (EXIT_SUCCESS);
|
||||
break;
|
||||
case 'd':
|
||||
user_prefix = optarg;
|
||||
|
@ -213,11 +213,11 @@ main (argc, argv)
|
|||
max = MAX_SCORES;
|
||||
break;
|
||||
default:
|
||||
usage (1);
|
||||
usage (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (optind+3 != argc)
|
||||
usage (1);
|
||||
usage (EXIT_FAILURE);
|
||||
|
||||
running_suid = (getuid () != geteuid ());
|
||||
|
||||
|
@ -266,7 +266,7 @@ main (argc, argv)
|
|||
lose_syserr ("Failed to write scores file");
|
||||
}
|
||||
unlock_file (scorefile, lockstate);
|
||||
exit (0);
|
||||
exit (EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -531,3 +531,5 @@ unlock_file (filename, state)
|
|||
|
||||
/* arch-tag: 2bf5c52e-4beb-463a-954e-c58b9c64736b
|
||||
(do not change this comment) */
|
||||
|
||||
/* update-game-score.c ends here */
|
||||
|
|
|
@ -73,7 +73,7 @@ main (argc, argv)
|
|||
if ((fp = fopen(file, "r")) == NULL) {
|
||||
fprintf(stderr, "yow: ");
|
||||
perror(file);
|
||||
exit(1);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* initialize random seed */
|
||||
|
@ -82,7 +82,7 @@ main (argc, argv)
|
|||
setup_yow(fp);
|
||||
yow(fp);
|
||||
fclose(fp);
|
||||
return 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
static long len = -1;
|
||||
|
@ -113,7 +113,7 @@ setup_yow(fp)
|
|||
|
||||
if (fseek(fp, 0L, 2) == -1) {
|
||||
perror("yow");
|
||||
exit(1);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
len = ftell(fp) - header_len;
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ yow (fp)
|
|||
offset = rand() % len + header_len;
|
||||
if (fseek(fp, offset, 0) == -1) {
|
||||
perror("yow");
|
||||
exit(1);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Read until SEP, read next line, print it.
|
||||
|
@ -180,3 +180,5 @@ yow (fp)
|
|||
|
||||
/* arch-tag: e40fc0df-bafb-4001-af24-5c883d1c685e
|
||||
(do not change this comment) */
|
||||
|
||||
/* yow.c ends here */
|
||||
|
|
|
@ -1,3 +1,57 @@
|
|||
2004-05-08 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* international/subst-ksc.el: Fix references to utf-translate-cjk
|
||||
into utf-translate-cjk-mode.
|
||||
* international/subst-big5.el: Likewise.
|
||||
* international/subst-gb2312.el: Likewise.
|
||||
* international/subst-jis.el: Likewise.
|
||||
* international/utf-16.el: Likewise.
|
||||
* international/utf-8.el: Likewise.
|
||||
|
||||
2004-05-08 John Wiegley <johnw@newartisans.com>
|
||||
|
||||
* iswitchb.el (iswitchb-use-virtual-buffers): Added support for
|
||||
"virtual buffers" (off by default), which makes it possible to
|
||||
switch to the "virtual" buffers of recently visited files. When a
|
||||
buffer name search fails, and this option is on, iswitchb will
|
||||
look at the list of recently visited files, and permit matching
|
||||
against those names. When the user hits RET on a match, it will
|
||||
revisit that file.
|
||||
(iswitchb-read-buffer): Added two optional arguments, which makes
|
||||
isearchb.el possible.
|
||||
(iswitchb-completions, iswitchb-set-matches, iswitchb-prev-match,
|
||||
iswitchb-next-match): Added support for virtual buffers.
|
||||
|
||||
* isearchb.el: This module extends iswitchb to provide "as you
|
||||
type" buffer selection.
|
||||
|
||||
* textmodes/flyspell.el (flyspell-highlight-incorrect-region):
|
||||
Ignore the read-only property when flyspell highlighting is on.
|
||||
Not ignoring it leads to a series of confusing errors.
|
||||
(flyspell-highlight-duplicate-region): Ignore read-only, as above,
|
||||
but also make sure to call flyspell-incorrect-hook.
|
||||
(flyspell-maybe-correct-transposition): Perform transposition test
|
||||
by bit twiddling a string, rather than using a temp buffer.
|
||||
(flyspell-maybe-correct-doubling): Use a string rather than a temp
|
||||
buffer. This is also the original version of the code, which
|
||||
could not be checked in before due to a previous lack of
|
||||
assignment papers. This version has seen heavy usage on my system
|
||||
for several years now.
|
||||
|
||||
* calendar/cal-bahai.el: New file, which adds support for the
|
||||
Baha'i calendar to Emacs. This calendar is based on a solar year
|
||||
of 19 months of 19 days, with 4 intercalary days. Each year
|
||||
begins on March 21, with the calendar starting in 1844.
|
||||
|
||||
* calendar/cal-menu.el, calendar/calendar.el,
|
||||
calendar/diary-lib.el, calendar/holidays.el: Added support for
|
||||
using cal-bahai.el.
|
||||
|
||||
* eshell/em-glob.el (eshell-glob-initialize): Move initialization
|
||||
of `eshell-glob-chars-regexp' into `eshell-glob-regexp', so that
|
||||
function can be used outside of eshell buffers.
|
||||
(eshell-glob-regexp): Initialize `eshell-glob-chars-regexp' here.
|
||||
|
||||
2004-05-08 Juanma Barranquero <lektu@terra.es>
|
||||
|
||||
* help-fns.el (help-do-arg-highlight): Temporarily set ?\- to be a
|
||||
|
|
507
lisp/calendar/cal-bahai.el
Normal file
507
lisp/calendar/cal-bahai.el
Normal file
|
@ -0,0 +1,507 @@
|
|||
;;; cal-bahai.el --- calendar functions for the Baha'i calendar.
|
||||
|
||||
;; Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: John Wiegley <johnw@gnu.org>
|
||||
;; Keywords: calendar
|
||||
;; Human-Keywords: Baha'i calendar, Baha'i, Bahai, calendar, diary
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 2, or (at your option)
|
||||
;; any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs; see the file COPYING. If not, write to the
|
||||
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
;; Boston, MA 02111-1307, USA.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This collection of functions implements the features of calendar.el
|
||||
;; and diary.el that deal with the Baha'i calendar.
|
||||
|
||||
;; The Baha'i (http://www.bahai.org) calendar system is based on a
|
||||
;; solar cycle of 19 months with 19 days each. The four remaining
|
||||
;; "intercalary" days are called the Ayyam-i-Ha (days of Ha), and are
|
||||
;; placed between the 18th and 19th months. They are meant as a time
|
||||
;; of festivals preceding the 19th month, which is the month of
|
||||
;; fasting. In Gregorian leap years, there are 5 of these days (Ha
|
||||
;; has the numerical value of 5 in the arabic abjad, or
|
||||
;; letter-to-number, reckoning).
|
||||
|
||||
;; Each month is named after an attribute of God, as are the 19 days
|
||||
;; -- which have the same names as the months. There is also a name
|
||||
;; for each year in every 19 year cycle. These cycles are called
|
||||
;; Vahids. A cycle of 19 Vahids (361 years) is called a Kullu-Shay,
|
||||
;; which means "all things".
|
||||
|
||||
;; The calendar was named the "Badi calendar" by its author, the Bab.
|
||||
;; It uses a week of seven days, corresponding to the Gregorian week,
|
||||
;; each of which has its own name, again patterned after the
|
||||
;; attributes of God.
|
||||
|
||||
;; Note: The days of Ayyam-i-Ha are encoded as zero and negative
|
||||
;; offsets from the first day of the final month. So, (19 -3 157) is
|
||||
;; the first day of Ayyam-i-Ha, in the year 157 BE.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'cal-julian)
|
||||
|
||||
(defvar bahai-calendar-month-name-array
|
||||
["Baha" "Jalal" "Jamal" "`Azamat" "Nur" "Rahmat" "Kalimat" "Kamal"
|
||||
"Asma" "`Izzat" "Mashiyyat" "`Ilm" "Qudrat" "Qawl" "Masa'il"
|
||||
"Sharaf" "Sultan" "Mulk" "`Ala"])
|
||||
|
||||
(defvar calendar-bahai-epoch (calendar-absolute-from-gregorian '(3 21 1844))
|
||||
"Absolute date of start of Baha'i calendar = March 19, 622 A.D. (Julian).")
|
||||
|
||||
(defun bahai-calendar-leap-year-p (year)
|
||||
"True if YEAR is a leap year on the Baha'i calendar."
|
||||
(calendar-leap-year-p (+ year 1844)))
|
||||
|
||||
(defvar bahai-calendar-leap-base
|
||||
(+ (/ 1844 4) (- (/ 1844 100)) (/ 1844 400)))
|
||||
|
||||
(defun calendar-absolute-from-bahai (date)
|
||||
"Compute absolute date from Baha'i date DATE.
|
||||
The absolute date is the number of days elapsed since the (imaginary)
|
||||
Gregorian date Sunday, December 31, 1 BC."
|
||||
(let* ((month (extract-calendar-month date))
|
||||
(day (extract-calendar-day date))
|
||||
(year (extract-calendar-year date))
|
||||
(prior-years (+ (1- year) 1844))
|
||||
(leap-days (- (+ (/ prior-years 4) ; Leap days in prior years.
|
||||
(- (/ prior-years 100))
|
||||
(/ prior-years 400))
|
||||
bahai-calendar-leap-base)))
|
||||
(+ (1- calendar-bahai-epoch) ; Days before epoch
|
||||
(* 365 (1- year)) ; Days in prior years.
|
||||
leap-days
|
||||
(calendar-sum m 1 (< m month) 19)
|
||||
(if (= month 19) 4 0)
|
||||
day))) ; Days so far this month.
|
||||
|
||||
(defun calendar-bahai-from-absolute (date)
|
||||
"Baha'i year corresponding to the absolute DATE."
|
||||
(if (< date calendar-bahai-epoch)
|
||||
(list 0 0 0) ;; pre-Baha'i date
|
||||
(let* ((greg (calendar-gregorian-from-absolute date))
|
||||
(year (+ (- (extract-calendar-year greg) 1844)
|
||||
(if (or (> (extract-calendar-month greg) 3)
|
||||
(and (= (extract-calendar-month greg) 3)
|
||||
(>= (extract-calendar-day greg) 21)))
|
||||
1 0)))
|
||||
(month ;; Search forward from Baha.
|
||||
(1+ (calendar-sum m 1
|
||||
(> date
|
||||
(calendar-absolute-from-bahai
|
||||
(list m 19 year)))
|
||||
1)))
|
||||
(day ;; Calculate the day by subtraction.
|
||||
(- date
|
||||
(1- (calendar-absolute-from-bahai (list month 1 year))))))
|
||||
(list month day year))))
|
||||
|
||||
(defun calendar-bahai-date-string (&optional date)
|
||||
"String of Baha'i date of Gregorian DATE.
|
||||
Defaults to today's date if DATE is not given."
|
||||
(let* ((bahai-date (calendar-bahai-from-absolute
|
||||
(calendar-absolute-from-gregorian
|
||||
(or date (calendar-current-date)))))
|
||||
(y (extract-calendar-year bahai-date))
|
||||
(m (extract-calendar-month bahai-date))
|
||||
(d (extract-calendar-day bahai-date)))
|
||||
(let ((monthname
|
||||
(if (and (= m 19)
|
||||
(<= d 0))
|
||||
"Ayyam-i-Ha"
|
||||
(aref bahai-calendar-month-name-array (1- m))))
|
||||
(day (int-to-string
|
||||
(if (<= d 0)
|
||||
(if (bahai-calendar-leap-year-p y)
|
||||
(+ d 5)
|
||||
(+ d 4))
|
||||
d)))
|
||||
(dayname nil)
|
||||
(month (int-to-string m))
|
||||
(year (int-to-string y)))
|
||||
(mapconcat 'eval calendar-date-display-form ""))))
|
||||
|
||||
(defun calendar-print-bahai-date ()
|
||||
"Show the Baha'i calendar equivalent of the selected date."
|
||||
(interactive)
|
||||
(message "Baha'i date: %s"
|
||||
(calendar-bahai-date-string (calendar-cursor-to-date t))))
|
||||
|
||||
(defun calendar-goto-bahai-date (date &optional noecho)
|
||||
"Move cursor to Baha'i date DATE.
|
||||
Echo Baha'i date unless NOECHO is t."
|
||||
(interactive (bahai-prompt-for-date))
|
||||
(calendar-goto-date (calendar-gregorian-from-absolute
|
||||
(calendar-absolute-from-bahai date)))
|
||||
(or noecho (calendar-print-bahai-date)))
|
||||
|
||||
(defun bahai-prompt-for-date ()
|
||||
"Ask for a Baha'i date."
|
||||
(let* ((today (calendar-current-date))
|
||||
(year (calendar-read
|
||||
"Baha'i calendar year (not 0): "
|
||||
'(lambda (x) (/= x 0))
|
||||
(int-to-string
|
||||
(extract-calendar-year
|
||||
(calendar-bahai-from-absolute
|
||||
(calendar-absolute-from-gregorian today))))))
|
||||
(completion-ignore-case t)
|
||||
(month (cdr (assoc
|
||||
(completing-read
|
||||
"Baha'i calendar month name: "
|
||||
(mapcar 'list
|
||||
(append bahai-calendar-month-name-array nil))
|
||||
nil t)
|
||||
(calendar-make-alist bahai-calendar-month-name-array
|
||||
1))))
|
||||
(day (calendar-read "Baha'i calendar day (1-19): "
|
||||
'(lambda (x) (and (< 0 x) (<= x 19))))))
|
||||
(list (list month day year))))
|
||||
|
||||
(defun diary-bahai-date ()
|
||||
"Baha'i calendar equivalent of date diary entry."
|
||||
(format "Baha'i date: %s" (calendar-bahai-date-string date)))
|
||||
|
||||
(defun holiday-bahai (month day string)
|
||||
"Holiday on MONTH, DAY (Baha'i) called STRING.
|
||||
If MONTH, DAY (Baha'i) is visible, the value returned is corresponding
|
||||
Gregorian date in the form of the list (((month day year) STRING)). Returns
|
||||
nil if it is not visible in the current calendar window."
|
||||
(let* ((bahai-date (calendar-bahai-from-absolute
|
||||
(calendar-absolute-from-gregorian
|
||||
(list displayed-month 15 displayed-year))))
|
||||
(m (extract-calendar-month bahai-date))
|
||||
(y (extract-calendar-year bahai-date))
|
||||
(date))
|
||||
(if (< m 1)
|
||||
nil ;; Baha'i calendar doesn't apply.
|
||||
(increment-calendar-month m y (- 10 month))
|
||||
(if (> m 7) ;; Baha'i date might be visible
|
||||
(let ((date (calendar-gregorian-from-absolute
|
||||
(calendar-absolute-from-bahai (list month day y)))))
|
||||
(if (calendar-date-is-visible-p date)
|
||||
(list (list date string))))))))
|
||||
|
||||
(defun list-bahai-diary-entries ()
|
||||
"Add any Baha'i date entries from the diary file to `diary-entries-list'.
|
||||
Baha'i date diary entries must be prefaced by an
|
||||
`bahai-diary-entry-symbol' (normally a `B'). The same diary date
|
||||
forms govern the style of the Baha'i calendar entries, except that the
|
||||
Baha'i month names must be given numerically. The Baha'i months are
|
||||
numbered from 1 to 19 with Baha being 1 and 19 being `Ala. If a
|
||||
Baha'i date diary entry begins with a `diary-nonmarking-symbol', the
|
||||
entry will appear in the diary listing, but will not be marked in the
|
||||
calendar. This function is provided for use with the
|
||||
`nongregorian-diary-listing-hook'."
|
||||
(if (< 0 number)
|
||||
(let ((buffer-read-only nil)
|
||||
(diary-modified (buffer-modified-p))
|
||||
(gdate original-date)
|
||||
(mark (regexp-quote diary-nonmarking-symbol)))
|
||||
(calendar-for-loop i from 1 to number do
|
||||
(let* ((d diary-date-forms)
|
||||
(bdate (calendar-bahai-from-absolute
|
||||
(calendar-absolute-from-gregorian gdate)))
|
||||
(month (extract-calendar-month bdate))
|
||||
(day (extract-calendar-day bdate))
|
||||
(year (extract-calendar-year bdate)))
|
||||
(while d
|
||||
(let*
|
||||
((date-form (if (equal (car (car d)) 'backup)
|
||||
(cdr (car d))
|
||||
(car d)))
|
||||
(backup (equal (car (car d)) 'backup))
|
||||
(dayname
|
||||
(concat
|
||||
(calendar-day-name gdate) "\\|"
|
||||
(substring (calendar-day-name gdate) 0 3) ".?"))
|
||||
(calendar-month-name-array
|
||||
bahai-calendar-month-name-array)
|
||||
(monthname
|
||||
(concat
|
||||
"\\*\\|"
|
||||
(calendar-month-name month)))
|
||||
(month (concat "\\*\\|0*" (int-to-string month)))
|
||||
(day (concat "\\*\\|0*" (int-to-string day)))
|
||||
(year
|
||||
(concat
|
||||
"\\*\\|0*" (int-to-string year)
|
||||
(if abbreviated-calendar-year
|
||||
(concat "\\|" (int-to-string (% year 100)))
|
||||
"")))
|
||||
(regexp
|
||||
(concat
|
||||
"\\(\\`\\|\^M\\|\n\\)" mark "?"
|
||||
(regexp-quote bahai-diary-entry-symbol)
|
||||
"\\("
|
||||
(mapconcat 'eval date-form "\\)\\(")
|
||||
"\\)"))
|
||||
(case-fold-search t))
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward regexp nil t)
|
||||
(if backup (re-search-backward "\\<" nil t))
|
||||
(if (and (or (char-equal (preceding-char) ?\^M)
|
||||
(char-equal (preceding-char) ?\n))
|
||||
(not (looking-at " \\|\^I")))
|
||||
;; Diary entry that consists only of date.
|
||||
(backward-char 1)
|
||||
;; Found a nonempty diary entry--make it visible and
|
||||
;; add it to the list.
|
||||
(let ((entry-start (point))
|
||||
(date-start))
|
||||
(re-search-backward "\^M\\|\n\\|\\`")
|
||||
(setq date-start (point))
|
||||
(re-search-forward "\^M\\|\n" nil t 2)
|
||||
(while (looking-at " \\|\^I")
|
||||
(re-search-forward "\^M\\|\n" nil t))
|
||||
(backward-char 1)
|
||||
(subst-char-in-region date-start (point) ?\^M ?\n t)
|
||||
(add-to-diary-list
|
||||
gdate
|
||||
(buffer-substring-no-properties entry-start (point))
|
||||
(buffer-substring-no-properties
|
||||
(1+ date-start) (1- entry-start)))))))
|
||||
(setq d (cdr d))))
|
||||
(setq gdate
|
||||
(calendar-gregorian-from-absolute
|
||||
(1+ (calendar-absolute-from-gregorian gdate)))))
|
||||
(set-buffer-modified-p diary-modified))
|
||||
(goto-char (point-min))))
|
||||
|
||||
(defun mark-bahai-diary-entries ()
|
||||
"Mark days in the calendar window that have Baha'i date diary entries.
|
||||
Each entry in diary-file (or included files) visible in the calendar
|
||||
window is marked. Baha'i date entries are prefaced by a
|
||||
bahai-diary-entry-symbol \(normally a B`I'). The same
|
||||
diary-date-forms govern the style of the Baha'i calendar entries,
|
||||
except that the Baha'i month names must be spelled in full. The
|
||||
Baha'i months are numbered from 1 to 12 with Baha being 1 and 12 being
|
||||
`Ala. Baha'i date diary entries that begin with a
|
||||
diary-nonmarking-symbol will not be marked in the calendar. This
|
||||
function is provided for use as part of the
|
||||
nongregorian-diary-marking-hook."
|
||||
(let ((d diary-date-forms))
|
||||
(while d
|
||||
(let*
|
||||
((date-form (if (equal (car (car d)) 'backup)
|
||||
(cdr (car d))
|
||||
(car d)));; ignore 'backup directive
|
||||
(dayname (diary-name-pattern calendar-day-name-array))
|
||||
(monthname
|
||||
(concat
|
||||
(diary-name-pattern bahai-calendar-month-name-array t)
|
||||
"\\|\\*"))
|
||||
(month "[0-9]+\\|\\*")
|
||||
(day "[0-9]+\\|\\*")
|
||||
(year "[0-9]+\\|\\*")
|
||||
(l (length date-form))
|
||||
(d-name-pos (- l (length (memq 'dayname date-form))))
|
||||
(d-name-pos (if (/= l d-name-pos) (+ 2 d-name-pos)))
|
||||
(m-name-pos (- l (length (memq 'monthname date-form))))
|
||||
(m-name-pos (if (/= l m-name-pos) (+ 2 m-name-pos)))
|
||||
(d-pos (- l (length (memq 'day date-form))))
|
||||
(d-pos (if (/= l d-pos) (+ 2 d-pos)))
|
||||
(m-pos (- l (length (memq 'month date-form))))
|
||||
(m-pos (if (/= l m-pos) (+ 2 m-pos)))
|
||||
(y-pos (- l (length (memq 'year date-form))))
|
||||
(y-pos (if (/= l y-pos) (+ 2 y-pos)))
|
||||
(regexp
|
||||
(concat
|
||||
"\\(\\`\\|\^M\\|\n\\)"
|
||||
(regexp-quote bahai-diary-entry-symbol)
|
||||
"\\("
|
||||
(mapconcat 'eval date-form "\\)\\(")
|
||||
"\\)"))
|
||||
(case-fold-search t))
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward regexp nil t)
|
||||
(let* ((dd-name
|
||||
(if d-name-pos
|
||||
(buffer-substring
|
||||
(match-beginning d-name-pos)
|
||||
(match-end d-name-pos))))
|
||||
(mm-name
|
||||
(if m-name-pos
|
||||
(buffer-substring
|
||||
(match-beginning m-name-pos)
|
||||
(match-end m-name-pos))))
|
||||
(mm (string-to-int
|
||||
(if m-pos
|
||||
(buffer-substring
|
||||
(match-beginning m-pos)
|
||||
(match-end m-pos))
|
||||
"")))
|
||||
(dd (string-to-int
|
||||
(if d-pos
|
||||
(buffer-substring
|
||||
(match-beginning d-pos)
|
||||
(match-end d-pos))
|
||||
"")))
|
||||
(y-str (if y-pos
|
||||
(buffer-substring
|
||||
(match-beginning y-pos)
|
||||
(match-end y-pos))))
|
||||
(yy (if (not y-str)
|
||||
0
|
||||
(if (and (= (length y-str) 2)
|
||||
abbreviated-calendar-year)
|
||||
(let* ((current-y
|
||||
(extract-calendar-year
|
||||
(calendar-bahai-from-absolute
|
||||
(calendar-absolute-from-gregorian
|
||||
(calendar-current-date)))))
|
||||
(y (+ (string-to-int y-str)
|
||||
(* 100 (/ current-y 100)))))
|
||||
(if (> (- y current-y) 50)
|
||||
(- y 100)
|
||||
(if (> (- current-y y) 50)
|
||||
(+ y 100)
|
||||
y)))
|
||||
(string-to-int y-str)))))
|
||||
(if dd-name
|
||||
(mark-calendar-days-named
|
||||
(cdr (assoc-ignore-case (substring dd-name 0 3)
|
||||
(calendar-make-alist
|
||||
calendar-day-name-array
|
||||
0
|
||||
'(lambda (x) (substring x 0 3))))))
|
||||
(if mm-name
|
||||
(if (string-equal mm-name "*")
|
||||
(setq mm 0)
|
||||
(setq mm
|
||||
(cdr (assoc-ignore-case
|
||||
mm-name
|
||||
(calendar-make-alist
|
||||
bahai-calendar-month-name-array))))))
|
||||
(mark-bahai-calendar-date-pattern mm dd yy)))))
|
||||
(setq d (cdr d)))))
|
||||
|
||||
(defun mark-bahai-calendar-date-pattern (month day year)
|
||||
"Mark dates in calendar window that conform to Baha'i date MONTH/DAY/YEAR.
|
||||
A value of 0 in any position is a wildcard."
|
||||
(save-excursion
|
||||
(set-buffer calendar-buffer)
|
||||
(if (and (/= 0 month) (/= 0 day))
|
||||
(if (/= 0 year)
|
||||
;; Fully specified Baha'i date.
|
||||
(let ((date (calendar-gregorian-from-absolute
|
||||
(calendar-absolute-from-bahai
|
||||
(list month day year)))))
|
||||
(if (calendar-date-is-visible-p date)
|
||||
(mark-visible-calendar-date date)))
|
||||
;; Month and day in any year--this taken from the holiday stuff.
|
||||
(let* ((bahai-date (calendar-bahai-from-absolute
|
||||
(calendar-absolute-from-gregorian
|
||||
(list displayed-month 15 displayed-year))))
|
||||
(m (extract-calendar-month bahai-date))
|
||||
(y (extract-calendar-year bahai-date))
|
||||
(date))
|
||||
(if (< m 1)
|
||||
nil;; Baha'i calendar doesn't apply.
|
||||
(increment-calendar-month m y (- 10 month))
|
||||
(if (> m 7);; Baha'i date might be visible
|
||||
(let ((date (calendar-gregorian-from-absolute
|
||||
(calendar-absolute-from-bahai
|
||||
(list month day y)))))
|
||||
(if (calendar-date-is-visible-p date)
|
||||
(mark-visible-calendar-date date)))))))
|
||||
;; Not one of the simple cases--check all visible dates for match.
|
||||
;; Actually, the following code takes care of ALL of the cases, but
|
||||
;; it's much too slow to be used for the simple (common) cases.
|
||||
(let ((m displayed-month)
|
||||
(y displayed-year)
|
||||
(first-date)
|
||||
(last-date))
|
||||
(increment-calendar-month m y -1)
|
||||
(setq first-date
|
||||
(calendar-absolute-from-gregorian
|
||||
(list m 1 y)))
|
||||
(increment-calendar-month m y 2)
|
||||
(setq last-date
|
||||
(calendar-absolute-from-gregorian
|
||||
(list m (calendar-last-day-of-month m y) y)))
|
||||
(calendar-for-loop date from first-date to last-date do
|
||||
(let* ((b-date (calendar-bahai-from-absolute date))
|
||||
(i-month (extract-calendar-month b-date))
|
||||
(i-day (extract-calendar-day b-date))
|
||||
(i-year (extract-calendar-year b-date)))
|
||||
(and (or (zerop month)
|
||||
(= month i-month))
|
||||
(or (zerop day)
|
||||
(= day i-day))
|
||||
(or (zerop year)
|
||||
(= year i-year))
|
||||
(mark-visible-calendar-date
|
||||
(calendar-gregorian-from-absolute date)))))))))
|
||||
|
||||
(defun insert-bahai-diary-entry (arg)
|
||||
"Insert a diary entry.
|
||||
For the Baha'i date corresponding to the date indicated by point.
|
||||
Prefix arg will make the entry nonmarking."
|
||||
(interactive "P")
|
||||
(let* ((calendar-month-name-array bahai-calendar-month-name-array))
|
||||
(make-diary-entry
|
||||
(concat
|
||||
bahai-diary-entry-symbol
|
||||
(calendar-date-string
|
||||
(calendar-bahai-from-absolute
|
||||
(calendar-absolute-from-gregorian
|
||||
(calendar-cursor-to-date t)))
|
||||
nil t))
|
||||
arg)))
|
||||
|
||||
(defun insert-monthly-bahai-diary-entry (arg)
|
||||
"Insert a monthly diary entry.
|
||||
For the day of the Baha'i month corresponding to the date indicated by point.
|
||||
Prefix arg will make the entry nonmarking."
|
||||
(interactive "P")
|
||||
(let* ((calendar-date-display-form
|
||||
(if european-calendar-style '(day " * ") '("* " day )))
|
||||
(calendar-month-name-array bahai-calendar-month-name-array))
|
||||
(make-diary-entry
|
||||
(concat
|
||||
bahai-diary-entry-symbol
|
||||
(calendar-date-string
|
||||
(calendar-bahai-from-absolute
|
||||
(calendar-absolute-from-gregorian
|
||||
(calendar-cursor-to-date t)))))
|
||||
arg)))
|
||||
|
||||
(defun insert-yearly-bahai-diary-entry (arg)
|
||||
"Insert an annual diary entry.
|
||||
For the day of the Baha'i year corresponding to the date indicated by point.
|
||||
Prefix arg will make the entry nonmarking."
|
||||
(interactive "P")
|
||||
(let* ((calendar-date-display-form
|
||||
(if european-calendar-style
|
||||
'(day " " monthname)
|
||||
'(monthname " " day)))
|
||||
(calendar-month-name-array bahai-calendar-month-name-array))
|
||||
(make-diary-entry
|
||||
(concat
|
||||
bahai-diary-entry-symbol
|
||||
(calendar-date-string
|
||||
(calendar-bahai-from-absolute
|
||||
(calendar-absolute-from-gregorian
|
||||
(calendar-cursor-to-date t)))))
|
||||
arg)))
|
||||
|
||||
(provide 'cal-bahai)
|
||||
|
||||
;;; arch-tag: c1cb1d67-862a-4264-a01c-41cb4df01f14
|
||||
;;; cal-bahai.el ends here
|
|
@ -66,6 +66,8 @@
|
|||
'("Insert Hebrew" . calendar-mouse-insert-hebrew-diary-entry))
|
||||
(define-key calendar-mode-map [menu-bar diary isl]
|
||||
'("Insert Islamic" . calendar-mouse-insert-islamic-diary-entry))
|
||||
(define-key calendar-mode-map [menu-bar diary baha]
|
||||
'("Insert Baha'i" . calendar-mouse-insert-bahai-diary-entry))
|
||||
(define-key calendar-mode-map [menu-bar diary cyc]
|
||||
'("Insert Cyclic" . insert-cyclic-diary-entry))
|
||||
(define-key calendar-mode-map [menu-bar diary blk]
|
||||
|
@ -109,6 +111,8 @@
|
|||
'("Julian Date" . calendar-goto-julian-date))
|
||||
(define-key calendar-mode-map [menu-bar goto islamic]
|
||||
'("Islamic Date" . calendar-goto-islamic-date))
|
||||
(define-key calendar-mode-map [menu-bar goto persian]
|
||||
'("Baha'i Date" . calendar-goto-bahai-date))
|
||||
(define-key calendar-mode-map [menu-bar goto persian]
|
||||
'("Persian Date" . calendar-goto-persian-date))
|
||||
(define-key calendar-mode-map [menu-bar goto hebrew]
|
||||
|
@ -288,6 +292,19 @@ ERROR is t, otherwise just returns nil."
|
|||
'("Yearly" . insert-yearly-islamic-diary-entry))))))
|
||||
(and islamic-selection (call-interactively islamic-selection))))
|
||||
|
||||
(defun calendar-mouse-insert-bahai-diary-entry (event)
|
||||
"Pop up menu to insert an Baha'i-date diary entry."
|
||||
(interactive "e")
|
||||
(let ((bahai-selection
|
||||
(x-popup-menu
|
||||
event
|
||||
(list "Baha'i insert menu"
|
||||
(list (calendar-bahai-date-string (calendar-cursor-to-date))
|
||||
'("One time" . insert-bahai-diary-entry)
|
||||
'("Monthly" . insert-monthly-bahai-diary-entry)
|
||||
'("Yearly" . insert-yearly-bahai-diary-entry))))))
|
||||
(and bahai-selection (call-interactively bahai-selection))))
|
||||
|
||||
(defun calendar-mouse-sunrise/sunset ()
|
||||
"Show sunrise/sunset times for mouse-selected date."
|
||||
(interactive)
|
||||
|
@ -496,7 +513,9 @@ The output is in landscape format, one month to a page."
|
|||
(list (format "Hebrew date (before sunset): %s"
|
||||
(calendar-hebrew-date-string date)))
|
||||
(list (format "Persian date: %s"
|
||||
(calendar-persian-date-string date))))
|
||||
(calendar-persian-date-string date)))
|
||||
(list (format "Baha'i date (before sunset): %s"
|
||||
(calendar-bahai-date-string date))))
|
||||
(let ((i (calendar-islamic-date-string date)))
|
||||
(if (not (string-equal i ""))
|
||||
(list (list (format "Islamic date (before sunset): %s" i)))))
|
||||
|
|
|
@ -26,26 +26,29 @@
|
|||
|
||||
;;; Commentary:
|
||||
|
||||
;; This collection of functions implements a calendar window. It generates a
|
||||
;; calendar for the current month, together with the previous and coming
|
||||
;; months, or for any other three-month period. The calendar can be scrolled
|
||||
;; forward and backward in the window to show months in the past or future;
|
||||
;; the cursor can move forward and backward by days, weeks, or months, making
|
||||
;; it possible, for instance, to jump to the date a specified number of days,
|
||||
;; weeks, or months from the date under the cursor. The user can display a
|
||||
;; list of holidays and other notable days for the period shown; the notable
|
||||
;; days can be marked on the calendar, if desired. The user can also specify
|
||||
;; that dates having corresponding diary entries (in a file that the user
|
||||
;; specifies) be marked; the diary entries for any date can be viewed in a
|
||||
;; separate window. The diary and the notable days can be viewed
|
||||
;; independently of the calendar. Dates can be translated from the (usual)
|
||||
;; Gregorian calendar to the day of the year/days remaining in year, to the
|
||||
;; ISO commercial calendar, to the Julian (old style) calendar, to the Hebrew
|
||||
;; calendar, to the Islamic calendar, to the French Revolutionary calendar, to
|
||||
;; the Mayan calendar, to the Chinese calendar, to the Coptic calendar, to the
|
||||
;; Ethiopic calendar, and to the astronomical (Julian) day number. When
|
||||
;; floating point is available, times of sunrise/sunset can be displayed, as
|
||||
;; can the phases of the moon. Appointment notification for diary entries is
|
||||
;; This collection of functions implements a calendar window. It
|
||||
;; generates a calendar for the current month, together with the
|
||||
;; previous and coming months, or for any other three-month period.
|
||||
;; The calendar can be scrolled forward and backward in the window to
|
||||
;; show months in the past or future; the cursor can move forward and
|
||||
;; backward by days, weeks, or months, making it possible, for
|
||||
;; instance, to jump to the date a specified number of days, weeks, or
|
||||
;; months from the date under the cursor. The user can display a list
|
||||
;; of holidays and other notable days for the period shown; the
|
||||
;; notable days can be marked on the calendar, if desired. The user
|
||||
;; can also specify that dates having corresponding diary entries (in
|
||||
;; a file that the user specifies) be marked; the diary entries for
|
||||
;; any date can be viewed in a separate window. The diary and the
|
||||
;; notable days can be viewed independently of the calendar. Dates
|
||||
;; can be translated from the (usual) Gregorian calendar to the day of
|
||||
;; the year/days remaining in year, to the ISO commercial calendar, to
|
||||
;; the Julian (old style) calendar, to the Hebrew calendar, to the
|
||||
;; Islamic calendar, to the Baha'i calendar, to the French
|
||||
;; Revolutionary calendar, to the Mayan calendar, to the Chinese
|
||||
;; calendar, to the Coptic calendar, to the Ethiopic calendar, and to
|
||||
;; the astronomical (Julian) day number. When floating point is
|
||||
;; available, times of sunrise/sunset can be displayed, as can the
|
||||
;; phases of the moon. Appointment notification for diary entries is
|
||||
;; available. Calendar printing via LaTeX is available.
|
||||
|
||||
;; The following files are part of the calendar/diary code:
|
||||
|
@ -56,6 +59,7 @@
|
|||
;; cal-dst.el Daylight savings time rules
|
||||
;; cal-hebrew.el Hebrew calendar
|
||||
;; cal-islam.el Islamic calendar
|
||||
;; cal-bahai.el Baha'i calendar
|
||||
;; cal-iso.el ISO calendar
|
||||
;; cal-julian.el Julian/astronomical calendars
|
||||
;; cal-mayan.el Mayan calendars
|
||||
|
@ -316,6 +320,16 @@ calendar."
|
|||
:type 'function
|
||||
:group 'diary)
|
||||
|
||||
;;;###autoload
|
||||
(defcustom all-bahai-calendar-holidays nil
|
||||
"*If nil, show only major holidays from the Baha'i calendar.
|
||||
These are the days on which work and school must be suspended.
|
||||
|
||||
If t, show all the holidays that would appear in a complete Baha'i
|
||||
calendar."
|
||||
:type 'boolean
|
||||
:group 'holidays)
|
||||
|
||||
;;;###autoload
|
||||
(defcustom calendar-load-hook nil
|
||||
"*List of functions to be called after the calendar is first loaded.
|
||||
|
@ -463,21 +477,23 @@ Diary entries can be based on Lisp sexps. For example, the diary entry
|
|||
|
||||
%%(diary-block 11 1 1990 11 10 1990) Vacation
|
||||
|
||||
causes the diary entry \"Vacation\" to appear from November 1 through November
|
||||
10, 1990. Other functions available are `diary-float', `diary-anniversary',
|
||||
`diary-cyclic', `diary-day-of-year', `diary-iso-date', `diary-french-date',
|
||||
`diary-hebrew-date', `diary-islamic-date', `diary-mayan-date',
|
||||
causes the diary entry \"Vacation\" to appear from November 1 through
|
||||
November 10, 1990. Other functions available are `diary-float',
|
||||
`diary-anniversary', `diary-cyclic', `diary-day-of-year',
|
||||
`diary-iso-date', `diary-french-date', `diary-hebrew-date',
|
||||
`diary-islamic-date', `diary-bahai-date', `diary-mayan-date',
|
||||
`diary-chinese-date', `diary-coptic-date', `diary-ethiopic-date',
|
||||
`diary-persian-date', `diary-yahrzeit', `diary-sunrise-sunset',
|
||||
`diary-phases-of-moon', `diary-parasha', `diary-omer', `diary-rosh-hodesh',
|
||||
and `diary-sabbath-candles'. See the documentation for the function
|
||||
`list-sexp-diary-entries' for more details.
|
||||
`diary-phases-of-moon', `diary-parasha', `diary-omer',
|
||||
`diary-rosh-hodesh', and `diary-sabbath-candles'. See the
|
||||
documentation for the function `list-sexp-diary-entries' for more
|
||||
details.
|
||||
|
||||
Diary entries based on the Hebrew and/or the Islamic calendar are also
|
||||
possible, but because these are somewhat slow, they are ignored
|
||||
unless you set the `nongregorian-diary-listing-hook' and the
|
||||
`nongregorian-diary-marking-hook' appropriately. See the documentation
|
||||
for these functions for details.
|
||||
Diary entries based on the Hebrew, the Islamic and/or the Baha'i
|
||||
calendar are also possible, but because these are somewhat slow, they
|
||||
are ignored unless you set the `nongregorian-diary-listing-hook' and
|
||||
the `nongregorian-diary-marking-hook' appropriately. See the
|
||||
documentation for these functions for details.
|
||||
|
||||
Diary files can contain directives to include the contents of other files; for
|
||||
details, see the documentation for the variable `list-diary-entries-hook'."
|
||||
|
@ -502,6 +518,12 @@ details, see the documentation for the variable `list-diary-entries-hook'."
|
|||
:type 'string
|
||||
:group 'diary)
|
||||
|
||||
;;;###autoload
|
||||
(defcustom bahai-diary-entry-symbol "B"
|
||||
"*Symbol indicating a diary entry according to the Baha'i calendar."
|
||||
:type 'string
|
||||
:group 'diary)
|
||||
|
||||
;;;###autoload
|
||||
(defcustom diary-include-string "#include"
|
||||
"*The string indicating inclusion of another file of diary entries.
|
||||
|
@ -554,8 +576,9 @@ See the documentation for the function `list-sexp-diary-entries'."
|
|||
;;;###autoload
|
||||
(defcustom abbreviated-calendar-year t
|
||||
"*Interpret a two-digit year DD in a diary entry as either 19DD or 20DD.
|
||||
For the Gregorian calendar; similarly for the Hebrew and Islamic calendars.
|
||||
If this variable is nil, years must be written in full."
|
||||
For the Gregorian calendar; similarly for the Hebrew, Islamic and
|
||||
Baha'i calendars. If this variable is nil, years must be written in
|
||||
full."
|
||||
:type 'boolean
|
||||
:group 'diary)
|
||||
|
||||
|
@ -796,12 +819,15 @@ diary buffer, set the variable `diary-list-include-blanks' to t."
|
|||
;;;###autoload
|
||||
(defcustom nongregorian-diary-listing-hook nil
|
||||
"*List of functions called for listing diary file and included files.
|
||||
As the files are processed for diary entries, these functions are used to cull
|
||||
relevant entries. You can use either or both of `list-hebrew-diary-entries'
|
||||
and `list-islamic-diary-entries'. The documentation for these functions
|
||||
As the files are processed for diary entries, these functions are used
|
||||
to cull relevant entries. You can use either or both of
|
||||
`list-hebrew-diary-entries', `list-islamic-diary-entries' and
|
||||
`list-bahai-diary-entries'. The documentation for these functions
|
||||
describes the style of such diary entries."
|
||||
:type 'hook
|
||||
:options '(list-hebrew-diary-entries list-islamic-diary-entries)
|
||||
:options '(list-hebrew-diary-entries
|
||||
list-islamic-diary-entries
|
||||
list-bahai-diary-entries)
|
||||
:group 'diary)
|
||||
|
||||
;;;###autoload
|
||||
|
@ -825,12 +851,15 @@ function `include-other-diary-files' as part of `list-diary-entries-hook'."
|
|||
;;;###autoload
|
||||
(defcustom nongregorian-diary-marking-hook nil
|
||||
"*List of functions called for marking diary file and included files.
|
||||
As the files are processed for diary entries, these functions are used to cull
|
||||
relevant entries. You can use either or both of `mark-hebrew-diary-entries'
|
||||
and `mark-islamic-diary-entries'. The documentation for these functions
|
||||
As the files are processed for diary entries, these functions are used
|
||||
to cull relevant entries. You can use either or both of
|
||||
`mark-hebrew-diary-entries', `mark-islamic-diary-entries' and
|
||||
`mark-bahai-diary-entries'. The documentation for these functions
|
||||
describes the style of such diary entries."
|
||||
:type 'hook
|
||||
:options '(mark-hebrew-diary-entries mark-islamic-diary-entries)
|
||||
:options '(mark-hebrew-diary-entries
|
||||
mark-islamic-diary-entries
|
||||
mark-bahai-diary-entries)
|
||||
:group 'diary)
|
||||
|
||||
;;;###autoload
|
||||
|
@ -1067,6 +1096,48 @@ See the documentation for `calendar-holidays' for details."
|
|||
:type 'sexp
|
||||
:group 'holidays)
|
||||
|
||||
;;;###autoload
|
||||
(put 'bahai-holidays 'risky-local-variable t)
|
||||
;;;###autoload
|
||||
(defcustom bahai-holidays
|
||||
'((holiday-fixed
|
||||
3 21
|
||||
(format "Baha'i New Year (Naw-Ruz) %d" (- displayed-year (1- 1844))))
|
||||
(holiday-fixed 4 21 "First Day of Ridvan")
|
||||
(if all-bahai-calendar-holidays
|
||||
(holiday-fixed 4 22 "Second Day of Ridvan"))
|
||||
(if all-bahai-calendar-holidays
|
||||
(holiday-fixed 4 23 "Third Day of Ridvan"))
|
||||
(if all-bahai-calendar-holidays
|
||||
(holiday-fixed 4 24 "Fourth Day of Ridvan"))
|
||||
(if all-bahai-calendar-holidays
|
||||
(holiday-fixed 4 25 "Fifth Day of Ridvan"))
|
||||
(if all-bahai-calendar-holidays
|
||||
(holiday-fixed 4 26 "Sixth Day of Ridvan"))
|
||||
(if all-bahai-calendar-holidays
|
||||
(holiday-fixed 4 27 "Seventh Day of Ridvan"))
|
||||
(if all-bahai-calendar-holidays
|
||||
(holiday-fixed 4 28 "Eighth Day of Ridvan"))
|
||||
(holiday-fixed 4 29 "Ninth Day of Ridvan")
|
||||
(if all-bahai-calendar-holidays
|
||||
(holiday-fixed 4 30 "Tenth Day of Ridvan"))
|
||||
(if all-bahai-calendar-holidays
|
||||
(holiday-fixed 5 1 "Eleventh Day of Ridvan"))
|
||||
(holiday-fixed 5 2 "Twelfth Day of Ridvan")
|
||||
(holiday-fixed 5 23 "Declaration of the Bab")
|
||||
(holiday-fixed 5 29 "Ascension of Baha'u'llah")
|
||||
(holiday-fixed 7 9 "Martyrdom of the Bab")
|
||||
(holiday-fixed 10 20 "Birth of the Bab")
|
||||
(holiday-fixed 11 12 "Birth of Baha'u'llah")
|
||||
(if all-bahai-calendar-holidays
|
||||
(holiday-fixed 11 26 "Day of the Covenant"))
|
||||
(if all-bahai-calendar-holidays
|
||||
(holiday-fixed 11 28 "Ascension of `Abdu'l-Baha")))
|
||||
"*Baha'i holidays.
|
||||
See the documentation for `calendar-holidays' for details."
|
||||
:type 'sexp
|
||||
:group 'holidays)
|
||||
|
||||
;;;###autoload
|
||||
(put 'solar-holidays 'risky-local-variable t)
|
||||
;;;###autoload
|
||||
|
@ -1104,15 +1175,16 @@ See the documentation for `calendar-holidays' for details."
|
|||
(defcustom calendar-holidays
|
||||
(append general-holidays local-holidays other-holidays
|
||||
christian-holidays hebrew-holidays islamic-holidays
|
||||
oriental-holidays solar-holidays)
|
||||
bahai-holidays oriental-holidays solar-holidays)
|
||||
"*List of notable days for the command \\[holidays].
|
||||
|
||||
Additional holidays are easy to add to the list, just put them in the list
|
||||
`other-holidays' in your .emacs file. Similarly, by setting any of
|
||||
`general-holidays', `local-holidays' `christian-holidays', `hebrew-holidays',
|
||||
`islamic-holidays', `oriental-holidays', or `solar-holidays' to nil in your
|
||||
.emacs file, you can eliminate unwanted categories of holidays. The intention
|
||||
is that (in the US) `local-holidays' be set in site-init.el and
|
||||
Additional holidays are easy to add to the list, just put them in the
|
||||
list `other-holidays' in your .emacs file. Similarly, by setting any
|
||||
of `general-holidays', `local-holidays' `christian-holidays',
|
||||
`hebrew-holidays', `islamic-holidays', `bahai-holidays',
|
||||
`oriental-holidays', or `solar-holidays' to nil in your .emacs file,
|
||||
you can eliminate unwanted categories of holidays. The intention is
|
||||
that (in the US) `local-holidays' be set in site-init.el and
|
||||
`other-holidays' be set by the user.
|
||||
|
||||
Entries on the list are expressions that return (possibly empty) lists of
|
||||
|
@ -1128,6 +1200,7 @@ Several basic functions are provided for this purpose:
|
|||
DAYNAME after/before MONTH DAY.
|
||||
(holiday-hebrew MONTH DAY STRING) a fixed date on the Hebrew calendar
|
||||
(holiday-islamic MONTH DAY STRING) a fixed date on the Islamic calendar
|
||||
(holiday-bahai MONTH DAY STRING) a fixed date on the Baha'i calendar
|
||||
(holiday-julian MONTH DAY STRING) a fixed date on the Julian calendar
|
||||
(holiday-sexp SEXP STRING) SEXP is a Gregorian-date-valued expression
|
||||
in the variable `year'; if it evaluates to
|
||||
|
@ -1155,6 +1228,11 @@ add the Islamic feast celebrating Mohammed's birthday use
|
|||
(holiday-islamic 3 12 \"Mohammed's Birthday\")
|
||||
|
||||
since the Islamic months are numbered from 1 starting with Muharram. To
|
||||
add an entry for the Baha'i festival of Ridvan, use
|
||||
|
||||
(holiday-bahai 2 13 \"Festival of Ridvan\")
|
||||
|
||||
since the Baha'i months are numbered from 1 starting with Baha. To
|
||||
add Thomas Jefferson's birthday, April 2, 1743 (Julian), use
|
||||
|
||||
(holiday-julian 4 2 \"Jefferson's Birthday\")
|
||||
|
@ -1680,6 +1758,14 @@ Driven by the variable `calendar-date-display-form'.")
|
|||
"String of Islamic date of Gregorian date."
|
||||
t)
|
||||
|
||||
(autoload 'calendar-print-bahai-date "cal-bahai"
|
||||
"Show the Baha'i date equivalents of date."
|
||||
t)
|
||||
|
||||
(autoload 'calendar-bahai-date-string "cal-bahai"
|
||||
"String of Baha'i date of Gregorian date."
|
||||
t)
|
||||
|
||||
(autoload 'calendar-goto-hebrew-date "cal-hebrew"
|
||||
"Move cursor to Hebrew date date."
|
||||
t)
|
||||
|
@ -1803,6 +1889,21 @@ to the date indicated by point."
|
|||
to the date indicated by point."
|
||||
t)
|
||||
|
||||
(autoload 'insert-bahai-diary-entry "cal-bahai"
|
||||
"Insert a diary entry for the Baha'i date corresponding to the date
|
||||
indicated by point."
|
||||
t)
|
||||
|
||||
(autoload 'insert-monthly-bahai-diary-entry "cal-bahai"
|
||||
"Insert a monthly diary entry for the day of the Baha'i month corresponding
|
||||
to the date indicated by point."
|
||||
t)
|
||||
|
||||
(autoload 'insert-yearly-bahai-diary-entry "cal-bahai"
|
||||
"Insert an annual diary entry for the day of the Baha'i year corresponding
|
||||
to the date indicated by point."
|
||||
t)
|
||||
|
||||
(autoload 'list-calendar-holidays "holidays"
|
||||
"Create a buffer containing the holidays for the current calendar window.
|
||||
The holidays are those in the list `calendar-notable-days'. Returns t if any
|
||||
|
@ -2066,6 +2167,7 @@ the inserted text. Value is always t."
|
|||
(define-key calendar-mode-map "ga" 'calendar-goto-astro-day-number)
|
||||
(define-key calendar-mode-map "gh" 'calendar-goto-hebrew-date)
|
||||
(define-key calendar-mode-map "gi" 'calendar-goto-islamic-date)
|
||||
(define-key calendar-mode-map "gb" 'calendar-goto-bahai-date)
|
||||
(define-key calendar-mode-map "gC" 'calendar-goto-chinese-date)
|
||||
(define-key calendar-mode-map "gk" 'calendar-goto-coptic-date)
|
||||
(define-key calendar-mode-map "ge" 'calendar-goto-ethiopic-date)
|
||||
|
@ -2106,6 +2208,7 @@ the inserted text. Value is always t."
|
|||
(define-key calendar-mode-map "pa" 'calendar-print-astro-day-number)
|
||||
(define-key calendar-mode-map "ph" 'calendar-print-hebrew-date)
|
||||
(define-key calendar-mode-map "pi" 'calendar-print-islamic-date)
|
||||
(define-key calendar-mode-map "pb" 'calendar-print-bahai-date)
|
||||
(define-key calendar-mode-map "pf" 'calendar-print-french-date)
|
||||
(define-key calendar-mode-map "pm" 'calendar-print-mayan-date)
|
||||
(define-key calendar-mode-map "po" 'calendar-print-other-dates)
|
||||
|
@ -2122,6 +2225,9 @@ the inserted text. Value is always t."
|
|||
(define-key calendar-mode-map "iid" 'insert-islamic-diary-entry)
|
||||
(define-key calendar-mode-map "iim" 'insert-monthly-islamic-diary-entry)
|
||||
(define-key calendar-mode-map "iiy" 'insert-yearly-islamic-diary-entry)
|
||||
(define-key calendar-mode-map "iBd" 'insert-bahai-diary-entry)
|
||||
(define-key calendar-mode-map "iBm" 'insert-monthly-bahai-diary-entry)
|
||||
(define-key calendar-mode-map "iBy" 'insert-yearly-bahai-diary-entry)
|
||||
(define-key calendar-mode-map "?" 'calendar-goto-info-node)
|
||||
(define-key calendar-mode-map "tm" 'cal-tex-cursor-month)
|
||||
(define-key calendar-mode-map "tM" 'cal-tex-cursor-month-landscape)
|
||||
|
@ -2907,6 +3013,9 @@ Defaults to today's date if DATE is not given."
|
|||
(let ((i (calendar-islamic-date-string date)))
|
||||
(if (not (string-equal i ""))
|
||||
(format "Islamic date (before sunset): %s" i)))
|
||||
(let ((b (calendar-bahai-date-string date)))
|
||||
(if (not (string-equal b ""))
|
||||
(format "Baha'i date (before sunset): %s" b)))
|
||||
(format "Chinese date: %s"
|
||||
(calendar-chinese-date-string date))
|
||||
(let ((c (calendar-coptic-date-string date)))
|
||||
|
|
|
@ -123,6 +123,22 @@ The holidays are those in the list `calendar-holidays'.")
|
|||
(autoload 'mark-islamic-calendar-date-pattern "cal-islam"
|
||||
"Mark dates in calendar window that conform to Islamic date MONTH/DAY/YEAR.")
|
||||
|
||||
(autoload 'diary-bahai-date "cal-bahai"
|
||||
"Baha'i calendar equivalent of date diary entry."
|
||||
t)
|
||||
|
||||
(autoload 'list-bahai-diary-entries "cal-bahai"
|
||||
"Add any Baha'i date entries from the diary file to `diary-entries-list'."
|
||||
t)
|
||||
|
||||
(autoload 'mark-bahai-diary-entries "cal-bahai"
|
||||
"Mark days in the calendar window that have Baha'i date diary entries."
|
||||
t)
|
||||
|
||||
(autoload 'mark-bahai-calendar-date-pattern "cal-bahai"
|
||||
"Mark dates in calendar window that conform to Baha'i date MONTH/DAY/YEAR."
|
||||
t)
|
||||
|
||||
(autoload 'diary-hebrew-date "cal-hebrew"
|
||||
"Hebrew calendar equivalent of date diary entry.")
|
||||
|
||||
|
@ -1129,6 +1145,8 @@ be used instead of a colon (:) to separate the hour and minute parts."
|
|||
0 1200)))
|
||||
(t diary-unknown-time)))) ; Unrecognizable
|
||||
|
||||
;; Unrecognizable
|
||||
|
||||
(defun list-sexp-diary-entries (date)
|
||||
"Add sexp entries for DATE from the diary file to `diary-entries-list'.
|
||||
Also, Make them visible in the diary file. Returns t if any entries were
|
||||
|
|
|
@ -84,6 +84,10 @@
|
|||
"Holiday on MONTH, DAY (Islamic) called STRING."
|
||||
t)
|
||||
|
||||
(autoload 'holiday-bahai "cal-bahai"
|
||||
"Holiday on MONTH, DAY (Baha'i) called STRING."
|
||||
t)
|
||||
|
||||
(autoload 'holiday-chinese-new-year "cal-china"
|
||||
"Date of Chinese New Year."
|
||||
t)
|
||||
|
@ -141,6 +145,7 @@ The optional LABEL is used to label the buffer created."
|
|||
(if christian-holidays (cons "Christian" christian-holidays))
|
||||
(if hebrew-holidays (cons "Hebrew" hebrew-holidays))
|
||||
(if islamic-holidays (cons "Islamic" islamic-holidays))
|
||||
(if bahai-holidays (cons "Baha'i" bahai-holidays))
|
||||
(if oriental-holidays (cons "Oriental" oriental-holidays))
|
||||
(if solar-holidays (cons "Solar" solar-holidays))
|
||||
(cons "Ask" nil)))
|
||||
|
|
|
@ -122,10 +122,6 @@ This option slows down recursive glob processing by quite a bit."
|
|||
:type '(repeat (cons character (choice regexp function)))
|
||||
:group 'eshell-glob)
|
||||
|
||||
;;; Internal Variables:
|
||||
|
||||
(defvar eshell-glob-chars-regexp nil)
|
||||
|
||||
;;; Functions:
|
||||
|
||||
(defun eshell-glob-initialize ()
|
||||
|
@ -134,8 +130,6 @@ This option slows down recursive glob processing by quite a bit."
|
|||
(when (boundp 'eshell-special-chars-outside-quoting)
|
||||
(set (make-local-variable 'eshell-special-chars-outside-quoting)
|
||||
(append eshell-glob-chars-list eshell-special-chars-outside-quoting)))
|
||||
(set (make-local-variable 'eshell-glob-chars-regexp)
|
||||
(format "[%s]+" (apply 'string eshell-glob-chars-list)))
|
||||
(add-hook 'eshell-parse-argument-hook 'eshell-parse-glob-chars t t)
|
||||
(add-hook 'eshell-pre-rewrite-command-hook
|
||||
'eshell-no-command-globbing nil t))
|
||||
|
@ -184,6 +178,8 @@ interpretation."
|
|||
(buffer-substring-no-properties (1- (point)) (1+ end))
|
||||
(goto-char (1+ end))))))))))
|
||||
|
||||
(defvar eshell-glob-chars-regexp nil)
|
||||
|
||||
(defun eshell-glob-regexp (pattern)
|
||||
"Convert glob-pattern PATTERN to a regular expression.
|
||||
The basic syntax is:
|
||||
|
@ -204,7 +200,10 @@ set to true, then these characters will match themselves in the
|
|||
resulting regular expression."
|
||||
(let ((matched-in-pattern 0) ; How much of PATTERN handled
|
||||
regexp)
|
||||
(while (string-match eshell-glob-chars-regexp
|
||||
(while (string-match
|
||||
(or eshell-glob-chars-regexp
|
||||
(set (make-local-variable 'eshell-glob-chars-regexp)
|
||||
(format "[%s]+" (apply 'string eshell-glob-chars-list))))
|
||||
pattern matched-in-pattern)
|
||||
(let* ((op-begin (match-beginning 0))
|
||||
(op-char (aref pattern op-begin)))
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; subst-big5.el --- Unicode/GB2312 translation -*-coding: big5;-*-
|
||||
|
||||
;; Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Dave Love <fx@gnu.org>
|
||||
;; Keywords: i18n
|
||||
|
@ -23,7 +23,7 @@
|
|||
;;; Commentary:
|
||||
|
||||
;; Provides translation tables between Unicode and chinese-big5 for
|
||||
;; use by the `utf-translate-cjk' option. See subst-jis.el for the
|
||||
;; use by the `utf-translate-cjk-mode' option. See subst-jis.el for the
|
||||
;; method used.
|
||||
|
||||
;;; Code:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; subst-gb2312.el --- Unicode/GB2312 translation -*-coding: euc-china;-*-
|
||||
|
||||
;; Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Dave Love <fx@gnu.org>
|
||||
;; Keywords: i18n
|
||||
|
@ -23,7 +23,7 @@
|
|||
;;; Commentary:
|
||||
|
||||
;; Provides translation tables between Unicode and chinese-gb2312 for
|
||||
;; use by the `utf-translate-cjk' option. See subst-jis.el for the
|
||||
;; use by the `utf-translate-cjk-mode' option. See subst-jis.el for the
|
||||
;; method used.
|
||||
|
||||
;;; Code:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; subst-jis.el --- Unicode/JISX translation -*-coding: euc-jp;-*-
|
||||
;; Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Dave Love <fx@gnu.org>
|
||||
;; Keywords: i18n
|
||||
|
@ -23,7 +23,7 @@
|
|||
|
||||
;; Provides translation tables between Unicode and
|
||||
;; japanese-jisx0208/japanese-jisx0212 charsets for use by the
|
||||
;; `utf-translate-cjk' option.
|
||||
;; `utf-translate-cjk-mode' option.
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; subst-ksc.el --- Unicode/KSC-5601 translation -*-coding: euc-kr;-*-
|
||||
;; Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Dave Love <fx@gnu.org>
|
||||
;; Keywords: i18n
|
||||
|
@ -22,7 +22,7 @@
|
|||
;;; Commentary:
|
||||
|
||||
;; Provides translation tables between Unicode and korean-ksc5601 for
|
||||
;; use by the `utf-translate-cjk' option. See subst-jis.el for the
|
||||
;; use by the `utf-translate-cjk-mode' option. See subst-jis.el for the
|
||||
;; method used.
|
||||
|
||||
;;; Code:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; utf-16.el --- UTF-16 encoding/decoding
|
||||
|
||||
;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Dave Love <fx@gnu.org>
|
||||
;; Keywords: Unicode, UTF-16, i18n
|
||||
|
@ -351,7 +351,7 @@ sequence representing U+FFFD (REPLACEMENT CHARACTER)."))
|
|||
(dependency unify-8859-on-encoding-mode
|
||||
unify-8859-on-decoding-mode
|
||||
utf-fragment-on-decoding
|
||||
utf-translate-cjk)))
|
||||
utf-translate-cjk-mode)))
|
||||
|
||||
(make-coding-system
|
||||
'mule-utf-16be 4 ?u
|
||||
|
@ -372,7 +372,7 @@ sequence representing U+FFFD (REPLACEMENT CHARACTER)."))
|
|||
(dependency unify-8859-on-encoding-mode
|
||||
unify-8859-on-decoding-mode
|
||||
utf-fragment-on-decoding
|
||||
utf-translate-cjk)))
|
||||
utf-translate-cjk-mode)))
|
||||
|
||||
(make-coding-system
|
||||
'mule-utf-16le-with-signature 4 ?u
|
||||
|
@ -396,7 +396,7 @@ sequence representing U+FFFD (REPLACEMENT CHARACTER)."))
|
|||
(dependency unify-8859-on-encoding-mode
|
||||
unify-8859-on-decoding-mode
|
||||
utf-fragment-on-decoding
|
||||
utf-translate-cjk)))
|
||||
utf-translate-cjk-mode)))
|
||||
|
||||
(make-coding-system
|
||||
'mule-utf-16be-with-signature 4 ?u
|
||||
|
@ -419,7 +419,7 @@ sequence representing U+FFFD (REPLACEMENT CHARACTER)."))
|
|||
(dependency unify-8859-on-encoding-mode
|
||||
unify-8859-on-decoding-mode
|
||||
utf-fragment-on-decoding
|
||||
utf-translate-cjk)))
|
||||
utf-translate-cjk-mode)))
|
||||
|
||||
(make-coding-system
|
||||
'mule-utf-16 4 ?u
|
||||
|
@ -442,7 +442,7 @@ sequence representing U+FFFD (REPLACEMENT CHARACTER)."))
|
|||
(dependency unify-8859-on-encoding-mode
|
||||
unify-8859-on-decoding-mode
|
||||
utf-fragment-on-decoding
|
||||
utf-translate-cjk)
|
||||
utf-translate-cjk-mode)
|
||||
(post-read-conversion . mule-utf-16-post-read-conversion)))
|
||||
)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; utf-8.el --- UTF-8 decoding/encoding support -*- coding: iso-2022-7bit -*-
|
||||
|
||||
;; Copyright (C) 2001 Electrotechnical Laboratory, JAPAN.
|
||||
;; Copyright (C) 2001, 2004 Electrotechnical Laboratory, JAPAN.
|
||||
;; Licensed to the Free Software Foundation.
|
||||
;; Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -97,7 +97,7 @@ translation-table named `utf-translation-table-for-encode'")
|
|||
(defvar ucs-mule-cjk-to-unicode (make-hash-table :test 'eq)
|
||||
"Hash table mapping Emacs CJK character sets to Unicode code points.
|
||||
|
||||
If `utf-translate-cjk' is non-nil, this table populates the
|
||||
If `utf-translate-cjk-mode' is non-nil, this table populates the
|
||||
translation-hash-table named `utf-subst-table-for-encode'.")
|
||||
|
||||
(define-translation-hash-table 'utf-subst-table-for-encode
|
||||
|
@ -106,7 +106,7 @@ translation-hash-table named `utf-subst-table-for-encode'.")
|
|||
(defvar ucs-unicode-to-mule-cjk (make-hash-table :test 'eq)
|
||||
"Hash table mapping Unicode code points to Emacs CJK character sets.
|
||||
|
||||
If `utf-translate-cjk' is non-nil, this table populates the
|
||||
If `utf-translate-cjk-mode' is non-nil, this table populates the
|
||||
translation-hash-table named `utf-subst-table-for-decode'.")
|
||||
|
||||
(define-translation-hash-table 'utf-subst-table-for-decode
|
||||
|
@ -814,7 +814,7 @@ sequence representing U+FFFD (REPLACEMENT CHARACTER)."
|
|||
(dependency unify-8859-on-encoding-mode
|
||||
unify-8859-on-decoding-mode
|
||||
utf-fragment-on-decoding
|
||||
utf-translate-cjk)))
|
||||
utf-translate-cjk-mode)))
|
||||
|
||||
(define-coding-system-alias 'utf-8 'mule-utf-8)
|
||||
|
||||
|
|
227
lisp/isearchb.el
Normal file
227
lisp/isearchb.el
Normal file
|
@ -0,0 +1,227 @@
|
|||
;;; isearchb --- a marriage between iswitchb and isearch
|
||||
|
||||
;; Copyright (C) 2004 John Wiegley
|
||||
|
||||
;; Author: John Wiegley <johnw@gnu.org>
|
||||
;; Created: 16 Apr 2004
|
||||
;; Version: 1.5
|
||||
;; Keywords: lisp
|
||||
;; X-URL: http://www.newartisans.com/johnw/emacs.html
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 2, or (at your option)
|
||||
;; any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs; see the file COPYING. If not, write to the
|
||||
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
;; Boston, MA 02111-1307, USA.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This module allows you to switch to buffers even faster than with
|
||||
;; iswitchb! It is not intended to replace it, however, as it works
|
||||
;; well only with buffers whose names don't typically overlap. You'll
|
||||
;; have to try it first, and see how your mileage varies.
|
||||
;;
|
||||
;; The first way to use isearchb is by holding down a modifier key, in
|
||||
;; which case every letter you type while holding it searches for any
|
||||
;; buffer matching what you're typing (using the same ordering scheme
|
||||
;; employed by iswitchb). To use it this way, add to your .emacs:
|
||||
;;
|
||||
;; (isearchb-set-keybindings 'super) ; s-x s-y s-z now finds "xyz"
|
||||
;;
|
||||
;; The other way is by using a command that puts you into "search"
|
||||
;; mode, just like with isearch. I use C-z for this. The binding in
|
||||
;; my .emacs looks like:
|
||||
;;
|
||||
;; (define-key global-map [(control ?z)] 'isearchb-activate)
|
||||
;;
|
||||
;; Now, after pressing C-z (for example), each self-inserting
|
||||
;; character thereafter will search for a buffer containing those
|
||||
;; characters. For instance, typing "C-z xyz" will switch to the
|
||||
;; first buffer containing "xyz". Once you press a non-self-inserting
|
||||
;; character (such as any control key sequence), the search will end.
|
||||
;;
|
||||
;; C-z after C-z toggles between the previously selected buffer and
|
||||
;; the current one.
|
||||
;;
|
||||
;; C-g aborts the search and returns you to your original buffer.
|
||||
;;
|
||||
;; TAB, after typing in a few characters (after C-z), will jump into
|
||||
;; iswitchb, using the prefix you've typed so far. This is handy when
|
||||
;; you realize that isearchb is not powerful enough to find the buffer
|
||||
;; you're looking for.
|
||||
;;
|
||||
;; C-s and C-r move forward and backward in the buffer list. If
|
||||
;; `isearchb-show-completions' is non-nil (the default), the list of
|
||||
;; possible completions is shown in the minibuffer.
|
||||
;;
|
||||
;; If `isearchb-idle-timeout' is set to a number, isearchb will quit
|
||||
;; after that many seconds of idle time. I recommend trying it set to
|
||||
;; one or two seconds. Then, if you switch to a buffer and wait for
|
||||
;; that amount of time, you can start typing without manually exiting
|
||||
;; isearchb.
|
||||
|
||||
;; TODO:
|
||||
;; C-z C-z is broken
|
||||
;; killing iswitchb.el and then trying to switch back is broken
|
||||
;; make sure TAB isn't broken
|
||||
|
||||
(require 'iswitchb)
|
||||
|
||||
(defgroup isearchb nil
|
||||
"Switch between buffers using a mechanism like isearch."
|
||||
:group 'iswitchb)
|
||||
|
||||
(defcustom isearchb-idle-timeout nil
|
||||
"*Number of idle seconds before isearchb turns itself off.
|
||||
If nil, don't use a timeout."
|
||||
:type '(choice (integer :tag "Seconds")
|
||||
(const :tag "Disable" nil))
|
||||
:group 'isearchb)
|
||||
|
||||
(defcustom isearchb-show-completions t
|
||||
"*If non-nil, show possible completions in the minibuffer."
|
||||
:type 'boolean
|
||||
:group 'isearchb)
|
||||
|
||||
(defvar isearchb-start-buffer nil)
|
||||
(defvar isearchb-last-buffer nil)
|
||||
(defvar isearchb-idle-timer nil)
|
||||
|
||||
(defun isearchb-stop (&optional return-to-buffer ignore-command)
|
||||
"Called by isearchb to terminate a search in progress."
|
||||
(remove-hook 'pre-command-hook 'isearchb-follow-char)
|
||||
(if return-to-buffer
|
||||
(switch-to-buffer isearchb-start-buffer)
|
||||
(setq isearchb-last-buffer isearchb-start-buffer))
|
||||
(when isearchb-idle-timer
|
||||
(cancel-timer isearchb-idle-timer)
|
||||
(setq isearchb-idle-timer nil))
|
||||
(if ignore-command
|
||||
(setq this-command 'ignore
|
||||
last-command 'ignore))
|
||||
(message nil))
|
||||
|
||||
(defun isearchb-iswitchb ()
|
||||
"isearchb's custom version of the `iswitchb' command.
|
||||
It's purpose is to pass different call arguments to
|
||||
`iswitchb-read-buffer'."
|
||||
(interactive)
|
||||
(let* ((prompt "iswitch ")
|
||||
(iswitchb-method 'samewindow)
|
||||
(buf (iswitchb-read-buffer prompt nil nil iswitchb-text t)))
|
||||
(if (eq iswitchb-exit 'findfile)
|
||||
(call-interactively 'find-file)
|
||||
(when buf
|
||||
(if (get-buffer buf)
|
||||
;; buffer exists, so view it and then exit
|
||||
(iswitchb-visit-buffer buf)
|
||||
;; else buffer doesn't exist
|
||||
(iswitchb-possible-new-buffer buf))))))
|
||||
|
||||
(defun isearchb ()
|
||||
"Switch to buffer matching a substring, based on chars typed."
|
||||
(interactive)
|
||||
(unless (eq last-command 'isearchb)
|
||||
(setq iswitchb-text nil))
|
||||
(unless iswitchb-text
|
||||
(setq iswitchb-text "")
|
||||
(iswitchb-make-buflist nil))
|
||||
(if last-command-char
|
||||
(setq iswitchb-rescan t
|
||||
iswitchb-text (concat iswitchb-text
|
||||
(char-to-string last-command-char))))
|
||||
(iswitchb-set-matches)
|
||||
(let* ((match (car iswitchb-matches))
|
||||
(buf (and match (get-buffer match))))
|
||||
(if (null buf)
|
||||
(progn
|
||||
(isearchb-stop t)
|
||||
(isearchb-iswitchb))
|
||||
(switch-to-buffer buf)
|
||||
(if isearchb-show-completions
|
||||
(message "isearchb: %s%s" iswitchb-text
|
||||
(iswitchb-completions iswitchb-text nil))
|
||||
(if (= 1 (length iswitchb-matches))
|
||||
(message "isearchb: %s (only match)" iswitchb-text)
|
||||
(message "isearchb: %s" iswitchb-text))))))
|
||||
|
||||
(defun isearchb-set-keybindings (modifier)
|
||||
"Setup isearchb on the given MODIFIER."
|
||||
(dotimes (i 128)
|
||||
(if (eq 'self-insert-command
|
||||
(lookup-key global-map (vector i)))
|
||||
(define-key global-map (vector (list modifier i)) 'isearchb))))
|
||||
|
||||
(defun isearchb-follow-char ()
|
||||
"Function added to post-command-hook to handle the isearchb \"mode\"."
|
||||
(let (keys)
|
||||
(if (not (and (memq last-command '(isearchb isearchb-activate))
|
||||
(setq keys (this-command-keys))
|
||||
(= 1 (length keys))))
|
||||
(isearchb-stop)
|
||||
(cond
|
||||
((or (equal keys "\C-h") (equal keys "\C-?")
|
||||
(equal keys [backspace]) (equal keys [delete]))
|
||||
(setq iswitchb-text
|
||||
(substring iswitchb-text 0 (1- (length iswitchb-text))))
|
||||
(if (= 0 (length iswitchb-text))
|
||||
(isearchb-stop t t)
|
||||
(setq last-command-char nil)
|
||||
(setq this-command 'isearchb)))
|
||||
((or (equal keys "\C-i") (equal keys [tab]))
|
||||
(setq this-command 'isearchb-iswitchb))
|
||||
((equal keys "\C-s")
|
||||
(iswitchb-next-match)
|
||||
(setq last-command-char nil)
|
||||
(setq this-command 'isearchb))
|
||||
((equal keys "\C-r")
|
||||
(iswitchb-prev-match)
|
||||
(setq last-command-char nil)
|
||||
(setq this-command 'isearchb))
|
||||
((equal keys "\C-g")
|
||||
(ding)
|
||||
(isearchb-stop t t))
|
||||
((eq (lookup-key global-map keys) 'self-insert-command)
|
||||
(setq this-command 'isearchb)))
|
||||
(if (and isearchb-idle-timeout
|
||||
(null isearchb-idle-timer))
|
||||
(setq isearchb-idle-timer
|
||||
(run-with-idle-timer isearchb-idle-timeout nil
|
||||
'isearchb-stop))))))
|
||||
|
||||
;;;###autoload
|
||||
(defun isearchb-activate ()
|
||||
"Active isearchb mode for subsequent alphanumeric keystrokes.
|
||||
Executing this command again will terminate the search; or, if
|
||||
the search has not yet begun, will toggle to the last buffer
|
||||
accessed via isearchb."
|
||||
(interactive)
|
||||
(cond
|
||||
((eq last-command 'isearchb)
|
||||
(isearchb-stop nil t))
|
||||
((eq last-command 'isearchb-activate)
|
||||
(if isearchb-last-buffer
|
||||
(switch-to-buffer isearchb-last-buffer)
|
||||
(error "isearchb: There is no previous buffer to toggle to."))
|
||||
(isearchb-stop nil t))
|
||||
(t
|
||||
(message "isearchb: ")
|
||||
(setq iswitchb-text nil
|
||||
isearchb-start-buffer (current-buffer))
|
||||
(add-hook 'pre-command-hook 'isearchb-follow-char))))
|
||||
|
||||
(provide 'isearchb)
|
||||
|
||||
;;; arch-tag: 9277523f-a624-4aa0-ba10-b89eeb7b6e99
|
||||
;;; isearchb.el ends here
|
116
lisp/iswitchb.el
116
lisp/iswitchb.el
|
@ -307,6 +307,20 @@ multitude of buffers open."
|
|||
:type '(choice (const :tag "Show all" nil) integer)
|
||||
:group 'iswitchb)
|
||||
|
||||
(defcustom iswitchb-use-virtual-buffers nil
|
||||
"*If non-nil, refer to past buffers when none match.
|
||||
This feature relies upon the `recentf' package, which will be
|
||||
enabled if this variable is configured to a non-nil value."
|
||||
:type 'boolean
|
||||
:require 'recentf
|
||||
:set (function
|
||||
(lambda (sym value)
|
||||
(recentf-mode value)
|
||||
(set sym value)))
|
||||
:group 'iswitchb)
|
||||
|
||||
(defvar iswitchb-virtual-buffers nil)
|
||||
|
||||
(defcustom iswitchb-cannot-complete-hook 'iswitchb-completion-help
|
||||
"*Hook run when `iswitchb-complete' can't complete any more.
|
||||
The most useful values are `iswitchb-completion-help', which pops up a
|
||||
|
@ -571,12 +585,18 @@ in a separate window.
|
|||
(iswitchb-possible-new-buffer buf)))
|
||||
))))
|
||||
|
||||
(defun iswitchb-read-buffer (prompt &optional default require-match)
|
||||
(defun iswitchb-read-buffer (prompt &optional default require-match
|
||||
start matches-set)
|
||||
"Replacement for the built-in `read-buffer'.
|
||||
Return the name of a buffer selected.
|
||||
PROMPT is the prompt to give to the user. DEFAULT if given is the default
|
||||
buffer to be selected, which will go to the front of the list.
|
||||
If REQUIRE-MATCH is non-nil, an existing-buffer must be selected."
|
||||
PROMPT is the prompt to give to the user.
|
||||
DEFAULT if given is the default buffer to be selected, which will
|
||||
go to the front of the list.
|
||||
If REQUIRE-MATCH is non-nil, an existing-buffer must be selected.
|
||||
If START is a string, the selection process is started with that
|
||||
string.
|
||||
If MATCHES-SET is non-nil, the buflist is not updated before
|
||||
the selection process begins. Used by isearchb.el."
|
||||
(let
|
||||
(
|
||||
buf-sel
|
||||
|
@ -589,14 +609,15 @@ If REQUIRE-MATCH is non-nil, an existing-buffer must be selected."
|
|||
|
||||
(iswitchb-define-mode-map)
|
||||
(setq iswitchb-exit nil)
|
||||
(setq iswitchb-rescan t)
|
||||
(setq iswitchb-text "")
|
||||
(setq iswitchb-default
|
||||
(if (bufferp default)
|
||||
(buffer-name default)
|
||||
default))
|
||||
(setq iswitchb-text (or start ""))
|
||||
(unless matches-set
|
||||
(setq iswitchb-rescan t)
|
||||
(iswitchb-make-buflist iswitchb-default)
|
||||
(iswitchb-set-matches)
|
||||
(iswitchb-set-matches))
|
||||
(let
|
||||
((minibuffer-local-completion-map iswitchb-mode-map)
|
||||
;; Record the minibuffer depth that we expect to find once
|
||||
|
@ -609,19 +630,29 @@ If REQUIRE-MATCH is non-nil, an existing-buffer must be selected."
|
|||
'(("dummy" . 1)) ;table
|
||||
nil ;predicate
|
||||
nil ;require-match [handled elsewhere]
|
||||
nil ;initial-contents
|
||||
start ;initial-contents
|
||||
'iswitchb-history)))
|
||||
(if (and (not (eq iswitchb-exit 'usefirst))
|
||||
(get-buffer iswitchb-final-text))
|
||||
;; This happens for example if the buffer was chosen with the mouse.
|
||||
(setq iswitchb-matches (list iswitchb-final-text)))
|
||||
(setq iswitchb-matches (list iswitchb-final-text)
|
||||
iswitchb-virtual-buffers nil))
|
||||
|
||||
;; If no buffer matched, but a virtual buffer was selected, visit
|
||||
;; that file now and act as though that buffer had been selected.
|
||||
(if (and iswitchb-virtual-buffers
|
||||
(not (iswitchb-existing-buffer-p)))
|
||||
(let ((virt (car iswitchb-virtual-buffers)))
|
||||
(find-file-noselect (cdr virt))
|
||||
(setq iswitchb-matches (list (car virt))
|
||||
iswitchb-virtual-buffers nil)))
|
||||
|
||||
;; Handling the require-match must be done in a better way.
|
||||
(if (and require-match (not (iswitchb-existing-buffer-p)))
|
||||
(if (and require-match
|
||||
(not (iswitchb-existing-buffer-p)))
|
||||
(error "Must specify valid buffer"))
|
||||
|
||||
(if (or
|
||||
(eq iswitchb-exit 'takeprompt)
|
||||
(if (or (eq iswitchb-exit 'takeprompt)
|
||||
(null iswitchb-matches))
|
||||
(setq buf-sel iswitchb-final-text)
|
||||
;; else take head of list
|
||||
|
@ -629,8 +660,7 @@ If REQUIRE-MATCH is non-nil, an existing-buffer must be selected."
|
|||
|
||||
;; Or possibly choose the default buffer
|
||||
(if (equal iswitchb-final-text "")
|
||||
(setq buf-sel
|
||||
(car iswitchb-matches)))
|
||||
(setq buf-sel (car iswitchb-matches)))
|
||||
|
||||
buf-sel))
|
||||
|
||||
|
@ -731,18 +761,29 @@ If no buffer exactly matching the prompt exists, maybe create a new one."
|
|||
(setq iswitchb-exit 'findfile)
|
||||
(exit-minibuffer))
|
||||
|
||||
(eval-when-compile
|
||||
(defvar recentf-list))
|
||||
|
||||
(defun iswitchb-next-match ()
|
||||
"Put first element of `iswitchb-matches' at the end of the list."
|
||||
(interactive)
|
||||
(let ((next (cadr iswitchb-matches)))
|
||||
(setq iswitchb-buflist (iswitchb-chop iswitchb-buflist next))
|
||||
(if (and (null next) iswitchb-virtual-buffers)
|
||||
(setq recentf-list
|
||||
(iswitchb-chop recentf-list
|
||||
(cdr (cadr iswitchb-virtual-buffers))))
|
||||
(setq iswitchb-buflist (iswitchb-chop iswitchb-buflist next)))
|
||||
(setq iswitchb-rescan t)))
|
||||
|
||||
(defun iswitchb-prev-match ()
|
||||
"Put last element of `iswitchb-matches' at the front of the list."
|
||||
(interactive)
|
||||
(let ((prev (car (last iswitchb-matches))))
|
||||
(setq iswitchb-buflist (iswitchb-chop iswitchb-buflist prev))
|
||||
(if (and (null prev) iswitchb-virtual-buffers)
|
||||
(setq recentf-list
|
||||
(iswitchb-chop recentf-list
|
||||
(cdr (car (last iswitchb-virtual-buffers)))))
|
||||
(setq iswitchb-buflist (iswitchb-chop iswitchb-buflist prev)))
|
||||
(setq iswitchb-rescan t)))
|
||||
|
||||
(defun iswitchb-chop (list elem)
|
||||
|
@ -834,7 +875,8 @@ current frame, rather than all frames, regardless of value of
|
|||
(setq iswitchb-matches
|
||||
(let* ((buflist iswitchb-buflist))
|
||||
(iswitchb-get-matched-buffers iswitchb-text iswitchb-regexp
|
||||
buflist)))))
|
||||
buflist))
|
||||
iswitchb-virtual-buffers nil)))
|
||||
|
||||
(defun iswitchb-get-matched-buffers (regexp
|
||||
&optional string-format buffer-list)
|
||||
|
@ -1188,6 +1230,10 @@ Copied from `icomplete-exhibit' with two changes:
|
|||
contents
|
||||
(not minibuffer-completion-confirm)))))))
|
||||
|
||||
(eval-when-compile
|
||||
(defvar most-len)
|
||||
(defvar most-is-exact))
|
||||
|
||||
(defun iswitchb-output-completion (com)
|
||||
(if (= (length com) most-len)
|
||||
;; Most is one exact match,
|
||||
|
@ -1221,6 +1267,35 @@ Modified from `icomplete-completions'."
|
|||
first)
|
||||
(setq comps (cons first (cdr comps)))))
|
||||
|
||||
;; If no buffers matched, and virtual buffers are being used, then
|
||||
;; consult the list of past visited files, to see if we can find
|
||||
;; the file which the user might thought was still open.
|
||||
(when (and iswitchb-use-virtual-buffers (null comps)
|
||||
recentf-list)
|
||||
(setq iswitchb-virtual-buffers nil)
|
||||
(let ((head recentf-list) name)
|
||||
(while head
|
||||
(if (and (setq name (file-name-nondirectory (car head)))
|
||||
(string-match (if iswitchb-regexp
|
||||
iswitchb-text
|
||||
(regexp-quote iswitchb-text)) name)
|
||||
(null (get-file-buffer (car head)))
|
||||
(not (assoc name iswitchb-virtual-buffers))
|
||||
(not (iswitchb-ignore-buffername-p name))
|
||||
(file-exists-p (car head)))
|
||||
(setq iswitchb-virtual-buffers
|
||||
(cons (cons name (car head))
|
||||
iswitchb-virtual-buffers)))
|
||||
(setq head (cdr head)))
|
||||
(setq iswitchb-virtual-buffers (nreverse iswitchb-virtual-buffers)
|
||||
comps (mapcar 'car iswitchb-virtual-buffers))
|
||||
(let ((comp comps))
|
||||
(while comp
|
||||
(put-text-property 0 (length (car comp))
|
||||
'face 'font-lock-builtin-face
|
||||
(car comp))
|
||||
(setq comp (cdr comp))))))
|
||||
|
||||
(cond ((null comps) (format " %sNo match%s"
|
||||
open-bracket-determined
|
||||
close-bracket-determined))
|
||||
|
@ -1255,10 +1330,9 @@ Modified from `icomplete-completions'."
|
|||
(most nil)
|
||||
(most-len (length most))
|
||||
most-is-exact
|
||||
(alternatives (if most
|
||||
(mapconcat 'iswitchb-output-completion
|
||||
comps ",")
|
||||
(mapconcat 'identity comps ","))))
|
||||
(alternatives
|
||||
(mapconcat (if most 'iswitchb-output-completion
|
||||
'identity) comps ",")))
|
||||
|
||||
(concat
|
||||
|
||||
|
|
|
@ -1516,9 +1516,11 @@ for the overlay."
|
|||
;*---------------------------------------------------------------------*/
|
||||
(defun flyspell-highlight-incorrect-region (beg end poss)
|
||||
"Set up an overlay on a misspelled word, in the buffer from BEG to END."
|
||||
(let ((inhibit-read-only t))
|
||||
(unless (run-hook-with-args-until-success
|
||||
'flyspell-incorrect-hook beg end poss)
|
||||
(if (or flyspell-highlight-properties (not (flyspell-properties-at-p beg)))
|
||||
(if (or flyspell-highlight-properties
|
||||
(not (flyspell-properties-at-p beg)))
|
||||
(progn
|
||||
;; we cleanup current overlay at the same position
|
||||
(if (and (not flyspell-persistent-highlight)
|
||||
|
@ -1531,16 +1533,19 @@ for the overlay."
|
|||
(setq overlays (cdr overlays)))))
|
||||
;; now we can use a new overlay
|
||||
(setq flyspell-overlay
|
||||
(make-flyspell-overlay beg end
|
||||
'flyspell-incorrect-face
|
||||
'highlight))))))
|
||||
(make-flyspell-overlay
|
||||
beg end 'flyspell-incorrect-face 'highlight)))))))
|
||||
|
||||
;*---------------------------------------------------------------------*/
|
||||
;* flyspell-highlight-duplicate-region ... */
|
||||
;*---------------------------------------------------------------------*/
|
||||
(defun flyspell-highlight-duplicate-region (beg end)
|
||||
"Set up an overlay on a duplicated word, in the buffer from BEG to END."
|
||||
(if (or flyspell-highlight-properties (not (flyspell-properties-at-p beg)))
|
||||
(let ((inhibit-read-only t))
|
||||
(unless (run-hook-with-args-until-success
|
||||
'flyspell-incorrect-hook beg end poss)
|
||||
(if (or flyspell-highlight-properties
|
||||
(not (flyspell-properties-at-p beg)))
|
||||
(progn
|
||||
;; we cleanup current overlay at the same position
|
||||
(if (and (not flyspell-persistent-highlight)
|
||||
|
@ -1555,7 +1560,7 @@ for the overlay."
|
|||
(setq flyspell-overlay
|
||||
(make-flyspell-overlay beg end
|
||||
'flyspell-duplicate-face
|
||||
'highlight)))))
|
||||
'highlight)))))))
|
||||
|
||||
;*---------------------------------------------------------------------*/
|
||||
;* flyspell-auto-correct-cache ... */
|
||||
|
@ -2061,23 +2066,23 @@ possible corrections as returned by 'ispell-parse-output'.
|
|||
|
||||
This function is meant to be added to 'flyspell-incorrect-hook'."
|
||||
(when (consp poss)
|
||||
(let ((temp-buffer (get-buffer-create " *flyspell-temp*"))
|
||||
found)
|
||||
(catch 'done
|
||||
(let ((str (buffer-substring beg end))
|
||||
(i 0) (len (- end beg)) tmp)
|
||||
(while (< (1+ i) len)
|
||||
(setq tmp (aref str i))
|
||||
(aset str i (aref str (1+ i)))
|
||||
(aset str (1+ i) tmp)
|
||||
(when (member str (nth 2 poss))
|
||||
(save-excursion
|
||||
(copy-to-buffer temp-buffer beg end)
|
||||
(set-buffer temp-buffer)
|
||||
(goto-char (1+ (point-min)))
|
||||
(while (and (not (eobp)) (not found))
|
||||
(transpose-chars 1)
|
||||
(if (member (buffer-string) (nth 2 poss))
|
||||
(setq found (point))
|
||||
(transpose-chars -1)
|
||||
(forward-char))))
|
||||
(when found
|
||||
(save-excursion
|
||||
(goto-char (+ beg found -1))
|
||||
(transpose-chars -1)
|
||||
t)))))
|
||||
(goto-char (+ beg i 1))
|
||||
(transpose-chars 1))
|
||||
(throw 'done t))
|
||||
(setq tmp (aref str i))
|
||||
(aset str i (aref str (1+ i)))
|
||||
(aset str (1+ i) tmp)
|
||||
(setq i (1+ i))))
|
||||
nil)))
|
||||
|
||||
(defun flyspell-maybe-correct-doubling (beg end poss)
|
||||
"Check replacements for doubled characters.
|
||||
|
@ -2091,24 +2096,19 @@ possible corrections as returned by 'ispell-parse-output'.
|
|||
|
||||
This function is meant to be added to 'flyspell-incorrect-hook'."
|
||||
(when (consp poss)
|
||||
(let ((temp-buffer (get-buffer-create " *flyspell-temp*"))
|
||||
found)
|
||||
(save-excursion
|
||||
(copy-to-buffer temp-buffer beg end)
|
||||
(set-buffer temp-buffer)
|
||||
(goto-char (1+ (point-min)))
|
||||
(while (and (not (eobp)) (not found))
|
||||
(when (char-equal (char-after) (char-before))
|
||||
(catch 'done
|
||||
(let ((str (buffer-substring beg end))
|
||||
(i 0) (len (- end beg)))
|
||||
(while (< (1+ i) len)
|
||||
(when (and (= (aref str i) (aref str (1+ i)))
|
||||
(member (concat (substring str 0 (1+ i))
|
||||
(substring str (+ i 2)))
|
||||
(nth 2 poss)))
|
||||
(goto-char (+ beg i))
|
||||
(delete-char 1)
|
||||
(if (member (buffer-string) (nth 2 poss))
|
||||
(setq found (point))
|
||||
(insert-char (char-before) 1)))
|
||||
(forward-char)))
|
||||
(when found
|
||||
(save-excursion
|
||||
(goto-char (+ beg found -1))
|
||||
(delete-char 1)
|
||||
t)))))
|
||||
(throw 'done t))
|
||||
(setq i (1+ i))))
|
||||
nil)))
|
||||
|
||||
;*---------------------------------------------------------------------*/
|
||||
;* flyspell-already-abbrevp ... */
|
||||
|
|
|
@ -1,5 +1,19 @@
|
|||
2004-05-08 Peter Whaite <emacs@whaite.ca> (tiny change)
|
||||
|
||||
* data.c (Fquo): If any argument is float, do the computation in
|
||||
floating point.
|
||||
|
||||
2004-05-08 Juanma Barranquero <lektu@terra.es>
|
||||
|
||||
* process.c (Fwaiting_for_user_input_p, Fmake_network_process)
|
||||
(Fset_process_query_on_exit_flag, Vprocess_adaptive_read_buffering):
|
||||
Fix spelling of Emacs on docstring.
|
||||
(Fset_process_coding_system, Fprocess_coding_system)
|
||||
(Fset_process_filter_multibyte, Fprocess_filter_multibyte_p):
|
||||
Make argument names match their use in docstring.
|
||||
(Fprocess_id, Fprocess_query_on_exit_flag, Finterrupt_process):
|
||||
Fix docstring.
|
||||
|
||||
* editfns.c (Finsert_buffer_substring): Make argument names match their
|
||||
use in docstring.
|
||||
|
||||
|
|
|
@ -2698,6 +2698,12 @@ usage: (/ DIVIDEND DIVISOR &rest DIVISORS) */)
|
|||
int nargs;
|
||||
Lisp_Object *args;
|
||||
{
|
||||
int argnum;
|
||||
if (nargs == 2)
|
||||
return arith_driver (Adiv, nargs, args);
|
||||
for (argnum = 0; argnum < nargs; argnum++)
|
||||
if (FLOATP (args[argnum]))
|
||||
return float_arith_driver (0, 0, Adiv, nargs, args);
|
||||
return arith_driver (Adiv, nargs, args);
|
||||
}
|
||||
|
||||
|
|
|
@ -842,7 +842,7 @@ If PROCESS has not yet exited or died, return 0. */)
|
|||
|
||||
DEFUN ("process-id", Fprocess_id, Sprocess_id, 1, 1, 0,
|
||||
doc: /* Return the process id of PROCESS.
|
||||
This is the pid of the Unix process which PROCESS uses or talks to.
|
||||
This is the pid of the external process which PROCESS uses or talks to.
|
||||
For a network connection, this value is nil. */)
|
||||
(process)
|
||||
register Lisp_Object process;
|
||||
|
@ -1081,7 +1081,7 @@ DEFUN ("set-process-query-on-exit-flag",
|
|||
Fset_process_query_on_exit_flag, Sset_process_query_on_exit_flag,
|
||||
2, 2, 0,
|
||||
doc: /* Specify if query is needed for PROCESS when Emacs is exited.
|
||||
If the second argument FLAG is non-nil, emacs will query the user before
|
||||
If the second argument FLAG is non-nil, Emacs will query the user before
|
||||
exiting if PROCESS is running. */)
|
||||
(process, flag)
|
||||
register Lisp_Object process, flag;
|
||||
|
@ -1094,7 +1094,7 @@ exiting if PROCESS is running. */)
|
|||
DEFUN ("process-query-on-exit-flag",
|
||||
Fprocess_query_on_exit_flag, Sprocess_query_on_exit_flag,
|
||||
1, 1, 0,
|
||||
doc: /* Return the current value of query on exit flag for PROCESS. */)
|
||||
doc: /* Return the current value of query-on-exit flag for PROCESS. */)
|
||||
(process)
|
||||
register Lisp_Object process;
|
||||
{
|
||||
|
@ -2608,7 +2608,7 @@ successful) or "failed" when the connect completes. Default is to use
|
|||
a blocking connect (i.e. wait) for stream type connections.
|
||||
|
||||
:noquery BOOL -- Query the user unless BOOL is non-nil, and process is
|
||||
running when emacs is exited.
|
||||
running when Emacs is exited.
|
||||
|
||||
:stop BOOL -- Start process in the `stopped' state if BOOL non-nil.
|
||||
In the stopped state, a server process does not accept new
|
||||
|
@ -2954,7 +2954,7 @@ usage: (make-network-process &rest ARGS) */)
|
|||
struct hostent *host_info_ptr;
|
||||
|
||||
/* gethostbyname may fail with TRY_AGAIN, but we don't honour that,
|
||||
as it may `hang' emacs for a very long time. */
|
||||
as it may `hang' Emacs for a very long time. */
|
||||
immediate_quit = 1;
|
||||
QUIT;
|
||||
host_info_ptr = gethostbyname (SDATA (host));
|
||||
|
@ -3964,7 +3964,7 @@ server_accept_connection (server, channel)
|
|||
|
||||
/* This variable is different from waiting_for_input in keyboard.c.
|
||||
It is used to communicate to a lisp process-filter/sentinel (via the
|
||||
function Fwaiting_for_user_input_p below) whether emacs was waiting
|
||||
function Fwaiting_for_user_input_p below) whether Emacs was waiting
|
||||
for user-input when that process-filter was called.
|
||||
waiting_for_input cannot be used as that is by definition 0 when
|
||||
lisp code is being evalled.
|
||||
|
@ -5060,7 +5060,7 @@ read_process_output (proc, channel)
|
|||
|
||||
DEFUN ("waiting-for-user-input-p", Fwaiting_for_user_input_p, Swaiting_for_user_input_p,
|
||||
0, 0, 0,
|
||||
doc: /* Returns non-nil if emacs is waiting for input from the user.
|
||||
doc: /* Returns non-nil if Emacs is waiting for input from the user.
|
||||
This is intended for use by asynchronous process output filters and sentinels. */)
|
||||
()
|
||||
{
|
||||
|
@ -5723,7 +5723,7 @@ process_send_signal (process, signo, current_group, nomsg)
|
|||
DEFUN ("interrupt-process", Finterrupt_process, Sinterrupt_process, 0, 2, 0,
|
||||
doc: /* Interrupt process PROCESS.
|
||||
PROCESS may be a process, a buffer, or the name of a process or buffer.
|
||||
nil or no arg means current buffer's process.
|
||||
No arg or nil means current buffer's process.
|
||||
Second arg CURRENT-GROUP non-nil means send signal to
|
||||
the current process-group of the process's controlling terminal
|
||||
rather than to the process's own process group.
|
||||
|
@ -6468,13 +6468,13 @@ DEFUN ("set-process-coding-system", Fset_process_coding_system,
|
|||
doc: /* Set coding systems of PROCESS to DECODING and ENCODING.
|
||||
DECODING will be used to decode subprocess output and ENCODING to
|
||||
encode subprocess input. */)
|
||||
(proc, decoding, encoding)
|
||||
register Lisp_Object proc, decoding, encoding;
|
||||
(process, decoding, encoding)
|
||||
register Lisp_Object process, decoding, encoding;
|
||||
{
|
||||
register struct Lisp_Process *p;
|
||||
|
||||
CHECK_PROCESS (proc);
|
||||
p = XPROCESS (proc);
|
||||
CHECK_PROCESS (process);
|
||||
p = XPROCESS (process);
|
||||
if (XINT (p->infd) < 0)
|
||||
error ("Input file descriptor of %s closed", SDATA (p->name));
|
||||
if (XINT (p->outfd) < 0)
|
||||
|
@ -6484,7 +6484,7 @@ encode subprocess input. */)
|
|||
|
||||
p->decode_coding_system = decoding;
|
||||
p->encode_coding_system = encoding;
|
||||
setup_process_coding_systems (proc);
|
||||
setup_process_coding_systems (process);
|
||||
|
||||
return Qnil;
|
||||
}
|
||||
|
@ -6492,12 +6492,12 @@ encode subprocess input. */)
|
|||
DEFUN ("process-coding-system",
|
||||
Fprocess_coding_system, Sprocess_coding_system, 1, 1, 0,
|
||||
doc: /* Return a cons of coding systems for decoding and encoding of PROCESS. */)
|
||||
(proc)
|
||||
register Lisp_Object proc;
|
||||
(process)
|
||||
register Lisp_Object process;
|
||||
{
|
||||
CHECK_PROCESS (proc);
|
||||
return Fcons (XPROCESS (proc)->decode_coding_system,
|
||||
XPROCESS (proc)->encode_coding_system);
|
||||
CHECK_PROCESS (process);
|
||||
return Fcons (XPROCESS (process)->decode_coding_system,
|
||||
XPROCESS (process)->encode_coding_system);
|
||||
}
|
||||
|
||||
DEFUN ("set-process-filter-multibyte", Fset_process_filter_multibyte,
|
||||
|
@ -6507,15 +6507,15 @@ If FLAG is non-nil, the filter is given multibyte strings.
|
|||
If FLAG is nil, the filter is given unibyte strings. In this case,
|
||||
all character code conversion except for end-of-line conversion is
|
||||
suppressed. */)
|
||||
(proc, flag)
|
||||
Lisp_Object proc, flag;
|
||||
(process, flag)
|
||||
Lisp_Object process, flag;
|
||||
{
|
||||
register struct Lisp_Process *p;
|
||||
|
||||
CHECK_PROCESS (proc);
|
||||
p = XPROCESS (proc);
|
||||
CHECK_PROCESS (process);
|
||||
p = XPROCESS (process);
|
||||
p->filter_multibyte = flag;
|
||||
setup_process_coding_systems (proc);
|
||||
setup_process_coding_systems (process);
|
||||
|
||||
return Qnil;
|
||||
}
|
||||
|
@ -6523,13 +6523,13 @@ suppressed. */)
|
|||
DEFUN ("process-filter-multibyte-p", Fprocess_filter_multibyte_p,
|
||||
Sprocess_filter_multibyte_p, 1, 1, 0,
|
||||
doc: /* Return t if a multibyte string is given to PROCESS's filter.*/)
|
||||
(proc)
|
||||
Lisp_Object proc;
|
||||
(process)
|
||||
Lisp_Object process;
|
||||
{
|
||||
register struct Lisp_Process *p;
|
||||
|
||||
CHECK_PROCESS (proc);
|
||||
p = XPROCESS (proc);
|
||||
CHECK_PROCESS (process);
|
||||
p = XPROCESS (process);
|
||||
|
||||
return (NILP (p->filter_multibyte) ? Qnil : Qt);
|
||||
}
|
||||
|
@ -6747,11 +6747,11 @@ The value takes effect when `start-process' is called. */);
|
|||
#ifdef ADAPTIVE_READ_BUFFERING
|
||||
DEFVAR_LISP ("process-adaptive-read-buffering", &Vprocess_adaptive_read_buffering,
|
||||
doc: /* If non-nil, improve receive buffering by delaying after short reads.
|
||||
On some systems, when emacs reads the output from a subprocess, the output data
|
||||
On some systems, when Emacs reads the output from a subprocess, the output data
|
||||
is read in very small blocks, potentially resulting in very poor performance.
|
||||
This behaviour can be remedied to some extent by setting this variable to a
|
||||
non-nil value, as it will automatically delay reading from such processes, to
|
||||
allowing them to produce more output before emacs tries to read it.
|
||||
allowing them to produce more output before Emacs tries to read it.
|
||||
If the value is t, the delay is reset after each write to the process; any other
|
||||
non-nil value means that the delay is not reset on write.
|
||||
The variable takes effect when `start-process' is called. */);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue