# HG changeset patch # User Karoly Lorentey # Date 1084266696 0 # Node ID 84cafe5c268f68560ce593c82f413f0e0feaf53f # Parent b2b85b22b20e7c080902092e6b691cf44d275501# Parent a312c415858456104a8d92f31d7acc4b9add2abe 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 diff -r b2b85b22b20e -r 84cafe5c268f lib-src/ChangeLog --- a/lib-src/ChangeLog Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/ChangeLog Tue May 11 09:11:36 2004 +0000 @@ -1,3 +1,17 @@ +2004-05-08 Thien-Thi Nguyen + + * 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 + + * Makefile.in (emacsclient${EXEEXT}): Use makefile var `version'. + 2004-05-07 Thien-Thi Nguyen * b2m.c (GOOD, BAD): Delete macros. Throughout, diff -r b2b85b22b20e -r 84cafe5c268f lib-src/Makefile.in --- a/lib-src/Makefile.in Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/Makefile.in Tue May 11 09:11:36 2004 +0000 @@ -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 @@ 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 diff -r b2b85b22b20e -r 84cafe5c268f lib-src/cvtmail.c --- a/lib-src/cvtmail.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/cvtmail.c Tue May 11 09:11:36 2004 +0000 @@ -119,7 +119,7 @@ } fclose (mddf); fclose (mfilef); - return 0; + return EXIT_SUCCESS; } void @@ -148,7 +148,7 @@ char *s1, *s2; { error (s1, s2); - exit (1); + exit (EXIT_FAILURE); } void @@ -157,7 +157,7 @@ { fprintf (stderr, "cvtmail: "); perror (s); - exit (1); + exit (EXIT_FAILURE); } char * @@ -183,3 +183,5 @@ /* arch-tag: b93c25a9-9012-44f1-b78b-9cc7aed44a7a (do not change this comment) */ + +/* cvtmail.c ends here */ diff -r b2b85b22b20e -r 84cafe5c268f lib-src/ebrowse.c --- a/lib-src/ebrowse.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/ebrowse.c Tue May 11 09:11:36 2004 +0000 @@ -564,7 +564,7 @@ if (p == NULL) { yyerror ("out of memory", NULL); - exit (1); + exit (EXIT_FAILURE); } return p; } @@ -581,7 +581,7 @@ if (p == NULL) { yyerror ("out of memory", NULL); - exit (1); + exit (EXIT_FAILURE); } return p; } @@ -3671,7 +3671,7 @@ int error; { puts (USAGE); - exit (error ? 1 : 0); + exit (error ? EXIT_FAILURE : EXIT_SUCCESS); } @@ -3688,7 +3688,7 @@ 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 @@ if (yyout == NULL) { yyerror ("cannot open output file `%s'", out_filename); - exit (1); + exit (EXIT_FAILURE); } } @@ -3970,11 +3970,10 @@ 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 */ diff -r b2b85b22b20e -r 84cafe5c268f lib-src/emacsclient.c --- a/lib-src/emacsclient.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/emacsclient.c Tue May 11 09:11:36 2004 +0000 @@ -48,9 +48,6 @@ 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 @@ case 'V': printf ("emacsclient %s\n", VERSION); - exit (0); + exit (EXIT_SUCCESS); break; case 't': @@ -176,7 +173,7 @@ default: fprintf (stderr, "Try `%s --help' for more information\n", progname); - exit (1); + exit (EXIT_FAILURE); break; } } @@ -209,7 +206,7 @@ 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 @@ if (result == NULL) { perror ("malloc"); - exit (1); + exit (EXIT_FAILURE); } return result; } @@ -236,7 +233,7 @@ if (result == NULL) { perror ("strdup"); - exit (1); + exit (EXIT_FAILURE); } return result; } @@ -336,7 +333,7 @@ } else { - exit (1); + exit (EXIT_FAILURE); } } @@ -520,7 +517,7 @@ { 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 @@ { 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 @@ /* Maybe wait for an answer. */ if (nowait) - { - return 0; - } + return EXIT_SUCCESS; if (!eval && !tty) { @@ -883,7 +878,7 @@ fflush (stdout); fsync (1); - return 0; + return EXIT_SUCCESS; } #endif /* HAVE_SOCKETS */ @@ -905,3 +900,5 @@ /* arch-tag: f39bb9c4-73eb-477e-896d-50832e2ca9a7 (do not change this comment) */ + +/* emacsclient.c ends here */ diff -r b2b85b22b20e -r 84cafe5c268f lib-src/fakemail.c --- a/lib-src/fakemail.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/fakemail.c Tue May 11 09:11:36 2004 +0000 @@ -169,7 +169,7 @@ 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 @@ 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 @@ 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 @@ /* arch-tag: acb0afa6-315a-4c5b-b9e3-def5725c8783 (do not change this comment) */ + +/* fakemail.c ends here */ diff -r b2b85b22b20e -r 84cafe5c268f lib-src/hexl.c --- a/lib-src/hexl.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/hexl.c Tue May 11 09:11:36 2004 +0000 @@ -270,15 +270,17 @@ 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 */ diff -r b2b85b22b20e -r 84cafe5c268f lib-src/make-docfile.c --- a/lib-src/make-docfile.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/make-docfile.c Tue May 11 09:11:36 2004 +0000 @@ -104,7 +104,7 @@ 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 @@ /* arch-tag: f7203aaf-991a-4238-acb5-601db56f2894 (do not change this comment) */ + +/* make-docfile.c ends here */ diff -r b2b85b22b20e -r 84cafe5c268f lib-src/movemail.c --- a/lib-src/movemail.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/movemail.c Tue May 11 09:11:36 2004 +0000 @@ -216,7 +216,7 @@ preserve_mail++; break; default: - exit(1); + exit (EXIT_FAILURE); } } @@ -234,7 +234,7 @@ #else fprintf (stderr, "Usage: movemail [-p] inbox destfile%s\n", ""); #endif - exit (1); + exit (EXIT_FAILURE); } inname = argv[optind]; @@ -536,12 +536,12 @@ 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 @@ #endif /* ! DISABLE_DIRECT_ACCESS */ - return 0; + return EXIT_SUCCESS; } #ifdef MAIL_USE_MAILLOCK @@ -607,7 +607,7 @@ 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 @@ * 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 @@ 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 @@ { 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 @@ error ("Error in fdopen: %s", strerror (errno), 0); close (mbfi); unlink (outfile); - return (1); + return EXIT_FAILURE; } if (reverse_order) @@ -789,7 +791,7 @@ { error (Errmsg, 0, 0); close (mbfi); - return (1); + return EXIT_FAILURE; } mbx_delimit_end (mbf); fflush (mbf); @@ -798,7 +800,7 @@ error ("Error in fflush: %s", strerror (errno), 0); pop_close (server); close (mbfi); - return (1); + return EXIT_FAILURE; } } @@ -812,14 +814,14 @@ 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 @@ { 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 @@ /* arch-tag: 1c323112-41fe-4fe5-8de9-494de631f73f (do not change this comment) */ + +/* movemail.c ends here */ diff -r b2b85b22b20e -r 84cafe5c268f lib-src/profile.c --- a/lib-src/profile.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/profile.c Tue May 11 09:11:36 2004 +0000 @@ -55,7 +55,7 @@ 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 @@ 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 */ diff -r b2b85b22b20e -r 84cafe5c268f lib-src/sorted-doc.c --- a/lib-src/sorted-doc.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/sorted-doc.c Tue May 11 09:11:36 2004 +0000 @@ -75,7 +75,7 @@ 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 @@ 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 */ diff -r b2b85b22b20e -r 84cafe5c268f lib-src/test-distrib.c --- a/lib-src/test-distrib.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/test-distrib.c Tue May 11 09:11:36 2004 +0000 @@ -100,11 +100,10 @@ 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 */ diff -r b2b85b22b20e -r 84cafe5c268f lib-src/update-game-score.c --- a/lib-src/update-game-score.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/update-game-score.c Tue May 11 09:11:36 2004 +0000 @@ -111,7 +111,7 @@ 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 @@ const char *msg; { fprintf (stderr, "%s: %s\n", msg, strerror (errno)); - exit (1); + exit (EXIT_FAILURE); } char * @@ -199,7 +199,7 @@ switch (c) { case 'h': - usage (0); + usage (EXIT_SUCCESS); break; case 'd': user_prefix = optarg; @@ -213,11 +213,11 @@ 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 @@ lose_syserr ("Failed to write scores file"); } unlock_file (scorefile, lockstate); - exit (0); + exit (EXIT_SUCCESS); } int @@ -531,3 +531,5 @@ /* arch-tag: 2bf5c52e-4beb-463a-954e-c58b9c64736b (do not change this comment) */ + +/* update-game-score.c ends here */ diff -r b2b85b22b20e -r 84cafe5c268f lib-src/yow.c --- a/lib-src/yow.c Sat May 08 20:23:10 2004 +0000 +++ b/lib-src/yow.c Tue May 11 09:11:36 2004 +0000 @@ -73,7 +73,7 @@ if ((fp = fopen(file, "r")) == NULL) { fprintf(stderr, "yow: "); perror(file); - exit(1); + exit(EXIT_FAILURE); } /* initialize random seed */ @@ -82,7 +82,7 @@ setup_yow(fp); yow(fp); fclose(fp); - return 0; + return EXIT_SUCCESS; } static long len = -1; @@ -113,7 +113,7 @@ if (fseek(fp, 0L, 2) == -1) { perror("yow"); - exit(1); + exit(EXIT_FAILURE); } len = ftell(fp) - header_len; } @@ -132,7 +132,7 @@ 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 @@ /* arch-tag: e40fc0df-bafb-4001-af24-5c883d1c685e (do not change this comment) */ + +/* yow.c ends here */ diff -r b2b85b22b20e -r 84cafe5c268f lisp/ChangeLog --- a/lisp/ChangeLog Sat May 08 20:23:10 2004 +0000 +++ b/lisp/ChangeLog Tue May 11 09:11:36 2004 +0000 @@ -1,3 +1,57 @@ +2004-05-08 Andreas Schwab + + * 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 + + * 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 * help-fns.el (help-do-arg-highlight): Temporarily set ?\- to be a diff -r b2b85b22b20e -r 84cafe5c268f lisp/calendar/cal-bahai.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/calendar/cal-bahai.el Tue May 11 09:11:36 2004 +0000 @@ -0,0 +1,507 @@ +;;; cal-bahai.el --- calendar functions for the Baha'i calendar. + +;; Copyright (C) 2001 Free Software Foundation, Inc. + +;; Author: John Wiegley +;; 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 diff -r b2b85b22b20e -r 84cafe5c268f lisp/calendar/cal-menu.el --- a/lisp/calendar/cal-menu.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/calendar/cal-menu.el Tue May 11 09:11:36 2004 +0000 @@ -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] @@ -110,6 +112,8 @@ (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] '("Hebrew Date" . calendar-goto-hebrew-date)) @@ -288,6 +292,19 @@ '("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 @@ (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))))) diff -r b2b85b22b20e -r 84cafe5c268f lisp/calendar/calendar.el --- a/lisp/calendar/calendar.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/calendar/calendar.el Tue May 11 09:11:36 2004 +0000 @@ -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 @@ -317,6 +321,16 @@ :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. This is the place to add key bindings to `calendar-mode-map'." @@ -463,21 +477,23 @@ %%(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 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-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, 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'." @@ -503,6 +519,12 @@ :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. See the documentation for the function `include-other-diary-files'." @@ -554,8 +576,9 @@ ;;;###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 @@ ;;;###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 @@ ;;;###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 @@ -1068,6 +1097,48 @@ :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 (defcustom solar-holidays @@ -1104,15 +1175,16 @@ (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 @@ 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 @@ (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 @@ "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." 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 @@ (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 @@ (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 @@ (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 @@ (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))) diff -r b2b85b22b20e -r 84cafe5c268f lisp/calendar/diary-lib.el --- a/lisp/calendar/diary-lib.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/calendar/diary-lib.el Tue May 11 09:11:36 2004 +0000 @@ -123,6 +123,22 @@ (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 @@ 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 diff -r b2b85b22b20e -r 84cafe5c268f lisp/calendar/holidays.el --- a/lisp/calendar/holidays.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/calendar/holidays.el Tue May 11 09:11:36 2004 +0000 @@ -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 @@ (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))) diff -r b2b85b22b20e -r 84cafe5c268f lisp/eshell/em-glob.el --- a/lisp/eshell/em-glob.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/eshell/em-glob.el Tue May 11 09:11:36 2004 +0000 @@ -122,10 +122,6 @@ :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 @@ (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 @@ (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,8 +200,11 @@ resulting regular expression." (let ((matched-in-pattern 0) ; How much of PATTERN handled regexp) - (while (string-match eshell-glob-chars-regexp - pattern matched-in-pattern) + (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))) (setq regexp diff -r b2b85b22b20e -r 84cafe5c268f lisp/international/subst-big5.el --- a/lisp/international/subst-big5.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/international/subst-big5.el Tue May 11 09:11:36 2004 +0000 @@ -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 ;; 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: diff -r b2b85b22b20e -r 84cafe5c268f lisp/international/subst-gb2312.el --- a/lisp/international/subst-gb2312.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/international/subst-gb2312.el Tue May 11 09:11:36 2004 +0000 @@ -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 ;; 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: diff -r b2b85b22b20e -r 84cafe5c268f lisp/international/subst-jis.el --- a/lisp/international/subst-jis.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/international/subst-jis.el Tue May 11 09:11:36 2004 +0000 @@ -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 ;; 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: diff -r b2b85b22b20e -r 84cafe5c268f lisp/international/subst-ksc.el --- a/lisp/international/subst-ksc.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/international/subst-ksc.el Tue May 11 09:11:36 2004 +0000 @@ -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 ;; 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: diff -r b2b85b22b20e -r 84cafe5c268f lisp/international/utf-16.el --- a/lisp/international/utf-16.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/international/utf-16.el Tue May 11 09:11:36 2004 +0000 @@ -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 ;; Keywords: Unicode, UTF-16, i18n @@ -351,7 +351,7 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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))) ) diff -r b2b85b22b20e -r 84cafe5c268f lisp/international/utf-8.el --- a/lisp/international/utf-8.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/international/utf-8.el Tue May 11 09:11:36 2004 +0000 @@ -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 @@ (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 @@ (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 @@ (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) diff -r b2b85b22b20e -r 84cafe5c268f lisp/isearchb.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/isearchb.el Tue May 11 09:11:36 2004 +0000 @@ -0,0 +1,227 @@ +;;; isearchb --- a marriage between iswitchb and isearch + +;; Copyright (C) 2004 John Wiegley + +;; Author: John Wiegley +;; 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 diff -r b2b85b22b20e -r 84cafe5c268f lisp/iswitchb.el --- a/lisp/iswitchb.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/iswitchb.el Tue May 11 09:11:36 2004 +0000 @@ -307,6 +307,20 @@ :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 @@ (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 @@ (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)) - (iswitchb-make-buflist iswitchb-default) - (iswitchb-set-matches) + (setq iswitchb-text (or start "")) + (unless matches-set + (setq iswitchb-rescan t) + (iswitchb-make-buflist iswitchb-default) + (iswitchb-set-matches)) (let ((minibuffer-local-completion-map iswitchb-mode-map) ;; Record the minibuffer depth that we expect to find once @@ -605,32 +626,41 @@ (iswitchb-require-match require-match)) ;; prompt the user for the buffer name (setq iswitchb-final-text (completing-read - prompt ;the prompt + prompt ;the prompt '(("dummy" . 1)) ;table - nil ;predicate - nil ;require-match [handled elsewhere] - nil ;initial-contents + nil ;predicate + nil ;require-match [handled elsewhere] + 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) - (null iswitchb-matches)) + (if (or (eq iswitchb-exit 'takeprompt) + (null iswitchb-matches)) (setq buf-sel iswitchb-final-text) ;; else take head of list (setq buf-sel (car iswitchb-matches))) ;; 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 @@ (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 @@ (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 @@ 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 @@ 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 @@ (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 diff -r b2b85b22b20e -r 84cafe5c268f lisp/textmodes/flyspell.el --- a/lisp/textmodes/flyspell.el Sat May 08 20:23:10 2004 +0000 +++ b/lisp/textmodes/flyspell.el Tue May 11 09:11:36 2004 +0000 @@ -1516,46 +1516,51 @@ ;*---------------------------------------------------------------------*/ (defun flyspell-highlight-incorrect-region (beg end poss) "Set up an overlay on a misspelled word, in the buffer from BEG to END." - (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) - (overlayp flyspell-overlay)) - (delete-overlay flyspell-overlay) - (let ((overlays (overlays-at beg))) - (while (consp overlays) - (if (flyspell-overlay-p (car overlays)) - (delete-overlay (car overlays))) - (setq overlays (cdr overlays))))) - ;; now we can use a new overlay - (setq flyspell-overlay - (make-flyspell-overlay beg end - 'flyspell-incorrect-face - 'highlight)))))) + (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) + (overlayp flyspell-overlay)) + (delete-overlay flyspell-overlay) + (let ((overlays (overlays-at beg))) + (while (consp overlays) + (if (flyspell-overlay-p (car overlays)) + (delete-overlay (car overlays))) + (setq overlays (cdr overlays))))) + ;; now we can use a new overlay + (setq flyspell-overlay + (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))) - (progn - ;; we cleanup current overlay at the same position - (if (and (not flyspell-persistent-highlight) - (overlayp flyspell-overlay)) - (delete-overlay flyspell-overlay) - (let ((overlays (overlays-at beg))) - (while (consp overlays) - (if (flyspell-overlay-p (car overlays)) - (delete-overlay (car overlays))) - (setq overlays (cdr overlays))))) - ;; now we can use a new overlay - (setq flyspell-overlay - (make-flyspell-overlay beg end - 'flyspell-duplicate-face - 'highlight))))) + (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) + (overlayp flyspell-overlay)) + (delete-overlay flyspell-overlay) + (let ((overlays (overlays-at beg))) + (while (consp overlays) + (if (flyspell-overlay-p (car overlays)) + (delete-overlay (car overlays))) + (setq overlays (cdr overlays))))) + ;; now we can use a new overlay + (setq flyspell-overlay + (make-flyspell-overlay beg end + 'flyspell-duplicate-face + 'highlight))))))) ;*---------------------------------------------------------------------*/ ;* flyspell-auto-correct-cache ... */ @@ -2061,23 +2066,23 @@ 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)) - (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))))) + (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 + (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 @@ 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)) - (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))))) + (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) + (throw 'done t)) + (setq i (1+ i)))) + nil))) ;*---------------------------------------------------------------------*/ ;* flyspell-already-abbrevp ... */ diff -r b2b85b22b20e -r 84cafe5c268f src/ChangeLog --- a/src/ChangeLog Sat May 08 20:23:10 2004 +0000 +++ b/src/ChangeLog Tue May 11 09:11:36 2004 +0000 @@ -1,5 +1,19 @@ +2004-05-08 Peter Whaite (tiny change) + + * data.c (Fquo): If any argument is float, do the computation in + floating point. + 2004-05-08 Juanma Barranquero + * 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. diff -r b2b85b22b20e -r 84cafe5c268f src/data.c --- a/src/data.c Sat May 08 20:23:10 2004 +0000 +++ b/src/data.c Tue May 11 09:11:36 2004 +0000 @@ -2698,6 +2698,12 @@ 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); } diff -r b2b85b22b20e -r 84cafe5c268f src/process.c --- a/src/process.c Sat May 08 20:23:10 2004 +0000 +++ b/src/process.c Tue May 11 09:11:36 2004 +0000 @@ -532,7 +532,7 @@ three failures in a row before deciding that we've reached the end of the ptys. */ int failed_count = 0; - + if (stat (pty_name, &stb) < 0) { failed_count++; @@ -842,7 +842,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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)); @@ -3634,7 +3634,7 @@ p->read_output_skip = Qnil; } #endif - + if (inchannel >= 0) { /* Beware SIGCHLD hereabouts. */ @@ -3964,7 +3964,7 @@ /* 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 @@ 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. */) () { @@ -5443,7 +5443,7 @@ { int gid = -1; -#ifdef TIOCGPGRP +#ifdef TIOCGPGRP if (ioctl (XINT (p->infd), TIOCGPGRP, &gid) == -1 && ! NILP (p->tty_name)) { int fd; @@ -5640,7 +5640,7 @@ we should just assume that p->pid is also the process group id. */ gid = emacs_get_tty_pgrp (p); - + if (gid == -1) /* If we can't get the information, assume the shell owns the tty. */ @@ -5723,7 +5723,7 @@ 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 @@ 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 @@ 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 @@ 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 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 @@ 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 @@ #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. */);