annotate lib-src/profile.c @ 112119:48f5ac42611a

Reconcile with changes in line movement behavior for long text lines that cross more than a single physical window line, ie when truncate-lines is nil. (allout-next-visible-heading): Provide for change in line-move behavior on long lines when truncate-lines is nil. In that case, line-move can wind up on the same textual line when it moves to the next window line, and moving to the bullet position after the move yields zero advancement. Add logic to detect and compensate for the lack of progress. (allout-current-topic-collapsed-p): move-end-of-line respect for field boundaries is different when operating with body lines shorter than window width versus ones greater than window width, which can yield false negatives in this function. Avoid difference by applying move-end-of-line while field-text-motion is inhibited.
author Ken Manheimer <ken.manheimer@gmail.com>
date Tue, 04 Jan 2011 14:44:10 -0500
parents 52b76722152a
children 417b1e4d63cd
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.
94828
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
2 Copyright (C) 1992, 1994, 1999, 2001, 2002, 2003, 2004, 2005, 2006,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 100958
diff changeset
3 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
94828
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
5 Author: Boaz Ben-Zvi <boaz@lcs.mit.edu>
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
7 This file is part of GNU Emacs.
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
94828
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
9 GNU Emacs is free software: you can redistribute it and/or modify
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
10 it under the terms of the GNU General Public License as published by
94828
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
11 the Free Software Foundation, either version 3 of the License, or
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
12 (at your option) any later version.
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
14 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
15 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
16 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
17 GNU General Public License for more details.
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12723
diff changeset
19 You should have received a copy of the GNU General Public License
94828
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
20 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
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 ** To be run as an emacs process. Input string that starts with:
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ** 'z' -- resets the watch (to zero).
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ** 'p' -- return time (on stdout) as string with format <sec>.<micro-sec>
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ** 'q' -- exit.
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 **
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ** abstraction : a stopwatch
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ** operations: reset_watch, get_time
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 */
39661
cbfae3e04e1c Include config.h, not ../src/config.h and systime.h, not ../src/systime.h.
Pavel Janík <Pavel@Janik.cz>
parents: 26083
diff changeset
32 #include <config.h>
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 #include <stdio.h>
39661
cbfae3e04e1c Include config.h, not ../src/config.h and systime.h, not ../src/systime.h.
Pavel Janík <Pavel@Janik.cz>
parents: 26083
diff changeset
34 #include <systime.h>
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35
9887
be7b66e2cb98 (TV1, TV2): Use EMACS_TIME as type.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
36 static EMACS_TIME TV1, TV2;
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 static int watch_not_started = 1; /* flag */
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 static char time_string[30];
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 /* Reset the stopwatch to zero. */
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 8336
diff changeset
42 void
109111
52b76722152a Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
43 reset_watch (void)
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 {
8336
52590f967c1e (reset_watch, get_time): Use EMACS_GET_TIME.
Richard M. Stallman <rms@gnu.org>
parents: 6876
diff changeset
45 EMACS_GET_TIME (TV1);
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 watch_not_started = 0;
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 }
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 /* This call returns the time since the last reset_watch call. The time
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 42439
diff changeset
50 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
51 If reset_watch was not called yet, exit. */
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 char *
109111
52b76722152a Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
54 get_time (void)
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 {
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 if (watch_not_started)
55442
a47704955f8d Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
57 exit (EXIT_FAILURE); /* call reset_watch first ! */
8336
52590f967c1e (reset_watch, get_time): Use EMACS_GET_TIME.
Richard M. Stallman <rms@gnu.org>
parents: 6876
diff changeset
58 EMACS_GET_TIME (TV2);
9887
be7b66e2cb98 (TV1, TV2): Use EMACS_TIME as type.
Richard M. Stallman <rms@gnu.org>
parents: 9491
diff changeset
59 EMACS_SUB_TIME (TV2, TV2, TV1);
19337
bd0dd246f9cd (get_time): Cast arg to fprintf.
Richard M. Stallman <rms@gnu.org>
parents: 15683
diff changeset
60 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
61 return time_string;
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 }
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63
12723
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
64 #if ! defined (HAVE_GETTIMEOFDAY) && defined (HAVE_TIMEVAL)
42439
d8a417105504 Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents: 39661
diff changeset
65
12723
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
66 /* ARGSUSED */
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
67 gettimeofday (tp, tzp)
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
68 struct timeval *tp;
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
69 struct timezone *tzp;
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
70 {
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
71 extern long time ();
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
72
42439
d8a417105504 Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents: 39661
diff changeset
73 tp->tv_sec = time ((long *)0);
12723
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
74 tp->tv_usec = 0;
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
75 if (tzp != 0)
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
76 tzp->tz_minuteswest = -1;
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
77 }
42439
d8a417105504 Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents: 39661
diff changeset
78
12723
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
79 #endif
48786c683506 (gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents: 10087
diff changeset
80
15683
5f9426e991a3 Declare main as int, not void.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
81 int
109111
52b76722152a Convert function definitions to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
82 main (void)
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 {
6042
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
84 int c;
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
85 while ((c = getchar ()) != EOF)
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 {
6042
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
87 switch (c)
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 {
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 case 'z':
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 reset_watch ();
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 break;
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 case 'p':
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 puts (get_time ());
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 break;
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 case 'q':
55442
a47704955f8d Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
96 exit (EXIT_SUCCESS);
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 }
6042
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
98 /* 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
99 while (c != '\n' && c != EOF)
5bffd741340e (main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents: 6026
diff changeset
100 c = getchar ();
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 }
55442
a47704955f8d Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
102 exit (EXIT_FAILURE);
5810
3fdb74f69f34 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
104
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
105 /* arch-tag: 8db68f7e-2322-4944-a315-dba349bdbf39
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
106 (do not change this comment) */
55442
a47704955f8d Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
107
a47704955f8d Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
108 /* profile.c ends here */