mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-30 09:00:31 -08:00
Merged in changes from CVS trunk.
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-672 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-266
This commit is contained in:
commit
f590a2a442
25 changed files with 292 additions and 65 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2004-11-06 Lars Brinkhoff <lars@nocrew.org>
|
||||
|
||||
* configure.in: Add check for getrusage.
|
||||
* configure: Regenerate.
|
||||
|
||||
2004-11-02 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* configure.in (HAVE_GTK_FILE_CHOOSER, $HAVE_GTK_FILE_SELECTION): New
|
||||
|
|
|
|||
3
configure
vendored
3
configure
vendored
|
|
@ -13702,10 +13702,11 @@ done
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
for ac_func in gethostname getdomainname dup2 \
|
||||
rename closedir mkdir rmdir sysinfo \
|
||||
rename closedir mkdir rmdir sysinfo getrusage \
|
||||
random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime res_init setsid \
|
||||
strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \
|
||||
utimes setrlimit setpgid getcwd getwd shutdown getaddrinfo \
|
||||
|
|
|
|||
|
|
@ -2370,7 +2370,7 @@ AC_CHECK_FUNCS(touchlock)
|
|||
AC_CHECK_HEADERS(maillock.h)
|
||||
|
||||
AC_CHECK_FUNCS(gethostname getdomainname dup2 \
|
||||
rename closedir mkdir rmdir sysinfo \
|
||||
rename closedir mkdir rmdir sysinfo getrusage \
|
||||
random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime res_init setsid \
|
||||
strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \
|
||||
utimes setrlimit setpgid getcwd getwd shutdown getaddrinfo \
|
||||
|
|
|
|||
7
etc/NEWS
7
etc/NEWS
|
|
@ -98,6 +98,9 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
|
|||
|
||||
* Changes in Emacs 21.4
|
||||
|
||||
** In Outline mode, hide-body no longer hides lines at the top
|
||||
of the file that precede the first header line.
|
||||
|
||||
+++
|
||||
** `set-auto-mode' now gives the interpreter magic line (if present)
|
||||
precedence over the file name. Likewise an <?xml or <!DOCTYPE declaration
|
||||
|
|
@ -2323,6 +2326,10 @@ configuration files.
|
|||
|
||||
* Lisp Changes in Emacs 21.4
|
||||
|
||||
+++
|
||||
** The new primitive `get-internal-run-time' returns the processor
|
||||
run time used by Emacs since start-up.
|
||||
|
||||
+++
|
||||
** The new function `called-interactively-p' does what many people
|
||||
have mistakenly believed `interactively-p' did: it returns t if the
|
||||
|
|
|
|||
|
|
@ -1,3 +1,54 @@
|
|||
2004-11-06 Kai Grossjohann <kai.grossjohann@gmx.net>
|
||||
|
||||
* net/tramp.el (tramp-coding-commands): Additionally try "uudecode
|
||||
-o /dev/stdout" before trying "uudecode -o -". Suggested by Han
|
||||
Boetes.
|
||||
(tramp-uudecode): Mention `uudecode -o /dev/stdout'.
|
||||
|
||||
2004-11-06 David Ponce <david@dponce.com>
|
||||
|
||||
* recentf.el (recentf-menu-path): Use menu item name.
|
||||
|
||||
2004-11-06 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* progmodes/gdb-ui.el: Don't call define-fringe-bitmap if the
|
||||
display doesn't support images.
|
||||
|
||||
2004-11-06 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* tempo.el (tempo-match-finder): Doc fix.
|
||||
|
||||
* emacs-lisp/easymenu.el (easy-menu-get-map): Fix last change.
|
||||
|
||||
2004-11-06 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* emacs-lisp/easymenu.el (easy-menu-get-map-look-for-name): Remove.
|
||||
(easy-menu-lookup-name): New fun to replace it.
|
||||
(easy-menu-get-map): Use it to obey menu item names (rather than just
|
||||
keys) when looking up `path'.
|
||||
(easy-menu-always-true-p): Rename from easy-menu-always-true.
|
||||
(easy-menu-convert-item-1): Adjust to new name.
|
||||
|
||||
2004-11-06 Peter Heslin <pj@heslin.eclipse.co.uk> (tiny change)
|
||||
|
||||
* outline.el (hide-body): Don't hide lines at the top of the file
|
||||
that precede the first header line.
|
||||
|
||||
2004-11-06 Paul Pogonyshev <pogonyshev@gmx.net>
|
||||
|
||||
* align.el (align-areas): Delete whitespace before reindenting, so
|
||||
that tabs are never placed after spaces.
|
||||
|
||||
2004-11-06 Alan Shutko <ats@acm.org>
|
||||
|
||||
* macros.el (insert-kbd-macro): Do completions based on macros,
|
||||
rather than all commands.
|
||||
|
||||
2004-11-06 David Hansen <david.hansen@gmx.net> (tiny change)
|
||||
|
||||
* tempo.el (tempo-match-finder): Use [:word:] instead of "^\\b",
|
||||
to solve a bug whereby tags with 'b' don't match.
|
||||
|
||||
2004-11-05 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* info.el (Info-search): Don't search in node header lines
|
||||
|
|
|
|||
|
|
@ -1212,6 +1212,14 @@ have been aligned. No changes will be made to the buffer."
|
|||
(cond ((< gocol 0) t) ; don't do anything
|
||||
((= cur gocol) t) ; don't need to
|
||||
((< cur gocol) ; just add space
|
||||
;; FIXME: It is stated above that "...the
|
||||
;; whitespace to be modified was already
|
||||
;; deleted by `align-region', all we have
|
||||
;; to do here is indent." However, this
|
||||
;; doesn't seem to be true, so we first
|
||||
;; delete the whitespace to avoid tabs
|
||||
;; after spaces.
|
||||
(delete-horizontal-space t)
|
||||
(indent-to gocol))
|
||||
(t
|
||||
;; This code works around an oddity in the
|
||||
|
|
|
|||
|
|
@ -242,9 +242,9 @@ possibly preceded by keyword pairs as described in `easy-menu-define'."
|
|||
(setq visible (or arg ''nil)))))
|
||||
(if (equal visible ''nil)
|
||||
nil ; Invisible menu entry, return nil.
|
||||
(if (and visible (not (easy-menu-always-true visible)))
|
||||
(if (and visible (not (easy-menu-always-true-p visible)))
|
||||
(setq prop (cons :visible (cons visible prop))))
|
||||
(if (and enable (not (easy-menu-always-true enable)))
|
||||
(if (and enable (not (easy-menu-always-true-p enable)))
|
||||
(setq prop (cons :enable (cons enable prop))))
|
||||
(if filter (setq prop (cons :filter (cons filter prop))))
|
||||
(if help (setq prop (cons :help (cons help prop))))
|
||||
|
|
@ -363,12 +363,12 @@ ITEM defines an item as in `easy-menu-define'."
|
|||
(cons cmd keys))))
|
||||
(setq cache-specified nil))
|
||||
(if keys (setq prop (cons :keys (cons keys prop)))))
|
||||
(if (and visible (not (easy-menu-always-true visible)))
|
||||
(if (and visible (not (easy-menu-always-true-p visible)))
|
||||
(if (equal visible ''nil)
|
||||
;; Invisible menu item. Don't insert into keymap.
|
||||
(setq remove t)
|
||||
(setq prop (cons :visible (cons visible prop)))))))
|
||||
(if (and active (not (easy-menu-always-true active)))
|
||||
(if (and active (not (easy-menu-always-true-p active)))
|
||||
(setq prop (cons :enable (cons active prop))))
|
||||
(if (and (or no-name cache-specified)
|
||||
(or (null cache) (stringp cache) (vectorp cache)))
|
||||
|
|
@ -426,7 +426,8 @@ KEY does not have to be a symbol, and comparison is done with equal."
|
|||
|
||||
(defun easy-menu-name-match (name item)
|
||||
"Return t if NAME is the name of menu item ITEM.
|
||||
NAME can be either a string, or a symbol."
|
||||
NAME can be either a string, or a symbol.
|
||||
ITEM should be a keymap binding of the form (KEY . MENU-ITEM)."
|
||||
(if (consp item)
|
||||
(if (symbolp name)
|
||||
(eq (car-safe item) name)
|
||||
|
|
@ -439,7 +440,7 @@ NAME can be either a string, or a symbol."
|
|||
(eq (car-safe item) (intern name))
|
||||
(eq (car-safe item) (easy-menu-intern name)))))))
|
||||
|
||||
(defun easy-menu-always-true (x)
|
||||
(defun easy-menu-always-true-p (x)
|
||||
"Return true if form X never evaluates to nil."
|
||||
(if (consp x) (and (eq (car x) 'quote) (cadr x))
|
||||
(or (eq x t) (not (symbolp x)))))
|
||||
|
|
@ -591,10 +592,24 @@ If item is an old format item, a new format item is returned."
|
|||
(cons name item)) ; Keymap or new menu format
|
||||
)))
|
||||
|
||||
(defun easy-menu-get-map-look-for-name (name submap)
|
||||
(while (and submap (not (easy-menu-name-match name (car submap))))
|
||||
(setq submap (cdr submap)))
|
||||
submap)
|
||||
(defun easy-menu-lookup-name (map name)
|
||||
"Lookup menu item NAME in keymap MAP.
|
||||
Like `lookup-key' except that NAME is not an array but just a single key
|
||||
and that NAME can be a string representing the menu item's name."
|
||||
(or (lookup-key map (vector (easy-menu-intern name)))
|
||||
(when (stringp name)
|
||||
;; `lookup-key' failed and we have a menu item name: look at the
|
||||
;; actual menu entries's names.
|
||||
(catch 'found
|
||||
(map-keymap (lambda (key item)
|
||||
(if (condition-case nil (member name item)
|
||||
(error nil))
|
||||
;; Found it!! Look for it again with
|
||||
;; `lookup-key' so as to handle inheritance and
|
||||
;; to extract the actual command/keymap bound to
|
||||
;; `name' from the item (via get_keyelt).
|
||||
(throw 'found (lookup-key map (vector key)))))
|
||||
map)))))
|
||||
|
||||
(defun easy-menu-get-map (map path &optional to-modify)
|
||||
"Return a sparse keymap in which to add or remove an item.
|
||||
|
|
@ -605,34 +620,34 @@ wants to modify in the map that we return.
|
|||
In some cases we use that to select between the local and global maps."
|
||||
(setq map
|
||||
(catch 'found
|
||||
(let* ((key (vconcat (unless map '(menu-bar))
|
||||
(mapcar 'easy-menu-intern path)))
|
||||
(maps (mapcar (lambda (map)
|
||||
(setq map (lookup-key map key))
|
||||
(while (and (symbolp map) (keymapp map))
|
||||
(setq map (symbol-function map)))
|
||||
map)
|
||||
(if map
|
||||
(list (if (and (symbolp map)
|
||||
(not (keymapp map)))
|
||||
(symbol-value map) map))
|
||||
(current-active-maps)))))
|
||||
(if (and map (symbolp map) (not (keymapp map)))
|
||||
(setq map (symbol-value map)))
|
||||
(let ((maps (if map (list map) (current-active-maps))))
|
||||
;; Look for PATH in each map.
|
||||
(unless map (push 'menu-bar path))
|
||||
(dolist (name path)
|
||||
(setq maps
|
||||
(delq nil (mapcar (lambda (map)
|
||||
(setq map (easy-menu-lookup-name
|
||||
map name))
|
||||
(and (keymapp map) map))
|
||||
maps))))
|
||||
|
||||
;; Prefer a map that already contains the to-be-modified entry.
|
||||
(when to-modify
|
||||
(dolist (map maps)
|
||||
(when (and (keymapp map)
|
||||
(easy-menu-get-map-look-for-name to-modify map))
|
||||
(when (easy-menu-lookup-name map to-modify)
|
||||
(throw 'found map))))
|
||||
;; Use the first valid map.
|
||||
(dolist (map maps)
|
||||
(when (keymapp map)
|
||||
(throw 'found map)))
|
||||
(when maps (throw 'found (car maps)))
|
||||
|
||||
;; Otherwise, make one up.
|
||||
;; Hardcoding current-local-map is lame, but it's difficult
|
||||
;; to know what the caller intended for us to do ;-(
|
||||
(let* ((name (if path (format "%s" (car (reverse path)))))
|
||||
(newmap (make-sparse-keymap name)))
|
||||
(define-key (or map (current-local-map)) key
|
||||
(define-key (or map (current-local-map))
|
||||
(apply 'vector (mapcar 'easy-menu-intern path))
|
||||
(if name (cons name newmap) newmap))
|
||||
newmap))))
|
||||
(or (keymapp map) (error "Malformed menu in easy-menu: (%s)" map))
|
||||
|
|
@ -640,5 +655,5 @@ In some cases we use that to select between the local and global maps."
|
|||
|
||||
(provide 'easymenu)
|
||||
|
||||
;;; arch-tag: 2a04020d-90d2-476d-a7c6-71e072007a4a
|
||||
;; arch-tag: 2a04020d-90d2-476d-a7c6-71e072007a4a
|
||||
;;; easymenu.el ends here
|
||||
|
|
|
|||
|
|
@ -63,7 +63,14 @@ bindings.
|
|||
|
||||
To save a kbd macro, visit a file of Lisp code such as your `~/.emacs',
|
||||
use this command, and then save the file."
|
||||
(interactive "CInsert kbd macro (name): \nP")
|
||||
(interactive (list (intern (completing-read "Insert kbd macro (name): "
|
||||
obarray
|
||||
(lambda (elt)
|
||||
(and (fboundp elt)
|
||||
(or (stringp (symbol-function elt))
|
||||
(vectorp (symbol-function elt)))))
|
||||
t))
|
||||
current-prefix-arg))
|
||||
(let (definition)
|
||||
(if (string= (symbol-name macroname) "")
|
||||
(progn
|
||||
|
|
|
|||
|
|
@ -1535,8 +1535,9 @@ cat /tmp/tramp.$$
|
|||
rm -f /tmp/tramp.$$
|
||||
}"
|
||||
"Shell function to implement `uudecode' to standard output.
|
||||
Many systems support `uudecode -o -' for this or `uudecode -p', but
|
||||
some systems don't, and for them we have this shell function.")
|
||||
Many systems support `uudecode -o /dev/stdout' for this or
|
||||
`uudecode -o -' or `uudecode -p', but some systems don't, and for
|
||||
them we have this shell function.")
|
||||
|
||||
;; Perl script to implement `file-attributes' in a Lisp `read'able
|
||||
;; output. If you are hacking on this, note that you get *no* output
|
||||
|
|
@ -5970,6 +5971,8 @@ locale to C and sets up the remote shell search path."
|
|||
base64-encode-region base64-decode-region)
|
||||
("recode data..base64" "recode base64..data"
|
||||
base64-encode-region base64-decode-region)
|
||||
("uuencode xxx" "uudecode -o /dev/stdout"
|
||||
tramp-uuencode-region uudecode-decode-region)
|
||||
("uuencode xxx" "uudecode -o -"
|
||||
tramp-uuencode-region uudecode-decode-region)
|
||||
("uuencode xxx" "uudecode -p"
|
||||
|
|
|
|||
|
|
@ -723,7 +723,7 @@ Show the heading too, if it is currently invisible."
|
|||
(progn (outline-next-preface) (point)) nil)))
|
||||
|
||||
(defun hide-body ()
|
||||
"Hide all of buffer except headings."
|
||||
"Hide all body lines in buffer, leaving all headings visible."
|
||||
(interactive)
|
||||
(hide-region-body (point-min) (point-max)))
|
||||
|
||||
|
|
@ -738,7 +738,8 @@ Show the heading too, if it is currently invisible."
|
|||
(narrow-to-region start end)
|
||||
(goto-char (point-min))
|
||||
(if (outline-on-heading-p)
|
||||
(outline-end-of-heading))
|
||||
(outline-end-of-heading)
|
||||
(outline-next-preface))
|
||||
(while (not (eobp))
|
||||
(outline-flag-region (point)
|
||||
(progn (outline-next-preface) (point)) t)
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ Set VARIABLE with VALUE, and force a rebuild of the recentf menu."
|
|||
:type 'string
|
||||
:set 'recentf-menu-customization-changed)
|
||||
|
||||
(defcustom recentf-menu-path '("files")
|
||||
(defcustom recentf-menu-path '("File")
|
||||
"*Path where to add the recentf menu.
|
||||
If nil add it at top level (see also `easy-menu-add-item')."
|
||||
:group 'recentf
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; tempo.el --- Flexible template insertion
|
||||
|
||||
;; Copyright (C) 1994, 1995 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1994, 1995, 2004 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: David K}gedal <davidk@lysator.liu.se>
|
||||
;; Created: 16 Feb 1994
|
||||
|
|
@ -172,7 +172,7 @@ documentation for the function `tempo-complete-tag' for more info.
|
|||
(defvar tempo-marks nil
|
||||
"A list of marks to jump to with `\\[tempo-forward-mark]' and `\\[tempo-backward-mark]'.")
|
||||
|
||||
(defvar tempo-match-finder "\\b\\([^\\b]+\\)\\="
|
||||
(defvar tempo-match-finder "\\b\\([[:word:]]+\\)\\="
|
||||
"The regexp or function used to find the string to match against tags.
|
||||
|
||||
If `tempo-match-finder is a string, it should contain a regular
|
||||
|
|
@ -182,7 +182,7 @@ the string between the first \\( and \\) is used for matching against
|
|||
each string in the tag list. If one is found, the whole text between
|
||||
the first \\( and the point is replaced with the inserted template.
|
||||
|
||||
You will probably want to include \\ \= at the end of the regexp to
|
||||
You will probably want to include \\=\\= at the end of the regexp to
|
||||
make sure that the string is matched only against text adjacent to the
|
||||
point.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,20 @@
|
|||
2004-11-06 Lars Brinkhoff <lars@nocrew.org>
|
||||
|
||||
* os.texi (Processor Run Time): New section documenting
|
||||
get-internal-run-time.
|
||||
|
||||
2004-11-06 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* Makefile.in (install, maintainer-clean): Don't use "elisp-*" as
|
||||
it nukes elisp-cover.texi.
|
||||
(dist): Change elisp-[0-9] to elisp-[1-9], as there could be no
|
||||
elisp-0 etc.
|
||||
|
||||
2004-11-05 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* commands.texi (Keyboard Macros): Document `append' return value
|
||||
of `defining-kbd-macro'.
|
||||
|
||||
2004-11-01 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* commands.texi (Interactive Call): Add called-interactively-p.
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ elisp.dvi: $(srcs)
|
|||
|
||||
install: elisp
|
||||
$(srcdir)/mkinstalldirs $(infodir)
|
||||
cp elisp elisp-* $(infodir)
|
||||
cp elisp elisp-[1-9] elisp-[1-9][0-9] $(infodir)
|
||||
${INSTALL_INFO} --info-dir=${infodir} ${infodir}/elisp
|
||||
|
||||
clean:
|
||||
|
|
@ -119,7 +119,7 @@ clean:
|
|||
distclean: clean
|
||||
|
||||
maintainer-clean: clean
|
||||
rm -f elisp elisp-* elisp.dvi elisp.oaux
|
||||
rm -f elisp elisp-[1-9] elisp-[1-9][0-9] elisp.dvi elisp.oaux
|
||||
|
||||
dist: elisp elisp.dvi
|
||||
-rm -rf temp
|
||||
|
|
@ -128,7 +128,7 @@ dist: elisp elisp.dvi
|
|||
-ln $(srcdir)/README $(srcdir)/configure.in $(srcdir)/configure \
|
||||
$(srcdir)/Makefile.in $(srcs) \
|
||||
$(srcdir)/../man/texinfo.tex \
|
||||
elisp.dvi elisp.aux elisp.??s elisp elisp-[0-9] elisp-[0-9][0-9] \
|
||||
elisp.dvi elisp.aux elisp.??s elisp elisp-[1-9] elisp-[1-9][0-9] \
|
||||
temp/$(manual)
|
||||
-(cd temp/$(manual); rm -f mkinstalldirs)
|
||||
cp $(srcdir)/mkinstalldirs temp/$(manual)
|
||||
|
|
|
|||
|
|
@ -420,7 +420,7 @@ the string.) Other characters that normally terminate a symbol (e.g.,
|
|||
parentheses and brackets) do not do so here. Prompt.
|
||||
|
||||
@item U
|
||||
A key sequence or nil. May be used after a @code{k} or @code{K}
|
||||
A key sequence or @code{nil}. May be used after a @code{k} or @code{K}
|
||||
argument to get the up-event that was discarded in case the key
|
||||
sequence read for that argument was a down-event. No I/O.
|
||||
|
||||
|
|
@ -3023,9 +3023,10 @@ yourself.
|
|||
@defvar defining-kbd-macro
|
||||
This variable is non-@code{nil} if and only if a keyboard macro is
|
||||
being defined. A command can test this variable so as to behave
|
||||
differently while a macro is being defined. The commands
|
||||
@code{start-kbd-macro} and @code{end-kbd-macro} set this variable---do
|
||||
not set it yourself.
|
||||
differently while a macro is being defined. The value is
|
||||
@code{append} while appending to the definition of an existing macro.
|
||||
The commands @code{start-kbd-macro}, @code{kmacro-start-macro} and
|
||||
@code{end-kbd-macro} set this variable---do not set it yourself.
|
||||
|
||||
The variable is always local to the current terminal and cannot be
|
||||
buffer-local. @xref{Multiple Displays}.
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ pertaining to the terminal and the screen.
|
|||
* Time of Day:: Getting the current time.
|
||||
* Time Conversion:: Converting a time from numeric form to a string, or
|
||||
to calendrical data (or vice versa).
|
||||
* Processor Run Time:: Getting the run time used by Emacs.
|
||||
* Time Calculations:: Adding, subtracting, comparing times, etc.
|
||||
* Timers:: Setting a timer to call a function at a certain time.
|
||||
* Terminal Input:: Recording terminal input for debugging.
|
||||
|
|
@ -1285,6 +1286,28 @@ For instance, years before 1970 do not work on some systems;
|
|||
on others, years as early as 1901 do work.
|
||||
@end defun
|
||||
|
||||
@node Processor Run Time
|
||||
@section Processor Run time
|
||||
|
||||
@defun get-internal-run-time
|
||||
This function returns the processor run time used by Emacs as a list
|
||||
of three integers: @code{(@var{high} @var{low} @var{microsec})}. The
|
||||
integers @var{high} and @var{low} combine to give the number of
|
||||
seconds, which is
|
||||
@ifnottex
|
||||
@var{high} * 2**16 + @var{low}.
|
||||
@end ifnottex
|
||||
@tex
|
||||
$high*2^{16}+low$.
|
||||
@end tex
|
||||
|
||||
The third element, @var{microsec}, gives the microseconds (or 0 for
|
||||
systems that return time with the resolution of only one second).
|
||||
|
||||
If the system doesn't provide a way to determine the processor run
|
||||
time, get-internal-run-time returns the same time as current-time.
|
||||
@end defun
|
||||
|
||||
@node Time Calculations
|
||||
@section Time Calculations
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,31 @@
|
|||
2004-11-06 Lars Brinkhoff <lars@nocrew.org>
|
||||
|
||||
* config.in: Regenerate (add HAVE_GETRUSAGE).
|
||||
* editfns.c (Fget_internal_run_time): New function.
|
||||
(syms_of_data): Defsubr it.
|
||||
* fns.c (sxhash): As far as possible, merge calculation of
|
||||
hash code for symbols and strings.
|
||||
|
||||
2004-11-06 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* frame.c (syms_of_frame): Fix the example in the doc string.
|
||||
|
||||
2004-11-06 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* eval.c (Feval): Remove check for INPUT_BLOCKED_P.
|
||||
|
||||
* xmenu.c (popup_get_selection, create_and_show_popup_menu)
|
||||
(create_and_show_dialog): Revert change from 2004-10-31.
|
||||
|
||||
|
||||
2004-11-05 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* macros.c (syms_of_macros) <defining-kbd-macro>: Doc fix.
|
||||
|
||||
2004-11-05 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* print.c (print_object): Print Lisp_Misc_Save_Value objects.
|
||||
|
||||
* fileio.c (Ffile_modes): Doc fix.
|
||||
(auto_save_1): Check for Ffile_modes nil value.
|
||||
|
||||
|
|
|
|||
|
|
@ -196,6 +196,9 @@ Boston, MA 02111-1307, USA. */
|
|||
/* Define to 1 if you have the `getpt' function. */
|
||||
#undef HAVE_GETPT
|
||||
|
||||
/* Define to 1 if you have the `getrusage' function. */
|
||||
#undef HAVE_GETRUSAGE
|
||||
|
||||
/* Define to 1 if you have the `getsockname' function. */
|
||||
#undef HAVE_GETSOCKNAME
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,10 @@ Boston, MA 02111-1307, USA. */
|
|||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
#if defined HAVE_SYS_RESOURCE_H
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
#include "lisp.h"
|
||||
|
|
@ -1375,6 +1379,47 @@ resolution finer than a second. */)
|
|||
|
||||
return Flist (3, result);
|
||||
}
|
||||
|
||||
DEFUN ("get-internal-run-time", Fget_internal_run_time, Sget_internal_run_time,
|
||||
0, 0, 0,
|
||||
doc: /* Return the current run time used by Emacs.
|
||||
The time is returned as a list of three integers. The first has the
|
||||
most significant 16 bits of the seconds, while the second has the
|
||||
least significant 16 bits. The third integer gives the microsecond
|
||||
count.
|
||||
|
||||
On systems that can't determine the run time, get-internal-run-time
|
||||
does the same thing as current-time. The microsecond count is zero on
|
||||
systems that do not provide resolution finer than a second. */)
|
||||
()
|
||||
{
|
||||
#ifdef HAVE_GETRUSAGE
|
||||
struct rusage usage;
|
||||
Lisp_Object result[3];
|
||||
int secs, usecs;
|
||||
|
||||
if (getrusage (RUSAGE_SELF, &usage) < 0)
|
||||
/* This shouldn't happen. What action is appropriate? */
|
||||
Fsignal (Qerror, Qnil);
|
||||
|
||||
/* Sum up user time and system time. */
|
||||
secs = usage.ru_utime.tv_sec + usage.ru_stime.tv_sec;
|
||||
usecs = usage.ru_utime.tv_usec + usage.ru_stime.tv_usec;
|
||||
if (usecs >= 1000000)
|
||||
{
|
||||
usecs -= 1000000;
|
||||
secs++;
|
||||
}
|
||||
|
||||
XSETINT (result[0], (secs >> 16) & 0xffff);
|
||||
XSETINT (result[1], (secs >> 0) & 0xffff);
|
||||
XSETINT (result[2], usecs);
|
||||
|
||||
return Flist (3, result);
|
||||
#else
|
||||
return Fcurrent_time ();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
|
|
@ -4315,6 +4360,7 @@ functions if all the text being accessed has this property. */);
|
|||
defsubr (&Suser_full_name);
|
||||
defsubr (&Semacs_pid);
|
||||
defsubr (&Scurrent_time);
|
||||
defsubr (&Sget_internal_run_time);
|
||||
defsubr (&Sformat_time_string);
|
||||
defsubr (&Sfloat_time);
|
||||
defsubr (&Sdecode_time);
|
||||
|
|
|
|||
|
|
@ -1996,7 +1996,7 @@ DEFUN ("eval", Feval, Seval, 1, 1, 0,
|
|||
struct backtrace backtrace;
|
||||
struct gcpro gcpro1, gcpro2, gcpro3;
|
||||
|
||||
if (handling_signal || INPUT_BLOCKED_P)
|
||||
if (handling_signal)
|
||||
abort ();
|
||||
|
||||
if (SYMBOLP (form))
|
||||
|
|
|
|||
|
|
@ -5007,15 +5007,14 @@ sxhash (obj, depth)
|
|||
hash = XUINT (obj);
|
||||
break;
|
||||
|
||||
case Lisp_Symbol:
|
||||
hash = sxhash_string (SDATA (SYMBOL_NAME (obj)),
|
||||
SCHARS (SYMBOL_NAME (obj)));
|
||||
break;
|
||||
|
||||
case Lisp_Misc:
|
||||
hash = XUINT (obj);
|
||||
break;
|
||||
|
||||
case Lisp_Symbol:
|
||||
obj = SYMBOL_NAME (obj);
|
||||
/* Fall through. */
|
||||
|
||||
case Lisp_String:
|
||||
hash = sxhash_string (SDATA (obj), SCHARS (obj));
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -4285,7 +4285,7 @@ is a reasonable practice. See also the variable `x-resource-name'. */);
|
|||
DEFVAR_LISP ("default-frame-alist", &Vdefault_frame_alist,
|
||||
doc: /* Alist of default values for frame creation.
|
||||
These may be set in your init file, like this:
|
||||
(setq default-frame-alist '((width . 80) (height . 55) (menu-bar-lines . 1))
|
||||
(setq default-frame-alist '((width . 80) (height . 55) (menu-bar-lines . 1)))
|
||||
These override values given in window system configuration data,
|
||||
including X Windows' defaults database.
|
||||
For values specific to the first Emacs frame, see `initial-frame-alist'.
|
||||
|
|
|
|||
|
|
@ -392,7 +392,9 @@ syms_of_macros ()
|
|||
defsubr (&Sstore_kbd_macro_event);
|
||||
|
||||
DEFVAR_KBOARD ("defining-kbd-macro", defining_kbd_macro,
|
||||
doc: /* Non-nil while a keyboard macro is being defined. Don't set this! */);
|
||||
doc: /* Non-nil while a keyboard macro is being defined. Don't set this!
|
||||
The value is the symbol `append' while appending to the definition of
|
||||
an existing macro. */);
|
||||
|
||||
DEFVAR_LISP ("executing-macro", &Vexecuting_macro,
|
||||
doc: /* Currently executing keyboard macro (string or vector); nil if none executing. */);
|
||||
|
|
|
|||
|
|
@ -2085,6 +2085,15 @@ print_object (obj, printcharfun, escapeflag)
|
|||
PRINTCHAR ('>');
|
||||
break;
|
||||
|
||||
case Lisp_Misc_Save_Value:
|
||||
strout ("#<save_value ", -1, -1, printcharfun, 0);
|
||||
sprintf(buf, "ptr=0x%08x int=%d",
|
||||
(unsigned long) XSAVE_VALUE (obj)->pointer,
|
||||
XSAVE_VALUE (obj)->integer);
|
||||
strout (buf, -1, -1, printcharfun, 0);
|
||||
PRINTCHAR ('>');
|
||||
break;
|
||||
|
||||
default:
|
||||
goto badtype;
|
||||
}
|
||||
|
|
|
|||
23
src/xmenu.c
23
src/xmenu.c
|
|
@ -115,7 +115,7 @@ extern XtAppContext Xt_app_con;
|
|||
|
||||
static Lisp_Object xdialog_show P_ ((FRAME_PTR, int, Lisp_Object, char **));
|
||||
static void popup_get_selection P_ ((XEvent *, struct x_display_info *,
|
||||
LWLIB_ID, int));
|
||||
LWLIB_ID, int, int));
|
||||
|
||||
/* Define HAVE_BOXES if menus can handle radio and toggle buttons. */
|
||||
|
||||
|
|
@ -157,6 +157,8 @@ static void single_keymap_panes P_ ((Lisp_Object, Lisp_Object, Lisp_Object,
|
|||
static void list_of_panes P_ ((Lisp_Object));
|
||||
static void list_of_items P_ ((Lisp_Object));
|
||||
|
||||
extern EMACS_TIME timer_check P_ ((int));
|
||||
|
||||
|
||||
/* This holds a Lisp vector that holds the results of decoding
|
||||
the keymaps or alist-of-alists that specify a menu.
|
||||
|
|
@ -1122,27 +1124,27 @@ on the left of the dialog box and all following items on the right.
|
|||
|
||||
If DOWN_ON_KEYPRESS is nonzero, pop down if a key is pressed.
|
||||
|
||||
This function used to have a DO_TIMERS argument which was
|
||||
1 in the dialog case, and caused it to run Lisp-level timers.
|
||||
That was unsafe so we removed it, but does anyone remember
|
||||
why menus and dialogs were treated differently?
|
||||
|
||||
NOTE: All calls to popup_get_selection should be protected
|
||||
with BLOCK_INPUT, UNBLOCK_INPUT wrappers. */
|
||||
|
||||
#ifdef USE_X_TOOLKIT
|
||||
static void
|
||||
popup_get_selection (initial_event, dpyinfo, id, down_on_keypress)
|
||||
popup_get_selection (initial_event, dpyinfo, id, do_timers, down_on_keypress)
|
||||
XEvent *initial_event;
|
||||
struct x_display_info *dpyinfo;
|
||||
LWLIB_ID id;
|
||||
int do_timers;
|
||||
int down_on_keypress;
|
||||
{
|
||||
XEvent event;
|
||||
|
||||
while (popup_activated_flag)
|
||||
{
|
||||
if (initial_event)
|
||||
/* If we have no events to run, consider timers. */
|
||||
if (do_timers && !XtAppPending (Xt_app_con))
|
||||
timer_check (1);
|
||||
|
||||
if (initial_event)
|
||||
{
|
||||
event = *initial_event;
|
||||
initial_event = 0;
|
||||
|
|
@ -2488,7 +2490,7 @@ create_and_show_popup_menu (f, first_wv, x, y, for_click)
|
|||
popup_activated_flag = 1;
|
||||
|
||||
/* Process events that apply to the menu. */
|
||||
popup_get_selection ((XEvent *) 0, FRAME_X_DISPLAY_INFO (f), menu_id, 0);
|
||||
popup_get_selection ((XEvent *) 0, FRAME_X_DISPLAY_INFO (f), menu_id, 0, 0);
|
||||
|
||||
/* fp turned off the following statement and wrote a comment
|
||||
that it is unnecessary--that the menu has already disappeared.
|
||||
|
|
@ -2882,7 +2884,8 @@ create_and_show_dialog (f, first_wv)
|
|||
Fcons (make_number (dialog_id >> (fact)),
|
||||
make_number (dialog_id & ~(-1 << (fact)))));
|
||||
|
||||
popup_get_selection ((XEvent *) 0, FRAME_X_DISPLAY_INFO (f), dialog_id, 1);
|
||||
popup_get_selection ((XEvent *) 0, FRAME_X_DISPLAY_INFO (f),
|
||||
dialog_id, 1, 1);
|
||||
|
||||
unbind_to (count, Qnil);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue