annotate lib-src/profile.c @ 22758:dbd9ecc9dbac

Added next-buffer/previous-buffer keybindings (bound to M-n/M-p). (crisp-unbury-buffer): New function. Fixed bogus XEmacs/Lucid string-match checking. Made modeline entry mouse2-able. (crisp-mode-map): Make this a sparse keymap parented from current-global-map. (crisp-mode-original-keymap): Don't copy the keymap. (crisp-last-last-command): Renamed from last-last-command. defvar it. (crisp-mode): Honor ARG. (crisp-kill-line, crisp-copy-line): When a region isn't highlighted, use the region from point to eol. Honor prefix argument. (crisp-submit-bug-report): New command, taken from cc-mode. Shortened the version numbering, removed the release-version tracking (crisp-version): New function. New keybindings `C-home', `C-end', `M-home', `M-end', `C-f', `M-l', `M-m'. (crisp-copy-line): No need to save point. Removed S-right and S-left bindings. Abstract the marking and selection interfaces so that we can be compatible with both Emacs and XEmacs. And try and make the behavior as close as possible under both environments so that there are no surprises.
author Karl Heuer <kwzh@gnu.org>
date Tue, 14 Jul 1998 22:17:35 +0000
parents bd0dd246f9cd
children 134b57acef68
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 /* profile.c --- generate periodic events for profiling of Emacs Lisp code.
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 Copyright (C) 1992, 1994 Free Software Foundation, Inc.
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 Author: Boaz Ben-Zvi <boaz@lcs.mit.edu>
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
6 This file is part of GNU Emacs.
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
8 GNU Emacs is free software; you can redistribute it and/or modify
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
9 it under the terms of the GNU General Public License as published by
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
10 the Free Software Foundation; either version 2, or (at your option)
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
11 any later version.
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
13 GNU Emacs is distributed in the hope that it will be useful,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
16 GNU General Public License for more details.
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
18 You should have received a copy of the GNU General Public License
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
19 along with GNU Emacs; see the file COPYING. If not, write to
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
21 Boston, MA 02111-1307, USA. */
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 /**
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ** To be run as an emacs process. Input string that starts with:
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ** 'z' -- resets the watch (to zero).
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ** 'p' -- return time (on stdout) as string with format <sec>.<micro-sec>
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ** 'q' -- exit.
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 **
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ** abstraction : a stopwatch
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ** operations: reset_watch, get_time
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 */
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 #include <stdio.h>
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 #include <../src/config.h>
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 #include <../src/systime.h>
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36
9887
be7b66e2cb98 (TV1, TV2): Use EMACS_TIME as type.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
37 static EMACS_TIME TV1, TV2;
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 static int watch_not_started = 1; /* flag */
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 static char time_string[30];
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 /* Reset the stopwatch to zero. */
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 8336
diff changeset
43 void
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 reset_watch ()
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 {
8336
52590f967c1e (reset_watch, get_time): Use EMACS_GET_TIME.
Richard M. Stallman <rms@gnu.org>
parents: 6876
diff changeset
46 EMACS_GET_TIME (TV1);
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 watch_not_started = 0;
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 }
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 /* This call returns the time since the last reset_watch call. The time
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 is returned as a string with the format <seconds>.<micro-seconds>
6042
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
52 If reset_watch was not called yet, exit. */
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 char *
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 get_time ()
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 {
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 if (watch_not_started)
6042
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
58 exit (1); /* call reset_watch first ! */
8336
52590f967c1e (reset_watch, get_time): Use EMACS_GET_TIME.
Richard M. Stallman <rms@gnu.org>
parents: 6876
diff changeset
59 EMACS_GET_TIME (TV2);
9887
be7b66e2cb98 (TV1, TV2): Use EMACS_TIME as type.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
60 EMACS_SUB_TIME (TV2, TV2, TV1);
19337
bd0dd246f9cd (get_time): Cast arg to fprintf.
Richard M. Stallman <rms@gnu.org>
parents: 15683
diff changeset
61 sprintf (time_string, "%lu.%06lu", (unsigned long)EMACS_SECS (TV2), (unsigned long)EMACS_USECS (TV2));
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 return time_string;
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 }
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64
12723
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
65 #if ! defined (HAVE_GETTIMEOFDAY) && defined (HAVE_TIMEVAL)
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
66
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
67 /* ARGSUSED */
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
68 gettimeofday (tp, tzp)
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
69 struct timeval *tp;
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
70 struct timezone *tzp;
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
71 {
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
72 extern long time ();
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
73
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
74 tp->tv_sec = time ((long *)0);
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
75 tp->tv_usec = 0;
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
76 if (tzp != 0)
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
77 tzp->tz_minuteswest = -1;
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
78 }
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
79
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
80 #endif
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
81
15683
5f9426e991a3 Declare main as int, not void.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
82 int
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 main ()
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 {
6042
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
85 int c;
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
86 while ((c = getchar ()) != EOF)
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 {
6042
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
88 switch (c)
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 {
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 case 'z':
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 reset_watch ();
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 break;
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 case 'p':
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 puts (get_time ());
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 break;
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 case 'q':
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 exit (0);
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 }
6042
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
99 /* Anything remaining on the line is ignored. */
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
100 while (c != '\n' && c != EOF)
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
101 c = getchar ();
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 }
6026
45b117ac2dbc (get_time): Simplify; avoid calling index.
Karl Heuer <kwzh@gnu.org>
parents: 5810
diff changeset
103 exit (1);
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 }