mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-26 10:49:33 +00:00
Merged from miles@gnu.org--gnu-2005 (patch 152-156, 642-654)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-642 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-643 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-644 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-645 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-646 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-647 lisp/gnus/ChangeLog: Remove duplicate entry * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-648 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-649 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-650 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-651 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-652 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-653 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-654 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-152 Update from CVS: lisp/mml.el (mml-preview): Doc fix. * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-153 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-154 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-155 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-156 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-440
This commit is contained in:
commit
bffa514a8b
@ -1,3 +1,8 @@
|
||||
2005-11-11 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* FOR-RELEASE (FATAL ERRORS): Fix infinite loop in redisplay
|
||||
when displaying a non-breaking space in an overlay string.
|
||||
|
||||
2005-10-30 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* FOR-RELEASE: Init file change implemented.
|
||||
|
@ -35,6 +35,8 @@ bitmap usage to a bitmap name, and second level maps bitmap name to
|
||||
a bitmap appearence.
|
||||
[Assigned to KFS]
|
||||
|
||||
** Install Zhilin's icons.
|
||||
|
||||
* FATAL ERRORS
|
||||
|
||||
** Investigate reported crashes in compact_small_strings.
|
||||
@ -44,8 +46,11 @@ invalid pointer from string_free_list.
|
||||
|
||||
* BUGS
|
||||
|
||||
** Make where-is-internal detect when a key is shadowed by a shorter
|
||||
prefix key that prevents you from entering it.
|
||||
** Fix window resizing bug:
|
||||
C-x 2, C-x 3, C-x 2. Now try to move the bottom of the
|
||||
second window to the left.
|
||||
|
||||
** Fix completion highlighting bug in partial completion mode.
|
||||
|
||||
** Clean up the confusion about what `unspecified' means
|
||||
in the face defaults for new frames.
|
||||
@ -59,6 +64,9 @@ Seems to be a problem in sys_select in w32proc.c.
|
||||
|
||||
* DOCUMENTATION
|
||||
|
||||
** Update what needs to be updated now that Global Font Lock mode and
|
||||
File Name Shadow mode are enabled by default.
|
||||
|
||||
** Check man/info.texi.
|
||||
|
||||
** Add missing years in copyright notices of all files.
|
||||
@ -131,7 +139,7 @@ man/help.texi "Luc Teirlinck" Chong Yidong
|
||||
man/indent.texi "Luc Teirlinck" Chong Yidong
|
||||
man/killing.texi "Luc Teirlinck" Chong Yidong
|
||||
man/kmacro.texi "Luc Teirlinck" Chong Yidong
|
||||
man/macos.texi
|
||||
man/macos.texi Chong Yidong
|
||||
man/maintaining.texi Chong Yidong
|
||||
man/major.texi "Luc Teirlinck" Chong Yidong
|
||||
man/mark.texi "Luc Teirlinck" Chong Yidong
|
||||
|
@ -1,3 +1,18 @@
|
||||
2005-11-16 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* images/gud/go.xpm, images/gud/go.pbm: Old gud-remove icons.
|
||||
Use for run/continue.
|
||||
* images/gud/stop.xpm, images/gud/stop.pbm: Old gud-break icons.
|
||||
Use for interrupting inferior.
|
||||
* images/gud/pp.xpm, images/gud/pstar.xpm, images/gud/until.xpm:
|
||||
Use a more appropriate variable name.
|
||||
* images/gud/remove.xpm, images/gud/remove.pbm
|
||||
* images/gud/break.xpm, images/gud/break.pbm: Make more intuitive.
|
||||
|
||||
2005-11-09 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* images/gud/pp.xpm, images/gud/pp.pbm: New icons.
|
||||
|
||||
2005-11-06 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* images/copy.xpm, images/copy.pbm, images/low-color/copy.xpm
|
||||
|
21
etc/NEWS
21
etc/NEWS
@ -260,6 +260,9 @@ Since the default input is the current directory, this has the effect
|
||||
of specifying the current directory. Normally that means to visit the
|
||||
directory with Dired.
|
||||
|
||||
You can get the old behavior by typing C-x C-f M-n RET, which fetches
|
||||
the actual file name into the minibuffer.
|
||||
|
||||
+++
|
||||
** The completion commands TAB, SPC and ? in the minibuffer apply only
|
||||
to the text before point. If there is text in the buffer after point,
|
||||
@ -434,6 +437,8 @@ is already active in Transient Mark mode.
|
||||
|
||||
C-h e displays the *Messages* buffer.
|
||||
|
||||
C-h d runs apropos-documentation.
|
||||
|
||||
C-h followed by a control character is used for displaying files
|
||||
that do not change:
|
||||
|
||||
@ -444,23 +449,18 @@ The info-search bindings on C-h C-f, C-h C-k and C-h C-i
|
||||
have been moved to C-h F, C-h K and C-h S.
|
||||
|
||||
C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands.
|
||||
|
||||
- C-h c and C-h k report the actual command (after possible remapping)
|
||||
run by the key sequence.
|
||||
|
||||
- C-h w and C-h f on a command which has been remapped now report the
|
||||
command it is remapped to, and the keys which can be used to run
|
||||
that command.
|
||||
|
||||
For example, if C-k is bound to kill-line, and kill-line is remapped
|
||||
to new-kill-line, these commands now report:
|
||||
|
||||
- C-h c and C-h k C-k reports:
|
||||
C-k runs the command new-kill-line
|
||||
|
||||
- C-h w and C-h f kill-line reports:
|
||||
kill-line is remapped to new-kill-line which is on C-k, <deleteline>
|
||||
|
||||
- C-h w and C-h f new-kill-line reports:
|
||||
new-kill-line is on C-k
|
||||
|
||||
@ -672,6 +672,10 @@ modes do.
|
||||
|
||||
** Minibuffer changes:
|
||||
|
||||
+++
|
||||
*** The new file-name-shadow-mode is turned ON by default, so that when
|
||||
entering a file name, any prefix which Emacs will ignore is dimmed.
|
||||
|
||||
+++
|
||||
*** There's a new face `minibuffer-prompt'.
|
||||
Emacs adds this face to the list of text properties stored in the
|
||||
@ -3501,7 +3505,7 @@ dangerous; otherwise it returns a reason why the form might be unsafe
|
||||
evaluate when Emacs starts up. If this is done after startup,
|
||||
it evaluates those expressions immediately.
|
||||
|
||||
This is useful in packages that can be preloaded.
|
||||
This is useful in packages that can be preloaded.
|
||||
|
||||
*** `list-faces-display' takes an optional argument, REGEXP.
|
||||
|
||||
@ -4480,6 +4484,11 @@ and scroll-bar settings.
|
||||
+++
|
||||
*** The new function `window-tree' returns a frame's window tree.
|
||||
|
||||
+++
|
||||
*** The functions `get-lru-window' and `get-largest-window' take an optional
|
||||
argument `dedicated'. If non-nil, those functions do not ignore
|
||||
dedicated windows.
|
||||
|
||||
+++
|
||||
** Customizable fringe bitmaps
|
||||
|
||||
|
2
etc/TODO
2
etc/TODO
@ -40,6 +40,8 @@ to the FSF.
|
||||
list fonts, display a font as a sample, etc. [fx is looking at
|
||||
multilingual font selection for Emacs 22.]
|
||||
|
||||
** Rewrite the face code to be simpler, clearer and faster.
|
||||
|
||||
** Program Enriched mode to read and save in RTF. [Is there actually a
|
||||
decent single definition of RTF? Maybe see info at
|
||||
http://latex2rtf.sourceforge.net/.]
|
||||
|
Binary file not shown.
@ -1,30 +1,29 @@
|
||||
/* XPM */
|
||||
static char * stop_xpm[] = {
|
||||
"24 24 3 1",
|
||||
static char * break_xpm[] = {
|
||||
"24 24 2 1",
|
||||
" c None",
|
||||
". c #F8F810104040",
|
||||
"X c #F8F8FCFCF8F8",
|
||||
". c #cc0033",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" .... ",
|
||||
" ........ ",
|
||||
" .......... ",
|
||||
" ............ ",
|
||||
" .............. ",
|
||||
" .............. ",
|
||||
" ................ ",
|
||||
" .................. ",
|
||||
" ..XX..XXX..XX..XXX.. ",
|
||||
" .X..X..X..X..X.X..X. ",
|
||||
" .X.....X..X..X.X..X. ",
|
||||
" .X.....X..X..X.X..X. ",
|
||||
" ..X....X..X..X.X..X. ",
|
||||
" ...X...X..X..X.XXX.. ",
|
||||
" ....X..X..X..X.X.... ",
|
||||
" ....X..X..X..X.X.... ",
|
||||
" .X..X..X..X..X.X.... ",
|
||||
" ..XX...X...XX..X.... ",
|
||||
" .................. ",
|
||||
" ................ ",
|
||||
" ................ ",
|
||||
" ................ ",
|
||||
" .............. ",
|
||||
" .............. ",
|
||||
" ............ ",
|
||||
" .......... ",
|
||||
" ........ ",
|
||||
" .... ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
|
BIN
etc/images/gud/go.pbm
Normal file
BIN
etc/images/gud/go.pbm
Normal file
Binary file not shown.
30
etc/images/gud/go.xpm
Normal file
30
etc/images/gud/go.xpm
Normal file
@ -0,0 +1,30 @@
|
||||
/* XPM */
|
||||
static char * go_xpm[] = {
|
||||
"24 24 3 1",
|
||||
" c None",
|
||||
". c #000080800000",
|
||||
"X c #FFFFFFFFFFFF",
|
||||
" ",
|
||||
" ",
|
||||
" .......... ",
|
||||
" ............ ",
|
||||
" .............. ",
|
||||
" ................ ",
|
||||
" .................. ",
|
||||
" ......XX...XX....... ",
|
||||
" .....X..X.X..X...... ",
|
||||
" .....X....X..X...... ",
|
||||
" .....X....X..X...... ",
|
||||
" .....X....X..X...... ",
|
||||
" .....X.XX.X..X...... ",
|
||||
" .....X..X.X..X...... ",
|
||||
" .....X..X.X..X...... ",
|
||||
" .....X..X.X..X...... ",
|
||||
" ......XX...XX....... ",
|
||||
" .................. ",
|
||||
" ................ ",
|
||||
" .............. ",
|
||||
" ............ ",
|
||||
" .......... ",
|
||||
" ",
|
||||
" "};
|
BIN
etc/images/gud/pp.pbm
Normal file
BIN
etc/images/gud/pp.pbm
Normal file
Binary file not shown.
29
etc/images/gud/pp.xpm
Normal file
29
etc/images/gud/pp.xpm
Normal file
@ -0,0 +1,29 @@
|
||||
/* XPM */
|
||||
static char * pp_xpm[] = {
|
||||
"24 24 2 1",
|
||||
" c None",
|
||||
". c #000000000000",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ... ... ... ... ",
|
||||
" ... ... ... ... ",
|
||||
" .. .. .. .. ",
|
||||
" .. .. .. .. ",
|
||||
" .. .. .. .. ",
|
||||
" .. .. .. .. ",
|
||||
" .. .. .. .. ",
|
||||
" ... .. ... .. ",
|
||||
" .. .. .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .... .... ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
@ -1,5 +1,5 @@
|
||||
/* XPM */
|
||||
static char * gud_pstar_xpm[] = {
|
||||
static char * pstar_xpm[] = {
|
||||
"24 24 2 1",
|
||||
" c #BDBDBEBEBDBD",
|
||||
". c #000000000000",
|
||||
|
Binary file not shown.
@ -1,31 +1,30 @@
|
||||
/* XPM */
|
||||
static char * go_xpm[] = {
|
||||
"24 24 4 1",
|
||||
static char * clear_xpm[] = {
|
||||
"24 24 3 1",
|
||||
" c None",
|
||||
". c #000080800000",
|
||||
"X c #FFFFFFFFFFFF",
|
||||
"o c #F8F8FCFCF8F8",
|
||||
". c #cc0033",
|
||||
"X c #F0F0F0",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" .... ",
|
||||
" ........ ",
|
||||
" .......... ",
|
||||
" ............ ",
|
||||
" .............. ",
|
||||
" ................ ",
|
||||
" .................. ",
|
||||
" ......XX...oo....... ",
|
||||
" .....X..X.o..o...... ",
|
||||
" .....X....o..o...... ",
|
||||
" .....X....o..o...... ",
|
||||
" .....X....o..o...... ",
|
||||
" .....X.XX.o..o...... ",
|
||||
" .....X..X.o..o...... ",
|
||||
" .....X..X.o..o...... ",
|
||||
" .....X..X.o..o...... ",
|
||||
" ......XX...oo....... ",
|
||||
" .................. ",
|
||||
" ................ ",
|
||||
" .............. ",
|
||||
" ............ ",
|
||||
" .XX......XX. ",
|
||||
" ...XX....XX... ",
|
||||
" ....XX..XX.... ",
|
||||
" ......XXXX...... ",
|
||||
" .......XX....... ",
|
||||
" ......XXXX...... ",
|
||||
" .....XX..XX..... ",
|
||||
" ...XX....XX... ",
|
||||
" ..XX......XX.. ",
|
||||
" .X........X. ",
|
||||
" .......... ",
|
||||
" ........ ",
|
||||
" .... ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
|
BIN
etc/images/gud/stop.pbm
Normal file
BIN
etc/images/gud/stop.pbm
Normal file
Binary file not shown.
30
etc/images/gud/stop.xpm
Normal file
30
etc/images/gud/stop.xpm
Normal file
@ -0,0 +1,30 @@
|
||||
/* XPM */
|
||||
static char * stop_xpm[] = {
|
||||
"24 24 3 1",
|
||||
" c None",
|
||||
". c #cc0033",
|
||||
"X c #FFFFFFFFFFFF",
|
||||
" ",
|
||||
" ",
|
||||
" .......... ",
|
||||
" ............ ",
|
||||
" .............. ",
|
||||
" ................ ",
|
||||
" .................. ",
|
||||
" ..XX..XXX..XX..XXX.. ",
|
||||
" .X..X..X..X..X.X..X. ",
|
||||
" .X.....X..X..X.X..X. ",
|
||||
" .X.....X..X..X.X..X. ",
|
||||
" ..X....X..X..X.X..X. ",
|
||||
" ...X...X..X..X.XXX.. ",
|
||||
" ....X..X..X..X.X.... ",
|
||||
" ....X..X..X..X.X.... ",
|
||||
" .X..X..X..X..X.X.... ",
|
||||
" ..XX...X...XX..X.... ",
|
||||
" .................. ",
|
||||
" ................ ",
|
||||
" .............. ",
|
||||
" ............ ",
|
||||
" .......... ",
|
||||
" ",
|
||||
" "};
|
@ -1,5 +1,5 @@
|
||||
/* XPM */
|
||||
static char * goto_xpm[] = {
|
||||
static char * until_xpm[] = {
|
||||
"24 24 6 1",
|
||||
" c None",
|
||||
". c #cc0033",
|
||||
|
502
lisp/ChangeLog
502
lisp/ChangeLog
@ -1,3 +1,495 @@
|
||||
2005-11-16 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* rfn-eshadow.el (file-name-shadow-properties)
|
||||
(file-name-shadow-tty-properties, file-name-shadow-mode): Remove
|
||||
autoloads, because the file is now preloaded.
|
||||
|
||||
2005-11-16 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* printing.el (easy-menu-intern): Don't define.
|
||||
(pr-get-symbol): Use easy-menu-intern only if defined.
|
||||
|
||||
* simple.el (blink-matching-open): Simplify a bit.
|
||||
(completion-setup-function): Fix the case of partial-completion-mode
|
||||
when the minibuffer's contents start with "-".
|
||||
Obey completion-base-size-function even when
|
||||
minibuffer-completing-file-name is non-nil.
|
||||
|
||||
2005-11-16 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* net/eudcb-ph.el (eudc-ph-open-session):
|
||||
Use set-process-query-on-exit-flag.
|
||||
|
||||
* mail/smtpmail.el (smtpmail-send-it): Use insert-buffer-contents.
|
||||
|
||||
* international/ucs-tables.el (ucs-set-table-for-input):
|
||||
Use make-local-variable, not make-variable-buffer-local.
|
||||
|
||||
* emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
|
||||
Improve warning message text.
|
||||
|
||||
* savehist.el (savehist-save-hook): Add :group.
|
||||
|
||||
* menu-bar.el (menu-bar-help-menu):
|
||||
Rename Find Extra Packages to External Packages.
|
||||
|
||||
* cus-edit.el (Custom-reset-standard): Verify that
|
||||
:custom-standard-value prop exists before calling it.
|
||||
|
||||
* apropos.el (apropos-calc-scores): Use apropos-pattern.
|
||||
|
||||
2005-11-16 Martin Rudalics <rudalics@gmx.at> (tiny change)
|
||||
|
||||
* wid-edit.el (color): Enclose %t in %{...%}.
|
||||
|
||||
* cus-edit.el (face): Enclose %t in %{...%}.
|
||||
|
||||
2005-11-16 Hrvoje Niksic <hniksic@xemacs.org>
|
||||
|
||||
* savehist.el (savehist-mode-hook): Re-add the var.
|
||||
(savehist-mode): Use it.
|
||||
|
||||
2005-11-16 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* textmodes/flyspell.el: Fix commenting convention.
|
||||
Remove unnecessary leading * in custom docstrings.
|
||||
(flyspell-emacs): Remove unused var.
|
||||
(flyspell-delete-region-overlays): Use remove-overlays.
|
||||
(flyspell-accept-buffer-local-defs): Use save-current-buffer.
|
||||
(flyspell-debug-signal-no-check, flyspell-debug-signal-changed-checked)
|
||||
(flyspell-debug-signal-pre-word-checked, flyspell-post-command-hook)
|
||||
(flyspell-debug-signal-word-checked): Use with-current-buffer.
|
||||
(make-flyspell-overlay): Don't locally reuse a global name.
|
||||
(flyspell-highlight-incorrect-region)
|
||||
(flyspell-highlight-duplicate-region): Use flyspell-unhighlight-at.
|
||||
(flyspell-check-previous-highlighted-word): Use flyspell-overlay-p.
|
||||
(flyspell-notify-misspell): Remove unused args `start' and `end'.
|
||||
(flyspell-word): Adjust call accordingly. Use ispell-send-string.
|
||||
Wrap calls to accept-process-output inside with-local-quit since it's
|
||||
often called from a post-command-hook.
|
||||
(flyspell-correct-word, flyspell-auto-correct-word):
|
||||
Use ispell-send-string.
|
||||
(flyspell-xemacs-popup): Remove unused arg `event'. Update call.
|
||||
|
||||
* calendar/diary-lib.el (diary-list-entries): Also hide the
|
||||
terminating newline.
|
||||
|
||||
2005-11-16 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* textmodes/reftex.el (reftex-use-fonts): Remove the check for
|
||||
window-system, to allow fonts on tty.
|
||||
|
||||
2005-11-17 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* progmodes/gud.el (gud-speedbar-item-info): New function.
|
||||
(gud-install-speedbar-variables): Use it to display data types
|
||||
of watch expression as tooltips in speedbar.
|
||||
|
||||
2005-11-15 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* font-core.el (global-font-lock-mode): Add :version keyword,
|
||||
because default was changed.
|
||||
|
||||
* jka-cmpr-hook.el (auto-compression-mode): Ditto.
|
||||
|
||||
* startup.el (command-line): Use `custom-reevaluate-setting' for
|
||||
`file-name-shadow-mode'.
|
||||
|
||||
* loadup.el: Preload rfn-eshadow.
|
||||
|
||||
* rfn-eshadow.el (file-name-shadow-mode): Set :init-value to t.
|
||||
Add :version keyword.
|
||||
(file-name-shadow-properties, file-name-shadow-tty-properties)
|
||||
(file-name-shadow): Add :version keyword.
|
||||
|
||||
* cus-edit.el (custom-add-parent-links): Fix bug whereby, for
|
||||
instance, `(fringe custom-face)' shadowed `(fringe custom-group)'
|
||||
in the custom-group property of the symbol frames and the fringe
|
||||
group got no link to its parent group frames.
|
||||
Doc fix.
|
||||
|
||||
2005-11-16 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* progmodes/gud.el (gud-stop-subjob): New function.
|
||||
(gud-menu-map, gud-tool-bar-map): Use it.
|
||||
|
||||
2005-11-16 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* progmodes/gud.el (gud-menu-map): Let [stop] stop program rather
|
||||
than kill it.
|
||||
(gud-tool-bar-map): Likewise. Move cont/until/finish buttons
|
||||
to a more useful/logical place.
|
||||
|
||||
2005-11-16 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* progmodes/gud.el (gud-menu-map): Make visibility of stop and
|
||||
go buttons complementary.
|
||||
|
||||
2005-11-15 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* rfn-eshadow.el (rfn-eshadow-regexp): Remove.
|
||||
(rfn-eshadow-sifn-equal): New function.
|
||||
(rfn-eshadow-update-overlay): Rewrite to use substitute-in-file-name.
|
||||
|
||||
2005-11-15 Michael Kifer <kifer@cs.stonybrook.edu>
|
||||
|
||||
* viper-utils (viper-non-word-characters-reformed-vi): Quote `-' in
|
||||
string.
|
||||
|
||||
* viper.el (viper-emacs-state-mode-list): Ensure that
|
||||
rcirc-mode buffers come up in Emacs state.
|
||||
|
||||
* ediff-util (ediff-make-temp-file): Use proper file-name-handler
|
||||
operation.
|
||||
|
||||
2005-11-15 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* term.el (term-termcap-format): Fix typos.
|
||||
(term-down): Fix the negative argument case.
|
||||
|
||||
2005-11-16 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* progmodes/gdb-ui.el: Remove face-alias left over from change on
|
||||
2005-08-15.
|
||||
(gdb-ann3): New command gud-go.
|
||||
(menu): Accomodate gdb-mi.el.
|
||||
(gdb-assembler-custom): Make buffer of selected window current
|
||||
so that set-window-point works.
|
||||
|
||||
* progmodes/gud.el (gud-menu-map, gud-tool-bar-map): Re-define
|
||||
buttons and include new ones.
|
||||
|
||||
2005-11-16 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* progmodes/gud.el (gud-tool-bar-item-visible-no-fringe): New function.
|
||||
(gud-menu-map): Use it.
|
||||
|
||||
2005-11-14 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* jka-cmpr-hook.el (auto-compression-mode): Enable it in a way
|
||||
that works correctly for Custom and that does not override a user
|
||||
who disables it.
|
||||
|
||||
* help-mode.el (help-make-xrefs, help-xref-on-pp)
|
||||
(help-xref-interned, help-follow): Make hyperlinks for variables
|
||||
that are unbound, but have a non-nil variable-documentation property.
|
||||
|
||||
* emacs-lisp/derived.el (define-derived-mode): Remove defvar for
|
||||
mode hook. (It conflicted with defcustoms for some mode hooks.)
|
||||
Use the `variable-documentation' property to give the mode hook a
|
||||
docstring and expand that docstring.
|
||||
|
||||
2005-11-14 Hrvoje Niksic <hniksic@xemacs.org>
|
||||
|
||||
* savehist.el (savehist-mode): Don't bother with
|
||||
`custom-set-minor-mode'.
|
||||
(savehist-coding-system): Check XEmacs version.
|
||||
(history-length): Declare also at run time.
|
||||
(savehist-mode): Don't emit a message. Don't run the minor mode hook.
|
||||
Don't set the customize state.
|
||||
(savehist-minibuffer-hook): Special case for when
|
||||
minibuffer-history-variable is equal to t.
|
||||
|
||||
2005-11-14 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* files.el (write-file): Refresh VC status.
|
||||
|
||||
* calendar/diary-lib.el (diary-list-entries, diary-show-all-entries)
|
||||
(mark-diary-entries, make-diary-entry): Check default-major-mode rather
|
||||
than fundamental-mode to see if the mode was set.
|
||||
|
||||
2005-11-14 Romain Francoise <romain@orebokech.com>
|
||||
|
||||
* dired-x.el: If `vm-visit-folder' doesn't exist, define it as a
|
||||
dummy function in `eval-when-compile' to avoid compiler warning.
|
||||
Require `man' at compile time.
|
||||
|
||||
2005-11-14 Jay Belanger <belanger@truman.edu>
|
||||
|
||||
* calc-alg.el (calcFunc-write-out-power): Rename it to
|
||||
calcFunc-powerexpand.
|
||||
(math-write-out-power): Rename it to math-powerexpand; have it
|
||||
handle negative exponents.
|
||||
(calc-writeoutpower): Rename it to calc-powerexpand.
|
||||
|
||||
* calc-ext.el: Change calcFunc-writeoutpower and
|
||||
calc-writeoutpower to calcFunc-powerexpand and calc-powerexpand in
|
||||
autoloads.
|
||||
Add calcFunc-ldiv to autoloads.
|
||||
|
||||
* calc-arith.el (calcFunc-ldiv): New function.
|
||||
|
||||
* calc.el (calc-left-divide): New function.
|
||||
|
||||
2005-11-14 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* cus-edit.el (custom-variable-prompt): Set the default value arg
|
||||
of completing-read.
|
||||
|
||||
* cus-dep.el (custom-make-dependencies): Reverse the list of
|
||||
found dependencies.
|
||||
|
||||
2005-11-14 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* menu-bar.el (menu-bar-options-menu): Delete "Syntax
|
||||
Highlighting" entry, it is on by default now.
|
||||
(menu-bar-options-save): Do not save global-font-lock-mode.
|
||||
|
||||
2005-11-13 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* textmodes/flyspell.el (flyspell-large-region):
|
||||
Call flyspell-accept-buffer-local-defs.
|
||||
|
||||
2005-11-13 Agustin Martin <agustin.martin@hispalinux.es>
|
||||
|
||||
* textmodes/flyspell.el (flyspell-notify-misspell):
|
||||
Fix misspelling of "Misspelling".
|
||||
(flyspell-process-localwords): New function.
|
||||
(flyspell-large-region): Call flyspell-process-localwords and
|
||||
flyspell-delete-region-overlays.
|
||||
(flyspell-delete-region-overlays): New function.
|
||||
(flyspell-delete-all-overlays): Call that.
|
||||
|
||||
2005-11-13 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* help.el (help-for-help-internal): Improve doc of C-h a.
|
||||
(describe-key): Improve prompt; doc fix.
|
||||
|
||||
2005-11-13 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* vc-svn.el (vc-svn-registered): Catch all errors.
|
||||
|
||||
* cus-dep.el (custom-make-dependencies): Typo.
|
||||
|
||||
2005-11-13 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* net/tramp-util.el (top): Fix compilation warning.
|
||||
|
||||
2005-11-13 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* help.el (help-for-help-internal): Fix `a' entry. Add `d' entry.
|
||||
|
||||
2005-11-13 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* progmodes/gud.el (gud-menu-map): Move parentheses (again).
|
||||
(gud-speedbar-buttons): Match on "const char *" too.
|
||||
|
||||
* progmodes/gdb-ui.el (gdb-var-create-handler)
|
||||
(gdb-var-list-children-handler): Match on "const char *" too.
|
||||
(gdb-var-evaluate-expression-handler): Match on empty string.
|
||||
(gdb-var-update-handler): Only call
|
||||
gdb-var-evaluate-expression-handler when required.
|
||||
|
||||
2005-11-13 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* progmodes/gud.el (gud-menu-map): Revert to window-fringes for
|
||||
selected window. This still doesn't work for speedbar.
|
||||
(gud-speedbar-buttons): Handle string expressions properly.
|
||||
|
||||
* progmodes/gdb-ui.el (gdb-var-evaluate-expression-handler)
|
||||
(gdb-var-create-handler): Handle string expressions properly.
|
||||
(gdb-var-list-children-regexp, gdb-var-list-children-handler):
|
||||
Handle string expressions properly. Move "type" field into regexp.
|
||||
|
||||
2005-11-12 Karl Fogel <kfogel@red-bean.com>
|
||||
|
||||
* bookmark.el (bookmark-maybe-message): New function to reduce
|
||||
code duplication: invokes `message' iff baud-rate is high enough.
|
||||
(bookmark-write-file): Use above instead of an inline conditional.
|
||||
(bookmark-load): Same.
|
||||
|
||||
2005-11-12 Karl Fogel <kfogel@red-bean.com>
|
||||
|
||||
* bookmark.el (bookmark-write-file): Don't visit the destination
|
||||
file, just write the data to it using write-region. This is
|
||||
similar to saveplace.el at 2005-05-29T08:36:26Z!rms@gnu.org, but with an additional
|
||||
change to avoid visiting the file in the first place.
|
||||
|
||||
2005-11-12 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* hi-lock.el (hi-lock-mode): Set the default value of
|
||||
font-lock-defaults.
|
||||
|
||||
2005-11-11 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* find-lisp.el (find-lisp-find-dired-insert-file): Pass `string'
|
||||
arg to `file-attributes'.
|
||||
(find-lisp-format): The UID and GID can now be strings.
|
||||
|
||||
2005-11-12 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* help.el (help-map): Bind C-h d to apropos-documentation.
|
||||
|
||||
* simple.el (what-cursor-position): Print (EOB) instead of (100%)
|
||||
when point is at end-of-buffer.
|
||||
|
||||
* apropos.el (apropos-match-face): Doc fix.
|
||||
(apropos-sort-by-scores): Add new choice `verbose'.
|
||||
(apropos-documentation-sort-by-scores): New defcustom.
|
||||
(apropos-pattern): Now contains the pattern entered by the user.
|
||||
(apropos-pattern-quoted): New defvar.
|
||||
(apropos-regexp): New defvar, containing the regexp corresponding
|
||||
to apropos-pattern.
|
||||
(apropos-all-words-regexp): Rename from apropos-all-regexp.
|
||||
(apropos-read-pattern): New defun. Use it to read pattern arg in
|
||||
interactive calls; returns list of words for a word list, and
|
||||
string for a regexp.
|
||||
(apropos-parse-pattern): Rename from apropos-rewrite-regexp. Now
|
||||
parses a list of words or regexp as returned by apropos-read-pattern.
|
||||
(apropos-calc-scores): Return nil if apropos-regexp doesn't match.
|
||||
(apropos-score-doc): Return a very high score if the string
|
||||
entered by the user matches literally.
|
||||
(apropos-variable): Doc fix. Use apropos-read-pattern.
|
||||
(apropos-command): Doc fix. Use apropos-read-pattern and
|
||||
apropos-parse-pattern. Call apropos-print with nosubst=t.
|
||||
(apropos, apropos-value): Doc fix. Use apropos-read-pattern and
|
||||
apropos-parse-pattern.
|
||||
(apropos-documentation): Doc fix. Use apropos-read-pattern and
|
||||
apropos-parse-pattern. Locally bind apropos-sort-by-scores to
|
||||
apropos-documentation-sort-by-scores. Call apropos-print with
|
||||
nosubst=t.
|
||||
(apropos-documentation-internal): Pass doc string through
|
||||
substitute-key-definition before adding text properties.
|
||||
Highlight substring matching literal user input if possible.
|
||||
(apropos-documentation-check-doc-file): Remove locals beg and end.
|
||||
Fix calculation of score (as added twice). Pass doc string through
|
||||
substitute-key-definition before adding text properties.
|
||||
(apropos-documentation-check-elc-file): Pass doc string through
|
||||
substitute-key-definition before adding text properties.
|
||||
Highlight substring matching literal user input if possible.
|
||||
(apropos-print): Add new arg NOSUBST; if set, command and variable
|
||||
doc strings have already been passed through substitute-key-definition.
|
||||
Add code to handle apropos-accumulator items without score element
|
||||
for backwards compatibility (e.g. with woman package).
|
||||
Only show scores if apropos-sort-by-scores is `verbose'.
|
||||
|
||||
2005-11-10 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* jka-cmpr-hook.el (jka-compr-install): Use push and dolist.
|
||||
Add jka-compr-load-suffixes to load-suffixes.
|
||||
|
||||
* jka-compr.el: Require 'jka-cmpr-hook.
|
||||
(jka-compr-info-compress-message, jka-compr-info-compress-program)
|
||||
(jka-compr-info-compress-args, jka-compr-info-uncompress-message)
|
||||
(jka-compr-info-uncompress-program, jka-compr-info-uncompress-args)
|
||||
(jka-compr-info-can-append, jka-compr-info-strip-extension)
|
||||
(jka-compr-info-file-magic-bytes, jka-compr-get-compression-info)
|
||||
(jka-compr-info-regexp): Remove. Provided by jka-cmpr-hook.
|
||||
(jka-compr-uninstall): Remove entries from
|
||||
jka-compr-added-to-file-coding-system-alist after they are used.
|
||||
(jka-compr-error): Remove unused var `curbuf'.
|
||||
(jka-compr-file-local-copy): Remove unused var `notfound'.
|
||||
|
||||
2005-11-10 Romain Francoise <romain@orebokech.com>
|
||||
|
||||
* apropos.el (apropos-calc-scores): Use `apropos-pattern'.
|
||||
|
||||
2005-11-11 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* progmodes/gud.el (gud-menu-map): Move parentheses.
|
||||
(gdb): New command gud-pv.
|
||||
|
||||
2005-11-10 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* tar-mode.el: Remove spurious or unnecessary leading stars
|
||||
in docstrings.
|
||||
(tar-header-block-tokenize): Also obey default-file-name-coding-system.
|
||||
(tar-parse-octal-integer-safe): Use mapc.
|
||||
(tar-header-block-summarize): Remove unused var `ck'.
|
||||
(tar-summarize-buffer): Don't clear the modified-p bit if it wasn't
|
||||
cleared before. Obey default-enable-multibyte-characters.
|
||||
Use mapconcat. Simplify setting of tar-header-offset.
|
||||
(tar-mode-map): Move initialization inside delcaration.
|
||||
(tar-flag-deleted): Use `abs'.
|
||||
(tar-expunge-internal): Remove unused var `line'.
|
||||
(tar-expunge-internal): Don't hardcode point-min==1.
|
||||
(tar-expunge): Widen while doing set-buffer-multibyte.
|
||||
(tar-rename-entry): Use file-name-coding-system.
|
||||
(tar-alter-one-field): Don't hardcode point-min==1.
|
||||
(tar-subfile-save-buffer): string-as-unibyte works on unibyte strings.
|
||||
(tar-pad-to-blocksize): Don't hardcode point-min==1. Clarify the code.
|
||||
|
||||
2005-11-10 Masatake YAMATO <jet@gyve.org>
|
||||
|
||||
* add-log.el (add-log-current-defun): Handle class::method
|
||||
notation of c++. Fix incorrect comment.
|
||||
|
||||
2005-11-10 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
* help-fns.el (describe-variable): Make C-h v work when a variable
|
||||
has variable documentation yet is unbound.
|
||||
|
||||
2005-11-10 Masatake YAMATO <jet@gyve.org>
|
||||
|
||||
* man.el (Man-highlight-references): Set an empty
|
||||
string to `Man-arguments' if it is nil.
|
||||
Suggested by Reiner Steib <Reiner.Steib@gmx.de>.
|
||||
|
||||
2005-11-09 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* Makefile.in (mh-loaddefs.el, loaddefs.el): Better follow the
|
||||
commenting conventions.
|
||||
|
||||
* cus-dep.el (custom-make-dependencies): Simplify.
|
||||
Better follow the commenting conventions.
|
||||
|
||||
2005-11-09 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* apropos.el (apropos-pattern): Rename from apropos-regexp.
|
||||
(apropos-orig-pattern): Rename from apropos-orig-regexp.
|
||||
All uses changed.
|
||||
(apropos-rewrite-regexp): Doc fix.
|
||||
(apropos-variable, apropos-command, apropos, apropos-value):
|
||||
Change prompt; carry through the argument renaming.
|
||||
|
||||
2005-11-09 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* find-lisp.el: Require dired.
|
||||
(find-lisp-find-dired-internal): Do not call
|
||||
`abbreviate-file-name' on DIR.
|
||||
|
||||
2005-11-10 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* progmodes/gud.el (gdb): Make gud-pp use user-defined command pp1.
|
||||
|
||||
2005-11-09 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* progmodes/gud.el (gud-menu-map): Ensure tool-bar is constant
|
||||
when using the speedbar.
|
||||
(gdb): New command gud-pp.
|
||||
(gud-menu-map, gud-tool-bar-map): Put it on the tool bar.
|
||||
|
||||
2005-11-09 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* replace.el (occur-excluded-properties): New defcustom.
|
||||
(occur-1, occur-engine, occur-accumulate-lines): Use it.
|
||||
|
||||
2005-11-08 Jay Belanger <belanger@truman.edu>
|
||||
|
||||
* calc/calc-units.el (math-convert-units): Replace any composite
|
||||
unit by its definition.
|
||||
|
||||
2005-11-08 Lars Hansen <larsh@soem.dk>
|
||||
|
||||
* emacs-lisp/autoload.el (update-directory-autoloads):
|
||||
Add obsolete function alias.
|
||||
|
||||
2005-11-07 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* emacs-lisp/lisp-mode.el (lisp-mode-variables): Don't set
|
||||
comment-indent-function.
|
||||
(lisp-comment-indent): Replace by an alias for comment-indent-default.
|
||||
|
||||
* reveal.el (reveal-post-command): Rework the handling of
|
||||
reveal-open-spots, so as to be more reliable. There were several
|
||||
tricky corner cases where an open spot might be lost, or where
|
||||
a closed spot might end up on the list of open spots.
|
||||
Only reveal text that's ellipsised.
|
||||
|
||||
2005-11-07 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* textmodes/org.el (org-export-as-html): Remove bogus (debug) form.
|
||||
|
||||
2005-11-06 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* progmodes/compile.el (compilation-internal-error-properties):
|
||||
@ -15,14 +507,14 @@
|
||||
|
||||
2005-11-07 Masatake YAMATO <jet@gyve.org>
|
||||
|
||||
* man.el (Man-reference-regexp): Accpet spaces between
|
||||
* man.el (Man-reference-regexp): Accept spaces between
|
||||
`Man-name-regexp' and `Man-section-regexp'.
|
||||
(Man-apropos-regexp): New variable.
|
||||
(Man-abstract-xref-man-page): Use value for `Man-target-string'
|
||||
if available.
|
||||
(Man-highlight-references, Man-highlight-references0): Handle
|
||||
the case when `Man-arguments' includes "-k".
|
||||
(Man-highlight-references0): Rename the argument `TARGET-POS' to
|
||||
(Man-highlight-references, Man-highlight-references0):
|
||||
Handle the case when `Man-arguments' includes "-k".
|
||||
(Man-highlight-references0): Rename the argument `TARGET-POS' to
|
||||
`TARGET'. `TARGET' can be a number, function or nil.
|
||||
|
||||
2005-11-06 Nick Roberts <nickrob@snap.net.nz>
|
||||
@ -251,7 +743,7 @@
|
||||
|
||||
* mail/rmailout.el (rmail-output-to-rmail-file, rmail-output): Doc fix.
|
||||
|
||||
2005-11-04 Ken Manheimer <ken.manheimer@gmail.com>
|
||||
2005-11-04 Ken Manheimer <ken.manheimer@gmail.com>
|
||||
|
||||
* pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region)
|
||||
(pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
|
||||
|
@ -98,11 +98,11 @@ $(lisp)/loaddefs.el:
|
||||
echo ";;; loaddefs.el --- automatically extracted autoloads" >> $@
|
||||
echo ";;" >> $@; echo ";;; Code:" >> $@
|
||||
echo "" >> $@
|
||||
echo ";;; Local Variables:" >> $@
|
||||
echo ";;; version-control: never" >> $@
|
||||
echo ";;; no-byte-compile: t" >> $@
|
||||
echo ";;; no-update-autoloads: t" >> $@
|
||||
echo ";;; End:" >> $@
|
||||
echo ";; Local Variables:" >> $@
|
||||
echo ";; version-control: never" >> $@
|
||||
echo ";; no-byte-compile: t" >> $@
|
||||
echo ";; no-update-autoloads: t" >> $@
|
||||
echo ";; End:" >> $@
|
||||
echo ";;; loaddefs.el ends here" >> $@
|
||||
autoloads: $(lisp)/loaddefs.el doit
|
||||
wd=$(lisp); $(setwins); \
|
||||
@ -231,11 +231,10 @@ mh-autoloads: $(lisp)/mh-e/mh-loaddefs.el
|
||||
$(lisp)/mh-e/mh-loaddefs.el: $(MH-E-SRC)
|
||||
echo ";;; mh-loaddefs.el --- automatically extracted autoloads" > $@
|
||||
echo ";;" >> $@
|
||||
echo ";;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc." >> $@
|
||||
echo ";;; Author: Bill Wohler <wohler@newt.com>" >> $@
|
||||
echo ";;; Keywords: mail" >> $@
|
||||
echo ";; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc." >> $@
|
||||
echo ";; Author: Bill Wohler <wohler@newt.com>" >> $@
|
||||
echo ";; Keywords: mail" >> $@
|
||||
echo ";;; Commentary:" >> $@
|
||||
echo ";;; Change Log:" >> $@
|
||||
echo ";;; Code:" >> $@
|
||||
$(EMACS) $(EMACSOPT) \
|
||||
-l autoload \
|
||||
@ -245,11 +244,11 @@ $(lisp)/mh-e/mh-loaddefs.el: $(MH-E-SRC)
|
||||
-f batch-update-autoloads $(lisp)/mh-e
|
||||
echo "" >> $@
|
||||
echo "(provide 'mh-loaddefs)" >> $@
|
||||
echo ";;; Local Variables:" >> $@
|
||||
echo ";;; version-control: never" >> $@
|
||||
echo ";;; no-byte-compile: t" >> $@
|
||||
echo ";;; no-update-autoloads: t" >> $@
|
||||
echo ";;; End:" >> $@
|
||||
echo ";; Local Variables:" >> $@
|
||||
echo ";; version-control: never" >> $@
|
||||
echo ";; no-byte-compile: t" >> $@
|
||||
echo ";; no-update-autoloads: t" >> $@
|
||||
echo ";; End:" >> $@
|
||||
echo ";;; mh-loaddefs.el ends here" >> $@
|
||||
|
||||
# Prepare a bootstrap in the lisp subdirectory.
|
||||
|
@ -860,7 +860,7 @@ Has a preference of looking backwards."
|
||||
(skip-syntax-backward " ")
|
||||
(point))))
|
||||
(if (looking-at "^[+-]")
|
||||
;; C++.
|
||||
;; Objective-C
|
||||
(change-log-get-method-definition)
|
||||
;; Ordinary C function syntax.
|
||||
(setq beg (point))
|
||||
@ -901,6 +901,13 @@ Has a preference of looking backwards."
|
||||
;; precede the name.
|
||||
(setq middle (point))
|
||||
(forward-word -1)
|
||||
;; Is this C++ method?
|
||||
(when (and (< 2 middle)
|
||||
(string= (buffer-substring (- middle 2)
|
||||
middle)
|
||||
"::"))
|
||||
;; Include "classname::".
|
||||
(setq middle (point)))
|
||||
;; Ignore these subparts of a class decl
|
||||
;; and move back to the class name itself.
|
||||
(while (looking-at "public \\|private ")
|
||||
|
271
lisp/apropos.el
271
lisp/apropos.el
@ -100,15 +100,27 @@ turns off mouse highlighting."
|
||||
(defcustom apropos-match-face 'match
|
||||
"*Face for matching text in Apropos documentation/value, or nil for none.
|
||||
This applies when you look for matches in the documentation or variable value
|
||||
for the regexp; the part that matches gets displayed in this font."
|
||||
for the pattern; the part that matches gets displayed in this font."
|
||||
:group 'apropos
|
||||
:type 'face)
|
||||
|
||||
(defcustom apropos-sort-by-scores nil
|
||||
"*Non-nil means sort matches by scores; best match is shown first.
|
||||
The computed score is shown for each match."
|
||||
This applies to all `apropos' commands except `apropos-documentation'.
|
||||
If value is `verbose', the computed score is shown for each match."
|
||||
:group 'apropos
|
||||
:type 'boolean)
|
||||
:type '(choice (const :tag "off" nil)
|
||||
(const :tag "on" t)
|
||||
(const :tag "show scores" verbose)))
|
||||
|
||||
(defcustom apropos-documentation-sort-by-scores t
|
||||
"*Non-nil means sort matches by scores; best match is shown first.
|
||||
This applies to `apropos-documentation' only.
|
||||
If value is `verbose', the computed score is shown for each match."
|
||||
:group 'apropos
|
||||
:type '(choice (const :tag "off" nil)
|
||||
(const :tag "on" t)
|
||||
(const :tag "show scores" verbose)))
|
||||
|
||||
(defvar apropos-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
@ -126,13 +138,22 @@ The computed score is shown for each match."
|
||||
(defvar apropos-mode-hook nil
|
||||
"*Hook run when mode is turned on.")
|
||||
|
||||
(defvar apropos-pattern nil
|
||||
"Apropos pattern as entered by user.")
|
||||
|
||||
(defvar apropos-pattern-quoted nil
|
||||
"Apropos pattern passed through `regexp-quoute'.")
|
||||
|
||||
(defvar apropos-words ()
|
||||
"Current list of apropos words extracted from `apropos-pattern'.")
|
||||
|
||||
(defvar apropos-all-words ()
|
||||
"Current list of words and synonyms.")
|
||||
|
||||
(defvar apropos-regexp nil
|
||||
"Regexp used in current apropos run.")
|
||||
|
||||
(defvar apropos-orig-regexp nil
|
||||
"Regexp as entered by user.")
|
||||
|
||||
(defvar apropos-all-regexp nil
|
||||
(defvar apropos-all-words-regexp nil
|
||||
"Regexp matching apropos-all-words.")
|
||||
|
||||
(defvar apropos-files-scanned ()
|
||||
@ -152,12 +173,6 @@ The computed score is shown for each match."
|
||||
Each element is a list of words where the first word is the standard emacs
|
||||
term, and the rest of the words are alternative terms.")
|
||||
|
||||
(defvar apropos-words ()
|
||||
"Current list of words.")
|
||||
|
||||
(defvar apropos-all-words ()
|
||||
"Current list of words and synonyms.")
|
||||
|
||||
|
||||
;;; Button types used by apropos
|
||||
|
||||
@ -269,18 +284,35 @@ before finding a label."
|
||||
"\\)")
|
||||
"")))
|
||||
|
||||
(defun apropos-rewrite-regexp (regexp)
|
||||
;;;###autoload
|
||||
(defun apropos-read-pattern (subject)
|
||||
"Read an apropos pattern, either a word list or a regexp.
|
||||
Returns the user pattern, either a list of words which are matched
|
||||
literally, or a string which is used as a regexp to search for.
|
||||
|
||||
SUBJECT is a string that is included in the prompt to identify what
|
||||
kind of objects to search."
|
||||
(let ((pattern
|
||||
(read-string (concat "Apropos " subject " (word list or regexp): "))))
|
||||
(if (string-equal (regexp-quote pattern) pattern)
|
||||
;; Split into words
|
||||
(split-string pattern "[ \t]+")
|
||||
pattern)))
|
||||
|
||||
(defun apropos-parse-pattern (pattern)
|
||||
"Rewrite a list of words to a regexp matching all permutations.
|
||||
If REGEXP is already a regexp, don't modify it."
|
||||
(setq apropos-orig-regexp regexp)
|
||||
(setq apropos-words () apropos-all-words ())
|
||||
(if (string-equal (regexp-quote regexp) regexp)
|
||||
If PATTERN is a string, that means it is already a regexp."
|
||||
(setq apropos-words nil
|
||||
apropos-all-words nil)
|
||||
(if (consp pattern)
|
||||
;; We don't actually make a regexp matching all permutations.
|
||||
;; Instead, for e.g. "a b c", we make a regexp matching
|
||||
;; any combination of two or more words like this:
|
||||
;; (a|b|c).*(a|b|c) which may give some false matches,
|
||||
;; but as long as it also gives the right ones, that's ok.
|
||||
(let ((words (split-string regexp "[ \t]+")))
|
||||
(let ((words pattern))
|
||||
(setq apropos-pattern (mapconcat 'identity pattern " ")
|
||||
apropos-pattern-quoted (regexp-quote apropos-pattern))
|
||||
(dolist (word words)
|
||||
(let ((syn apropos-synonyms) (s word) (a word))
|
||||
(while syn
|
||||
@ -293,30 +325,30 @@ If REGEXP is already a regexp, don't modify it."
|
||||
(setq syn (cdr syn))))
|
||||
(setq apropos-words (cons s apropos-words)
|
||||
apropos-all-words (cons a apropos-all-words))))
|
||||
(setq apropos-all-regexp (apropos-words-to-regexp apropos-all-words ".+"))
|
||||
(setq apropos-all-words-regexp (apropos-words-to-regexp apropos-all-words ".+"))
|
||||
(apropos-words-to-regexp apropos-words ".*?"))
|
||||
(setq apropos-all-regexp regexp)))
|
||||
(setq apropos-pattern-quoted (regexp-quote pattern)
|
||||
apropos-all-words-regexp pattern
|
||||
apropos-pattern pattern)))
|
||||
|
||||
|
||||
(defun apropos-calc-scores (str words)
|
||||
"Return apropos scores for string STR matching WORDS.
|
||||
Value is a list of offsets of the words into the string."
|
||||
(let ((scores ())
|
||||
i)
|
||||
(let (scores i)
|
||||
(if words
|
||||
(dolist (word words scores)
|
||||
(if (setq i (string-match word str))
|
||||
(setq scores (cons i scores))))
|
||||
;; Return list of start and end position of regexp
|
||||
(string-match apropos-regexp str)
|
||||
(list (match-beginning 0) (match-end 0)))))
|
||||
(and (string-match apropos-pattern str)
|
||||
(list (match-beginning 0) (match-end 0))))))
|
||||
|
||||
(defun apropos-score-str (str)
|
||||
"Return apropos score for string STR."
|
||||
(if str
|
||||
(let* (
|
||||
(l (length str))
|
||||
(score (- (/ l 10)))
|
||||
i)
|
||||
(let* ((l (length str))
|
||||
(score (- (/ l 10))))
|
||||
(dolist (s (apropos-calc-scores str apropos-all-words) score)
|
||||
(setq score (+ score 1000 (/ (* (- l s) 1000) l)))))
|
||||
0))
|
||||
@ -325,8 +357,9 @@ Value is a list of offsets of the words into the string."
|
||||
"Return apropos score for documentation string DOC."
|
||||
(let ((l (length doc)))
|
||||
(if (> l 0)
|
||||
(let ((score 0)
|
||||
i)
|
||||
(let ((score 0) i)
|
||||
(when (setq i (string-match apropos-pattern-quoted doc))
|
||||
(setq score 10000))
|
||||
(dolist (s (apropos-calc-scores doc apropos-all-words) score)
|
||||
(setq score (+ score 50 (/ (* (- l s) 50) l)))))
|
||||
0)))
|
||||
@ -335,8 +368,7 @@ Value is a list of offsets of the words into the string."
|
||||
"Return apropos score for SYMBOL."
|
||||
(setq symbol (symbol-name symbol))
|
||||
(let ((score 0)
|
||||
(l (length symbol))
|
||||
i)
|
||||
(l (length symbol)))
|
||||
(dolist (s (apropos-calc-scores symbol apropos-words) (* score (or weight 3)))
|
||||
(setq score (+ score (- 60 l) (/ (* (- l s) 60) l))))))
|
||||
|
||||
@ -367,18 +399,20 @@ This requires that at least 2 keywords (unless only one was given)."
|
||||
\\{apropos-mode-map}")
|
||||
|
||||
;;;###autoload
|
||||
(defun apropos-variable (regexp &optional do-all)
|
||||
"Show user variables that match REGEXP.
|
||||
With optional prefix DO-ALL or if `apropos-do-all' is non-nil, also show
|
||||
(defun apropos-variable (pattern &optional do-all)
|
||||
"Show user variables that match PATTERN.
|
||||
PATTERN can be a word, a list of words (separated by spaces),
|
||||
or a regexp (using some regexp special characters). If it is a word,
|
||||
search for matches for that word as a substring. If it is a list of words,
|
||||
search for matches for any two (or more) of those words.
|
||||
|
||||
With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also show
|
||||
normal variables."
|
||||
(interactive (list (read-string
|
||||
(concat "Apropos "
|
||||
(if (or current-prefix-arg apropos-do-all)
|
||||
"variable"
|
||||
"user option")
|
||||
" (regexp or words): "))
|
||||
(interactive (list (apropos-read-pattern
|
||||
(if (or current-prefix-arg apropos-do-all)
|
||||
"variable" "user option"))
|
||||
current-prefix-arg))
|
||||
(apropos-command regexp nil
|
||||
(apropos-command pattern nil
|
||||
(if (or do-all apropos-do-all)
|
||||
#'(lambda (symbol)
|
||||
(and (boundp symbol)
|
||||
@ -389,21 +423,26 @@ normal variables."
|
||||
;;;###autoload
|
||||
(defalias 'command-apropos 'apropos-command)
|
||||
;;;###autoload
|
||||
(defun apropos-command (apropos-regexp &optional do-all var-predicate)
|
||||
"Show commands (interactively callable functions) that match APROPOS-REGEXP.
|
||||
With optional prefix DO-ALL, or if `apropos-do-all' is non-nil, also show
|
||||
(defun apropos-command (pattern &optional do-all var-predicate)
|
||||
"Show commands (interactively callable functions) that match PATTERN.
|
||||
PATTERN can be a word, a list of words (separated by spaces),
|
||||
or a regexp (using some regexp special characters). If it is a word,
|
||||
search for matches for that word as a substring. If it is a list of words,
|
||||
search for matches for any two (or more) of those words.
|
||||
|
||||
With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also show
|
||||
noninteractive functions.
|
||||
|
||||
If VAR-PREDICATE is non-nil, show only variables, and only those that
|
||||
satisfy the predicate VAR-PREDICATE."
|
||||
(interactive (list (read-string (concat
|
||||
"Apropos command "
|
||||
(if (or current-prefix-arg
|
||||
apropos-do-all)
|
||||
"or function ")
|
||||
"(regexp or words): "))
|
||||
satisfy the predicate VAR-PREDICATE.
|
||||
|
||||
When called from a Lisp program, a string PATTERN is used as a regexp,
|
||||
while a list of strings is used as a word list."
|
||||
(interactive (list (apropos-read-pattern
|
||||
(if (or current-prefix-arg apropos-do-all)
|
||||
"command or function" "command"))
|
||||
current-prefix-arg))
|
||||
(setq apropos-regexp (apropos-rewrite-regexp apropos-regexp))
|
||||
(setq apropos-regexp (apropos-parse-pattern pattern))
|
||||
(let ((message
|
||||
(let ((standard-output (get-buffer-create "*Apropos*")))
|
||||
(print-help-return-message 'identity))))
|
||||
@ -441,7 +480,7 @@ satisfy the predicate VAR-PREDICATE."
|
||||
(string-match "\n" doc)))))))
|
||||
(setcar (cdr (car p)) score)
|
||||
(setq p (cdr p))))
|
||||
(and (apropos-print t nil)
|
||||
(and (apropos-print t nil nil t)
|
||||
message
|
||||
(message "%s" message))))
|
||||
|
||||
@ -457,13 +496,19 @@ satisfy the predicate VAR-PREDICATE."
|
||||
|
||||
|
||||
;;;###autoload
|
||||
(defun apropos (apropos-regexp &optional do-all)
|
||||
"Show all bound symbols whose names match APROPOS-REGEXP.
|
||||
With optional prefix DO-ALL or if `apropos-do-all' is non-nil, also
|
||||
(defun apropos (pattern &optional do-all)
|
||||
"Show all bound symbols whose names match PATTERN.
|
||||
PATTERN can be a word, a list of words (separated by spaces),
|
||||
or a regexp (using some regexp special characters). If it is a word,
|
||||
search for matches for that word as a substring. If it is a list of words,
|
||||
search for matches for any two (or more) of those words.
|
||||
|
||||
With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also
|
||||
show unbound symbols and key bindings, which is a little more
|
||||
time-consuming. Returns list of symbols and documentation found."
|
||||
(interactive "sApropos symbol (regexp or words): \nP")
|
||||
(setq apropos-regexp (apropos-rewrite-regexp apropos-regexp))
|
||||
(interactive (list (apropos-read-pattern "symbol")
|
||||
current-prefix-arg))
|
||||
(setq apropos-regexp (apropos-parse-pattern pattern))
|
||||
(apropos-symbols-internal
|
||||
(apropos-internal apropos-regexp
|
||||
(and (not do-all)
|
||||
@ -520,13 +565,19 @@ time-consuming. Returns list of symbols and documentation found."
|
||||
|
||||
|
||||
;;;###autoload
|
||||
(defun apropos-value (apropos-regexp &optional do-all)
|
||||
"Show all symbols whose value's printed image matches APROPOS-REGEXP.
|
||||
With optional prefix DO-ALL or if `apropos-do-all' is non-nil, also looks
|
||||
(defun apropos-value (pattern &optional do-all)
|
||||
"Show all symbols whose value's printed image matches PATTERN.
|
||||
PATTERN can be a word, a list of words (separated by spaces),
|
||||
or a regexp (using some regexp special characters). If it is a word,
|
||||
search for matches for that word as a substring. If it is a list of words,
|
||||
search for matches for any two (or more) of those words.
|
||||
|
||||
With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also looks
|
||||
at the function and at the names and values of properties.
|
||||
Returns list of symbols and values found."
|
||||
(interactive "sApropos value (regexp or words): \nP")
|
||||
(setq apropos-regexp (apropos-rewrite-regexp apropos-regexp))
|
||||
(interactive (list (apropos-read-pattern "value")
|
||||
current-prefix-arg))
|
||||
(setq apropos-regexp (apropos-parse-pattern pattern))
|
||||
(or do-all (setq do-all apropos-do-all))
|
||||
(setq apropos-accumulator ())
|
||||
(let (f v p)
|
||||
@ -534,7 +585,7 @@ Returns list of symbols and values found."
|
||||
(lambda (symbol)
|
||||
(setq f nil v nil p nil)
|
||||
(or (memq symbol '(apropos-regexp
|
||||
apropos-orig-regexp apropos-all-regexp
|
||||
apropos-pattern apropos-all-words-regexp
|
||||
apropos-words apropos-all-words
|
||||
do-all apropos-accumulator
|
||||
symbol f v p))
|
||||
@ -559,17 +610,24 @@ Returns list of symbols and values found."
|
||||
|
||||
|
||||
;;;###autoload
|
||||
(defun apropos-documentation (apropos-regexp &optional do-all)
|
||||
"Show symbols whose documentation contain matches for APROPOS-REGEXP.
|
||||
With optional prefix DO-ALL or if `apropos-do-all' is non-nil, also use
|
||||
(defun apropos-documentation (pattern &optional do-all)
|
||||
"Show symbols whose documentation contain matches for PATTERN.
|
||||
PATTERN can be a word, a list of words (separated by spaces),
|
||||
or a regexp (using some regexp special characters). If it is a word,
|
||||
search for matches for that word as a substring. If it is a list of words,
|
||||
search for matches for any two (or more) of those words.
|
||||
|
||||
With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also use
|
||||
documentation that is not stored in the documentation file and show key
|
||||
bindings.
|
||||
Returns list of symbols and documentation found."
|
||||
(interactive "sApropos documentation (regexp or words): \nP")
|
||||
(setq apropos-regexp (apropos-rewrite-regexp apropos-regexp))
|
||||
(interactive (list (apropos-read-pattern "documentation")
|
||||
current-prefix-arg))
|
||||
(setq apropos-regexp (apropos-parse-pattern pattern))
|
||||
(or do-all (setq do-all apropos-do-all))
|
||||
(setq apropos-accumulator () apropos-files-scanned ())
|
||||
(let ((standard-input (get-buffer-create " apropos-temp"))
|
||||
(apropos-sort-by-scores apropos-documentation-sort-by-scores)
|
||||
f v sf sv)
|
||||
(unwind-protect
|
||||
(save-excursion
|
||||
@ -602,7 +660,7 @@ Returns list of symbols and documentation found."
|
||||
(+ (apropos-score-symbol symbol 2) sf sv)
|
||||
f v)
|
||||
apropos-accumulator)))))))
|
||||
(apropos-print nil "\n----------------\n"))
|
||||
(apropos-print nil "\n----------------\n" nil t))
|
||||
(kill-buffer standard-input))))
|
||||
|
||||
|
||||
@ -621,16 +679,17 @@ Returns list of symbols and documentation found."
|
||||
(defun apropos-documentation-internal (doc)
|
||||
(if (consp doc)
|
||||
(apropos-documentation-check-elc-file (car doc))
|
||||
(and doc
|
||||
(string-match apropos-all-regexp doc)
|
||||
(save-match-data (apropos-true-hit-doc doc))
|
||||
(progn
|
||||
(if apropos-match-face
|
||||
(put-text-property (match-beginning 0)
|
||||
(match-end 0)
|
||||
'face apropos-match-face
|
||||
(setq doc (copy-sequence doc))))
|
||||
doc))))
|
||||
(if (and doc
|
||||
(string-match apropos-all-words-regexp doc)
|
||||
(apropos-true-hit-doc doc))
|
||||
(when apropos-match-face
|
||||
(setq doc (substitute-command-keys (copy-sequence doc)))
|
||||
(if (or (string-match apropos-pattern-quoted doc)
|
||||
(string-match apropos-all-words-regexp doc))
|
||||
(put-text-property (match-beginning 0)
|
||||
(match-end 0)
|
||||
'face apropos-match-face doc))
|
||||
doc))))
|
||||
|
||||
(defun apropos-format-plist (pl sep &optional compare)
|
||||
(setq pl (symbol-plist pl))
|
||||
@ -656,7 +715,7 @@ Returns list of symbols and documentation found."
|
||||
;; Finds all documentation related to APROPOS-REGEXP in internal-doc-file-name.
|
||||
|
||||
(defun apropos-documentation-check-doc-file ()
|
||||
(let (type symbol (sepa 2) sepb beg end)
|
||||
(let (type symbol (sepa 2) sepb)
|
||||
(insert ?\^_)
|
||||
(backward-char)
|
||||
(insert-file-contents (concat doc-directory internal-doc-file-name))
|
||||
@ -667,30 +726,31 @@ Returns list of symbols and documentation found."
|
||||
(beginning-of-line 2)
|
||||
(if (save-restriction
|
||||
(narrow-to-region (point) (1- sepb))
|
||||
(re-search-forward apropos-all-regexp nil t))
|
||||
(re-search-forward apropos-all-words-regexp nil t))
|
||||
(progn
|
||||
(setq beg (match-beginning 0)
|
||||
end (point))
|
||||
(goto-char (1+ sepa))
|
||||
(setq type (if (eq ?F (preceding-char))
|
||||
2 ; function documentation
|
||||
3) ; variable documentation
|
||||
symbol (read)
|
||||
beg (- beg (point) 1)
|
||||
end (- end (point) 1)
|
||||
doc (buffer-substring (1+ (point)) (1- sepb)))
|
||||
(when (apropos-true-hit-doc doc)
|
||||
(or (and (setq apropos-item (assq symbol apropos-accumulator))
|
||||
(setcar (cdr apropos-item)
|
||||
(+ (cadr apropos-item) (apropos-score-doc doc))))
|
||||
(apropos-score-doc doc)))
|
||||
(setq apropos-item (list symbol
|
||||
(+ (apropos-score-symbol symbol 2)
|
||||
(apropos-score-doc doc))
|
||||
nil nil)
|
||||
apropos-accumulator (cons apropos-item
|
||||
apropos-accumulator)))
|
||||
(if apropos-match-face
|
||||
(put-text-property beg end 'face apropos-match-face doc))
|
||||
(when apropos-match-face
|
||||
(setq doc (substitute-command-keys doc))
|
||||
(if (or (string-match apropos-pattern-quoted doc)
|
||||
(string-match apropos-all-words-regexp doc))
|
||||
(put-text-property (match-beginning 0)
|
||||
(match-end 0)
|
||||
'face apropos-match-face doc)))
|
||||
(setcar (nthcdr type apropos-item) doc))))
|
||||
(setq sepa (goto-char sepb)))))
|
||||
|
||||
@ -710,7 +770,7 @@ Returns list of symbols and documentation found."
|
||||
(if (save-restriction
|
||||
;; match ^ and $ relative to doc string
|
||||
(narrow-to-region beg end)
|
||||
(re-search-forward apropos-all-regexp nil t))
|
||||
(re-search-forward apropos-all-words-regexp nil t))
|
||||
(progn
|
||||
(goto-char (+ end 2))
|
||||
(setq doc (buffer-substring beg end)
|
||||
@ -738,9 +798,13 @@ Returns list of symbols and documentation found."
|
||||
nil nil)
|
||||
apropos-accumulator (cons apropos-item
|
||||
apropos-accumulator)))
|
||||
(if apropos-match-face
|
||||
(put-text-property beg end 'face apropos-match-face
|
||||
doc))
|
||||
(when apropos-match-face
|
||||
(setq doc (substitute-command-keys doc))
|
||||
(if (or (string-match apropos-pattern-quoted doc)
|
||||
(string-match apropos-all-words-regexp doc))
|
||||
(put-text-property (match-beginning 0)
|
||||
(match-end 0)
|
||||
'face apropos-match-face doc)))
|
||||
(setcar (nthcdr (if this-is-a-variable 3 2)
|
||||
apropos-item)
|
||||
doc))))))))))
|
||||
@ -770,7 +834,7 @@ Will return nil instead."
|
||||
function))
|
||||
|
||||
|
||||
(defun apropos-print (do-keys spacing &optional text)
|
||||
(defun apropos-print (do-keys spacing &optional text nosubst)
|
||||
"Output result of apropos searching into buffer `*Apropos*'.
|
||||
The value of `apropos-accumulator' is the list of items to output.
|
||||
Each element should have the format
|
||||
@ -782,7 +846,7 @@ alphabetically by symbol name; but this function also sets
|
||||
If SPACING is non-nil, it should be a string; separate items with that string.
|
||||
If non-nil TEXT is a string that will be printed as a heading."
|
||||
(if (null apropos-accumulator)
|
||||
(message "No apropos matches for `%s'" apropos-orig-regexp)
|
||||
(message "No apropos matches for `%s'" apropos-pattern)
|
||||
(setq apropos-accumulator
|
||||
(sort apropos-accumulator
|
||||
(lambda (a b)
|
||||
@ -816,13 +880,20 @@ If non-nil TEXT is a string that will be printed as a heading."
|
||||
(setq apropos-item (car p)
|
||||
symbol (car apropos-item)
|
||||
p (cdr p))
|
||||
;; Insert dummy score element for backwards compatibility with 21.x
|
||||
;; apropos-item format.
|
||||
(if (not (numberp (cadr apropos-item)))
|
||||
(setq apropos-item
|
||||
(cons (car apropos-item)
|
||||
(cons nil (cdr apropos-item)))))
|
||||
(insert-text-button (symbol-name symbol)
|
||||
'type 'apropos-symbol
|
||||
;; Can't use default, since user may have
|
||||
;; changed the variable!
|
||||
;; Just say `no' to variables containing faces!
|
||||
'face apropos-symbol-face)
|
||||
(if apropos-sort-by-scores
|
||||
(if (and (eq apropos-sort-by-scores 'verbose)
|
||||
(cadr apropos-item))
|
||||
(insert " (" (number-to-string (cadr apropos-item)) ") "))
|
||||
;; Calculate key-bindings if we want them.
|
||||
(and do-keys
|
||||
@ -874,8 +945,8 @@ If non-nil TEXT is a string that will be printed as a heading."
|
||||
(if (apropos-macrop symbol)
|
||||
'apropos-macro
|
||||
'apropos-function))
|
||||
t)
|
||||
(apropos-print-doc 3 'apropos-variable t)
|
||||
(not nosubst))
|
||||
(apropos-print-doc 3 'apropos-variable (not nosubst))
|
||||
(apropos-print-doc 7 'apropos-group t)
|
||||
(apropos-print-doc 6 'apropos-face t)
|
||||
(apropos-print-doc 5 'apropos-widget t)
|
||||
|
@ -716,6 +716,14 @@ This expects to be called from `point-min' in a bookmark file."
|
||||
|
||||
;;; end file-format stuff
|
||||
|
||||
|
||||
;;; Generic helpers.
|
||||
|
||||
(defun bookmark-maybe-message (fmt &rest args)
|
||||
"Apply `message' to FMT and ARGS, but only if the display is fast enough."
|
||||
(if (>= baud-rate 9600)
|
||||
(apply 'message fmt args)))
|
||||
|
||||
|
||||
;;; Core code:
|
||||
|
||||
@ -1350,14 +1358,12 @@ for a file, defaulting to the file defined by variable
|
||||
(defun bookmark-write-file (file)
|
||||
(save-excursion
|
||||
(save-window-excursion
|
||||
(if (>= baud-rate 9600)
|
||||
(message "Saving bookmarks to file %s..." file))
|
||||
(set-buffer (let ((enable-local-variables nil))
|
||||
(find-file-noselect file)))
|
||||
(bookmark-maybe-message "Saving bookmarks to file %s..." file)
|
||||
(set-buffer (get-buffer-create " *Bookmarks*"))
|
||||
(goto-char (point-min))
|
||||
(delete-region (point-min) (point-max))
|
||||
(let ((print-length nil)
|
||||
(print-level nil))
|
||||
(delete-region (point-min) (point-max))
|
||||
(bookmark-insert-file-format-version-stamp)
|
||||
(pp bookmark-alist (current-buffer))
|
||||
(let ((version-control
|
||||
@ -1368,11 +1374,11 @@ for a file, defaulting to the file defined by variable
|
||||
(t
|
||||
t))))
|
||||
(condition-case nil
|
||||
(write-file file)
|
||||
(write-region (point-min) (point-max) file)
|
||||
(file-error (message "Can't write %s" file)))
|
||||
(kill-buffer (current-buffer))
|
||||
(if (>= baud-rate 9600)
|
||||
(message "Saving bookmarks to file %s...done" file)))))))
|
||||
(bookmark-maybe-message
|
||||
"Saving bookmarks to file %s...done" file))))))
|
||||
|
||||
|
||||
(defun bookmark-import-new-list (new-list)
|
||||
@ -1438,8 +1444,8 @@ method buffers use to resolve name collisions."
|
||||
(if (file-readable-p file)
|
||||
(save-excursion
|
||||
(save-window-excursion
|
||||
(if (and (null no-msg) (>= baud-rate 9600))
|
||||
(message "Loading bookmarks from %s..." file))
|
||||
(if (null no-msg)
|
||||
(bookmark-maybe-message "Loading bookmarks from %s..." file))
|
||||
(set-buffer (let ((enable-local-variables nil))
|
||||
(find-file-noselect file)))
|
||||
(goto-char (point-min))
|
||||
@ -1462,8 +1468,8 @@ method buffers use to resolve name collisions."
|
||||
(bookmark-bmenu-surreptitiously-rebuild-list))
|
||||
(error "Invalid bookmark list in %s" file)))
|
||||
(kill-buffer (current-buffer)))
|
||||
(if (and (null no-msg) (>= baud-rate 9600))
|
||||
(message "Loading bookmarks from %s...done" file)))
|
||||
(if (null no-msg)
|
||||
(bookmark-maybe-message "Loading bookmarks from %s...done" file)))
|
||||
(error "Cannot read bookmark file %s" file)))
|
||||
|
||||
|
||||
|
@ -92,30 +92,39 @@
|
||||
(and n (list (prefix-numeric-value n)))))))
|
||||
|
||||
;;; Write out powers (a*b*...)^n as a*b*...*a*b*...
|
||||
(defun calcFunc-writeoutpower (expr)
|
||||
(math-normalize (math-map-tree 'math-write-out-power expr)))
|
||||
(defun calcFunc-powerexpand (expr)
|
||||
(math-normalize (math-map-tree 'math-powerexpand expr)))
|
||||
|
||||
(defun math-write-out-power (expr)
|
||||
(defun math-powerexpand (expr)
|
||||
(if (eq (car-safe expr) '^)
|
||||
(let ((a (nth 1 expr))
|
||||
(n (nth 2 expr))
|
||||
(prod (nth 1 expr))
|
||||
(i 1))
|
||||
(if (and (integerp n)
|
||||
(> n 0))
|
||||
(progn
|
||||
(while (< i n)
|
||||
(setq prod (math-mul prod a))
|
||||
(setq i (1+ i)))
|
||||
prod)
|
||||
expr))
|
||||
(let ((n (nth 2 expr)))
|
||||
(cond ((and (integerp n)
|
||||
(> n 0))
|
||||
(let ((i 1)
|
||||
(a (nth 1 expr))
|
||||
(prod (nth 1 expr)))
|
||||
(while (< i n)
|
||||
(setq prod (math-mul prod a))
|
||||
(setq i (1+ i)))
|
||||
prod))
|
||||
((and (integerp n)
|
||||
(< n 0))
|
||||
(let ((i -1)
|
||||
(a (math-pow (nth 1 expr) -1))
|
||||
(prod (math-pow (nth 1 expr) -1)))
|
||||
(while (> i n)
|
||||
(setq prod (math-mul a prod))
|
||||
(setq i (1- i)))
|
||||
prod))
|
||||
(t
|
||||
expr)))
|
||||
expr))
|
||||
|
||||
(defun calc-writeoutpower ()
|
||||
(defun calc-powerexpand ()
|
||||
(interactive)
|
||||
(calc-slow-wrapper
|
||||
(calc-enter-result 1 "expp"
|
||||
(calcFunc-writeoutpower (calc-top-n 1)))))
|
||||
(calc-enter-result 1 "pexp"
|
||||
(calcFunc-powerexpand (calc-top-n 1)))))
|
||||
|
||||
(defun calc-collect (&optional var)
|
||||
(interactive "sCollect terms involving: ")
|
||||
|
@ -374,6 +374,13 @@
|
||||
t)
|
||||
((eq (car-safe a) '^)
|
||||
(math-check-known-square-matrixp (nth 1 a)))
|
||||
((or
|
||||
(eq (car-safe a) '*)
|
||||
(eq (car-safe a) '+)
|
||||
(eq (car-safe a) '-))
|
||||
(and
|
||||
(math-check-known-square-matrixp (nth 1 a))
|
||||
(math-check-known-square-matrixp (nth 2 a))))
|
||||
(t
|
||||
(let ((decl (if (eq (car a) 'var)
|
||||
(or (assq (nth 2 a) math-decls-cache)
|
||||
@ -1847,6 +1854,11 @@
|
||||
(math-mul-zero b a))))
|
||||
(list '/ a b)))
|
||||
|
||||
;;; Division from the left.
|
||||
(defun calcFunc-ldiv (a b)
|
||||
(if (math-known-scalarp a)
|
||||
(math-div b a)
|
||||
(math-mul (math-pow a -1) b)))
|
||||
|
||||
(defun calcFunc-mod (a b)
|
||||
(math-normalize (list '% a b)))
|
||||
@ -1960,7 +1972,8 @@
|
||||
(if (and (= b -1)
|
||||
(math-known-square-matrixp (nth 1 a))
|
||||
(math-known-square-matrixp (nth 2 a)))
|
||||
(list '* (list '^ (nth 2 a) -1) (list '^ (nth 1 a) -1))
|
||||
(math-mul (math-pow-fancy (nth 2 a) -1)
|
||||
(math-pow-fancy (nth 1 a) -1))
|
||||
(list '^ a b)))
|
||||
((and (eq (car-safe a) '*)
|
||||
(or (math-known-num-integerp b)
|
||||
|
@ -659,7 +659,7 @@
|
||||
("calc-alg" calc-has-rules math-defsimplify
|
||||
calc-modify-simplify-mode calcFunc-collect calcFunc-esimplify
|
||||
calcFunc-islin calcFunc-islinnt calcFunc-lin calcFunc-linnt
|
||||
calcFunc-simplify calcFunc-subst calcFunc-writeoutpower math-beforep
|
||||
calcFunc-simplify calcFunc-subst calcFunc-powerexpand math-beforep
|
||||
math-build-polynomial-expr math-expand-formula math-expr-contains
|
||||
math-expr-contains-count math-expr-depends math-expr-height
|
||||
math-expr-subst math-expr-weight math-integer-plus math-is-linear
|
||||
@ -694,7 +694,7 @@ calcFunc-dnonneg calcFunc-dnonzero calcFunc-dnumint calcFunc-dodd
|
||||
calcFunc-dpos calcFunc-drange calcFunc-drat calcFunc-dreal
|
||||
calcFunc-dscalar calcFunc-fceil calcFunc-ffloor calcFunc-float
|
||||
calcFunc-fround calcFunc-frounde calcFunc-froundu calcFunc-ftrunc
|
||||
calcFunc-idiv calcFunc-incr calcFunc-mant calcFunc-max calcFunc-min
|
||||
calcFunc-idiv calcFunc-incr calcFunc-ldiv calcFunc-mant calcFunc-max calcFunc-min
|
||||
calcFunc-mod calcFunc-mul calcFunc-neg calcFunc-percent calcFunc-pow
|
||||
calcFunc-relch calcFunc-round calcFunc-rounde calcFunc-roundu
|
||||
calcFunc-scf calcFunc-sub calcFunc-xpon math-abs math-abs-approx
|
||||
@ -923,7 +923,7 @@ calc-force-refresh calc-locate-cursor-element calc-show-edit-buffer)
|
||||
("calc-alg" calc-alg-evaluate calc-apart calc-collect calc-expand
|
||||
calc-expand-formula calc-factor calc-normalize-rat calc-poly-div
|
||||
calc-poly-div-rem calc-poly-gcd calc-poly-rem calc-simplify
|
||||
calc-simplify-extended calc-substitute calc-writeoutpower)
|
||||
calc-simplify-extended calc-substitute calc-powerexpand)
|
||||
|
||||
("calcalg2" calc-alt-summation calc-derivative
|
||||
calc-dump-integral-cache calc-integral calc-num-integral
|
||||
|
@ -911,6 +911,11 @@ Entries are (SYMBOL EXPR DOC-STRING TEMP-TYPE BASE-UNITS).")
|
||||
(defvar math-cu-pure)
|
||||
|
||||
(defun math-convert-units (expr math-cu-new-units &optional math-cu-pure)
|
||||
(if (eq (car-safe math-cu-new-units) 'var)
|
||||
(let ((unew (assq (nth 1 math-cu-new-units)
|
||||
(math-build-units-table))))
|
||||
(if (eq (car-safe (nth 1 unew)) '+)
|
||||
(setq math-cu-new-units (nth 1 unew)))))
|
||||
(math-with-extra-prec 2
|
||||
(let ((compat (and (not math-cu-pure)
|
||||
(math-find-compatible-unit expr math-cu-new-units)))
|
||||
|
@ -2027,6 +2027,10 @@ See calc-keypad for details."
|
||||
(calc-slow-wrapper
|
||||
(calc-binary-op "/" 'calcFunc-div arg 0 'calcFunc-inv '/)))
|
||||
|
||||
(defun calc-left-divide (arg)
|
||||
(interactive "P")
|
||||
(calc-slow-wrapper
|
||||
(calc-binary-op "ldiv" 'calcFunc-ldiv arg 0 nil nil)))
|
||||
|
||||
(defun calc-change-sign (arg)
|
||||
(interactive "P")
|
||||
|
@ -378,7 +378,7 @@ If LIST-ONLY is non-nil don't modify or display the buffer, only return a list."
|
||||
(or (verify-visited-file-modtime diary-buffer)
|
||||
(revert-buffer t t))))
|
||||
;; Setup things like the header-line-format and invisibility-spec.
|
||||
(when (eq major-mode 'fundamental-mode) (diary-mode))
|
||||
(when (eq major-mode default-major-mode) (diary-mode))
|
||||
;; d-s-p is passed to the diary display function.
|
||||
(let ((diary-saved-point (point)))
|
||||
(save-excursion
|
||||
@ -452,7 +452,8 @@ If LIST-ONLY is non-nil don't modify or display the buffer, only return a list."
|
||||
2))
|
||||
(while (looking-at " \\|\^I")
|
||||
(re-search-forward "\^M\\|\n" nil 'move))
|
||||
(unless (eobp) (backward-char 1))
|
||||
(unless (and (eobp) (not (bolp)))
|
||||
(backward-char 1))
|
||||
(unless list-only
|
||||
(remove-overlays date-start (point)
|
||||
'invisible 'diary))
|
||||
@ -773,7 +774,7 @@ is created."
|
||||
(pop-up-frames (window-dedicated-p (selected-window))))
|
||||
(with-current-buffer (or (find-buffer-visiting d-file)
|
||||
(find-file-noselect d-file t))
|
||||
(when (eq major-mode 'fundamental-mode) (diary-mode))
|
||||
(when (eq major-mode default-major-mode) (diary-mode))
|
||||
(diary-unhide-everything)
|
||||
(display-buffer (current-buffer)))))
|
||||
|
||||
@ -876,7 +877,7 @@ diary entries."
|
||||
file-glob-attrs marks)
|
||||
(with-current-buffer (find-file-noselect (diary-check-diary-file) t)
|
||||
(save-excursion
|
||||
(when (eq major-mode 'fundamental-mode) (diary-mode))
|
||||
(when (eq major-mode default-major-mode) (diary-mode))
|
||||
(setq mark-diary-entries-in-calendar t)
|
||||
(message "Marking diary entries...")
|
||||
(setq file-glob-attrs (nth 1 (diary-pull-attrs nil '())))
|
||||
@ -1671,7 +1672,7 @@ If omitted, NONMARKING defaults to nil and FILE defaults to
|
||||
`diary-file'."
|
||||
(let ((pop-up-frames (window-dedicated-p (selected-window))))
|
||||
(find-file-other-window (substitute-in-file-name (or file diary-file))))
|
||||
(when (eq major-mode 'fundamental-mode) (diary-mode))
|
||||
(when (eq major-mode default-major-mode) (diary-mode))
|
||||
(widen)
|
||||
(diary-unhide-everything)
|
||||
(goto-char (point-max))
|
||||
|
@ -79,54 +79,46 @@ Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
|
||||
(message "Generating %s..." generated-custom-dependencies-file)
|
||||
(set-buffer (find-file-noselect generated-custom-dependencies-file))
|
||||
(erase-buffer)
|
||||
(insert "\
|
||||
;;; " (file-name-nondirectory generated-custom-dependencies-file)
|
||||
(insert ";;; " (file-name-nondirectory generated-custom-dependencies-file)
|
||||
" --- automatically extracted custom dependencies
|
||||
;;
|
||||
;;; Code:
|
||||
;;\n;;; Code:
|
||||
|
||||
")
|
||||
(mapatoms (lambda (symbol)
|
||||
(let ((members (get symbol 'custom-group))
|
||||
item where found)
|
||||
where found)
|
||||
(when members
|
||||
;; So x and no-x builds won't differ.
|
||||
(setq members
|
||||
(sort (copy-sequence members)
|
||||
(lambda (x y) (string< (car x) (car y)))))
|
||||
(while members
|
||||
(setq item (car (car members))
|
||||
members (cdr members)
|
||||
where (get item 'custom-where))
|
||||
(dolist (member
|
||||
;; So x and no-x builds won't differ.
|
||||
(sort (mapcar 'car members) 'string<))
|
||||
(setq where (get member 'custom-where))
|
||||
(unless (or (null where)
|
||||
(member where found))
|
||||
(if found
|
||||
(insert " ")
|
||||
(insert "(put '" (symbol-name symbol)
|
||||
" 'custom-loads '("))
|
||||
(prin1 where (current-buffer))
|
||||
(push where found)))
|
||||
(when found
|
||||
(insert "))\n"))))))
|
||||
(insert "(put '" (symbol-name symbol)
|
||||
" 'custom-loads '")
|
||||
(prin1 (nreverse found) (current-buffer))
|
||||
(insert ")\n"))))))
|
||||
(insert "\
|
||||
;;; These are for handling :version. We need to have a minimum of
|
||||
;;; information so `customize-changed-options' could do its job.
|
||||
;; These are for handling :version. We need to have a minimum of
|
||||
;; information so `customize-changed-options' could do its job.
|
||||
|
||||
;;; For groups we set `custom-version', `group-documentation' and
|
||||
;;; `custom-tag' (which are shown in the customize buffer), so we
|
||||
;;; don't have to load the file containing the group.
|
||||
;; For groups we set `custom-version', `group-documentation' and
|
||||
;; `custom-tag' (which are shown in the customize buffer), so we
|
||||
;; don't have to load the file containing the group.
|
||||
|
||||
;;; `custom-versions-load-alist' is an alist that has as car a version
|
||||
;;; number and as elts the files that have variables or faces that
|
||||
;;; contain that version. These files should be loaded before showing
|
||||
;;; the customization buffer that `customize-changed-options'
|
||||
;;; generates.
|
||||
;; `custom-versions-load-alist' is an alist that has as car a version
|
||||
;; number and as elts the files that have variables or faces that
|
||||
;; contain that version. These files should be loaded before showing
|
||||
;; the customization buffer that `customize-changed-options'
|
||||
;; generates.
|
||||
|
||||
;;; This macro is used so we don't modify the information about
|
||||
;;; variables and groups if it's already set. (We don't know when
|
||||
;;; " (file-name-nondirectory generated-custom-dependencies-file)
|
||||
;; This macro is used so we don't modify the information about
|
||||
;; variables and groups if it's already set. (We don't know when
|
||||
;; " (file-name-nondirectory generated-custom-dependencies-file)
|
||||
" is going to be loaded and at that time some of the
|
||||
;;; files might be loaded and some others might not).
|
||||
;; files might be loaded and some others might not).
|
||||
\(defmacro custom-put-if-not (symbol propname value)
|
||||
`(unless (get ,symbol ,propname)
|
||||
(put ,symbol ,propname ,value)))
|
||||
@ -175,12 +167,13 @@ Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
|
||||
\(provide '" (file-name-sans-extension
|
||||
(file-name-nondirectory generated-custom-dependencies-file)) ")
|
||||
|
||||
;;; Local Variables:
|
||||
;;; version-control: never
|
||||
;;; no-byte-compile: t
|
||||
;;; no-update-autoloads: t
|
||||
;;; End:
|
||||
;;; " (file-name-nondirectory generated-custom-dependencies-file) " ends here\n")
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; End:\n;;; "
|
||||
(file-name-nondirectory generated-custom-dependencies-file)
|
||||
" ends here\n")
|
||||
(let ((kept-new-versions 10000000))
|
||||
(save-buffer))
|
||||
(message "Generating %s...done" generated-custom-dependencies-file)
|
||||
@ -188,5 +181,5 @@ Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
|
||||
|
||||
|
||||
|
||||
;;; arch-tag: b7b6421a-bf7a-44fd-a382-6f44976bdf68
|
||||
;; arch-tag: b7b6421a-bf7a-44fd-a382-6f44976bdf68
|
||||
;;; cus-dep.el ends here
|
||||
|
@ -493,11 +493,12 @@ Return a list suitable for use in `interactive'."
|
||||
(let ((v (variable-at-point))
|
||||
(enable-recursive-minibuffers t)
|
||||
val)
|
||||
(setq val (completing-read
|
||||
(if (and (symbolp v) (custom-variable-p v))
|
||||
(format "Customize option (default %s): " v)
|
||||
"Customize option: ")
|
||||
obarray 'custom-variable-p t))
|
||||
(setq val (if (and (symbolp v) (custom-variable-p v))
|
||||
(completing-read
|
||||
(format "Customize option (default %s): " v) obarray
|
||||
'custom-variable-p t nil nil (symbol-name v))
|
||||
(completing-read "Customize option: " obarray
|
||||
'custom-variable-p t)))
|
||||
(list (if (equal val "")
|
||||
(if (symbolp v) v nil)
|
||||
(intern val)))))
|
||||
@ -798,7 +799,8 @@ making them as if they had never been customized at all."
|
||||
(interactive)
|
||||
(let ((children custom-options))
|
||||
(mapc (lambda (widget)
|
||||
(and (widget-apply widget :custom-standard-value)
|
||||
(and (widget-get widget :custom-standard-value)
|
||||
(widget-apply widget :custom-standard-value)
|
||||
(if (memq (widget-get widget :custom-state)
|
||||
'(modified set changed saved rogue))
|
||||
(widget-apply widget :custom-reset-standard))))
|
||||
@ -2123,7 +2125,7 @@ Insert PREFIX first if non-nil."
|
||||
|
||||
(defun custom-add-parent-links (widget &optional initial-string)
|
||||
"Add \"Parent groups: ...\" to WIDGET if the group has parents.
|
||||
The value if non-nil if any parents were found.
|
||||
The value is non-nil if any parents were found.
|
||||
If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
|
||||
(let ((name (widget-value widget))
|
||||
(type (widget-type widget))
|
||||
@ -2132,15 +2134,14 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
|
||||
(parents nil))
|
||||
(insert (or initial-string "Parent groups:"))
|
||||
(mapatoms (lambda (symbol)
|
||||
(let ((entry (assq name (get symbol 'custom-group))))
|
||||
(when (eq (nth 1 entry) type)
|
||||
(insert " ")
|
||||
(push (widget-create-child-and-convert
|
||||
widget 'custom-group-link
|
||||
:tag (custom-unlispify-tag-name symbol)
|
||||
symbol)
|
||||
buttons)
|
||||
(setq parents (cons symbol parents))))))
|
||||
(when (member (list name type) (get symbol 'custom-group))
|
||||
(insert " ")
|
||||
(push (widget-create-child-and-convert
|
||||
widget 'custom-group-link
|
||||
:tag (custom-unlispify-tag-name symbol)
|
||||
symbol)
|
||||
buttons)
|
||||
(setq parents (cons symbol parents)))))
|
||||
(and (null (get name 'custom-links)) ;No links of its own.
|
||||
(= (length parents) 1) ;A single parent.
|
||||
(let* ((links (get (car parents) 'custom-links))
|
||||
@ -3397,7 +3398,7 @@ restoring it to the state of a face that has never been customized."
|
||||
|
||||
(define-widget 'face 'symbol
|
||||
"A Lisp face name (with sample)."
|
||||
:format "%t: (%{sample%}) %v"
|
||||
:format "%{%t%}: (%{sample%}) %v"
|
||||
:tag "Face"
|
||||
:value 'default
|
||||
:sample-face-get 'widget-face-sample-face-get
|
||||
|
@ -112,6 +112,7 @@
|
||||
(require 'dired-aux)
|
||||
|
||||
(defvar vm-folder-directory)
|
||||
(eval-when-compile (require 'man))
|
||||
|
||||
;;; User-defined variables.
|
||||
|
||||
@ -1411,9 +1412,11 @@ Uses `man.el' of \\[manual-entry] fame."
|
||||
|
||||
;;; Run mail on mail folders.
|
||||
|
||||
;;; (and (not (fboundp 'vm-visit-folder))
|
||||
;;; (defun vm-visit-folder (file &optional arg)
|
||||
;;; nil))
|
||||
;; Avoid compiler warning.
|
||||
(eval-when-compile
|
||||
(when (not (fboundp 'vm-visit-folder))
|
||||
(defun vm-visit-folder (file &optional arg)
|
||||
nil)))
|
||||
|
||||
(defun dired-vm (&optional read-only)
|
||||
"Run VM on this file.
|
||||
|
@ -229,7 +229,7 @@ for users who call this function in `.emacs'."
|
||||
;; unless some other has been specified.
|
||||
(if (equal current-language-environment "English")
|
||||
(set-language-environment "latin-1"))
|
||||
(unless (or noninteractive (memq window-system '(x w32)))
|
||||
(unless (or noninteractive (memq window-system '(x w32 mac)))
|
||||
;; Send those codes literally to a character-based terminal.
|
||||
;; If we are using single-byte characters,
|
||||
;; it doesn't matter which coding system we use.
|
||||
|
@ -3173,7 +3173,7 @@ Hit \\[ediff-recenter] to reset the windows afterward."
|
||||
(setq f (concat ediff-temp-file-prefix p)
|
||||
short-f (concat ediff-temp-file-prefix short-p)
|
||||
f (cond (given-file)
|
||||
((find-file-name-handler f 'find-file-noselect)
|
||||
((find-file-name-handler f 'insert-file-contents)
|
||||
;; to thwart file handlers in write-region, e.g., if file
|
||||
;; name ends with .Z or .gz
|
||||
;; This is needed so that patches produced by ediff will
|
||||
|
@ -568,6 +568,9 @@ directory or directories specified."
|
||||
|
||||
(save-buffer))))
|
||||
|
||||
(define-obsolete-function-alias 'update-autoloads-from-directories
|
||||
'update-directory-autoloads "22.1")
|
||||
|
||||
;;;###autoload
|
||||
(defun batch-update-autoloads ()
|
||||
"Update loaddefs.el autoloads in batch mode.
|
||||
|
@ -545,7 +545,7 @@
|
||||
(eq (car-safe (nth 2 last)) 'cdr)
|
||||
(eq (cadr (nth 2 last)) var))))
|
||||
(progn
|
||||
(byte-compile-warn "`%s' called for effect"
|
||||
(byte-compile-warn "value returned by `%s' is not used"
|
||||
(prin1-to-string (car form)))
|
||||
nil)))
|
||||
(byte-compile-log " %s called for effect; deleted" fn)
|
||||
|
@ -194,7 +194,12 @@ See Info node `(elisp)Derived Modes' for more details."
|
||||
parent child docstring syntax abbrev))
|
||||
|
||||
`(progn
|
||||
(defvar ,hook nil ,(format "Hook run when entering %s mode." name))
|
||||
(unless (get ',hook 'variable-documentation)
|
||||
(put ',hook 'variable-documentation
|
||||
,(format "Hook run when entering %s mode.
|
||||
No problems result if this variable is not bound.
|
||||
`add-hook' automatically binds it. (This is true for all hook variables.)"
|
||||
name)))
|
||||
(defvar ,map (make-sparse-keymap))
|
||||
,(if declare-syntax
|
||||
`(defvar ,syntax (make-syntax-table)))
|
||||
|
@ -233,8 +233,6 @@
|
||||
(setq comment-column 40)
|
||||
;; Don't get confused by `;' in doc strings when paragraph-filling.
|
||||
(set (make-local-variable 'comment-use-global-state) t)
|
||||
(make-local-variable 'comment-indent-function)
|
||||
(setq comment-indent-function 'lisp-comment-indent)
|
||||
(make-local-variable 'imenu-generic-expression)
|
||||
(setq imenu-generic-expression lisp-imenu-generic-expression)
|
||||
(make-local-variable 'multibyte-syntax-as-symbol)
|
||||
@ -746,17 +744,9 @@ which see."
|
||||
(unless (eq old-value new-value)
|
||||
(setq debug-on-error new-value))
|
||||
value)))))
|
||||
|
||||
;; Used for comment-indent-function in Lisp modes.
|
||||
(defun lisp-comment-indent ()
|
||||
(if (looking-at "\\s<\\s<\\s<")
|
||||
(current-column)
|
||||
(if (looking-at "\\s<\\s<")
|
||||
(let ((tem (or (calculate-lisp-indent) (current-column))))
|
||||
(if (listp tem) (car tem) tem))
|
||||
(skip-chars-backward " \t")
|
||||
(max (if (bolp) 0 (1+ (current-column)))
|
||||
comment-column))))
|
||||
|
||||
;; May still be used by some external Lisp-mode variant.
|
||||
(define-obsolete-function-alias 'lisp-comment-indent 'comment-indent-default)
|
||||
|
||||
;; This function just forces a more costly detection of comments (using
|
||||
;; parse-partial-sexp from beginning-of-defun). I.e. It avoids the problem of
|
||||
|
@ -1242,8 +1242,12 @@ the `Local variables' section of a file."
|
||||
|
||||
;; Characters that should not be considered as part of the word, in reformed-vi
|
||||
;; syntax mode.
|
||||
;; Note: \\ (quoted \) must appear before `-' because this string is listified
|
||||
;; into characters at some point and then put back to string. The result is
|
||||
;; used in skip-chars-forward, which treats - specially. Here we achieve the
|
||||
;; effect of quoting - and preventing it from being special.
|
||||
(defconst viper-non-word-characters-reformed-vi
|
||||
"!@#$%^&*()-+=|\\~`{}[];:'\",<.>/?")
|
||||
"!@#$%^&*()\\-+=|\\~`{}[];:'\",<.>/?")
|
||||
;; These are characters that are not to be considered as parts of a word in
|
||||
;; Viper.
|
||||
;; Set each time state changes and at loading time
|
||||
|
@ -440,6 +440,8 @@ widget."
|
||||
Buffer-menu-mode
|
||||
compilation-mode
|
||||
|
||||
rcirc-mode
|
||||
|
||||
view-mode
|
||||
vm-mode
|
||||
vm-summary-mode)
|
||||
|
@ -2717,7 +2717,10 @@ Interactively, confirmation is required unless you supply a prefix argument."
|
||||
(and buffer-file-name
|
||||
(file-writable-p buffer-file-name)
|
||||
(setq buffer-read-only nil))
|
||||
(save-buffer))
|
||||
(save-buffer)
|
||||
;; It's likely that the VC status at the new location is different from
|
||||
;; the one at the old location.
|
||||
(vc-find-file-hook))
|
||||
|
||||
(defun backup-buffer ()
|
||||
"Make a backup of the disk file visited by the current buffer, if appropriate.
|
||||
|
@ -3,7 +3,7 @@
|
||||
;; Author: Peter Breton
|
||||
;; Created: Fri Mar 26 1999
|
||||
;; Keywords: unix
|
||||
;; Time-stamp: <2001-07-16 12:42:35 pavel>
|
||||
;; Time-stamp: <2005-11-11 20:37:50 teirllm>
|
||||
|
||||
;; Copyright (C) 1999, 2000, 2002, 2003, 2004,
|
||||
;; 2005 Free Software Foundation, Inc.
|
||||
@ -46,6 +46,8 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'dired)
|
||||
|
||||
(defvar dired-buffers)
|
||||
(defvar dired-subdir-alist)
|
||||
|
||||
@ -198,8 +200,7 @@ It is a function which takes two arguments, the directory and its parent."
|
||||
(regexp find-lisp-regexp))
|
||||
;; Expand DIR ("" means default-directory), and make sure it has a
|
||||
;; trailing slash.
|
||||
(setq dir (abbreviate-file-name
|
||||
(file-name-as-directory (expand-file-name dir))))
|
||||
(setq dir (file-name-as-directory (expand-file-name dir)))
|
||||
;; Check that it's really a directory.
|
||||
(or (file-directory-p dir)
|
||||
(error "find-dired needs a directory: %s" dir))
|
||||
@ -292,7 +293,7 @@ It is a function which takes two arguments, the directory and its parent."
|
||||
(defun find-lisp-find-dired-insert-file (file buffer)
|
||||
(set-buffer buffer)
|
||||
(insert find-lisp-line-indent
|
||||
(find-lisp-format file (file-attributes file) (list "")
|
||||
(find-lisp-format file (file-attributes file 'string) (list "")
|
||||
(current-time))))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@ -308,18 +309,16 @@ It is a function which takes two arguments, the directory and its parent."
|
||||
(if (memq ?s switches) ; size in K
|
||||
(format "%4d " (1+ (/ (nth 7 file-attr) 1024))))
|
||||
(nth 8 file-attr) ; permission bits
|
||||
;; numeric uid/gid are more confusing than helpful
|
||||
;; Emacs should be able to make strings of them.
|
||||
;; user-login-name and user-full-name could take an
|
||||
;; optional arg.
|
||||
(format " %3d %-8s %-8s %8d "
|
||||
(nth 1 file-attr) ; no. of links
|
||||
(if (= (user-uid) (nth 2 file-attr))
|
||||
(user-login-name)
|
||||
(int-to-string (nth 2 file-attr))) ; uid
|
||||
(if (numberp (nth 2 file-attr))
|
||||
(int-to-string (nth 2 file-attr))
|
||||
(nth 2 file-attr)) ; uid
|
||||
(if (eq system-type 'ms-dos)
|
||||
"root" ; everything is root on MSDOS.
|
||||
(int-to-string (nth 3 file-attr))) ; gid
|
||||
(if (numberp (nth 3 file-attr))
|
||||
(int-to-string (nth 3 file-attr))
|
||||
(nth 3 file-attr))) ; gid
|
||||
(nth 7 file-attr) ; size in bytes
|
||||
)
|
||||
(find-lisp-format-time file-attr switches now)
|
||||
|
@ -295,7 +295,8 @@ means that Font Lock mode is turned on for buffers in C and C++ modes only."
|
||||
global-font-lock-mode font-lock-mode turn-on-font-lock-if-enabled
|
||||
:extra-args (dummy)
|
||||
:initialize 'custom-initialize-safe-default
|
||||
:init-value (not (or noninteractive emacs-basic-display)))
|
||||
:init-value (not (or noninteractive emacs-basic-display))
|
||||
:version "22.1")
|
||||
|
||||
;;; End of Global Font Lock mode.
|
||||
|
||||
|
@ -1,3 +1,23 @@
|
||||
2005-11-09 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* message.el (message-generate-headers): Downcase the argument
|
||||
given to message-check-element.
|
||||
|
||||
2005-11-01 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* gnus.el (gnus-parameters-case-fold-search): New variable.
|
||||
(gnus-parameters-get-parameter): Use it.
|
||||
|
||||
* gnus-score.el (gnus-home-score-file): Doc fix.
|
||||
|
||||
2005-11-01 Xavier Maillard <zedek@gnu-rox.org> (tiny change)
|
||||
|
||||
* gnus-score.el (gnus-update-score-entry-dates): Doc fix.
|
||||
|
||||
2005-10-31 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* mml.el (mml-preview): Doc fix.
|
||||
|
||||
2005-10-27 Reiner Steib <Reiner.Steib@gmx.de>
|
||||
|
||||
* flow-fill.el (fill-flowed-encode-tests): Restore trailing
|
||||
@ -391,38 +411,6 @@
|
||||
(gnus-decode-header-function, gnus-newsgroup-name):
|
||||
* spam-stat.el (gnus-original-article-buffer): Add defvars.
|
||||
|
||||
2005-08-31 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* gnus-art.el (w3m-minor-mode-map):
|
||||
* gnus-spec.el (gnus-newsrc-file-version):
|
||||
* gnus-util.el (nnmail-active-file-coding-system)
|
||||
(gnus-original-article-buffer, gnus-user-agent):
|
||||
* gnus.el (gnus-ham-process-destinations)
|
||||
(gnus-parameter-ham-marks-alist)
|
||||
(gnus-parameter-spam-marks-alist, gnus-spam-autodetect)
|
||||
(gnus-spam-autodetect-methods, gnus-spam-newsgroup-contents)
|
||||
(gnus-spam-process-destinations, gnus-spam-process-newsgroups):
|
||||
* mm-decode.el (gnus-current-window-configuration):
|
||||
* mm-extern.el (gnus-article-mime-handles):
|
||||
* mm-url.el (url-current-object, url-package-name)
|
||||
(url-package-version):
|
||||
* mm-view.el (gnus-article-mime-handles, gnus-newsgroup-charset)
|
||||
(smime-keys, w3m-cid-retrieve-function-alist)
|
||||
(w3m-current-buffer, w3m-display-inline-images)
|
||||
(w3m-minor-mode-map):
|
||||
* mml-smime.el (gnus-extract-address-components):
|
||||
* mml.el (gnus-article-mime-handles, gnus-mouse-2)
|
||||
(gnus-newsrc-hashtb, message-default-charset)
|
||||
(message-deletable-headers, message-options)
|
||||
(message-posting-charset, message-required-mail-headers)
|
||||
(message-required-news-headers):
|
||||
* mml1991.el (mc-pgp-always-sign):
|
||||
* mml2015.el (mc-pgp-always-sign):
|
||||
* nnheader.el (nnmail-extra-headers):
|
||||
* rfc1843.el (gnus-decode-encoded-word-function)
|
||||
(gnus-decode-header-function, gnus-newsgroup-name):
|
||||
* spam-stat.el (gnus-original-article-buffer): Add defvars.
|
||||
|
||||
2005-08-22 Karl Chen <quarl@cs.berkeley.edu> (tiny change)
|
||||
|
||||
* gnus-art.el (gnus-treatment-function-alist): Move date-lapsed to
|
||||
|
@ -142,7 +142,7 @@ If this variable is nil, no score file entries will be expired."
|
||||
number))
|
||||
|
||||
(defcustom gnus-update-score-entry-dates t
|
||||
"*In non-nil, update matching score entry dates.
|
||||
"*If non-nil, update matching score entry dates.
|
||||
If this variable is nil, then score entries that provide matches
|
||||
will be expired along with non-matching score entries."
|
||||
:group 'gnus-score-expire
|
||||
@ -175,7 +175,7 @@ It is called with one parameter -- the score to be decayed."
|
||||
It can be:
|
||||
|
||||
* A string
|
||||
This file file will be used as the home score file.
|
||||
This file will be used as the home score file.
|
||||
|
||||
* A function
|
||||
The result of this function will be used as the home score file.
|
||||
@ -186,7 +186,7 @@ It can be:
|
||||
The elements in this list can be:
|
||||
|
||||
* `(regexp file-name ...)'
|
||||
If the `regexp' matches the group name, the first `file-name' will
|
||||
If the `regexp' matches the group name, the first `file-name'
|
||||
will be used as the home score file. (Multiple filenames are
|
||||
allowed so that one may use gnus-score-file-single-match-alist to
|
||||
set this variable.)
|
||||
|
@ -1104,6 +1104,17 @@ For example:
|
||||
:type '(repeat (cons regexp
|
||||
(repeat sexp))))
|
||||
|
||||
(defcustom gnus-parameters-case-fold-search 'default
|
||||
"If it is t, ignore case of group names specified in `gnus-parameters'.
|
||||
If it is nil, don't ignore case. If it is `default', which is for the
|
||||
backward compatibility, use the value of `case-fold-search'."
|
||||
:version "22.1"
|
||||
:group 'gnus-group-various
|
||||
:type '(choice :format "%{%t%}:\n %[Value Menu%] %v"
|
||||
(const :tag "Use `case-fold-search'" default)
|
||||
(const nil)
|
||||
(const t)))
|
||||
|
||||
(defvar gnus-group-parameters-more nil)
|
||||
|
||||
(defmacro gnus-define-group-parameter (param &rest rest)
|
||||
@ -3722,7 +3733,10 @@ You should probably use `gnus-find-method-for-group' instead."
|
||||
|
||||
(defun gnus-parameters-get-parameter (group)
|
||||
"Return the group parameters for GROUP from `gnus-parameters'."
|
||||
(let (params-list)
|
||||
(let ((case-fold-search (if (eq gnus-parameters-case-fold-search 'default)
|
||||
case-fold-search
|
||||
gnus-parameters-case-fold-search))
|
||||
params-list)
|
||||
(dolist (elem gnus-parameters)
|
||||
(when (string-match (car elem) group)
|
||||
(setq params-list
|
||||
|
@ -5077,7 +5077,8 @@ Headers already prepared in the buffer are not modified."
|
||||
;; The element is a symbol. We insert the value
|
||||
;; of this symbol, if any.
|
||||
(symbol-value header))
|
||||
((not (message-check-element header))
|
||||
((not (message-check-element
|
||||
(intern (downcase (symbol-name header)))))
|
||||
;; We couldn't generate a value for this header,
|
||||
;; so we just ask the user.
|
||||
(read-from-minibuffer
|
||||
|
@ -1102,7 +1102,7 @@ Should be adopted if code in `message-send-mail' is changed."
|
||||
|
||||
(defun mml-preview (&optional raw)
|
||||
"Display current buffer with Gnus, in a new buffer.
|
||||
If RAW, don't highlight the article."
|
||||
If RAW, display a raw encoded MIME message."
|
||||
(interactive "P")
|
||||
(save-excursion
|
||||
(let* ((buf (current-buffer))
|
||||
|
@ -497,7 +497,11 @@ it is displayed along with the global value."
|
||||
(format
|
||||
"Describe variable (default %s): " v)
|
||||
"Describe variable: ")
|
||||
obarray 'boundp t nil nil
|
||||
obarray
|
||||
'(lambda (vv)
|
||||
(or (boundp vv)
|
||||
(get vv 'variable-documentation)))
|
||||
t nil nil
|
||||
(if (symbolp v) (symbol-name v))))
|
||||
(list (if (equal val "")
|
||||
v (intern val)))))
|
||||
|
@ -384,8 +384,9 @@ that."
|
||||
(if sym
|
||||
(cond
|
||||
((match-string 3) ; `variable' &c
|
||||
(and (boundp sym) ; `variable' doesn't ensure
|
||||
(and (or (boundp sym) ; `variable' doesn't ensure
|
||||
; it's actually bound
|
||||
(get sym 'variable-documentation))
|
||||
(help-xref-button 8 'help-variable sym)))
|
||||
((match-string 4) ; `function' &c
|
||||
(and (fboundp sym) ; similarly
|
||||
@ -406,12 +407,15 @@ that."
|
||||
(facep sym)
|
||||
(save-match-data (looking-at "[ \t\n]+face\\W")))
|
||||
(help-xref-button 8 'help-face sym))
|
||||
((and (boundp sym) (fboundp sym))
|
||||
((and (or (boundp sym)
|
||||
(get sym 'variable-documentation))
|
||||
(fboundp sym))
|
||||
;; We can't intuit whether to use the
|
||||
;; variable or function doc -- supply both.
|
||||
(help-xref-button 8 'help-symbol sym))
|
||||
((and
|
||||
(boundp sym)
|
||||
(or (boundp sym)
|
||||
(get sym 'variable-documentation))
|
||||
(or
|
||||
(documentation-property
|
||||
sym 'variable-documentation)
|
||||
@ -518,7 +522,10 @@ See `help-make-xrefs'."
|
||||
((or (memq sym '(t nil))
|
||||
(keywordp sym))
|
||||
nil)
|
||||
((and sym (boundp sym))
|
||||
((and sym
|
||||
(or (boundp sym)
|
||||
(get sym
|
||||
'variable-documentation)))
|
||||
'help-variable))))
|
||||
(when type (help-xref-button 1 type sym)))
|
||||
(goto-char (match-end 1)))
|
||||
@ -542,7 +549,8 @@ help buffer."
|
||||
;; Don't record the current entry in the stack.
|
||||
(setq help-xref-stack-item nil)
|
||||
(describe-function symbol)))
|
||||
(sdoc (when (boundp symbol)
|
||||
(sdoc (when (or (boundp symbol)
|
||||
(get symbol 'variable-documentation))
|
||||
;; Don't record the current entry in the stack.
|
||||
(setq help-xref-stack-item nil)
|
||||
(describe-variable symbol))))
|
||||
@ -639,7 +647,9 @@ For the cross-reference format, see `help-make-xrefs'."
|
||||
(buffer-substring (point)
|
||||
(progn (skip-syntax-forward "w_")
|
||||
(point)))))))
|
||||
(when (or (boundp sym) (fboundp sym) (facep sym))
|
||||
(when (or (boundp sym)
|
||||
(get sym 'variable-documentation)
|
||||
(fboundp sym) (facep sym))
|
||||
(help-do-xref pos #'help-xref-interned (list sym))))))
|
||||
|
||||
|
||||
|
25
lisp/help.el
25
lisp/help.el
@ -78,6 +78,8 @@
|
||||
|
||||
(define-key help-map "c" 'describe-key-briefly)
|
||||
|
||||
(define-key help-map "d" 'apropos-documentation)
|
||||
|
||||
(define-key help-map "e" 'view-echo-area-messages)
|
||||
|
||||
(define-key help-map "f" 'describe-function)
|
||||
@ -188,15 +190,18 @@ If FUNCTION is nil, it applies `message', thus displaying the message."
|
||||
"You have typed %THIS-KEY%, the help character. Type a Help option:
|
||||
\(Use SPC or DEL to scroll through this text. Type \\<help-map>\\[help-quit] to exit the Help command.)
|
||||
|
||||
a command-apropos. Give a substring, and see a list of commands
|
||||
(functions that are interactively callable) that contain
|
||||
that substring. See also the apropos command.
|
||||
a command-apropos. Give a list of words or a regexp, to get a list of
|
||||
commands whose names match (they contain two or more of the words,
|
||||
or a match for the regexp). See also the apropos command.
|
||||
b describe-bindings. Display table of all key bindings.
|
||||
c describe-key-briefly. Type a command key sequence;
|
||||
it prints the function name that sequence runs.
|
||||
C describe-coding-system. This describes either a specific coding system
|
||||
(if you type its name) or the coding systems currently in use
|
||||
(if you type just RET).
|
||||
d apropos-documentation. Give a pattern (a list or words or a regexp), and
|
||||
see a list of functions, variables, and other items whose built-in
|
||||
doucmentation string matches that pattern. See also the apropos command.
|
||||
e view-echo-area-messages. Show the buffer where the echo-area messages
|
||||
are stored.
|
||||
f describe-function. Type a function name and get its documentation.
|
||||
@ -606,13 +611,15 @@ the last key hit are used."
|
||||
|
||||
(defun describe-key (key &optional untranslated up-event)
|
||||
"Display documentation of the function invoked by KEY.
|
||||
KEY should be a key sequence--when calling from a program,
|
||||
pass a string or a vector.
|
||||
If non-nil UNTRANSLATED is a vector of the untranslated events.
|
||||
It can also be a number in which case the untranslated events from
|
||||
the last key hit are used."
|
||||
KEY can be any kind of a key sequence; it can include keyboard events,
|
||||
mouse events, and/or menu events. When calling from a program,
|
||||
pass KEY as a string or a vector.
|
||||
|
||||
If non-nil, UNTRANSLATED is a vector of the correspondinguntranslated events.
|
||||
It can also be a number, in which case the untranslated events from
|
||||
the last key sequence entered are used."
|
||||
;; UP-EVENT is the up-event that was discarded by reading KEY, or nil.
|
||||
(interactive "kDescribe key: \np\nU")
|
||||
(interactive "kDescribe key (or click or menu item): \np\nU")
|
||||
(if (numberp untranslated)
|
||||
(setq untranslated (this-single-command-raw-keys)))
|
||||
(save-excursion
|
||||
|
@ -304,8 +304,10 @@ is found. A mode is excluded if it's in the list `hi-lock-exclude-modes'."
|
||||
(when (and (not hi-lock-mode-prev) hi-lock-mode)
|
||||
(add-hook 'find-file-hook 'hi-lock-find-file-hook)
|
||||
(add-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook)
|
||||
(when (eq nil font-lock-defaults)
|
||||
(setq font-lock-defaults '(nil)))
|
||||
(if (null (default-value 'font-lock-defaults))
|
||||
(setq-default font-lock-defaults '(nil)))
|
||||
(if (null font-lock-defaults)
|
||||
(setq font-lock-defaults '(nil)))
|
||||
(unless font-lock-mode
|
||||
(font-lock-mode 1))
|
||||
(define-key-after menu-bar-edit-menu [hi-lock]
|
||||
@ -322,6 +324,10 @@ is found. A mode is excluded if it's in the list `hi-lock-exclude-modes'."
|
||||
(setq hi-lock-interactive-patterns nil
|
||||
hi-lock-file-patterns nil)
|
||||
(when font-lock-mode (hi-lock-refontify)))))
|
||||
|
||||
(let ((fld (default-value 'font-lock-defaults)))
|
||||
(if (and fld (listp fld) (null (car fld)))
|
||||
(setq-default font-lock-defaults (cdr fld))))
|
||||
(define-key-after menu-bar-edit-menu [hi-lock] nil)
|
||||
(remove-hook 'find-file-hook 'hi-lock-find-file-hook)
|
||||
(remove-hook 'font-lock-mode-hook 'hi-lock-font-lock-hook))))
|
||||
|
@ -2523,9 +2523,9 @@ This function is automatically called directly at the end of `get-buffer-create'
|
||||
(when (char-table-p table)
|
||||
(if buffer
|
||||
(with-current-buffer buffer
|
||||
(set (make-variable-buffer-local 'translation-table-for-input)
|
||||
(set (make-local-variable 'translation-table-for-input)
|
||||
table))
|
||||
(set (make-variable-buffer-local 'translation-table-for-input)
|
||||
(set (make-local-variable 'translation-table-for-input)
|
||||
table)))))))
|
||||
|
||||
;; The minibuffer needs to acquire a `buffer-file-coding-system' for
|
||||
|
@ -40,8 +40,8 @@
|
||||
"jka-compr customization."
|
||||
:group 'compression)
|
||||
|
||||
;;; I have this defined so that .Z files are assumed to be in unix
|
||||
;;; compress format; and .gz files, in gzip format, and .bz2 files in bzip fmt.
|
||||
;; I have this defined so that .Z files are assumed to be in unix
|
||||
;; compress format; and .gz files, in gzip format, and .bz2 files in bzip fmt.
|
||||
(defcustom jka-compr-compression-info-list
|
||||
;;[regexp
|
||||
;; compr-message compr-prog compr-args
|
||||
@ -158,7 +158,7 @@ invoked."
|
||||
jka-compr-compression-info-list
|
||||
"\\|"))
|
||||
|
||||
;;; Functions for accessing the return value of jka-compr-get-compression-info
|
||||
;; Functions for accessing the return value of jka-compr-get-compression-info
|
||||
(defun jka-compr-info-regexp (info) (aref info 0))
|
||||
(defun jka-compr-info-compress-message (info) (aref info 1))
|
||||
(defun jka-compr-info-compress-program (info) (aref info 2))
|
||||
@ -192,48 +192,38 @@ and `inhibit-first-line-modes-suffixes'."
|
||||
(setq jka-compr-file-name-handler-entry
|
||||
(cons (jka-compr-build-file-regexp) 'jka-compr-handler))
|
||||
|
||||
(setq file-name-handler-alist (cons jka-compr-file-name-handler-entry
|
||||
file-name-handler-alist))
|
||||
(push jka-compr-file-name-handler-entry file-name-handler-alist)
|
||||
|
||||
(setq jka-compr-added-to-file-coding-system-alist nil)
|
||||
(dolist (x jka-compr-compression-info-list)
|
||||
;; Don't do multibyte encoding on the compressed files.
|
||||
(let ((elt (cons (jka-compr-info-regexp x)
|
||||
'(no-conversion . no-conversion))))
|
||||
(push elt file-coding-system-alist)
|
||||
(push elt jka-compr-added-to-file-coding-system-alist))
|
||||
|
||||
(mapcar
|
||||
(function (lambda (x)
|
||||
;; Don't do multibyte encoding on the compressed files.
|
||||
(let ((elt (cons (jka-compr-info-regexp x)
|
||||
'(no-conversion . no-conversion))))
|
||||
(setq file-coding-system-alist
|
||||
(cons elt file-coding-system-alist))
|
||||
(setq jka-compr-added-to-file-coding-system-alist
|
||||
(cons elt jka-compr-added-to-file-coding-system-alist)))
|
||||
|
||||
(and (jka-compr-info-strip-extension x)
|
||||
;; Make entries in auto-mode-alist so that modes
|
||||
;; are chosen right according to the file names
|
||||
;; sans `.gz'.
|
||||
(setq auto-mode-alist
|
||||
(cons (list (jka-compr-info-regexp x)
|
||||
nil 'jka-compr)
|
||||
auto-mode-alist))
|
||||
;; Also add these regexps to
|
||||
;; inhibit-first-line-modes-suffixes, so that a
|
||||
;; -*- line in the first file of a compressed tar
|
||||
;; file doesn't override tar-mode.
|
||||
(setq inhibit-first-line-modes-suffixes
|
||||
(cons (jka-compr-info-regexp x)
|
||||
inhibit-first-line-modes-suffixes)))))
|
||||
jka-compr-compression-info-list)
|
||||
(and (jka-compr-info-strip-extension x)
|
||||
;; Make entries in auto-mode-alist so that modes
|
||||
;; are chosen right according to the file names
|
||||
;; sans `.gz'.
|
||||
(push (list (jka-compr-info-regexp x) nil 'jka-compr) auto-mode-alist)
|
||||
;; Also add these regexps to
|
||||
;; inhibit-first-line-modes-suffixes, so that a
|
||||
;; -*- line in the first file of a compressed tar
|
||||
;; file doesn't override tar-mode.
|
||||
(push (jka-compr-info-regexp x)
|
||||
inhibit-first-line-modes-suffixes)))
|
||||
(setq auto-mode-alist
|
||||
(append auto-mode-alist jka-compr-mode-alist-additions))
|
||||
|
||||
;; Make sure that (load "foo") will find /bla/foo.el.gz.
|
||||
(setq load-suffixes
|
||||
(apply 'append
|
||||
(mapcar (lambda (suffix)
|
||||
(cons suffix
|
||||
(mapcar (lambda (ext) (concat suffix ext))
|
||||
jka-compr-load-suffixes)))
|
||||
load-suffixes))))
|
||||
(append (mapcar (lambda (suffix)
|
||||
(cons suffix
|
||||
(mapcar (lambda (ext) (concat suffix ext))
|
||||
jka-compr-load-suffixes)))
|
||||
load-suffixes)
|
||||
(list jka-compr-load-suffixes)))))
|
||||
|
||||
|
||||
(defun jka-compr-installed-p ()
|
||||
@ -254,7 +244,7 @@ The return value is the entry in `file-name-handler-alist' for jka-compr."
|
||||
"Toggle automatic file compression and uncompression.
|
||||
With prefix argument ARG, turn auto compression on if positive, else off.
|
||||
Returns the new status of auto compression (non-nil means on)."
|
||||
:global t :group 'jka-compr
|
||||
:global t :init-value t :group 'jka-compr :version "22.1"
|
||||
(let* ((installed (jka-compr-installed-p))
|
||||
(flag auto-compression-mode))
|
||||
(cond
|
||||
@ -277,16 +267,16 @@ Returns the new status of auto compression (non-nil means on)."
|
||||
(put 'with-auto-compression-mode 'lisp-indent-function 0)
|
||||
|
||||
|
||||
;;; This is what we need to know about jka-compr-handler
|
||||
;;; in order to decide when to call it.
|
||||
;; This is what we need to know about jka-compr-handler
|
||||
;; in order to decide when to call it.
|
||||
|
||||
(put 'jka-compr-handler 'safe-magic t)
|
||||
(put 'jka-compr-handler 'operations '(byte-compiler-base-file-name
|
||||
write-region insert-file-contents
|
||||
file-local-copy load))
|
||||
|
||||
;;; Turn on the mode.
|
||||
(auto-compression-mode 1)
|
||||
;; Turn on the mode.
|
||||
(when auto-compression-mode (auto-compression-mode 1))
|
||||
|
||||
(provide 'jka-cmpr-hook)
|
||||
|
||||
|
@ -101,6 +101,8 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'jka-cmpr-hook)
|
||||
|
||||
(defcustom jka-compr-shell "sh"
|
||||
"*Shell to be used for calling compression programs.
|
||||
The value of this variable only matters if you want to discard the
|
||||
@ -119,32 +121,6 @@ data appears to be compressed already.")
|
||||
(make-variable-buffer-local 'jka-compr-really-do-compress)
|
||||
(put 'jka-compr-really-do-compress 'permanent-local t)
|
||||
|
||||
;;; Functions for accessing the return value of jka-compr-get-compression-info
|
||||
(defun jka-compr-info-regexp (info) (aref info 0))
|
||||
(defun jka-compr-info-compress-message (info) (aref info 1))
|
||||
(defun jka-compr-info-compress-program (info) (aref info 2))
|
||||
(defun jka-compr-info-compress-args (info) (aref info 3))
|
||||
(defun jka-compr-info-uncompress-message (info) (aref info 4))
|
||||
(defun jka-compr-info-uncompress-program (info) (aref info 5))
|
||||
(defun jka-compr-info-uncompress-args (info) (aref info 6))
|
||||
(defun jka-compr-info-can-append (info) (aref info 7))
|
||||
(defun jka-compr-info-strip-extension (info) (aref info 8))
|
||||
(defun jka-compr-info-file-magic-bytes (info) (aref info 9))
|
||||
|
||||
|
||||
(defun jka-compr-get-compression-info (filename)
|
||||
"Return information about the compression scheme of FILENAME.
|
||||
The determination as to which compression scheme, if any, to use is
|
||||
based on the filename itself and `jka-compr-compression-info-list'."
|
||||
(catch 'compression-info
|
||||
(let ((case-fold-search nil))
|
||||
(mapcar
|
||||
(function (lambda (x)
|
||||
(and (string-match (jka-compr-info-regexp x) filename)
|
||||
(throw 'compression-info x))))
|
||||
jka-compr-compression-info-list)
|
||||
nil)))
|
||||
|
||||
|
||||
(put 'compression-error 'error-conditions '(compression-error file-error error))
|
||||
|
||||
@ -154,8 +130,7 @@ based on the filename itself and `jka-compr-compression-info-list'."
|
||||
|
||||
(defun jka-compr-error (prog args infile message &optional errfile)
|
||||
|
||||
(let ((errbuf (get-buffer-create " *jka-compr-error*"))
|
||||
(curbuf (current-buffer)))
|
||||
(let ((errbuf (get-buffer-create " *jka-compr-error*")))
|
||||
(with-current-buffer errbuf
|
||||
(widen) (erase-buffer)
|
||||
(insert (format "Error while executing \"%s %s < %s\"\n\n"
|
||||
@ -270,8 +245,8 @@ to keep: LEN chars starting BEG chars from the beginning."
|
||||
(erase-buffer)))))
|
||||
|
||||
|
||||
;;; Support for temp files. Much of this was inspired if not lifted
|
||||
;;; from ange-ftp.
|
||||
;; Support for temp files. Much of this was inspired if not lifted
|
||||
;; from ange-ftp.
|
||||
|
||||
(defcustom jka-compr-temp-name-template
|
||||
(expand-file-name "jka-com" temporary-file-directory)
|
||||
@ -563,7 +538,6 @@ There should be no more than seven characters after the final `/'."
|
||||
(jka-compr-run-real-handler 'file-local-copy (list filename)))
|
||||
(temp-file (jka-compr-make-temp-name t))
|
||||
(temp-buffer (get-buffer-create " *jka-compr-flc-temp*"))
|
||||
(notfound nil)
|
||||
local-file)
|
||||
|
||||
(setq local-file (or local-copy filename))
|
||||
@ -611,7 +585,7 @@ There should be no more than seven characters after the final `/'."
|
||||
(jka-compr-run-real-handler 'file-local-copy (list filename)))))
|
||||
|
||||
|
||||
;;; Support for loading compressed files.
|
||||
;; Support for loading compressed files.
|
||||
(defun jka-compr-load (file &optional noerror nomessage nosuffix)
|
||||
"Documented as original."
|
||||
|
||||
@ -720,17 +694,11 @@ by `jka-compr-installed'."
|
||||
|
||||
(setq auto-mode-alist (cdr ama)))
|
||||
|
||||
(let* ((ama (cons nil file-coding-system-alist))
|
||||
(last ama)
|
||||
entry)
|
||||
|
||||
(while (cdr last)
|
||||
(setq entry (car (cdr last)))
|
||||
(if (member entry jka-compr-added-to-file-coding-system-alist)
|
||||
(setcdr last (cdr (cdr last)))
|
||||
(setq last (cdr last))))
|
||||
|
||||
(setq file-coding-system-alist (cdr ama)))
|
||||
(while jka-compr-added-to-file-coding-system-alist
|
||||
(setq file-coding-system-alist
|
||||
(delq (car (member (pop jka-compr-added-to-file-coding-system-alist)
|
||||
file-coding-system-alist))
|
||||
file-coding-system-alist)))
|
||||
|
||||
;; Remove the suffixes that were added by jka-compr.
|
||||
(let ((suffixes nil)
|
||||
@ -742,5 +710,5 @@ by `jka-compr-installed'."
|
||||
|
||||
(provide 'jka-compr)
|
||||
|
||||
;;; arch-tag: 3f15b630-e9a7-46c4-a22a-94afdde86ebc
|
||||
;; arch-tag: 3f15b630-e9a7-46c4-a22a-94afdde86ebc
|
||||
;;; jka-compr.el ends here
|
||||
|
@ -147,6 +147,7 @@
|
||||
(load "select")))
|
||||
(load "emacs-lisp/timer")
|
||||
(load "isearch")
|
||||
(load "rfn-eshadow")
|
||||
|
||||
(message "%s" (garbage-collect))
|
||||
(load "menu-bar")
|
||||
|
@ -365,7 +365,7 @@ This is relative to `smtpmail-queue-dir'.")
|
||||
(make-directory smtpmail-queue-dir t))
|
||||
(with-current-buffer buffer-data
|
||||
(erase-buffer)
|
||||
(insert-buffer tembuf)
|
||||
(insert-buffer-contents tembuf)
|
||||
(write-file file-data)
|
||||
(set-buffer buffer-elisp)
|
||||
(erase-buffer)
|
||||
|
@ -923,6 +923,10 @@ header file (#include <foo.h>) and files in FILES.
|
||||
If XREF-MAN-TYPE is used as the button type for items
|
||||
in SEE ALSO section. If it is nil, default type,
|
||||
`Man-xref-man-page' is used."
|
||||
;; `Man-highlight-references' is used from woman.el, too.
|
||||
;; woman.el doesn't set `Man-arguments'.
|
||||
(unless Man-arguments
|
||||
(setq Man-arguments ""))
|
||||
(if (string-match "-k " Man-arguments)
|
||||
(progn
|
||||
(Man-highlight-references0
|
||||
|
@ -641,8 +641,7 @@ by \"Save Options\" in Custom buffers.")
|
||||
;; put on a customized-value property.
|
||||
(dolist (elt '(line-number-mode column-number-mode size-indication-mode
|
||||
cua-mode show-paren-mode transient-mark-mode
|
||||
global-font-lock-mode blink-cursor-mode
|
||||
display-time-mode display-battery-mode))
|
||||
blink-cursor-mode display-time-mode display-battery-mode))
|
||||
(and (customize-mark-to-save elt)
|
||||
(setq need-save t)))
|
||||
;; These are set with `customize-set-variable'.
|
||||
@ -1053,10 +1052,6 @@ mail status in mode line"))
|
||||
"Active Region Highlighting"
|
||||
"Make text in active region stand out in color (Transient Mark mode)"
|
||||
(:enable (not cua-mode))))
|
||||
(define-key menu-bar-options-menu [toggle-global-lazy-font-lock-mode]
|
||||
(menu-bar-make-mm-toggle global-font-lock-mode
|
||||
"Syntax Highlighting"
|
||||
"Colorize text based on language syntax (Global Font Lock mode)"))
|
||||
|
||||
|
||||
;; The "Tools" menu items
|
||||
@ -1365,9 +1360,8 @@ key, a click, or a menu-item"))
|
||||
'(menu-item "Getting New Versions" describe-distribution
|
||||
:help "How to get latest versions of Emacs"))
|
||||
(define-key menu-bar-help-menu [more]
|
||||
'(menu-item "Find Extra Packages"
|
||||
menu-bar-help-extra-packages
|
||||
:help "Where to find some extra packages and possible updates"))
|
||||
'(menu-item "External Packages" menu-bar-help-extra-packages
|
||||
:help "Lisp packages distributed separately for use in Emacs"))
|
||||
(defun menu-bar-help-extra-packages ()
|
||||
"Display help about some additional packages available for Emacs."
|
||||
(interactive)
|
||||
|
@ -184,7 +184,7 @@ SERVER is either a string naming the server or a list (NAME PORT)."
|
||||
(setq process (open-network-stream "ph" eudc-ph-process-buffer host port))
|
||||
(if (null process)
|
||||
(throw 'done nil))
|
||||
(process-kill-without-query process)
|
||||
(set-process-query-on-exit-flag process t)
|
||||
process)))
|
||||
|
||||
(defun eudc-ph-close-session (process)
|
||||
|
@ -36,53 +36,59 @@
|
||||
;; specific functions, like compilation.
|
||||
;; The key remapping works since Emacs 22 only. Unknown for XEmacs.
|
||||
|
||||
(when (fboundp 'define-minor-mode)
|
||||
;; Pacify byte-compiler
|
||||
(eval-when-compile
|
||||
(unless (fboundp 'define-minor-mode)
|
||||
(defalias 'define-minor-mode 'identity)
|
||||
(defvar tramp-minor-mode))
|
||||
(unless (featurep 'xemacs)
|
||||
(defalias 'add-menu-button 'identity)))
|
||||
|
||||
(defvar tramp-minor-mode-map (make-sparse-keymap)
|
||||
"Keymap for Tramp minor mode.")
|
||||
(defvar tramp-minor-mode-map (make-sparse-keymap)
|
||||
"Keymap for Tramp minor mode.")
|
||||
|
||||
(define-minor-mode tramp-minor-mode "Tramp minor mode for utility functions."
|
||||
:group 'tramp
|
||||
:global nil
|
||||
:init-value nil
|
||||
:lighter " Tramp"
|
||||
:keymap tramp-minor-mode-map
|
||||
(setq tramp-minor-mode
|
||||
(and tramp-minor-mode (tramp-tramp-file-p default-directory))))
|
||||
(define-minor-mode tramp-minor-mode "Tramp minor mode for utility functions."
|
||||
:group 'tramp
|
||||
:global nil
|
||||
:init-value nil
|
||||
:lighter " Tramp"
|
||||
:keymap tramp-minor-mode-map
|
||||
(setq tramp-minor-mode
|
||||
(and tramp-minor-mode (tramp-tramp-file-p default-directory))))
|
||||
|
||||
(add-hook 'find-file-hooks 'tramp-minor-mode t)
|
||||
(add-hook 'dired-mode-hook 'tramp-minor-mode t)
|
||||
(add-hook 'find-file-hooks 'tramp-minor-mode t)
|
||||
(add-hook 'dired-mode-hook 'tramp-minor-mode t)
|
||||
|
||||
(defun tramp-remap-command (old-command new-command)
|
||||
"Replaces bindings of OLD-COMMAND by NEW-COMMAND.
|
||||
(defun tramp-remap-command (old-command new-command)
|
||||
"Replaces bindings of OLD-COMMAND by NEW-COMMAND.
|
||||
If remapping functionality for keymaps is defined, this happens for all
|
||||
bindings. Otherwise, only bindings active during invocation are taken
|
||||
into account. XEmacs menubar bindings are not changed by this."
|
||||
(if (functionp 'command-remapping)
|
||||
;; Emacs 22
|
||||
(eval
|
||||
`(define-key tramp-minor-mode-map [remap ,old-command] new-command))
|
||||
;; previous Emacs versions.
|
||||
(mapcar
|
||||
'(lambda (x)
|
||||
(define-key tramp-minor-mode-map x new-command))
|
||||
(where-is-internal old-command))))
|
||||
(if (functionp 'command-remapping)
|
||||
;; Emacs 22
|
||||
(eval
|
||||
`(define-key tramp-minor-mode-map [remap ,old-command] new-command))
|
||||
;; previous Emacs versions.
|
||||
(mapcar
|
||||
'(lambda (x)
|
||||
(define-key tramp-minor-mode-map x new-command))
|
||||
(where-is-internal old-command))))
|
||||
|
||||
(tramp-remap-command 'compile 'tramp-compile)
|
||||
(tramp-remap-command 'recompile 'tramp-recompile)
|
||||
(tramp-remap-command 'compile 'tramp-compile)
|
||||
(tramp-remap-command 'recompile 'tramp-recompile)
|
||||
|
||||
;; XEmacs has an own mimic for menu entries
|
||||
(when (fboundp 'add-menu-button)
|
||||
(funcall 'add-menu-button
|
||||
'("Tools" "Compile")
|
||||
["Compile..."
|
||||
(command-execute (if tramp-minor-mode 'tramp-compile 'compile))
|
||||
:active (fboundp 'compile)])
|
||||
(funcall 'add-menu-button
|
||||
'("Tools" "Compile")
|
||||
["Repeat Compilation"
|
||||
(command-execute (if tramp-minor-mode 'tramp-recompile 'recompile))
|
||||
:active (fboundp 'compile)])))
|
||||
;; XEmacs has an own mimic for menu entries
|
||||
(when (fboundp 'add-menu-button)
|
||||
(funcall 'add-menu-button
|
||||
'("Tools" "Compile")
|
||||
["Compile..."
|
||||
(command-execute (if tramp-minor-mode 'tramp-compile 'compile))
|
||||
:active (fboundp 'compile)])
|
||||
(funcall 'add-menu-button
|
||||
'("Tools" "Compile")
|
||||
["Repeat Compilation"
|
||||
(command-execute (if tramp-minor-mode 'tramp-recompile 'recompile))
|
||||
:active (fboundp 'compile)]))
|
||||
|
||||
;; Utility functions.
|
||||
|
||||
|
@ -1042,12 +1042,6 @@ Please send all bug fixes and enhancements to
|
||||
;; To avoid compilation gripes
|
||||
|
||||
|
||||
(or (fboundp 'easy-menu-intern) ; hacked from easymenu.el
|
||||
(defsubst easy-menu-intern (s)
|
||||
(if (stringp s) (intern s) s)))
|
||||
|
||||
|
||||
|
||||
(or (fboundp 'subst-char-in-string) ; hacked from subr.el
|
||||
(defun subst-char-in-string (fromchar tochar string &optional inplace)
|
||||
"Replace FROMCHAR with TOCHAR in STRING each time it occurs.
|
||||
@ -2803,8 +2797,10 @@ See `pr-ps-printer-alist'.")
|
||||
(and pr-print-using-ghostscript (not pr-spool-p)))
|
||||
|
||||
|
||||
(defun pr-get-symbol (name)
|
||||
(easy-menu-intern name))
|
||||
(defalias 'pr-get-symbol
|
||||
(if (fboundp 'easy-menu-intern)
|
||||
'easy-menu-intern
|
||||
(lambda (s) (if (stringp s) (intern s) s))))
|
||||
|
||||
(cond
|
||||
((featurep 'xemacs) ; XEmacs
|
||||
|
@ -358,13 +358,16 @@ With arg, use separate IO iff arg is positive."
|
||||
(gud-call "clear *%a" arg)))
|
||||
"\C-d" "Remove breakpoint at current line or address.")
|
||||
;;
|
||||
(gud-def gud-until (if (not (string-match "Machine" mode-name))
|
||||
(gud-def gud-until (if (not (string-match "Machine" mode-name))
|
||||
(gud-call "until %f:%l" arg)
|
||||
(save-excursion
|
||||
(beginning-of-line)
|
||||
(forward-char 2)
|
||||
(gud-call "until *%a" arg)))
|
||||
"\C-u" "Continue to current line or address.")
|
||||
;;
|
||||
(gud-def gud-go (gud-call (if gdb-active-process "continue" "run") arg)
|
||||
nil "Start or continue execution.")
|
||||
|
||||
(define-key gud-minor-mode-map [left-margin mouse-1]
|
||||
'gdb-mouse-set-clear-breakpoint)
|
||||
@ -491,7 +494,9 @@ With arg, use separate IO iff arg is positive."
|
||||
(unless (string-equal
|
||||
speedbar-initial-expansion-list-name "GUD")
|
||||
(speedbar-change-initial-expansion-list "GUD"))
|
||||
(if (equal (nth 2 var) "0")
|
||||
(if (or (equal (nth 2 var) "0")
|
||||
(and (equal (nth 2 var) "1")
|
||||
(string-match "char \\*" (nth 3 var))))
|
||||
(gdb-enqueue-input
|
||||
(list
|
||||
(if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
|
||||
@ -509,14 +514,14 @@ With arg, use separate IO iff arg is positive."
|
||||
(defun gdb-var-evaluate-expression-handler (varnum changed)
|
||||
(with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer)
|
||||
(goto-char (point-min))
|
||||
(re-search-forward ".*value=\"\\(.*?\\)\"" nil t)
|
||||
(re-search-forward ".*value=\\(\".*\"\\)" nil t)
|
||||
(catch 'var-found
|
||||
(let ((num 0))
|
||||
(dolist (var gdb-var-list)
|
||||
(if (string-equal varnum (cadr var))
|
||||
(progn
|
||||
(if changed (setcar (nthcdr 5 var) t))
|
||||
(setcar (nthcdr 4 var) (match-string 1))
|
||||
(setcar (nthcdr 4 var) (read (match-string 1)))
|
||||
(setcar (nthcdr num gdb-var-list) var)
|
||||
(throw 'var-found nil)))
|
||||
(setq num (+ num 1))))))
|
||||
@ -528,7 +533,8 @@ With arg, use separate IO iff arg is positive."
|
||||
`(lambda () (gdb-var-list-children-handler ,varnum)))))
|
||||
|
||||
(defconst gdb-var-list-children-regexp
|
||||
"name=\"\\(.*?\\)\",exp=\"\\(.*?\\)\",numchild=\"\\(.*?\\)\"")
|
||||
"name=\"\\(.*?\\)\",exp=\"\\(.*?\\)\",numchild=\"\\(.*?\\)\",\
|
||||
type=\"\\(.*?\\)\"")
|
||||
|
||||
(defun gdb-var-list-children-handler (varnum)
|
||||
(with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer)
|
||||
@ -543,14 +549,15 @@ With arg, use separate IO iff arg is positive."
|
||||
(let ((varchild (list (match-string 2)
|
||||
(match-string 1)
|
||||
(match-string 3)
|
||||
nil nil nil)))
|
||||
(if (looking-at ",type=\"\\(.*?\\)\"")
|
||||
(setcar (nthcdr 3 varchild) (match-string 1)))
|
||||
(match-string 4)
|
||||
nil nil)))
|
||||
(dolist (var1 gdb-var-list)
|
||||
(if (string-equal (cadr var1) (cadr varchild))
|
||||
(throw 'child-already-watched nil)))
|
||||
(push varchild var-list)
|
||||
(if (equal (nth 2 varchild) "0")
|
||||
(if (or (equal (nth 2 varchild) "0")
|
||||
(and (equal (nth 2 varchild) "1")
|
||||
(string-match "char \\*" (nth 3 varchild))))
|
||||
(gdb-enqueue-input
|
||||
(list
|
||||
(concat
|
||||
@ -574,12 +581,19 @@ With arg, use separate IO iff arg is positive."
|
||||
(with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer)
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward gdb-var-update-regexp nil t)
|
||||
(catch 'var-found-1
|
||||
(let ((varnum (match-string 1)))
|
||||
(gdb-enqueue-input
|
||||
(list
|
||||
(concat "server interpreter mi \"-var-evaluate-expression "
|
||||
varnum "\"\n")
|
||||
`(lambda () (gdb-var-evaluate-expression-handler ,varnum t)))))))
|
||||
(dolist (var gdb-var-list)
|
||||
(when (and (string-equal varnum (cadr var))
|
||||
(or (equal (nth 2 var) "0")
|
||||
(and (equal (nth 2 var) "1")
|
||||
(string-match "char \\*" (nth 3 var)))))
|
||||
(gdb-enqueue-input
|
||||
(list
|
||||
(concat "server interpreter mi \"-var-evaluate-expression "
|
||||
varnum "\"\n")
|
||||
`(lambda () (gdb-var-evaluate-expression-handler ,varnum t))))
|
||||
(throw 'var-found-1 nil)))))))
|
||||
(setq gdb-pending-triggers
|
||||
(delq 'gdb-var-update gdb-pending-triggers))
|
||||
(when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
|
||||
@ -1365,8 +1379,6 @@ static char *magick[] = {
|
||||
:weight bold))
|
||||
"Face for enabled breakpoint icon in fringe."
|
||||
:group 'gud)
|
||||
;; Compatibility alias for old name.
|
||||
(put 'breakpoint-enabled-bitmap-face 'face-alias 'breakpoint-enabled)
|
||||
|
||||
(defface breakpoint-disabled
|
||||
;; We use different values of grey for different background types,
|
||||
@ -2347,11 +2359,13 @@ corresponding to the mode line clicked."
|
||||
(define-key menu [breakpoints]
|
||||
'("Breakpoints" . gdb-frame-breakpoints-buffer)))
|
||||
|
||||
(let ((menu (make-sparse-keymap "GDB-UI")))
|
||||
(let ((menu (make-sparse-keymap "GDB-UI/MI")))
|
||||
(define-key gud-menu-map [ui]
|
||||
`(menu-item "GDB-UI" ,menu :visible (eq gud-minor-mode 'gdba)))
|
||||
`(menu-item (if (eq gud-minor-mode 'gdba) "GDB-UI" "GDB-MI")
|
||||
,menu :visible (memq gud-minor-mode '(gdbmi gdba))))
|
||||
(define-key menu [gdb-use-inferior-io]
|
||||
'(menu-item "Separate inferior IO" gdb-use-inferior-io-buffer
|
||||
:visible (eq gud-minor-mode 'gdba)
|
||||
:help "Toggle separate IO for inferior."
|
||||
:button (:toggle . gdb-use-inferior-io-buffer)))
|
||||
(define-key menu [gdb-many-windows]
|
||||
@ -2691,7 +2705,8 @@ BUFFER nil or omitted means use the current buffer."
|
||||
(if (re-search-forward address nil t)
|
||||
(gdb-put-breakpoint-icon (eq flag ?y) bptno))))))))
|
||||
(if (not (equal gdb-frame-address "main"))
|
||||
(set-window-point (get-buffer-window buffer 0) pos))))
|
||||
(with-current-buffer buffer
|
||||
(set-window-point (get-buffer-window buffer 0) pos)))))
|
||||
|
||||
(defvar gdb-assembler-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
|
@ -122,33 +122,50 @@ Used to grey out relevant togolbar icons.")
|
||||
(info "(emacs)GDB Graphical Interface")
|
||||
(info "(emacs)Debuggers"))))
|
||||
|
||||
(defun gud-tool-bar-item-visible-no-fringe ()
|
||||
(not (or (eq (buffer-local-value 'major-mode (window-buffer)) 'speedbar-mode)
|
||||
(and (memq gud-minor-mode '(gdbmi gdba))
|
||||
(> (car (window-fringes)) 0)))))
|
||||
|
||||
(defun gud-stop-subjob ()
|
||||
(interactive)
|
||||
(if (string-equal
|
||||
(buffer-local-value 'gud-target-name gud-comint-buffer) "emacs")
|
||||
(comint-stop-subjob)
|
||||
(comint-interrupt-subjob)))
|
||||
|
||||
(easy-mmode-defmap gud-menu-map
|
||||
'(([help] "Info" . gud-goto-info)
|
||||
([tooltips] menu-item "Toggle GUD tooltips" gud-tooltip-mode
|
||||
:enable (and (not emacs-basic-display)
|
||||
(display-graphic-p)
|
||||
(fboundp 'x-show-tip))
|
||||
:enable (and (not emacs-basic-display)
|
||||
(display-graphic-p)
|
||||
(fboundp 'x-show-tip))
|
||||
:button (:toggle . gud-tooltip-mode))
|
||||
([refresh] "Refresh" . gud-refresh)
|
||||
([run] menu-item "Run" gud-run
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode '(gdbmi gdba gdb dbx jdb))))
|
||||
(memq gud-minor-mode '(gdbmi gdb dbx jdb)))
|
||||
:visible (not (eq gud-minor-mode 'gdba)))
|
||||
([go] menu-item "Run/Continue" gud-go
|
||||
:visible (and (not gud-running)
|
||||
(eq gud-minor-mode 'gdba)))
|
||||
([stop] menu-item "Stop" gud-stop-subjob
|
||||
:visible (or (not (eq gud-minor-mode 'gdba))
|
||||
(and gud-running
|
||||
(eq gud-minor-mode 'gdba))))
|
||||
([until] menu-item "Continue to selection" gud-until
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode '(gdbmi gdba gdb perldb)))
|
||||
:visible (not (and (memq gud-minor-mode '(gdbmi gdba))
|
||||
(> (car (window-fringes)) 0))))
|
||||
:visible (gud-tool-bar-item-visible-no-fringe))
|
||||
([remove] menu-item "Remove Breakpoint" gud-remove
|
||||
:enable (not gud-running)
|
||||
:visible (not (and (memq gud-minor-mode '(gdbmi gdba))
|
||||
(> (car (window-fringes)) 0))))
|
||||
:visible (gud-tool-bar-item-visible-no-fringe))
|
||||
([tbreak] menu-item "Temporary Breakpoint" gud-tbreak
|
||||
:enable (memq gud-minor-mode
|
||||
'(gdbmi gdba gdb sdb xdb bashdb)))
|
||||
([break] menu-item "Set Breakpoint" gud-break
|
||||
:enable (not gud-running)
|
||||
:visible (not (and (memq gud-minor-mode '(gdbmi gdba))
|
||||
(> (car (window-fringes)) 0))))
|
||||
:visible (gud-tool-bar-item-visible-no-fringe))
|
||||
([up] menu-item "Up Stack" gud-up
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode
|
||||
@ -157,30 +174,35 @@ Used to grey out relevant togolbar icons.")
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode
|
||||
'(gdbmi gdba gdb dbx xdb jdb pdb bashdb))))
|
||||
([pp] menu-item "Print the emacs s-expression" gud-pp
|
||||
:enable (and (not gud-running)
|
||||
gdb-active-process)
|
||||
:visible (and (string-equal
|
||||
(buffer-local-value
|
||||
'gud-target-name gud-comint-buffer) "emacs")
|
||||
(eq gud-minor-mode 'gdba)))
|
||||
([print*] menu-item "Print Dereference" gud-pstar
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode '(gdbmi gdba gdb))))
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode '(gdbmi gdba gdb))))
|
||||
([print] menu-item "Print Expression" gud-print
|
||||
:enable (not gud-running))
|
||||
:enable (not gud-running))
|
||||
([watch] menu-item "Watch Expression" gud-watch
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode '(gdbmi gdba))))
|
||||
([finish] menu-item "Finish Function" gud-finish
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode
|
||||
'(gdbmi gdba gdb xdb jdb pdb bashdb))))
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode
|
||||
'(gdbmi gdba gdb xdb jdb pdb bashdb))))
|
||||
([stepi] menu-item "Step Instruction" gud-stepi
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode '(gdbmi gdba gdb dbx))))
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode '(gdbmi gdba gdb dbx))))
|
||||
([nexti] menu-item "Next Instruction" gud-nexti
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode '(gdbmi gdba gdb dbx))))
|
||||
:enable (and (not gud-running)
|
||||
(memq gud-minor-mode '(gdbmi gdba gdb dbx))))
|
||||
([step] menu-item "Step Line" gud-step
|
||||
:enable (not gud-running))
|
||||
:enable (not gud-running))
|
||||
([next] menu-item "Next Line" gud-next
|
||||
:enable (not gud-running))
|
||||
:enable (not gud-running))
|
||||
([cont] menu-item "Continue" gud-cont
|
||||
:enable (not gud-running)))
|
||||
:enable (not gud-running)
|
||||
:visible (not (eq gud-minor-mode 'gdba))))
|
||||
"Menu for `gud-mode'."
|
||||
:name "Gud")
|
||||
|
||||
@ -204,16 +226,19 @@ Used to grey out relevant togolbar icons.")
|
||||
(gud-remove . "gud/remove")
|
||||
(gud-print . "gud/print")
|
||||
(gud-pstar . "gud/pstar")
|
||||
(gud-pp . "gud/pp")
|
||||
(gud-watch . "gud/watch")
|
||||
(gud-cont . "gud/cont")
|
||||
(gud-until . "gud/until")
|
||||
(gud-finish . "gud/finish")
|
||||
(gud-run . "gud/run")
|
||||
(gud-go . "gud/go")
|
||||
(gud-stop-subjob . "gud/stop")
|
||||
;; gud-s, gud-si etc. instead of gud-step,
|
||||
;; gud-stepi, to avoid file-name clashes on DOS
|
||||
;; 8+3 filesystems.
|
||||
(gud-cont . "gud/cont")
|
||||
(gud-until . "gud/until")
|
||||
(gud-next . "gud/next")
|
||||
(gud-step . "gud/step")
|
||||
(gud-finish . "gud/finish")
|
||||
(gud-nexti . "gud/nexti")
|
||||
(gud-stepi . "gud/stepi")
|
||||
(gud-up . "gud/up")
|
||||
@ -346,6 +371,12 @@ t means that there is no stack, and we are in display-file mode.")
|
||||
(defvar gud-speedbar-key-map nil
|
||||
"Keymap used when in the buffers display mode.")
|
||||
|
||||
(defun gud-speedbar-item-info ()
|
||||
"Display the data type of the watch expression element."
|
||||
(let ((var (nth (- (line-number-at-pos (point)) 2) gdb-var-list)))
|
||||
(if (nth 4 var)
|
||||
(speedbar-message "%s" (nth 3 var)))))
|
||||
|
||||
(defun gud-install-speedbar-variables ()
|
||||
"Install those variables used by speedbar to enhance gud/gdb."
|
||||
(if gud-speedbar-key-map
|
||||
@ -362,7 +393,12 @@ t means that there is no stack, and we are in display-file mode.")
|
||||
|
||||
(speedbar-add-expansion-list '("GUD" gud-speedbar-menu-items
|
||||
gud-speedbar-key-map
|
||||
gud-expansion-speedbar-buttons)))
|
||||
gud-expansion-speedbar-buttons))
|
||||
|
||||
(add-to-list
|
||||
'speedbar-mode-functions-list
|
||||
'("GUD" (speedbar-item-info . gud-speedbar-item-info)
|
||||
(speedbar-line-directory . ignore))))
|
||||
|
||||
(defvar gud-speedbar-menu-items
|
||||
'(["Jump to stack frame" speedbar-edit-line
|
||||
@ -414,7 +450,9 @@ required by the caller."
|
||||
(while (string-match "\\." varnum start)
|
||||
(setq depth (1+ depth)
|
||||
start (1+ (match-beginning 0))))
|
||||
(if (equal (nth 2 var) "0")
|
||||
(if (or (equal (nth 2 var) "0")
|
||||
(and (equal (nth 2 var) "1")
|
||||
(string-match "char \\*" (nth 3 var))))
|
||||
(speedbar-make-tag-line 'bracket ?? nil nil
|
||||
(concat (car var) "\t" (nth 4 var))
|
||||
'gdb-edit-value
|
||||
@ -596,25 +634,31 @@ and source-file directory for your debugger."
|
||||
(set (make-local-variable 'gud-minor-mode) 'gdb)
|
||||
|
||||
(gud-def gud-break "break %f:%l" "\C-b" "Set breakpoint at current line.")
|
||||
(gud-def gud-tbreak "tbreak %f:%l" "\C-t" "Set temporary breakpoint at current line.")
|
||||
(gud-def gud-remove "clear %f:%l" "\C-d" "Remove breakpoint at current line")
|
||||
(gud-def gud-step "step %p" "\C-s" "Step one source line with display.")
|
||||
(gud-def gud-stepi "stepi %p" "\C-i" "Step one instruction with display.")
|
||||
(gud-def gud-next "next %p" "\C-n" "Step one line (skip functions).")
|
||||
(gud-def gud-nexti "nexti %p" nil "Step one instruction (skip functions).")
|
||||
(gud-def gud-cont "cont" "\C-r" "Continue with display.")
|
||||
(gud-def gud-finish "finish" "\C-f" "Finish executing current function.")
|
||||
(gud-def gud-tbreak "tbreak %f:%l" "\C-t"
|
||||
"Set temporary breakpoint at current line.")
|
||||
(gud-def gud-remove "clear %f:%l" "\C-d" "Remove breakpoint at current line")
|
||||
(gud-def gud-step "step %p" "\C-s" "Step one source line with display.")
|
||||
(gud-def gud-stepi "stepi %p" "\C-i" "Step one instruction with display.")
|
||||
(gud-def gud-next "next %p" "\C-n" "Step one line (skip functions).")
|
||||
(gud-def gud-nexti "nexti %p" nil "Step one instruction (skip functions).")
|
||||
(gud-def gud-cont "cont" "\C-r" "Continue with display.")
|
||||
(gud-def gud-finish "finish" "\C-f" "Finish executing current function.")
|
||||
(gud-def gud-jump
|
||||
(progn (gud-call "tbreak %f:%l") (gud-call "jump %f:%l"))
|
||||
"\C-j" "Set execution address to current line.")
|
||||
|
||||
(gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).")
|
||||
(gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).")
|
||||
(gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.")
|
||||
(gud-def gud-pstar "print* %e" nil
|
||||
(gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).")
|
||||
(gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).")
|
||||
(gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.")
|
||||
(gud-def gud-pstar "print* %e" nil
|
||||
"Evaluate C dereferenced pointer expression at point.")
|
||||
(gud-def gud-until "until %l" "\C-u" "Continue to current line.")
|
||||
(gud-def gud-run "run" nil "Run the program.")
|
||||
|
||||
;; For debugging Emacs only.
|
||||
(gud-def gud-pp "pp1 %e" nil "Print the emacs s-expression.")
|
||||
(gud-def gud-pv "pv1 %e" "\C-v" "Print the value of the lisp variable.")
|
||||
|
||||
(gud-def gud-until "until %l" "\C-u" "Continue to current line.")
|
||||
(gud-def gud-run "run" nil "Run the program.")
|
||||
|
||||
(local-set-key "\C-i" 'gud-gdb-complete-command)
|
||||
(setq comint-prompt-regexp "^(.*gdb[+]?) *")
|
||||
|
@ -878,6 +878,16 @@ If the value is nil, don't highlight the buffer names specially."
|
||||
:type 'face
|
||||
:group 'matching)
|
||||
|
||||
(defcustom occur-excluded-properties
|
||||
'(read-only invisible intangible field mouse-face help-echo local-map keymap
|
||||
yank-handler follow-link)
|
||||
"*Text properties to discard when copying lines to the *Occur* buffer.
|
||||
The value should be a list of text properties to discard or t,
|
||||
which means to discard all text properties."
|
||||
:type '(choice (const :tag "All" t) (repeat symbol))
|
||||
:group 'matching
|
||||
:version "22.1")
|
||||
|
||||
(defun occur-accumulate-lines (count &optional keep-props)
|
||||
(save-excursion
|
||||
(let ((forwardp (> count 0))
|
||||
@ -894,10 +904,12 @@ If the value is nil, don't highlight the buffer names specially."
|
||||
(if (fboundp 'jit-lock-fontify-now)
|
||||
(jit-lock-fontify-now beg end)))
|
||||
(push
|
||||
(funcall (if keep-props
|
||||
#'buffer-substring
|
||||
#'buffer-substring-no-properties)
|
||||
beg end)
|
||||
(if (and keep-props (not (eq occur-excluded-properties t)))
|
||||
(let ((str (buffer-substring beg end)))
|
||||
(remove-list-of-text-properties
|
||||
0 (length str) occur-excluded-properties str)
|
||||
str)
|
||||
(buffer-substring-no-properties beg end))
|
||||
result)
|
||||
(forward-line (if forwardp 1 -1)))
|
||||
(nreverse result))))
|
||||
@ -1033,7 +1045,8 @@ See also `multi-occur'."
|
||||
(and case-fold-search
|
||||
(isearch-no-upper-case-p regexp t))
|
||||
list-matching-lines-buffer-name-face
|
||||
nil list-matching-lines-face t)))
|
||||
nil list-matching-lines-face
|
||||
(not (eq occur-excluded-properties t)))))
|
||||
(let* ((bufcount (length active-bufs))
|
||||
(diff (- (length bufs) bufcount)))
|
||||
(message "Searched %d buffer%s%s; %s match%s for `%s'"
|
||||
@ -1102,13 +1115,15 @@ See also `multi-occur'."
|
||||
(text-property-not-all begpt endpt 'fontified t))
|
||||
(if (fboundp 'jit-lock-fontify-now)
|
||||
(jit-lock-fontify-now begpt endpt)))
|
||||
(setq curstring (buffer-substring begpt endpt))
|
||||
;; Depropertize the string, and maybe
|
||||
;; highlight the matches
|
||||
(if (and keep-props (not (eq occur-excluded-properties t)))
|
||||
(progn
|
||||
(setq curstring (buffer-substring begpt endpt))
|
||||
(remove-list-of-text-properties
|
||||
0 (length curstring) occur-excluded-properties curstring))
|
||||
(setq curstring (buffer-substring-no-properties begpt endpt)))
|
||||
;; Highlight the matches
|
||||
(let ((len (length curstring))
|
||||
(start 0))
|
||||
(unless keep-props
|
||||
(set-text-properties 0 len nil curstring))
|
||||
(while (and (< start len)
|
||||
(string-match regexp curstring start))
|
||||
(add-text-properties
|
||||
|
100
lisp/reveal.el
100
lisp/reveal.el
@ -44,11 +44,11 @@
|
||||
;;; Todo:
|
||||
|
||||
;; - find other hysteresis features.
|
||||
;; - don't hide after a scroll command
|
||||
;; - delay hiding by a couple seconds (i.e. hide in the background)
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'pcvs-util)
|
||||
|
||||
(defgroup reveal nil
|
||||
"Reveal hidden text on the fly."
|
||||
:group 'editing)
|
||||
@ -58,7 +58,9 @@
|
||||
:type 'boolean
|
||||
:group 'reveal)
|
||||
|
||||
(defvar reveal-open-spots nil)
|
||||
(defvar reveal-open-spots nil
|
||||
"List of spots in the buffer which are open.
|
||||
Each element has the form (WINDOW . OVERLAY).")
|
||||
(make-variable-buffer-local 'reveal-open-spots)
|
||||
|
||||
(defvar reveal-last-tick nil)
|
||||
@ -74,35 +76,34 @@
|
||||
;; FIXME: do we actually know that (current-buffer) = (window-buffer) ?
|
||||
(with-local-quit
|
||||
(condition-case err
|
||||
(let* ((spots (cvs-partition
|
||||
(lambda (x)
|
||||
;; We refresh any spot in the current window as well
|
||||
;; as any spots associated with a dead window or a window
|
||||
;; which does not show this buffer any more.
|
||||
(or (eq (car x) (selected-window))
|
||||
(not (window-live-p (car x)))
|
||||
(not (eq (window-buffer (car x))
|
||||
(current-buffer)))))
|
||||
reveal-open-spots))
|
||||
(old-ols (mapcar 'cdr (car spots)))
|
||||
(repeat t))
|
||||
(setq reveal-open-spots (cdr spots))
|
||||
(let ((old-ols (delq nil
|
||||
(mapcar
|
||||
(lambda (x)
|
||||
;; We refresh any spot in the current window as
|
||||
;; well as any spots associated with a dead
|
||||
;; window or a window which does not show this
|
||||
;; buffer any more.
|
||||
(if (or (eq (car x) (selected-window))
|
||||
(not (window-live-p (car x)))
|
||||
(not (eq (window-buffer (car x))
|
||||
(current-buffer))))
|
||||
(cdr x)))
|
||||
reveal-open-spots)))
|
||||
(repeat t))
|
||||
;; Open new overlays.
|
||||
(while repeat
|
||||
(setq repeat nil)
|
||||
(dolist (ol (nconc (when (and reveal-around-mark mark-active)
|
||||
(overlays-at (mark)))
|
||||
(overlays-at (point))))
|
||||
(push (cons (selected-window) ol) reveal-open-spots)
|
||||
(setq old-ols (delq ol old-ols))
|
||||
(let ((inv (overlay-get ol 'invisible)) open)
|
||||
(when (and inv
|
||||
;; There's an `invisible' property. Make sure it's
|
||||
;; actually invisible.
|
||||
(or (not (listp buffer-invisibility-spec))
|
||||
(memq inv buffer-invisibility-spec)
|
||||
(assq inv buffer-invisibility-spec))
|
||||
(or (setq open
|
||||
;; actually invisible, and ellipsised.
|
||||
(and (consp buffer-invisibility-spec)
|
||||
(cdr (assq inv buffer-invisibility-spec)))
|
||||
(or (setq open
|
||||
(or (overlay-get ol 'reveal-toggle-invisible)
|
||||
(and (symbolp inv)
|
||||
(get inv 'reveal-toggle-invisible))
|
||||
@ -111,8 +112,10 @@
|
||||
(and (consp buffer-invisibility-spec)
|
||||
(cdr (assq inv buffer-invisibility-spec))))
|
||||
(overlay-put ol 'reveal-invisible inv))
|
||||
(push (cons (selected-window) ol) reveal-open-spots)
|
||||
(if (null open)
|
||||
(overlay-put ol 'invisible nil)
|
||||
(progn ;; (debug)
|
||||
(overlay-put ol 'invisible nil))
|
||||
;; Use the provided opening function and repeat (since the
|
||||
;; opening function might have hidden a subpart around point).
|
||||
(setq repeat t)
|
||||
@ -133,32 +136,37 @@
|
||||
;; should be rear-advance when it's open, but things like
|
||||
;; outline-minor-mode make it non-rear-advance because it's
|
||||
;; a better choice when it's closed).
|
||||
(dolist (ol old-ols)
|
||||
(push (cons (selected-window) ol) reveal-open-spots))
|
||||
nil
|
||||
;; The last command was only a point motion or some such
|
||||
;; non-buffer-modifying command. Let's close whatever can be closed.
|
||||
(dolist (ol old-ols)
|
||||
(when (and (eq (current-buffer) (overlay-buffer ol))
|
||||
(not (rassq ol reveal-open-spots)))
|
||||
(if (and (>= (point) (save-excursion
|
||||
(goto-char (overlay-start ol))
|
||||
(line-beginning-position 1)))
|
||||
(<= (point) (save-excursion
|
||||
(goto-char (overlay-end ol))
|
||||
(line-beginning-position 2))))
|
||||
;; Still near the overlay: keep it open.
|
||||
(push (cons (selected-window) ol) reveal-open-spots)
|
||||
;; Really close it.
|
||||
(let ((open (overlay-get ol 'reveal-toggle-invisible)) inv)
|
||||
(if (or open
|
||||
(and (setq inv (overlay-get ol 'reveal-invisible))
|
||||
(setq open (or (get inv 'reveal-toggle-invisible)
|
||||
(overlay-get ol 'isearch-open-invisible-temporary)))))
|
||||
(condition-case err
|
||||
(funcall open ol t)
|
||||
(error (message "!!Reveal-hide (funcall %s %s t): %s !!"
|
||||
open ol err)))
|
||||
(overlay-put ol 'invisible inv))))))))
|
||||
(if (and (>= (point) (save-excursion
|
||||
(goto-char (overlay-start ol))
|
||||
(line-beginning-position 1)))
|
||||
(<= (point) (save-excursion
|
||||
(goto-char (overlay-end ol))
|
||||
(line-beginning-position 2)))
|
||||
;; If the application has moved the overlay to some other
|
||||
;; buffer, we'd better reset the buffer to its
|
||||
;; original state.
|
||||
(eq (current-buffer) (overlay-buffer ol)))
|
||||
;; Still near the overlay: keep it open.
|
||||
nil
|
||||
;; Really close it.
|
||||
(let ((open (overlay-get ol 'reveal-toggle-invisible)) inv)
|
||||
(if (or open
|
||||
(and (setq inv (overlay-get ol 'reveal-invisible))
|
||||
(setq open (or (get inv 'reveal-toggle-invisible)
|
||||
(overlay-get ol 'isearch-open-invisible-temporary)))))
|
||||
(condition-case err
|
||||
(funcall open ol t)
|
||||
(error (message "!!Reveal-hide (funcall %s %s t): %s !!"
|
||||
open ol err)))
|
||||
(overlay-put ol 'invisible inv))
|
||||
;; Remove the olverlay from the list of open spots.
|
||||
(setq reveal-open-spots
|
||||
(delq (rassoc ol reveal-open-spots)
|
||||
reveal-open-spots)))))))
|
||||
(error (message "Reveal: %s" err)))))
|
||||
|
||||
(defvar reveal-mode-map
|
||||
|
@ -93,17 +93,16 @@
|
||||
(symbol :tag "Property")
|
||||
(sexp :tag "Value")))))
|
||||
|
||||
;;;###autoload
|
||||
(defcustom file-name-shadow-properties
|
||||
'(face file-name-shadow field shadow)
|
||||
"Properties given to the `shadowed' part of a filename in the minibuffer.
|
||||
Only used when `file-name-shadow-mode' is active.
|
||||
If emacs is not running under a window system,
|
||||
If Emacs is not running under a window system,
|
||||
`file-name-shadow-tty-properties' is used instead."
|
||||
:type file-name-shadow-properties-custom-type
|
||||
:group 'minibuffer)
|
||||
:group 'minibuffer
|
||||
:version "22.1")
|
||||
|
||||
;;;###autoload
|
||||
(defcustom file-name-shadow-tty-properties
|
||||
'(before-string "{" after-string "} " field shadow)
|
||||
"Properties given to the `shadowed' part of a filename in the minibuffer.
|
||||
@ -111,30 +110,18 @@ Only used when `file-name-shadow-mode' is active and emacs
|
||||
is not running under a window-system; if emacs is running under a window
|
||||
system, `file-name-shadow-properties' is used instead."
|
||||
:type file-name-shadow-properties-custom-type
|
||||
:group 'minibuffer)
|
||||
:group 'minibuffer
|
||||
:version "22.1")
|
||||
|
||||
(defface file-name-shadow
|
||||
'((t :inherit shadow))
|
||||
"Face used by `file-name-shadow-mode' for the shadow."
|
||||
:group 'minibuffer)
|
||||
:group 'minibuffer
|
||||
:version "22.1")
|
||||
|
||||
|
||||
;;; Internal variables
|
||||
|
||||
;; Regexp to locate dividing point between shadow and real pathname
|
||||
(defconst rfn-eshadow-regexp
|
||||
(cond ((memq system-type '(ms-dos windows-nt))
|
||||
;; This horrible regexp considers the following patterns as
|
||||
;; starting an absolute pathname, when following a `/' or an `\':
|
||||
;; L: / // ~ $ \\ \\\\
|
||||
"\\(.*[^/]+/+?\\|/*?\\|\\)\\(~\\|$[^$]\\|$\\'\\|[][\\^a-z]:\\|//?\\([^][\\^a-z/$~]\\|[^/$~][^:]\\|[^/$~]?\\'\\)\\)")
|
||||
(t
|
||||
;; default is for unix-style filenames
|
||||
"\\(.*/\\)\\([/~]\\|$[^$]\\|$\\'\\)"))
|
||||
"Regular expression used to match shadowed filenames.
|
||||
There should be at least one regexp group; the end of the first one
|
||||
is used as the end of the shadowed portion of the filename.")
|
||||
|
||||
;; A list of minibuffers to which we've added a post-command-hook.
|
||||
(defvar rfn-eshadow-frobbed-minibufs nil)
|
||||
|
||||
@ -168,32 +155,48 @@ The prompt and initial input should already have been inserted."
|
||||
(add-to-list 'rfn-eshadow-frobbed-minibufs (current-buffer))
|
||||
(add-hook 'post-command-hook #'rfn-eshadow-update-overlay nil t)))
|
||||
|
||||
(defsubst rfn-eshadow-sifn-equal (goal pos)
|
||||
(equal goal (condition-case nil
|
||||
(substitute-in-file-name
|
||||
(buffer-substring-no-properties pos (point-max)))
|
||||
;; `substitute-in-file-name' can fail on partial input.
|
||||
(error nil))))
|
||||
|
||||
;; post-command-hook to update overlay
|
||||
(defun rfn-eshadow-update-overlay ()
|
||||
"Update `rfn-eshadow-overlay' to cover shadowed part of minibuffer input.
|
||||
This is intended to be used as a minibuffer post-command-hook for
|
||||
This is intended to be used as a minibuffer `post-command-hook' for
|
||||
`file-name-shadow-mode'; the minibuffer should have already
|
||||
been set up by `rfn-eshadow-setup-minibuffer'."
|
||||
;; This is not really a correct implementation; it won't always do the
|
||||
;; right thing in the presence of environment variables that
|
||||
;; substitute-in-file-name would expand; currently it just assumes any
|
||||
;; environment variable contains an absolute filename.
|
||||
(save-excursion
|
||||
(let ((inhibit-point-motion-hooks t))
|
||||
(goto-char (minibuffer-prompt-end))
|
||||
;; Update the overlay (which will evaporate if it's empty).
|
||||
(move-overlay rfn-eshadow-overlay
|
||||
(point)
|
||||
(if (looking-at rfn-eshadow-regexp)
|
||||
(match-end 1)
|
||||
(point))))))
|
||||
|
||||
(condition-case nil
|
||||
(let ((goal (substitute-in-file-name (minibuffer-contents)))
|
||||
(mid (overlay-end rfn-eshadow-overlay))
|
||||
(start (minibuffer-prompt-end))
|
||||
(end (point-max)))
|
||||
(unless
|
||||
;; Catch the common case where the shadow does not need to move.
|
||||
(and mid
|
||||
(or (eq mid end)
|
||||
(not (rfn-eshadow-sifn-equal goal (1+ mid))))
|
||||
(or (eq mid start)
|
||||
(rfn-eshadow-sifn-equal goal mid)))
|
||||
;; Binary search for the greatest position still equivalent to
|
||||
;; the whole.
|
||||
(while (or (< (1+ start) end)
|
||||
(if (and (< (1+ end) (point-max))
|
||||
(rfn-eshadow-sifn-equal goal (1+ end)))
|
||||
;; (SIFN end) != goal, but (SIFN (1+end)) == goal,
|
||||
;; We've reached a discontinuity: this can happen
|
||||
;; e.g. if `end' point to "/:...".
|
||||
(setq start (1+ end) end (point-max))))
|
||||
(setq mid (/ (+ start end) 2))
|
||||
(if (rfn-eshadow-sifn-equal goal mid)
|
||||
(setq start mid)
|
||||
(setq end mid)))
|
||||
(move-overlay rfn-eshadow-overlay (minibuffer-prompt-end) start)))
|
||||
;; `substitute-in-file-name' can fail on partial input.
|
||||
(error nil)))
|
||||
|
||||
;;; Note this definition must be at the end of the file, because
|
||||
;;; `define-minor-mode' actually calls the mode-function if the
|
||||
;;; associated variable is non-nil, which requires that all needed
|
||||
;;; functions be already defined. [This is arguably a bug in d-m-m]
|
||||
;;;###autoload
|
||||
(define-minor-mode file-name-shadow-mode
|
||||
"Toggle File-Name Shadow mode.
|
||||
When active, any part of a filename being read in the minibuffer
|
||||
@ -205,7 +208,9 @@ that portion dim, invisible, or otherwise less visually noticeable.
|
||||
With prefix argument ARG, turn on if positive, otherwise off.
|
||||
Returns non-nil if the new state is enabled."
|
||||
:global t
|
||||
:init-value t
|
||||
:group 'minibuffer
|
||||
:version "22.1"
|
||||
(if file-name-shadow-mode
|
||||
;; Enable the mode
|
||||
(add-hook 'minibuffer-setup-hook 'rfn-eshadow-setup-minibuffer)
|
||||
@ -220,5 +225,5 @@ Returns non-nil if the new state is enabled."
|
||||
|
||||
(provide 'rfn-eshadow)
|
||||
|
||||
;;; arch-tag: dcf70a52-0115-4ec2-b1e3-4f8d3541a888
|
||||
;; arch-tag: dcf70a52-0115-4ec2-b1e3-4f8d3541a888
|
||||
;;; rfn-eshadow.el ends here
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
;; Author: Hrvoje Niksic <hniksic@xemacs.org>
|
||||
;; Keywords: minibuffer
|
||||
;; Version: 19
|
||||
;; Version: 24
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
@ -64,9 +64,7 @@
|
||||
Set this by calling the `savehist-mode' function or using the customize
|
||||
interface."
|
||||
:type 'boolean
|
||||
:set (if (fboundp 'custom-set-minor-mode)
|
||||
'custom-set-minor-mode
|
||||
(lambda (symbol value) (funcall symbol (or value 0))))
|
||||
:set (lambda (symbol value) (savehist-mode (or value 0)))
|
||||
:initialize 'custom-initialize-default
|
||||
:require 'savehist
|
||||
:group 'savehist)
|
||||
@ -129,18 +127,25 @@ If set to nil, disables timer-based autosaving."
|
||||
:type 'integer
|
||||
:group 'savehist)
|
||||
|
||||
(defcustom savehist-mode-hook nil
|
||||
"Hook called when `savehist-mode' is turned on."
|
||||
:type 'hook)
|
||||
|
||||
(defcustom savehist-save-hook nil
|
||||
"Hook called by `savehist-save' before saving the variables.
|
||||
You can use this hook to influence choice and content of variables to
|
||||
save."
|
||||
:type 'hook)
|
||||
:type 'hook
|
||||
:group 'savehist)
|
||||
|
||||
(defvar savehist-coding-system
|
||||
;; UTF-8 is usually preferable to ISO-2022-8 when available, but under
|
||||
;; XEmacs, UTF-8 is provided by external packages, and may not always be
|
||||
;; available, so even if it currently is available, we prefer not to
|
||||
;; use is.
|
||||
(if (featurep 'xemacs) 'iso-2022-8 'utf-8)
|
||||
;; This should be capable of representing characters used by Emacs.
|
||||
;; We prefer UTF-8 over ISO 2022 because it is well-known outside
|
||||
;; Mule. XEmacs prir to 21.5 had UTF-8 provided by an external
|
||||
;; package which may not be loaded, which is why we check for version.
|
||||
(defvar savehist-coding-system (if (and (featurep 'xemacs)
|
||||
(<= emacs-major-version 21)
|
||||
(< emacs-minor-version 5))
|
||||
'iso-2022-8 'utf-8)
|
||||
"The coding system savehist uses for saving the minibuffer history.
|
||||
Changing this value while Emacs is running is supported, but considered
|
||||
unwise, unless you know what you are doing.")
|
||||
@ -158,20 +163,20 @@ along with minibuffer history. You can change its value off
|
||||
`savehist-save-hook' to influence which variables are saved.")
|
||||
|
||||
(defconst savehist-no-conversion (if (featurep 'xemacs) 'binary 'no-conversion)
|
||||
"Coding system without conversion, used for calculating internal checksums.
|
||||
Should be as fast as possible, ideally simply exposing the internal
|
||||
representation of buffer text.")
|
||||
"Coding system without any conversion.
|
||||
This is used for calculating an internal checksum. Should be as fast
|
||||
as possible, ideally simply exposing the internal representation of
|
||||
buffer text.")
|
||||
|
||||
(defvar savehist-loaded nil
|
||||
"Whether the history has already been loaded.
|
||||
This prevents toggling `savehist-mode' from destroying existing
|
||||
This prevents toggling savehist-mode from destroying existing
|
||||
minibuffer history.")
|
||||
|
||||
(eval-when-compile
|
||||
(when (featurep 'xemacs)
|
||||
;; Must declare this under XEmacs, which doesn't have built-in
|
||||
;; minibuffer history truncation.
|
||||
(defvar history-length 100)))
|
||||
(when (featurep 'xemacs)
|
||||
;; Must declare this under XEmacs, which doesn't have built-in
|
||||
;; minibuffer history truncation.
|
||||
(defvar history-length 100))
|
||||
|
||||
;; Functions.
|
||||
|
||||
@ -209,16 +214,8 @@ which is probably undesirable."
|
||||
(setq savehist-mode nil)
|
||||
(savehist-uninstall)
|
||||
(signal (car errvar) (cdr errvar)))))
|
||||
(savehist-install))
|
||||
|
||||
;; End with the usual minor-mode conventions normally provided
|
||||
;; transparently by define-minor-mode.
|
||||
(run-hooks 'savehist-mode-hook)
|
||||
(if (interactive-p)
|
||||
(progn
|
||||
(customize-mark-as-set 'savehist-mode)
|
||||
(unless (current-message)
|
||||
(message "Savehist mode %sabled" (if savehist-mode "en" "dis")))))
|
||||
(savehist-install)
|
||||
(run-hooks 'savehist-mode-hook))
|
||||
;; Return the new setting.
|
||||
savehist-mode)
|
||||
(add-minor-mode 'savehist-mode "")
|
||||
@ -340,9 +337,9 @@ Does nothing if savehist-mode is off."
|
||||
(savehist-save t)))
|
||||
|
||||
(defun savehist-trim-history (value)
|
||||
;; Retain only the first history-length items in VALUE. Only used
|
||||
;; under XEmacs, which doesn't (yet) implement automatic trimming of
|
||||
;; history lists to history-length items.
|
||||
"Retain only the first history-length items in VALUE.
|
||||
Only used under XEmacs, which doesn't (yet) implement automatic
|
||||
trimming of history lists to history-length items."
|
||||
(if (and (featurep 'xemacs)
|
||||
(natnump history-length)
|
||||
(> (length value) history-length))
|
||||
@ -373,8 +370,11 @@ Does nothing if savehist-mode is off."
|
||||
(error nil))))))
|
||||
|
||||
(defun savehist-minibuffer-hook ()
|
||||
(add-to-list 'savehist-minibuffer-history-variables
|
||||
minibuffer-history-variable))
|
||||
;; XEmacs sets minibuffer-history-variable to t to mean "no history
|
||||
;; is being recorded".
|
||||
(unless (eq minibuffer-history-variable t)
|
||||
(add-to-list 'savehist-minibuffer-history-variables
|
||||
minibuffer-history-variable)))
|
||||
|
||||
(provide 'savehist)
|
||||
|
||||
|
@ -893,8 +893,8 @@ in *Help* buffer. See also the command `describe-char'."
|
||||
(if (or (/= beg 1) (/= end (1+ total)))
|
||||
(message "point=%d of %d (%d%%) <%d - %d> column %d %s"
|
||||
pos total percent beg end col hscroll)
|
||||
(message "point=%d of %d (%d%%) column %d %s"
|
||||
pos total percent col hscroll))
|
||||
(message "point=%d of %d (EOB) column %d %s"
|
||||
pos total col hscroll))
|
||||
(let ((coding buffer-file-coding-system)
|
||||
encoded encoding-msg display-prop under-display)
|
||||
(if (or (not coding)
|
||||
@ -3722,11 +3722,11 @@ The goal column is stored in the variable `goal-column'."
|
||||
;;"Goal column %d (use \\[set-goal-column] with an arg to unset it)")
|
||||
;;goal-column)
|
||||
(message "%s"
|
||||
(concat
|
||||
(concat
|
||||
(format "Goal column %d " goal-column)
|
||||
(substitute-command-keys
|
||||
"(use \\[set-goal-column] with an arg to unset it)")))
|
||||
|
||||
|
||||
)
|
||||
nil)
|
||||
|
||||
@ -4318,9 +4318,7 @@ If nil, search stops at the beginning of the accessible portion of the buffer."
|
||||
(eq (syntax-class syntax) 4)
|
||||
(cdr syntax)))))
|
||||
(cond
|
||||
((or (null matching-paren)
|
||||
(/= (char-before oldpos)
|
||||
matching-paren))
|
||||
((not (eq matching-paren (char-before oldpos)))
|
||||
(message "Mismatched parentheses"))
|
||||
((not blinkpos)
|
||||
(if (not blink-matching-paren-distance)
|
||||
@ -4864,7 +4862,7 @@ Called from `temp-buffer-show-hook'."
|
||||
When this hook is run, the current buffer is the one in which the
|
||||
command to display the completion list buffer was run.
|
||||
The completion list buffer is available as the value of `standard-output'.
|
||||
The common prefix substring for completion may be available as the
|
||||
The common prefix substring for completion may be available as the
|
||||
value of `completion-common-substring'. See also `display-completion-list'.")
|
||||
|
||||
|
||||
@ -4893,9 +4891,9 @@ of the differing parts is, by contrast, slightly highlighted."
|
||||
"Common prefix substring to use in `completion-setup-function' to put faces.
|
||||
The value is set by `display-completion-list' during running `completion-setup-hook'.
|
||||
|
||||
To put faces, `completions-first-difference' and `completions-common-part'
|
||||
To put faces, `completions-first-difference' and `completions-common-part'
|
||||
into \"*Completions*\* buffer, the common prefix substring in completions is
|
||||
needed as a hint. (Minibuffer is a special case. The content of minibuffer itself
|
||||
needed as a hint. (Minibuffer is a special case. The content of minibuffer itself
|
||||
is the substring.)")
|
||||
|
||||
;; This function goes in completion-setup-hook, so that it is called
|
||||
@ -4912,37 +4910,49 @@ is the substring.)")
|
||||
(setq default-directory (file-name-directory mbuf-contents))))
|
||||
;; If partial-completion-mode is on, point might not be after the
|
||||
;; last character in the minibuffer.
|
||||
;; FIXME: This still doesn't work if the text to be completed
|
||||
;; starts with a `-'.
|
||||
(when (and partial-completion-mode (not (eobp)))
|
||||
;; FIXME: This hack should be moved to complete.el where we call
|
||||
;; display-completion-list.
|
||||
(when partial-completion-mode
|
||||
(setq common-string-length
|
||||
(- common-string-length (- (point) (point-max)))))
|
||||
(if (eq (char-after (field-beginning)) ?-)
|
||||
;; If the text to be completed starts with a `-', there is no
|
||||
;; common prefix.
|
||||
;; FIXME: this probably still doesn't do the right thing
|
||||
;; when completing file names. It's not even clear what
|
||||
;; is TRT.
|
||||
0
|
||||
(- common-string-length (- (point) (point-max))))))
|
||||
(with-current-buffer standard-output
|
||||
(completion-list-mode)
|
||||
(set (make-local-variable 'completion-reference-buffer) mainbuf)
|
||||
(if minibuffer-completing-file-name
|
||||
;; For file name completion,
|
||||
;; use the number of chars before the start of the
|
||||
;; last file name component.
|
||||
(setq completion-base-size
|
||||
(setq completion-base-size
|
||||
(if minibuffer-completing-file-name
|
||||
;; For file name completion, use the number of chars before
|
||||
;; the start of the last file name component.
|
||||
(with-current-buffer mainbuf
|
||||
(save-excursion
|
||||
(goto-char (point-max))
|
||||
(skip-chars-backward completion-root-regexp)
|
||||
(- (point) (minibuffer-prompt-end)))))
|
||||
;; Otherwise, in minibuffer, the whole input is being completed.
|
||||
(if (minibufferp mainbuf)
|
||||
(if (and (symbolp minibuffer-completion-table)
|
||||
(get minibuffer-completion-table 'completion-base-size-function))
|
||||
(setq completion-base-size
|
||||
(funcall (get minibuffer-completion-table 'completion-base-size-function)))
|
||||
(setq completion-base-size 0))))
|
||||
(- (point) (minibuffer-prompt-end))))
|
||||
;; Otherwise, in minibuffer, the whole input is being completed.
|
||||
(if (minibufferp mainbuf) 0)))
|
||||
(if (and (symbolp minibuffer-completion-table)
|
||||
(get minibuffer-completion-table 'completion-base-size-function))
|
||||
(setq completion-base-size
|
||||
;; FIXME: without any extra arg, how is this function
|
||||
;; expected to return anything else than a constant unless
|
||||
;; it redoes part of the work of all-completions?
|
||||
;; In most cases this value would better be computed and
|
||||
;; returned at the same time as the list of all-completions
|
||||
;; is computed. --Stef
|
||||
(funcall (get minibuffer-completion-table
|
||||
'completion-base-size-function))))
|
||||
;; Put faces on first uncommon characters and common parts.
|
||||
(when (or completion-common-substring completion-base-size)
|
||||
(setq common-string-length
|
||||
(if completion-common-substring
|
||||
(length completion-common-substring)
|
||||
(- common-string-length completion-base-size)))
|
||||
(if completion-common-substring
|
||||
(length completion-common-substring)
|
||||
(- common-string-length completion-base-size)))
|
||||
(let ((element-start (point-min))
|
||||
(maxp (point-max))
|
||||
element-common-end)
|
||||
|
@ -773,6 +773,7 @@ opening the first frame (e.g. open a connection to an X server).")
|
||||
(custom-reevaluate-setting 'global-font-lock-mode)
|
||||
(custom-reevaluate-setting 'mouse-wheel-down-event)
|
||||
(custom-reevaluate-setting 'mouse-wheel-up-event)
|
||||
(custom-reevaluate-setting 'file-name-shadow-mode)
|
||||
|
||||
(normal-erase-is-backspace-setup-frame)
|
||||
|
||||
|
357
lisp/tar-mode.el
357
lisp/tar-mode.el
@ -101,7 +101,7 @@
|
||||
:group 'data)
|
||||
|
||||
(defcustom tar-anal-blocksize 20
|
||||
"*The blocksize of tar files written by Emacs, or nil, meaning don't care.
|
||||
"The blocksize of tar files written by Emacs, or nil, meaning don't care.
|
||||
The blocksize of a tar file is not really the size of the blocks; rather, it is
|
||||
the number of blocks written with one system call. When tarring to a tape,
|
||||
this is the size of the *tape* blocks, but when writing to a file, it doesn't
|
||||
@ -112,7 +112,7 @@ how many null padding bytes go on the end of the tar file."
|
||||
:group 'tar)
|
||||
|
||||
(defcustom tar-update-datestamp nil
|
||||
"*Non-nil means Tar mode should play fast and loose with sub-file datestamps.
|
||||
"Non-nil means Tar mode should play fast and loose with sub-file datestamps.
|
||||
If this is true, then editing and saving a tar file entry back into its
|
||||
tar file will update its datestamp. If false, the datestamp is unchanged.
|
||||
You may or may not want this - it is good in that you can tell when a file
|
||||
@ -123,7 +123,7 @@ the file never exists on disk."
|
||||
:group 'tar)
|
||||
|
||||
(defcustom tar-mode-show-date nil
|
||||
"*Non-nil means Tar mode should show the date/time of each subfile.
|
||||
"Non-nil means Tar mode should show the date/time of each subfile.
|
||||
This information is useful, but it takes screen space away from file names."
|
||||
:type 'boolean
|
||||
:group 'tar)
|
||||
@ -231,12 +231,16 @@ write-date, checksum, link-type, and link-name."
|
||||
(setq linkname (substring string tar-link-offset link-end))
|
||||
(if default-enable-multibyte-characters
|
||||
(setq name
|
||||
(decode-coding-string name (or file-name-coding-system
|
||||
'undecided))
|
||||
(decode-coding-string name
|
||||
(or file-name-coding-system
|
||||
default-file-name-coding-system
|
||||
'undecided))
|
||||
linkname
|
||||
(decode-coding-string linkname (or file-name-coding-system
|
||||
'undecided))))
|
||||
(if (and (null link-p) (string-match "/$" name)) (setq link-p 5)) ; directory
|
||||
(decode-coding-string linkname
|
||||
(or file-name-coding-system
|
||||
default-file-name-coding-system
|
||||
'undecided))))
|
||||
(if (and (null link-p) (string-match "/\\'" name)) (setq link-p 5)) ; directory
|
||||
(make-tar-header
|
||||
name
|
||||
(tar-parse-octal-integer string tar-mode-offset tar-uid-offset)
|
||||
@ -284,12 +288,11 @@ write-date, checksum, link-type, and link-name."
|
||||
(list hi lo))))
|
||||
|
||||
(defun tar-parse-octal-integer-safe (string)
|
||||
(let ((L (length string)))
|
||||
(if (= L 0) (error "empty string"))
|
||||
(dotimes (i L)
|
||||
(if (or (< (aref string i) ?0)
|
||||
(> (aref string i) ?7))
|
||||
(error "`%c' is not an octal digit" (aref string i)))))
|
||||
(if (zerop (length string)) (error "empty string"))
|
||||
(mapc (lambda (c)
|
||||
(if (or (< c ?0) (> c ?7))
|
||||
(error "`%c' is not an octal digit" c)))
|
||||
string)
|
||||
(tar-parse-octal-integer string))
|
||||
|
||||
|
||||
@ -343,7 +346,7 @@ MODE should be an integer which is a file mode value."
|
||||
(gname (tar-header-gname tar-hblock))
|
||||
(size (tar-header-size tar-hblock))
|
||||
(time (tar-header-date tar-hblock))
|
||||
(ck (tar-header-checksum tar-hblock))
|
||||
;; (ck (tar-header-checksum tar-hblock))
|
||||
(type (tar-header-link-type tar-hblock))
|
||||
(link-name (tar-header-link-name tar-hblock)))
|
||||
(format "%c%c%s%8s/%-8s%7s%s %s%s"
|
||||
@ -403,147 +406,143 @@ MODE should be an integer which is a file mode value."
|
||||
Place a dired-like listing on the front;
|
||||
then narrow to it, so that only that listing
|
||||
is visible (and the real data of the buffer is hidden)."
|
||||
(set-buffer-multibyte nil)
|
||||
(let* ((result '())
|
||||
(pos (point-min))
|
||||
(progress-reporter
|
||||
(make-progress-reporter "Parsing tar file..."
|
||||
(point-min) (max 1 (- (buffer-size) 1024))))
|
||||
tokens)
|
||||
(while (and (<= (+ pos 512) (point-max))
|
||||
(not (eq 'empty-tar-block
|
||||
(setq tokens
|
||||
(tar-header-block-tokenize
|
||||
(buffer-substring pos (+ pos 512)))))))
|
||||
(setq pos (+ pos 512))
|
||||
(progress-reporter-update progress-reporter pos)
|
||||
(if (eq (tar-header-link-type tokens) 20)
|
||||
;; Foo. There's an extra empty block after these.
|
||||
(setq pos (+ pos 512)))
|
||||
(let ((size (tar-header-size tokens)))
|
||||
(if (< size 0)
|
||||
(error "%s has size %s - corrupted"
|
||||
(tar-header-name tokens) size))
|
||||
;
|
||||
; This is just too slow. Don't really need it anyway....
|
||||
;(tar-header-block-check-checksum
|
||||
; hblock (tar-header-block-checksum hblock)
|
||||
; (tar-header-name tokens))
|
||||
(let ((modified (buffer-modified-p)))
|
||||
(set-buffer-multibyte nil)
|
||||
(let* ((result '())
|
||||
(pos (point-min))
|
||||
(progress-reporter
|
||||
(make-progress-reporter "Parsing tar file..."
|
||||
(point-min) (max 1 (- (buffer-size) 1024))))
|
||||
tokens)
|
||||
(while (and (<= (+ pos 512) (point-max))
|
||||
(not (eq 'empty-tar-block
|
||||
(setq tokens
|
||||
(tar-header-block-tokenize
|
||||
(buffer-substring pos (+ pos 512)))))))
|
||||
(setq pos (+ pos 512))
|
||||
(progress-reporter-update progress-reporter pos)
|
||||
(if (eq (tar-header-link-type tokens) 20)
|
||||
;; Foo. There's an extra empty block after these.
|
||||
(setq pos (+ pos 512)))
|
||||
(let ((size (tar-header-size tokens)))
|
||||
(if (< size 0)
|
||||
(error "%s has size %s - corrupted"
|
||||
(tar-header-name tokens) size))
|
||||
;
|
||||
; This is just too slow. Don't really need it anyway....
|
||||
;(tar-header-block-check-checksum
|
||||
; hblock (tar-header-block-checksum hblock)
|
||||
; (tar-header-name tokens))
|
||||
|
||||
(setq result (cons (make-tar-desc pos tokens) result))
|
||||
(push (make-tar-desc pos tokens) result)
|
||||
|
||||
(and (null (tar-header-link-type tokens))
|
||||
(> size 0)
|
||||
(setq pos
|
||||
(+ pos 512 (ash (ash (1- size) -9) 9)) ; this works
|
||||
;(+ pos (+ size (- 512 (rem (1- size) 512)))) ; this doesn't
|
||||
))))
|
||||
(make-local-variable 'tar-parse-info)
|
||||
(setq tar-parse-info (nreverse result))
|
||||
;; A tar file should end with a block or two of nulls,
|
||||
;; but let's not get a fatal error if it doesn't.
|
||||
(if (eq tokens 'empty-tar-block)
|
||||
(progress-reporter-done progress-reporter)
|
||||
(message "Warning: premature EOF parsing tar file")))
|
||||
(save-excursion
|
||||
(and (null (tar-header-link-type tokens))
|
||||
(> size 0)
|
||||
(setq pos
|
||||
(+ pos 512 (ash (ash (1- size) -9) 9)) ; this works
|
||||
;(+ pos (+ size (- 512 (rem (1- size) 512)))) ; this doesn't
|
||||
))))
|
||||
(make-local-variable 'tar-parse-info)
|
||||
(setq tar-parse-info (nreverse result))
|
||||
;; A tar file should end with a block or two of nulls,
|
||||
;; but let's not get a fatal error if it doesn't.
|
||||
(if (eq tokens 'empty-tar-block)
|
||||
(progress-reporter-done progress-reporter)
|
||||
(message "Warning: premature EOF parsing tar file")))
|
||||
(set-buffer-multibyte default-enable-multibyte-characters)
|
||||
(goto-char (point-min))
|
||||
(let ((buffer-read-only nil)
|
||||
(summaries nil))
|
||||
(let ((inhibit-read-only t))
|
||||
;; Collect summary lines and insert them all at once since tar files
|
||||
;; can be pretty big.
|
||||
(dolist (tar-desc (reverse tar-parse-info))
|
||||
(setq summaries
|
||||
(cons (tar-header-block-summarize (tar-desc-tokens tar-desc))
|
||||
(cons "\n"
|
||||
summaries))))
|
||||
(let ((total-summaries (apply 'concat summaries)))
|
||||
(if (multibyte-string-p total-summaries)
|
||||
(set-buffer-multibyte t))
|
||||
(insert total-summaries))
|
||||
(make-local-variable 'tar-header-offset)
|
||||
(setq tar-header-offset (point))
|
||||
(narrow-to-region (point-min) tar-header-offset)
|
||||
(if enable-multibyte-characters
|
||||
(setq tar-header-offset (position-bytes tar-header-offset)))
|
||||
(set-buffer-modified-p nil))))
|
||||
(let ((total-summaries
|
||||
(mapconcat
|
||||
(lambda (tar-desc)
|
||||
(tar-header-block-summarize (tar-desc-tokens tar-desc)))
|
||||
tar-parse-info
|
||||
"\n")))
|
||||
(insert total-summaries "\n"))
|
||||
(narrow-to-region (point-min) (point))
|
||||
(set (make-local-variable 'tar-header-offset) (position-bytes (point)))
|
||||
(goto-char (point-min))
|
||||
(restore-buffer-modified-p modified))))
|
||||
|
||||
(defvar tar-mode-map nil "*Local keymap for Tar mode listings.")
|
||||
(defvar tar-mode-map
|
||||
(let ((map (make-keymap)))
|
||||
(suppress-keymap map)
|
||||
(define-key map " " 'tar-next-line)
|
||||
(define-key map "C" 'tar-copy)
|
||||
(define-key map "d" 'tar-flag-deleted)
|
||||
(define-key map "\^D" 'tar-flag-deleted)
|
||||
(define-key map "e" 'tar-extract)
|
||||
(define-key map "f" 'tar-extract)
|
||||
(define-key map "\C-m" 'tar-extract)
|
||||
(define-key map [mouse-2] 'tar-mouse-extract)
|
||||
(define-key map "g" 'revert-buffer)
|
||||
(define-key map "h" 'describe-mode)
|
||||
(define-key map "n" 'tar-next-line)
|
||||
(define-key map "\^N" 'tar-next-line)
|
||||
(define-key map [down] 'tar-next-line)
|
||||
(define-key map "o" 'tar-extract-other-window)
|
||||
(define-key map "p" 'tar-previous-line)
|
||||
(define-key map "q" 'quit-window)
|
||||
(define-key map "\^P" 'tar-previous-line)
|
||||
(define-key map [up] 'tar-previous-line)
|
||||
(define-key map "R" 'tar-rename-entry)
|
||||
(define-key map "u" 'tar-unflag)
|
||||
(define-key map "v" 'tar-view)
|
||||
(define-key map "x" 'tar-expunge)
|
||||
(define-key map "\177" 'tar-unflag-backwards)
|
||||
(define-key map "E" 'tar-extract-other-window)
|
||||
(define-key map "M" 'tar-chmod-entry)
|
||||
(define-key map "G" 'tar-chgrp-entry)
|
||||
(define-key map "O" 'tar-chown-entry)
|
||||
|
||||
(if tar-mode-map
|
||||
nil
|
||||
(setq tar-mode-map (make-keymap))
|
||||
(suppress-keymap tar-mode-map)
|
||||
(define-key tar-mode-map " " 'tar-next-line)
|
||||
(define-key tar-mode-map "C" 'tar-copy)
|
||||
(define-key tar-mode-map "d" 'tar-flag-deleted)
|
||||
(define-key tar-mode-map "\^D" 'tar-flag-deleted)
|
||||
(define-key tar-mode-map "e" 'tar-extract)
|
||||
(define-key tar-mode-map "f" 'tar-extract)
|
||||
(define-key tar-mode-map "\C-m" 'tar-extract)
|
||||
(define-key tar-mode-map [mouse-2] 'tar-mouse-extract)
|
||||
(define-key tar-mode-map "g" 'revert-buffer)
|
||||
(define-key tar-mode-map "h" 'describe-mode)
|
||||
(define-key tar-mode-map "n" 'tar-next-line)
|
||||
(define-key tar-mode-map "\^N" 'tar-next-line)
|
||||
(define-key tar-mode-map [down] 'tar-next-line)
|
||||
(define-key tar-mode-map "o" 'tar-extract-other-window)
|
||||
(define-key tar-mode-map "p" 'tar-previous-line)
|
||||
(define-key tar-mode-map "q" 'quit-window)
|
||||
(define-key tar-mode-map "\^P" 'tar-previous-line)
|
||||
(define-key tar-mode-map [up] 'tar-previous-line)
|
||||
(define-key tar-mode-map "R" 'tar-rename-entry)
|
||||
(define-key tar-mode-map "u" 'tar-unflag)
|
||||
(define-key tar-mode-map "v" 'tar-view)
|
||||
(define-key tar-mode-map "x" 'tar-expunge)
|
||||
(define-key tar-mode-map "\177" 'tar-unflag-backwards)
|
||||
(define-key tar-mode-map "E" 'tar-extract-other-window)
|
||||
(define-key tar-mode-map "M" 'tar-chmod-entry)
|
||||
(define-key tar-mode-map "G" 'tar-chgrp-entry)
|
||||
(define-key tar-mode-map "O" 'tar-chown-entry)
|
||||
)
|
||||
|
||||
;; Make menu bar items.
|
||||
;; Make menu bar items.
|
||||
|
||||
;; Get rid of the Edit menu bar item to save space.
|
||||
(define-key tar-mode-map [menu-bar edit] 'undefined)
|
||||
;; Get rid of the Edit menu bar item to save space.
|
||||
(define-key map [menu-bar edit] 'undefined)
|
||||
|
||||
(define-key tar-mode-map [menu-bar immediate]
|
||||
(cons "Immediate" (make-sparse-keymap "Immediate")))
|
||||
(define-key map [menu-bar immediate]
|
||||
(cons "Immediate" (make-sparse-keymap "Immediate")))
|
||||
|
||||
(define-key tar-mode-map [menu-bar immediate view]
|
||||
'("View This File" . tar-view))
|
||||
(define-key tar-mode-map [menu-bar immediate display]
|
||||
'("Display in Other Window" . tar-display-other-window))
|
||||
(define-key tar-mode-map [menu-bar immediate find-file-other-window]
|
||||
'("Find in Other Window" . tar-extract-other-window))
|
||||
(define-key tar-mode-map [menu-bar immediate find-file]
|
||||
'("Find This File" . tar-extract))
|
||||
(define-key map [menu-bar immediate view]
|
||||
'("View This File" . tar-view))
|
||||
(define-key map [menu-bar immediate display]
|
||||
'("Display in Other Window" . tar-display-other-window))
|
||||
(define-key map [menu-bar immediate find-file-other-window]
|
||||
'("Find in Other Window" . tar-extract-other-window))
|
||||
(define-key map [menu-bar immediate find-file]
|
||||
'("Find This File" . tar-extract))
|
||||
|
||||
(define-key tar-mode-map [menu-bar mark]
|
||||
(cons "Mark" (make-sparse-keymap "Mark")))
|
||||
(define-key map [menu-bar mark]
|
||||
(cons "Mark" (make-sparse-keymap "Mark")))
|
||||
|
||||
(define-key tar-mode-map [menu-bar mark unmark-all]
|
||||
'("Unmark All" . tar-clear-modification-flags))
|
||||
(define-key tar-mode-map [menu-bar mark deletion]
|
||||
'("Flag" . tar-flag-deleted))
|
||||
(define-key tar-mode-map [menu-bar mark unmark]
|
||||
'("Unflag" . tar-unflag))
|
||||
(define-key map [menu-bar mark unmark-all]
|
||||
'("Unmark All" . tar-clear-modification-flags))
|
||||
(define-key map [menu-bar mark deletion]
|
||||
'("Flag" . tar-flag-deleted))
|
||||
(define-key map [menu-bar mark unmark]
|
||||
'("Unflag" . tar-unflag))
|
||||
|
||||
(define-key tar-mode-map [menu-bar operate]
|
||||
(cons "Operate" (make-sparse-keymap "Operate")))
|
||||
(define-key map [menu-bar operate]
|
||||
(cons "Operate" (make-sparse-keymap "Operate")))
|
||||
|
||||
(define-key map [menu-bar operate chown]
|
||||
'("Change Owner..." . tar-chown-entry))
|
||||
(define-key map [menu-bar operate chgrp]
|
||||
'("Change Group..." . tar-chgrp-entry))
|
||||
(define-key map [menu-bar operate chmod]
|
||||
'("Change Mode..." . tar-chmod-entry))
|
||||
(define-key map [menu-bar operate rename]
|
||||
'("Rename to..." . tar-rename-entry))
|
||||
(define-key map [menu-bar operate copy]
|
||||
'("Copy to..." . tar-copy))
|
||||
(define-key map [menu-bar operate expunge]
|
||||
'("Expunge Marked Files" . tar-expunge))
|
||||
|
||||
map)
|
||||
"Local keymap for Tar mode listings.")
|
||||
|
||||
(define-key tar-mode-map [menu-bar operate chown]
|
||||
'("Change Owner..." . tar-chown-entry))
|
||||
(define-key tar-mode-map [menu-bar operate chgrp]
|
||||
'("Change Group..." . tar-chgrp-entry))
|
||||
(define-key tar-mode-map [menu-bar operate chmod]
|
||||
'("Change Mode..." . tar-chmod-entry))
|
||||
(define-key tar-mode-map [menu-bar operate rename]
|
||||
'("Rename to..." . tar-rename-entry))
|
||||
(define-key tar-mode-map [menu-bar operate copy]
|
||||
'("Copy to..." . tar-copy))
|
||||
(define-key tar-mode-map [menu-bar operate expunge]
|
||||
'("Expunge Marked Files" . tar-expunge))
|
||||
|
||||
;; tar mode is suitable only for specially formatted data.
|
||||
(put 'tar-mode 'mode-class 'special)
|
||||
@ -559,7 +558,7 @@ or click mouse-2 on the file's line in the Tar mode buffer.
|
||||
Type `c' to copy an entry from the tar file into another file on disk.
|
||||
|
||||
If you edit a sub-file of this archive (as with the `e' command) and
|
||||
save it with Control-x Control-s, the contents of that buffer will be
|
||||
save it with \\[save-buffer], the contents of that buffer will be
|
||||
saved back into the tar-file buffer; in this way you can edit a file
|
||||
inside of a tar archive without extracting it and re-archiving it.
|
||||
|
||||
@ -787,17 +786,17 @@ appear on disk when you save the tar-file's buffer."
|
||||
|
||||
|
||||
(defun tar-extract-other-window ()
|
||||
"*In Tar mode, find this entry of the tar file in another window."
|
||||
"In Tar mode, find this entry of the tar file in another window."
|
||||
(interactive)
|
||||
(tar-extract t))
|
||||
|
||||
(defun tar-display-other-window ()
|
||||
"*In Tar mode, display this entry of the tar file in another window."
|
||||
"In Tar mode, display this entry of the tar file in another window."
|
||||
(interactive)
|
||||
(tar-extract 'display))
|
||||
|
||||
(defun tar-view ()
|
||||
"*In Tar mode, view the tar file entry on this line."
|
||||
"In Tar mode, view the tar file entry on this line."
|
||||
(interactive)
|
||||
(tar-extract 'view))
|
||||
|
||||
@ -823,7 +822,7 @@ appear on disk when you save the tar-file's buffer."
|
||||
|
||||
|
||||
(defun tar-copy (&optional to-file)
|
||||
"*In Tar mode, extract this entry of the tar file into a file on disk.
|
||||
"In Tar mode, extract this entry of the tar file into a file on disk.
|
||||
If TO-FILE is not supplied, it is prompted for, defaulting to the name of
|
||||
the current tar-entry."
|
||||
(interactive (list (tar-read-file-name)))
|
||||
@ -856,11 +855,11 @@ the current tar-entry."
|
||||
(message "Copied tar entry %s to %s" name to-file)))
|
||||
|
||||
(defun tar-flag-deleted (p &optional unflag)
|
||||
"*In Tar mode, mark this sub-file to be deleted from the tar file.
|
||||
"In Tar mode, mark this sub-file to be deleted from the tar file.
|
||||
With a prefix argument, mark that many files."
|
||||
(interactive "p")
|
||||
(beginning-of-line)
|
||||
(dotimes (i (if (< p 0) (- p) p))
|
||||
(dotimes (i (abs p))
|
||||
(if (tar-current-descriptor unflag) ; barf if we're not on an entry-line.
|
||||
(progn
|
||||
(delete-char 1)
|
||||
@ -869,13 +868,13 @@ With a prefix argument, mark that many files."
|
||||
(if (eobp) nil (forward-char 36)))
|
||||
|
||||
(defun tar-unflag (p)
|
||||
"*In Tar mode, un-mark this sub-file if it is marked to be deleted.
|
||||
"In Tar mode, un-mark this sub-file if it is marked to be deleted.
|
||||
With a prefix argument, un-mark that many files forward."
|
||||
(interactive "p")
|
||||
(tar-flag-deleted p t))
|
||||
|
||||
(defun tar-unflag-backwards (p)
|
||||
"*In Tar mode, un-mark this sub-file if it is marked to be deleted.
|
||||
"In Tar mode, un-mark this sub-file if it is marked to be deleted.
|
||||
With a prefix argument, un-mark that many files backward."
|
||||
(interactive "p")
|
||||
(tar-flag-deleted (- p) t))
|
||||
@ -886,7 +885,7 @@ With a prefix argument, un-mark that many files backward."
|
||||
"Expunge the tar-entry specified by the current line."
|
||||
(let* ((descriptor (tar-current-descriptor))
|
||||
(tokens (tar-desc-tokens descriptor))
|
||||
(line (tar-desc-data-start descriptor))
|
||||
;; (line (tar-desc-data-start descriptor))
|
||||
(name (tar-header-name tokens))
|
||||
(size (tar-header-size tokens))
|
||||
(link-p (tar-header-link-type tokens))
|
||||
@ -898,18 +897,16 @@ With a prefix argument, un-mark that many files backward."
|
||||
(beginning-of-line)
|
||||
(let ((line-start (point)))
|
||||
(end-of-line) (forward-char)
|
||||
(let ((line-len (- (point) line-start)))
|
||||
(delete-region line-start (point))
|
||||
;;
|
||||
;; decrement the header-pointer to be in sync...
|
||||
(setq tar-header-offset (- tar-header-offset line-len))))
|
||||
;; decrement the header-pointer to be in sync...
|
||||
(setq tar-header-offset (- tar-header-offset (- (point) line-start)))
|
||||
(delete-region line-start (point)))
|
||||
;;
|
||||
;; delete the data pointer...
|
||||
(setq tar-parse-info (delq descriptor tar-parse-info))
|
||||
;;
|
||||
;; delete the data from inside the file...
|
||||
(widen)
|
||||
(let* ((data-start (+ start tar-header-offset -513))
|
||||
(let* ((data-start (+ start (- tar-header-offset (point-min)) -512))
|
||||
(data-end (+ data-start 512 (ash (ash (+ size 511) -9) 9))))
|
||||
(delete-region data-start data-end)
|
||||
;;
|
||||
@ -927,7 +924,7 @@ With a prefix argument, un-mark that many files backward."
|
||||
|
||||
|
||||
(defun tar-expunge (&optional noconfirm)
|
||||
"*In Tar mode, delete all the archived files flagged for deletion.
|
||||
"In Tar mode, delete all the archived files flagged for deletion.
|
||||
This does not modify the disk image; you must save the tar file itself
|
||||
for this to be permanent."
|
||||
(interactive)
|
||||
@ -935,8 +932,9 @@ for this to be permanent."
|
||||
(y-or-n-p "Expunge files marked for deletion? "))
|
||||
(let ((n 0)
|
||||
(multibyte enable-multibyte-characters))
|
||||
(set-buffer-multibyte nil)
|
||||
(save-excursion
|
||||
(widen)
|
||||
(set-buffer-multibyte nil)
|
||||
(goto-char (point-min))
|
||||
(while (not (eobp))
|
||||
(if (looking-at "D")
|
||||
@ -945,8 +943,9 @@ for this to be permanent."
|
||||
(forward-line 1)))
|
||||
;; after doing the deletions, add any padding that may be necessary.
|
||||
(tar-pad-to-blocksize)
|
||||
(widen)
|
||||
(set-buffer-multibyte multibyte)
|
||||
(narrow-to-region (point-min) tar-header-offset))
|
||||
(set-buffer-multibyte multibyte)
|
||||
(if (zerop n)
|
||||
(message "Nothing to expunge.")
|
||||
(message "%s files expunged. Be sure to save this buffer." n)))))
|
||||
@ -964,7 +963,7 @@ for this to be permanent."
|
||||
|
||||
|
||||
(defun tar-chown-entry (new-uid)
|
||||
"*Change the user-id associated with this entry in the tar file.
|
||||
"Change the user-id associated with this entry in the tar file.
|
||||
If this tar file was written by GNU tar, then you will be able to edit
|
||||
the user id as a string; otherwise, you must edit it as a number.
|
||||
You can force editing as a number by calling this with a prefix arg.
|
||||
@ -992,7 +991,7 @@ for this to be permanent."
|
||||
|
||||
|
||||
(defun tar-chgrp-entry (new-gid)
|
||||
"*Change the group-id associated with this entry in the tar file.
|
||||
"Change the group-id associated with this entry in the tar file.
|
||||
If this tar file was written by GNU tar, then you will be able to edit
|
||||
the group id as a string; otherwise, you must edit it as a number.
|
||||
You can force editing as a number by calling this with a prefix arg.
|
||||
@ -1020,7 +1019,7 @@ for this to be permanent."
|
||||
(concat (substring (format "%6o" new-gid) 0 6) "\000 ")))))
|
||||
|
||||
(defun tar-rename-entry (new-name)
|
||||
"*Change the name associated with this entry in the tar file.
|
||||
"Change the name associated with this entry in the tar file.
|
||||
This does not modify the disk image; you must save the tar file itself
|
||||
for this to be permanent."
|
||||
(interactive
|
||||
@ -1030,12 +1029,16 @@ for this to be permanent."
|
||||
(if (> (length new-name) 98) (error "name too long"))
|
||||
(tar-setf (tar-header-name (tar-desc-tokens (tar-current-descriptor)))
|
||||
new-name)
|
||||
(if (multibyte-string-p new-name)
|
||||
(setq new-name (encode-coding-string new-name
|
||||
(or file-name-coding-system
|
||||
default-file-name-coding-system))))
|
||||
(tar-alter-one-field 0
|
||||
(substring (concat new-name (make-string 99 0)) 0 99)))
|
||||
|
||||
|
||||
(defun tar-chmod-entry (new-mode)
|
||||
"*Change the protection bits associated with this entry in the tar file.
|
||||
"Change the protection bits associated with this entry in the tar file.
|
||||
This does not modify the disk image; you must save the tar file itself
|
||||
for this to be permanent."
|
||||
(interactive (list (tar-parse-octal-integer-safe
|
||||
@ -1063,7 +1066,9 @@ for this to be permanent."
|
||||
|
||||
(widen)
|
||||
(set-buffer-multibyte nil)
|
||||
(let* ((start (+ (tar-desc-data-start descriptor) tar-header-offset -513)))
|
||||
(let* ((start (+ (tar-desc-data-start descriptor)
|
||||
(- tar-header-offset (point-min))
|
||||
-512)))
|
||||
;;
|
||||
;; delete the old field and insert a new one.
|
||||
(goto-char (+ start data-position))
|
||||
@ -1196,9 +1201,7 @@ to make your changes permanent."
|
||||
;; Insert the new text after the old, before deleting,
|
||||
;; to preserve the window start.
|
||||
(let ((line (tar-header-block-summarize tokens t)))
|
||||
(if (multibyte-string-p line)
|
||||
(insert-before-markers (string-as-unibyte line) "\n")
|
||||
(insert-before-markers line "\n")))
|
||||
(insert-before-markers (string-as-unibyte line) "\n"))
|
||||
(delete-region p after)
|
||||
(setq tar-header-offset (marker-position m)))
|
||||
)))
|
||||
@ -1234,19 +1237,17 @@ Leaves the region wide."
|
||||
(size (if link-p 0 (tar-header-size tokens)))
|
||||
(data-end (+ start size))
|
||||
(bbytes (ash tar-anal-blocksize 9))
|
||||
(pad-to (+ bbytes (* bbytes (/ (1- data-end) bbytes))))
|
||||
(pad-to (+ bbytes (* bbytes (/ (- data-end (point-min)) bbytes))))
|
||||
(inhibit-read-only t) ; ##
|
||||
)
|
||||
;; If the padding after the last data is too long, delete some;
|
||||
;; else insert some until we are padded out to the right number of blocks.
|
||||
;;
|
||||
(goto-char (+ (or tar-header-offset 0) data-end))
|
||||
(if (> (1+ (buffer-size)) (+ (or tar-header-offset 0) pad-to))
|
||||
(delete-region (+ (or tar-header-offset 0) pad-to) (1+ (buffer-size)))
|
||||
(insert (make-string (- (+ (or tar-header-offset 0) pad-to)
|
||||
(1+ (buffer-size)))
|
||||
0)))
|
||||
)))
|
||||
(let ((goal-end (+ (or tar-header-offset 0) pad-to)))
|
||||
(if (> (point-max) goal-end)
|
||||
(delete-region goal-end (point-max))
|
||||
(goto-char (point-max))
|
||||
(insert (make-string (- goal-end (point-max)) ?\0)))))))
|
||||
|
||||
|
||||
;; Used in write-file-hook to write tar-files out correctly.
|
||||
@ -1273,5 +1274,5 @@ Leaves the region wide."
|
||||
|
||||
(provide 'tar-mode)
|
||||
|
||||
;;; arch-tag: 8a585a4a-340e-42c2-89e7-d3b1013a4b78
|
||||
;; arch-tag: 8a585a4a-340e-42c2-89e7-d3b1013a4b78
|
||||
;;; tar-mode.el ends here
|
||||
|
35
lisp/term.el
35
lisp/term.el
@ -1406,8 +1406,8 @@ The main purpose is to get rid of the local keymap."
|
||||
:UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC\
|
||||
:kl=\\EOD:kd=\\EOB:kr=\\EOC:ku=\\EOA:kN=\\E[6~:kP=\\E[5~:@7=\\E[4~:kh=\\E[1~\
|
||||
:mk=\\E[8m:cb=\\E[1K:op=\\E[39;49m:Co#8:pa#64:AB=\\E[4%%dm:AF=\\E[3%%dm:cr=^M\
|
||||
:bl=^G:do=^J:le=^H:ta=^I:se=\E[27m:ue=\E24m\
|
||||
:kb=^?:kD=^[[3~:sc=\E7:rc=\E8:r1=\Ec:"
|
||||
:bl=^G:do=^J:le=^H:ta=^I:se=\\E[27m:ue=\\E24m\
|
||||
:kb=^?:kD=^[[3~:sc=\\E7:rc=\\E8:r1=\\Ec:"
|
||||
;;; : -undefine ic
|
||||
;;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
|
||||
"termcap capabilities supported")
|
||||
@ -3615,21 +3615,32 @@ all pending output has been dealt with."))
|
||||
(defun term-down (down &optional check-for-scroll)
|
||||
"Move down DOWN screen lines vertically."
|
||||
(let ((start-column (term-horizontal-column)))
|
||||
(if (and check-for-scroll (or term-scroll-with-delete term-pager-count))
|
||||
(setq down (term-handle-scroll down)))
|
||||
(term-adjust-current-row-cache down)
|
||||
(if (or (/= (point) (point-max)) (< down 0))
|
||||
(setq down (- down (term-vertical-motion down))))
|
||||
;; Extend buffer with extra blank lines if needed.
|
||||
(when (and check-for-scroll (or term-scroll-with-delete term-pager-count))
|
||||
(setq down (term-handle-scroll down)))
|
||||
(unless (and (= term-current-row 0) (< down 0))
|
||||
(term-adjust-current-row-cache down)
|
||||
(when (or (/= (point) (point-max)) (< down 0))
|
||||
(setq down (- down (term-vertical-motion down)))))
|
||||
(cond ((> down 0)
|
||||
;; Extend buffer with extra blank lines if needed.
|
||||
(term-insert-char ?\n down)
|
||||
(setq term-current-column 0)
|
||||
(setq term-start-line-column 0))
|
||||
(t
|
||||
(setq term-current-column nil)
|
||||
(when (= term-current-row 0)
|
||||
;; Insert lines if at the beginning.
|
||||
(save-excursion (term-insert-char ?\n (- down)))
|
||||
(save-excursion
|
||||
(let (p)
|
||||
;; Delete lines from the end.
|
||||
(forward-line term-height)
|
||||
(setq p (point))
|
||||
(forward-line (- down))
|
||||
(delete-region p (point)))))
|
||||
(setq term-current-column 0)
|
||||
(setq term-start-line-column (current-column))))
|
||||
(if start-column
|
||||
(term-move-columns start-column))))
|
||||
(when start-column
|
||||
(term-move-columns start-column))))
|
||||
|
||||
;; Assuming point is at the beginning of a screen line,
|
||||
;; if the line above point wraps around, add a ?\n to undo the wrapping.
|
||||
@ -3695,7 +3706,7 @@ Should only be called when point is at the start of a screen line."
|
||||
|
||||
;;; Insert COUNT spaces after point, but do not change any of
|
||||
;;; following screen lines. Hence we may have to delete characters
|
||||
;;; at teh end of this screen line to make room.
|
||||
;;; at the end of this screen line to make room.
|
||||
|
||||
(defun term-insert-spaces (count)
|
||||
(let ((save-point (point)) (save-eol) (point-at-eol))
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -9103,7 +9103,6 @@ headlines. The default is 3. Lower levels will become bulleted lists."
|
||||
(if org-export-html-with-timestamp
|
||||
(insert org-export-html-html-helper-timestamp))
|
||||
(insert "</body>\n</html>\n")
|
||||
(debug)
|
||||
(normal-mode)
|
||||
(save-buffer)
|
||||
(goto-char (point-min)))))
|
||||
|
@ -2262,7 +2262,7 @@ IGNORE-WORDS List of words which should be removed from the string."
|
||||
|
||||
(defun reftex-use-fonts ()
|
||||
;; Return t if we can and want to use fonts.
|
||||
(and window-system
|
||||
(and ; window-system
|
||||
reftex-use-fonts
|
||||
(featurep 'font-lock)))
|
||||
|
||||
|
@ -1,9 +1,14 @@
|
||||
2005-11-16 Juergen Hoetzel <emacs@hoetzel.info> (tiny change)
|
||||
|
||||
* url-handlers.el (url-insert-file-contents): Use the charset info
|
||||
provided by the HTTP server, if any.
|
||||
|
||||
2005-10-20 CHENG Gao <chenggao@gmail.com> (tiny change)
|
||||
|
||||
* url-nfs.el (top level):
|
||||
* url-handlers.el (directory-files):
|
||||
* url-nfs.el (top level):
|
||||
* url-handlers.el (directory-files):
|
||||
* url-file.el (top level):
|
||||
* url-dired.el (url-dired-minor-mode-map):
|
||||
* url-dired.el (url-dired-minor-mode-map):
|
||||
* url-http.el (url-http-chunked-encoding-after-change-function):
|
||||
Remove XEmacs support.
|
||||
|
||||
|
@ -202,6 +202,7 @@ accessible."
|
||||
(defun url-insert-file-contents (url &optional visit beg end replace)
|
||||
(let ((buffer (url-retrieve-synchronously url))
|
||||
(handle nil)
|
||||
(charset nil)
|
||||
(data nil))
|
||||
(if (not buffer)
|
||||
(error "Opening input file: No such file or directory, %s" url))
|
||||
@ -215,13 +216,14 @@ accessible."
|
||||
(mm-destroy-parts handle)
|
||||
(if replace (delete-region (point-min) (point-max)))
|
||||
(save-excursion
|
||||
(setq charset (mail-content-type-get (mm-handle-type handle)
|
||||
'charset))
|
||||
(let ((start (point)))
|
||||
(insert data)
|
||||
;; FIXME: for text/plain data, we sometimes receive a `charset'
|
||||
;; annotation which we could use as a hint of the locale in use
|
||||
;; at the remote site. Not sure how/if that should be done. --Stef
|
||||
(decode-coding-inserted-region
|
||||
start (point) url visit beg end replace)))
|
||||
(if charset
|
||||
(insert (mm-decode-string data (mm-charset-to-coding-system charset)))
|
||||
(progn
|
||||
(insert data)
|
||||
(decode-coding-inserted-region start (point) url visit beg end replace)))))
|
||||
(list url (length data))))
|
||||
|
||||
(defun url-file-name-completion (url directory)
|
||||
|
@ -116,8 +116,11 @@ This is only meaningful if you don't use the implicit checkout model
|
||||
(cd (file-name-directory file))
|
||||
(condition-case nil
|
||||
(vc-svn-command t 0 file "status" "-v")
|
||||
;; We can't find an `svn' executable. We could also deregister SVN.
|
||||
(file-error nil))
|
||||
;; Some problem happened. E.g. We can't find an `svn' executable.
|
||||
;; We used to only catch `file-error' but when the process is run on
|
||||
;; a remote host via Tramp, the error is only reported via the
|
||||
;; exit status which is turned into an `error' by vc-do-command.
|
||||
(error nil))
|
||||
(vc-svn-parse-status t)
|
||||
(eq 'SVN (vc-file-getprop file 'vc-backend)))))
|
||||
|
||||
|
@ -3575,7 +3575,7 @@ example:
|
||||
;; Fixme: match
|
||||
(define-widget 'color 'editable-field
|
||||
"Choose a color name (with sample)."
|
||||
:format "%t: %v (%{sample%})\n"
|
||||
:format "%{%t%}: %v (%{sample%})\n"
|
||||
:size 10
|
||||
:tag "Color"
|
||||
:value "black"
|
||||
|
@ -1,3 +1,8 @@
|
||||
2005-11-16 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* modes.texi (Minor Mode Conventions): Use custom-set-minor-mode.
|
||||
(Minor Mode Conventions): Mention the use of a hook.
|
||||
|
||||
2005-11-06 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* files.texi (Magic File Names): find-file-name-handler checks the
|
||||
@ -31,9 +36,9 @@
|
||||
|
||||
2005-10-27 Masatake YAMATO <jet@gyve.org>
|
||||
|
||||
* minibuf.texi (Completion Commands):
|
||||
* minibuf.texi (Completion Commands):
|
||||
Write about new optional argument for `display-completion-list'.
|
||||
|
||||
|
||||
2005-10-23 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* display.texi (Overlay Arrow): Clarify about local bindings of
|
||||
|
@ -1214,8 +1214,8 @@ The value of this variable is a list of all minor mode commands.
|
||||
There are conventions for writing minor modes just as there are for
|
||||
major modes. Several of the major mode conventions apply to minor
|
||||
modes as well: those regarding the name of the mode initialization
|
||||
function, the names of global symbols, and the use of keymaps and
|
||||
other tables.
|
||||
function, the names of global symbols, the use of a hook at the end of
|
||||
the initialization function, and the use of keymaps and other tables.
|
||||
|
||||
In addition, there are several conventions that are specific to
|
||||
minor modes. (The easiest way to follow all the conventions is to use
|
||||
@ -1327,8 +1327,7 @@ enable the mode. For example:
|
||||
"Toggle msb-mode.
|
||||
Setting this variable directly does not take effect;
|
||||
use either \\[customize] or the function `msb-mode'."
|
||||
:set (lambda (symbol value)
|
||||
(msb-mode (or value 0)))
|
||||
:set 'custom-set-minor-mode
|
||||
:initialize 'custom-initialize-default
|
||||
:version "20.4"
|
||||
:type 'boolean
|
||||
|
@ -488,7 +488,7 @@ selected window and current buffer. It is just like
|
||||
The following functions choose one of the windows on the screen,
|
||||
offering various criteria for the choice.
|
||||
|
||||
@defun get-lru-window &optional frame
|
||||
@defun get-lru-window &optional frame dedicated
|
||||
This function returns the window least recently ``used'' (that is,
|
||||
selected). If any full-width windows are present, it only considers
|
||||
these. The selected window is always the most recently used window.
|
||||
@ -496,7 +496,8 @@ these. The selected window is always the most recently used window.
|
||||
The selected window can be the least recently used window if it is the
|
||||
only window. A newly created window becomes the least recently used
|
||||
window until it is selected. A minibuffer window is never a
|
||||
candidate. Dedicated windows are never candidates, and if all
|
||||
candidate. Dedicated windows are never candidates unless the
|
||||
@var{dedicated} argument is non-@code{nil}, so if all
|
||||
existing windows are dedicated, the value is @code{nil}.
|
||||
|
||||
The argument @var{frame} controls which windows are considered.
|
||||
@ -515,11 +516,12 @@ If it is a frame, consider windows on that frame.
|
||||
@end itemize
|
||||
@end defun
|
||||
|
||||
@defun get-largest-window &optional frame
|
||||
@defun get-largest-window &optional frame dedicated
|
||||
This function returns the window with the largest area (height times
|
||||
width). If there are no side-by-side windows, then this is the window
|
||||
with the most lines. A minibuffer window is never a candidate.
|
||||
Dedicated windows are never candidates, and if all existing windows
|
||||
Dedicated windows are never candidates unless the
|
||||
@var{dedicated} argument is non-@code{nil}, so if all existing windows
|
||||
are dedicated, the value is @code{nil}.
|
||||
|
||||
If there are two candidate windows of the same size, this function
|
||||
|
@ -1,3 +1,7 @@
|
||||
2005-11-09 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* makefile.MPW (shortlisp): Sync with src/Makefile.in.
|
||||
|
||||
2005-10-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* INSTALL: Replace `Mac OS 8/9' with `Mac OS Classic'. Add
|
||||
|
@ -1077,6 +1077,9 @@ shortlisp =
|
||||
{Lisp}subr.elc ¶
|
||||
{Lisp}term:tty-colors.elc ¶
|
||||
{Lisp}font-core.elc ¶
|
||||
{Lisp}emacs-lisp:syntax.elc ¶
|
||||
{Lisp}font-lock.elc ¶
|
||||
{Lisp}jit-lock.elc ¶
|
||||
{Lisp}textmodes:fill.elc ¶
|
||||
{Lisp}textmodes:page.elc ¶
|
||||
{Lisp}textmodes:paragraphs.elc ¶
|
||||
|
@ -1,3 +1,59 @@
|
||||
2005-11-16 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* ack.texi (Acknowledgments): Acknowledge Andrew Zhilin for Emacs
|
||||
icons.
|
||||
|
||||
2005-11-12 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* help.texi (Help): Fix C-h a entry. Add C-h d entry.
|
||||
(Help Summary): Add C-h d and C-h e.
|
||||
(Apropos): Clarify that all apropos commands may search for either
|
||||
list of words or a regexp. Add C-h d for apropos-documentation.
|
||||
Describe apropos-documentation-sort-by-scores user option.
|
||||
|
||||
2005-11-10 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* gnus.texi (XVarious): Fix description of gnus-use-toolbar; add
|
||||
new variable gnus-toolbar-thickness.
|
||||
|
||||
2005-11-08 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* gnus.texi (XVarious): Revert description of gnus-use-toolbar.
|
||||
|
||||
2005-11-07 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* gnus.texi (X-Face): Fix description.
|
||||
(XVarious): Remove gnus-xmas-logo-color-alist and
|
||||
gnus-xmas-logo-color-style; fix description of gnus-use-toolbar.
|
||||
|
||||
2005-11-01 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* gnus.texi (Group Parameters): Mention new varable
|
||||
gnus-parameters-case-fold-search.
|
||||
(Home Score File): Addition.
|
||||
|
||||
2005-11-09 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* killing.texi (CUA Bindings): Add @section.
|
||||
|
||||
2005-11-10 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* emacs.texi (Top): Add CUA Bindings entry to menu.
|
||||
|
||||
* killing.texi (CUA Bindings): New node. Moved here from
|
||||
misc.texi and extended with info on rectangle commands and
|
||||
rectangle highlighting, interface to registers, and the global
|
||||
mark feature.
|
||||
|
||||
* misc.texi (Emulation): Move CUA bindings item to killing.texi.
|
||||
|
||||
* regs.texi: Prev link points to CUA Bindings node.
|
||||
|
||||
2005-11-07 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* help.texi (Help Echo): By default, help echos are only shown on
|
||||
mouse-over, not on point-over.
|
||||
|
||||
2005-11-04 J,bi(Br,bt(Bme Marant <jerome@marant.org>
|
||||
|
||||
* misc.texi (Shell Mode): Describe how to activate password echoing.
|
||||
|
@ -1470,6 +1470,9 @@ aliases, and
|
||||
tar files.
|
||||
@end itemize
|
||||
|
||||
@item
|
||||
Andrew Zhilin created the Emacs icons used beginning with Emacs 22.
|
||||
|
||||
@item
|
||||
Shenghuo Zhu wrote:
|
||||
|
||||
|
@ -285,6 +285,8 @@ Killing and Moving Text
|
||||
syntactic units such as words and sentences.
|
||||
* Graphical Kill:: The kill ring on graphical terminals:
|
||||
yanking between applications.
|
||||
* CUA Bindings:: Using @kbd{C-x}, @kbd{C-c}, @kbd{C-v} for copy
|
||||
and paste, with enhanced rectangle support.
|
||||
|
||||
Yanking
|
||||
|
||||
|
@ -3060,6 +3060,19 @@ example:
|
||||
String value of parameters will be subjected to regexp substitution, as
|
||||
the @code{to-group} example shows.
|
||||
|
||||
@vindex gnus-parameters-case-fold-search
|
||||
By default, whether comparing the group name and one of those regexps
|
||||
specified in @code{gnus-parameters} is done in a case-sensitive manner
|
||||
or a case-insensitive manner depends on the value of
|
||||
@code{case-fold-search} at the time when the comparison is done. The
|
||||
value of @code{case-fold-search} is typically @code{t}; it means, for
|
||||
example, the element @code{("INBOX\\.FOO" (total-expire . t))} might be
|
||||
applied to both the @samp{INBOX.FOO} group and the @samp{INBOX.foo}
|
||||
group. If you want to make those regexps always case-sensitive, set the
|
||||
value of the @code{gnus-parameters-case-fold-search} variable to
|
||||
@code{nil}. Otherwise, set it to @code{t} if you want to compare them
|
||||
always in a case-insensitive manner.
|
||||
|
||||
|
||||
@node Listing Groups
|
||||
@section Listing Groups
|
||||
@ -19755,7 +19768,8 @@ group name, the @var{file-name} will be used as the home score file.
|
||||
|
||||
@item
|
||||
A function. If the function returns non-@code{nil}, the result will
|
||||
be used as the home score file.
|
||||
be used as the home score file. The function will be called with the
|
||||
name of the group as the parameter.
|
||||
|
||||
@item
|
||||
A string. Use the string as the home score file.
|
||||
@ -21967,11 +21981,11 @@ function, this function will be called with the face as the argument.
|
||||
If the @code{gnus-article-x-face-too-ugly} (which is a regexp) matches
|
||||
the @code{From} header, the face will not be shown.
|
||||
|
||||
The default action under Emacs 20 is to fork off the @code{display}
|
||||
program@footnote{@code{display} is from the ImageMagick package. For
|
||||
the @code{uncompface} and @code{icontopbm} programs look for a package
|
||||
like @code{compface} or @code{faces-xface} on a GNU/Linux system.} to
|
||||
view the face.
|
||||
The default action under Emacs without image support is to fork off the
|
||||
@code{display} program@footnote{@code{display} is from the ImageMagick
|
||||
package. For the @code{uncompface} and @code{icontopbm} programs look
|
||||
for a package like @code{compface} or @code{faces-xface} on a GNU/Linux
|
||||
system.} to view the face.
|
||||
|
||||
Under XEmacs or Emacs 21+ with suitable image support, the default
|
||||
action is to display the face before the @code{From} header. (It's
|
||||
@ -22217,18 +22231,6 @@ This is where Gnus will look for pictures. Gnus will normally
|
||||
auto-detect this directory, but you may set it manually if you have an
|
||||
unusual directory structure.
|
||||
|
||||
@item gnus-xmas-logo-color-alist
|
||||
@vindex gnus-xmas-logo-color-alist
|
||||
This is an alist where the key is a type symbol and the values are the
|
||||
foreground and background color of the splash page glyph.
|
||||
|
||||
@item gnus-xmas-logo-color-style
|
||||
@vindex gnus-xmas-logo-color-style
|
||||
This is the key used to look up the color in the alist described above.
|
||||
Valid values include @code{flame}, @code{pine}, @code{moss},
|
||||
@code{irish}, @code{sky}, @code{tin}, @code{velvet}, @code{grape},
|
||||
@code{labia}, @code{berry}, @code{neutral}, and @code{september}.
|
||||
|
||||
@item gnus-xmas-modeline-glyph
|
||||
@vindex gnus-xmas-modeline-glyph
|
||||
A glyph displayed in all Gnus mode lines. It is a tiny gnu head by
|
||||
@ -22242,9 +22244,19 @@ default.
|
||||
|
||||
@item gnus-use-toolbar
|
||||
@vindex gnus-use-toolbar
|
||||
If @code{nil}, don't display toolbars. If non-@code{nil}, it should be
|
||||
one of @code{default-toolbar}, @code{top-toolbar}, @code{bottom-toolbar},
|
||||
@code{right-toolbar}, or @code{left-toolbar}.
|
||||
This variable specifies the position to display the toolbar. If
|
||||
@code{nil}, don't display toolbars. If it is non-nil, it should be one
|
||||
of the symbols @code{default}, @code{top}, @code{bottom}, @code{right},
|
||||
and @code{left}. @code{default} means to use the default toolbar, the
|
||||
rest mean to display the toolbar on the place which those names show.
|
||||
The default is @code{default}.
|
||||
|
||||
@item gnus-toolbar-thickness
|
||||
@vindex gnus-toolbar-thickness
|
||||
Cons of the height and the width specifying the thickness of a toolbar.
|
||||
The height is used for the toolbar displayed on the top or the bottom,
|
||||
the width is used for the toolbar displayed on the right or the left.
|
||||
The default is that of the default toolbar.
|
||||
|
||||
@item gnus-group-toolbar
|
||||
@vindex gnus-group-toolbar
|
||||
|
@ -46,17 +46,19 @@ manual index, then finally look in the FAQ and the package keywords.
|
||||
@table @kbd
|
||||
@item C-h a @var{topic} @key{RET}
|
||||
This searches for commands whose names match @var{topic}, which should
|
||||
be a regular expression (@pxref{Regexps}). Browse the buffer that this
|
||||
command displays to find what you are looking for. @xref{Apropos}.
|
||||
be a list of words or a regular expression (@pxref{Regexps}). Browse
|
||||
the buffer that this command displays to find what you are looking
|
||||
for. @xref{Apropos}.
|
||||
|
||||
@item M-x apropos @key{RET} @var{topic} @key{RET}
|
||||
This works like @kbd{C-h a}, but it also searches for noninteractive
|
||||
functions and for variables. @xref{Apropos}.
|
||||
|
||||
@item M-x apropos-documentation @key{RET} @var{topic} @key{RET}
|
||||
@item C-h d @var{topic} @key{RET}
|
||||
This searches the @emph{documentation strings} (the built-in short
|
||||
descriptions) of all variables and functions (not their names) for a
|
||||
match for @var{topic}, a regular expression. @xref{Apropos}.
|
||||
match for @var{topic}, a list or words or a regular expression.
|
||||
@xref{Apropos}.
|
||||
|
||||
@item C-h i d m emacs @key{RET} i @var{topic} @key{RET}
|
||||
This looks up @var{topic} in the indices of the Emacs on-line manual.
|
||||
@ -111,8 +113,8 @@ command.
|
||||
pre-written file of information.
|
||||
|
||||
@table @kbd
|
||||
@item C-h a @var{regexp} @key{RET}
|
||||
Display a list of commands whose names match @var{regexp}
|
||||
@item C-h a @var{topic} @key{RET}
|
||||
Display a list of commands whose names match word list or regexp @var{topic}
|
||||
(@code{apropos-command}).
|
||||
@item C-h b
|
||||
Display a table of all key bindings in effect now, in this order: minor
|
||||
@ -122,6 +124,13 @@ mode bindings, major mode bindings, and global bindings
|
||||
Show the name of the command that @var{key} runs
|
||||
(@code{describe-key-briefly}). Here @kbd{c} stands for ``character.''
|
||||
For more extensive information on @var{key}, use @kbd{C-h k}.
|
||||
@item C-h d @var{topic} @key{RET}
|
||||
Display a list of commands and variables whose documentation match
|
||||
word list or regexp @var{topic}
|
||||
(@code{apropos-documentation}).
|
||||
@item C-h e
|
||||
Display the @code{*Messages*} buffer
|
||||
(@code{view-echo-area-messages}).
|
||||
@item C-h f @var{function} @key{RET}
|
||||
Display documentation on the Lisp function named @var{function}
|
||||
(@code{describe-function}). Since commands are Lisp functions,
|
||||
@ -304,25 +313,27 @@ view, describe, default.
|
||||
@end quotation
|
||||
|
||||
@findex apropos-variable
|
||||
To list all user variables that match a regexp, use the command
|
||||
@kbd{M-x apropos-variable}. By default, this command shows only
|
||||
variables meant for user customization; if you specify a prefix
|
||||
To list all user variables that match a word list or regexp, use the
|
||||
command @kbd{M-x apropos-variable}. By default, this command shows
|
||||
only variables meant for user customization; if you specify a prefix
|
||||
argument, it checks all variables.
|
||||
|
||||
@findex apropos
|
||||
To list all Lisp symbols that contain a match for a regexp, not just
|
||||
the ones that are defined as commands, use the command @kbd{M-x apropos}
|
||||
instead of @kbd{C-h a}. This command does not check key bindings by
|
||||
default; specify a numeric argument if you want it to check them.
|
||||
To list all Lisp symbols that contain a match for a word list or
|
||||
regexp, not just the ones that are defined as commands, use the
|
||||
command @kbd{M-x apropos} instead of @kbd{C-h a}. This command does
|
||||
not check key bindings by default; specify a numeric argument if you
|
||||
want it to check them.
|
||||
|
||||
@kindex C-h d
|
||||
@findex apropos-documentation
|
||||
The @code{apropos-documentation} command is like @code{apropos} except
|
||||
that it searches documentation strings as well as symbol names for
|
||||
matches for the specified regular expression.
|
||||
matches for the specified topic, a word list or regular expression.
|
||||
|
||||
@findex apropos-value
|
||||
The @code{apropos-value} command is like @code{apropos} except that it
|
||||
searches symbols' values for matches for the specified regular
|
||||
searches symbols' values for matches for the specified word list or regular
|
||||
expression. This command does not check function definitions or
|
||||
property lists by default; specify a numeric argument if you want it to
|
||||
check them.
|
||||
@ -338,6 +349,12 @@ If the variable @code{apropos-sort-by-scores} is non-@code{nil},
|
||||
Apropos tries to guess the relevance of each result, and displays the
|
||||
most relevant ones first.
|
||||
|
||||
@vindex apropos-documentation-sort-by-scores
|
||||
By default, Apropos lists the search results for
|
||||
@code{apropos-documentation} in order of relevance.
|
||||
If the variable @code{apropos-documentation-sort-by-scores} is @code{nil},
|
||||
Apropos will list documentation in alphabetical order.
|
||||
|
||||
If you want more information about a function definition, variable or
|
||||
symbol property listed in the Apropos buffer, you can click on it with
|
||||
@kbd{Mouse-1} or @kbd{Mouse-2}, or move there and type @key{RET}.
|
||||
@ -613,8 +630,10 @@ Emacs (@code{describe-no-warranty}).
|
||||
the mouse or a key like @kbd{RET}, it often has associated help text.
|
||||
Areas of the mode line are examples. On most window systems, the help
|
||||
text is displayed as a ``tooltip'' (sometimes known as ``balloon
|
||||
help''). @xref{Tooltips}. Otherwise, it is shown in the echo area
|
||||
when you move point into the active text.
|
||||
help''), when you move the mouse over the active text. @xref{Tooltips}.
|
||||
On some systems, it is shown in the echo area. On text-only
|
||||
terminals, Emacs may not be able to follow the mouse and hence will
|
||||
not show the help text on mouse-over.
|
||||
|
||||
@kindex C-h .
|
||||
@findex display-local-help
|
||||
|
@ -520,7 +520,7 @@ of the specified file. The file is changed immediately on disk.
|
||||
editing in Emacs would change the file behind Emacs's back, which
|
||||
can lead to losing some of your editing.
|
||||
|
||||
@node Rectangles, Registers, Accumulating Text, Top
|
||||
@node Rectangles, CUA Bindings, Accumulating Text, Top
|
||||
@section Rectangles
|
||||
@cindex rectangle
|
||||
@cindex columns (and rectangles)
|
||||
@ -644,6 +644,52 @@ rectangle shifts right.
|
||||
@code{string-rectangle}, but inserts the string on each line,
|
||||
shifting the original text to the right.
|
||||
|
||||
@node CUA Bindings, Registers, Rectangles, Top
|
||||
@section CUA Bindings
|
||||
@findex cua-mode
|
||||
@vindex cua-mode
|
||||
@cindex CUA key bindings
|
||||
@vindex cua-enable-cua-keys
|
||||
The command @kbd{M-x cua-mode} sets up key bindings that are
|
||||
compatible with the Common User Access (CUA) system used in many other
|
||||
applications. @kbd{C-x} means cut (kill), @kbd{C-c} copy, @kbd{C-v}
|
||||
paste (yank), and @kbd{C-z} undo. Standard Emacs commands like
|
||||
@kbd{C-x C-c} still work, because @kbd{C-x} and @kbd{C-c} only take
|
||||
effect when the mark is active. However, if you don't want these
|
||||
bindings at all, set @code{cua-enable-cua-keys} to @code{nil}.
|
||||
|
||||
In CUA mode, using @kbd{Shift} together with the movement keys
|
||||
activates the region over which they move. The standard (unshifted)
|
||||
movement keys deactivate the mark, and typed text replaces the active
|
||||
region as in Delete-Selection mode (@pxref{Graphical Kill}).
|
||||
|
||||
@cindex rectangle highlighting
|
||||
CUA mode provides enhanced rectangle support with visible
|
||||
rectangle highlighting. Use @kbd{C-RET} to start a rectangle,
|
||||
extend it using the movement commands, and cut or copy it using
|
||||
@kbd{C-x} or @kbd{C-c}. When a rectangle is active, text you type is
|
||||
automatically inserted before or after each line in the rectangle.
|
||||
|
||||
With CUA you can easily copy text and rectangles into and out of
|
||||
registers by providing a one-digit numeric prefix the the kill, copy,
|
||||
and yank commands, e.g. @kbd{C-1 C-c} copies the region into register
|
||||
@code{1}, and @kbd{C-2 C-v} yanks the contents of register @code{2}.
|
||||
|
||||
@cindex global mark
|
||||
CUA mode also has a global mark feature which allows easy moving and
|
||||
copying of text between buffers. Use @kbd{C-S-SPC} to toggle the
|
||||
global mark on and off. When the global mark is on, all text that you
|
||||
kill or copy is automatically inserted at the global mark, and text
|
||||
you type is inserted at the global mark rather than at the current
|
||||
position.
|
||||
|
||||
For example, to copy words from various buffers into a word list in
|
||||
a given buffer, set the global mark in the target buffer, then
|
||||
navigate to each of the words you want in the list, mark it (e.g. with
|
||||
@kbd{S-M-f}), copy it to the list with @kbd{C-c} or @kbd{M-w}, and
|
||||
insert a newline after the word in the target list by pressing
|
||||
@key{RET}.
|
||||
|
||||
@ifnottex
|
||||
@lowersections
|
||||
@end ifnottex
|
||||
|
@ -109,6 +109,9 @@ GNU Emacs gives a special meaning to a double slash (which is not
|
||||
normally a useful thing to write): it means, ``ignore everything before
|
||||
the second slash in the pair.'' Thus, @samp{/u2/emacs/src/} is ignored
|
||||
in the example above, and you get the file @file{/etc/termcap}.
|
||||
By default the ignored part of the file name is made dim if the
|
||||
terminal allows it. This is affected by the
|
||||
@code{file-name-shadow-mode} minor mode.
|
||||
|
||||
If you set @code{insert-default-directory} to @code{nil}, the default
|
||||
directory is not inserted in the minibuffer. This way, the minibuffer
|
||||
|
@ -2136,29 +2136,6 @@ Emacs key bindings are still available. The EDT emulation rebindings
|
||||
are done in the global keymap, so there is no problem switching
|
||||
buffers or major modes while in EDT emulation.
|
||||
|
||||
@item CUA bindings
|
||||
@findex cua-mode
|
||||
@vindex cua-mode
|
||||
@cindex CUA key bindings
|
||||
@vindex cua-enable-cua-keys
|
||||
The command @kbd{M-x cua-mode} sets up key bindings that are
|
||||
compatible with the Common User Access (CUA) system used in many other
|
||||
applications. @kbd{C-x} means cut (kill), @kbd{C-c} copy, @kbd{C-v}
|
||||
paste (yank), and @kbd{C-z} undo. Standard Emacs commands like
|
||||
@kbd{C-x C-c} still work, because @kbd{C-x} and @kbd{C-c} only take
|
||||
effect when the mark is active. However, if you don't want these
|
||||
bindings at all, set @code{cua-enable-cua-keys} to @code{nil}.
|
||||
|
||||
In CUA mode, using @kbd{Shift} together with the movement keys
|
||||
activates the region over which they move. The standard (unshifted)
|
||||
movement keys deactivate the mark, and typed text replaces the active
|
||||
region as in Delete-Selection mode (@pxref{Graphical Kill}).
|
||||
|
||||
CUA mode also provides enhanced rectangle support with visible
|
||||
rectangle highlighting. Use @kbd{Shift-RET} to start a rectangle,
|
||||
extend it using the movement commands, and cut or copy it using
|
||||
@kbd{C-x} or @kbd{C-c}.
|
||||
|
||||
@item TPU (DEC VMS editor)
|
||||
@findex tpu-edt-on
|
||||
@cindex TPU
|
||||
|
@ -2,7 +2,7 @@
|
||||
@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2002, 2003,
|
||||
@c 2004, 2005 Free Software Foundation, Inc.
|
||||
@c See file emacs.texi for copying conditions.
|
||||
@node Registers, Display, Rectangles, Top
|
||||
@node Registers, Display, CUA Bindings, Top
|
||||
@chapter Registers
|
||||
@cindex registers
|
||||
|
||||
|
57
src/.gdbinit
57
src/.gdbinit
@ -31,6 +31,9 @@ dir ../lwlib
|
||||
# However, C-z works just as well in that case.
|
||||
handle 2 noprint pass
|
||||
|
||||
# Make it work like SIGINT normally does.
|
||||
handle SIGTSTP nopass
|
||||
|
||||
# Don't pass SIGALRM to Emacs. This makes problems when
|
||||
# debugging.
|
||||
handle SIGALRM ignore
|
||||
@ -66,13 +69,53 @@ end
|
||||
# Print out s-expressions
|
||||
define pp
|
||||
set $tmp = $arg0
|
||||
set debug_print ($tmp)
|
||||
set safe_debug_print ($tmp)
|
||||
end
|
||||
document pp
|
||||
Print the argument as an emacs s-expression
|
||||
Works only when an inferior emacs is executing.
|
||||
end
|
||||
|
||||
# Print out s-expressions from tool bar
|
||||
define pp1
|
||||
set $tmp = $arg0
|
||||
echo $arg0
|
||||
printf " = "
|
||||
set safe_debug_print ($tmp)
|
||||
end
|
||||
document pp1
|
||||
Print the argument as an emacs s-expression
|
||||
Works only when an inferior emacs is executing.
|
||||
For use on tool bar when debugging in Emacs
|
||||
where the variable name would not otherwise
|
||||
be recorded in the GUD buffer.
|
||||
end
|
||||
|
||||
# Print value of lisp variable
|
||||
define pv
|
||||
set $tmp = "$arg0"
|
||||
set safe_debug_print ( find_symbol_value (intern ($tmp)))
|
||||
end
|
||||
document pv
|
||||
Print the value of the lisp variable given as argument.
|
||||
Works only when an inferior emacs is executing.
|
||||
end
|
||||
|
||||
# Print value of lisp variable
|
||||
define pv1
|
||||
set $tmp = "$arg0"
|
||||
echo $arg0
|
||||
printf " = "
|
||||
set safe_debug_print (find_symbol_value (intern ($tmp)))
|
||||
end
|
||||
document pv1
|
||||
Print the value of the lisp variable given as argument.
|
||||
Works only when an inferior emacs is executing.
|
||||
For use on tool bar when debugging in Emacs
|
||||
where the variable name would not otherwise
|
||||
be recorded in the GUD buffer.
|
||||
end
|
||||
|
||||
# Print out current buffer point and boundaries
|
||||
define ppt
|
||||
set $b = current_buffer
|
||||
@ -122,7 +165,7 @@ define pitx
|
||||
printf " HL"
|
||||
end
|
||||
if ($it->n_overlay_strings > 0)
|
||||
printf " nov=%d"
|
||||
printf " nov=%d", $it->n_overlay_strings
|
||||
end
|
||||
if ($it->sp != 0)
|
||||
printf " sp=%d", $it->sp
|
||||
@ -672,6 +715,16 @@ document xbacktrace
|
||||
an error was signaled.
|
||||
end
|
||||
|
||||
# Show Lisp backtrace after normal backtrace.
|
||||
define hookpost-backtrace
|
||||
set $bt = backtrace_list
|
||||
if $bt
|
||||
echo \n
|
||||
echo Lisp Backtrace:\n
|
||||
xbacktrace
|
||||
end
|
||||
end
|
||||
|
||||
define xreload
|
||||
set $tagmask = (((long)1 << gdb_gctypebits) - 1)
|
||||
set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1
|
||||
|
151
src/ChangeLog
151
src/ChangeLog
@ -1,3 +1,152 @@
|
||||
2005-11-16 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* lread.c (readevalloop): Add missing GCPROs.
|
||||
|
||||
2005-11-16 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* xfns.c (xg_set_icon_from_xpm_data): New function.
|
||||
|
||||
* gnu.h (gnu_xpm_bits): Rename from gnu_bits.
|
||||
(gnu_xbm_bits): Rename from gnu_bits (xbm version).
|
||||
|
||||
* xterm.c (x_bitmap_icon): Use the xpm if available.
|
||||
|
||||
* image.c (x_create_bitmap_from_xpm_data): New function.
|
||||
(x_create_bitmap_from_xpm_data): Initialize XpmAttributes.
|
||||
|
||||
2005-11-15 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* Makefile.in (lisp, shortlisp): Add rfn-eshadow.
|
||||
|
||||
2005-11-16 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* .gdbinit: Make SIGTSTP work like SIGINT normally does.
|
||||
|
||||
2005-11-15 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* lisp.h (struct Lisp_Cons): Make cdr a union.
|
||||
(XCDR_AS_LVALUE): Adjust.
|
||||
(struct Lisp_Float): Make data a union.
|
||||
(XFLOAT_DATA): Adjust.
|
||||
|
||||
* alloc.c (free_float): Make free list chaining aliasing-safe.
|
||||
(make_float): Likewise.
|
||||
(free_cons): Likewise.
|
||||
(Fcons): Likewise.
|
||||
(check_cons_list): Likewise.
|
||||
(Fmake_symbol): Likewise.
|
||||
(allocate_misc): Likewise.
|
||||
(free_misc): Likewise.
|
||||
(gc_sweep): Likewise.
|
||||
|
||||
2005-11-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* mac.c (HASHKEY_QUERY_CACHE): New define.
|
||||
(xrm_create_database, xrm_q_put_resource): Empty query cache.
|
||||
(xrm_get_resource): Use query cache.
|
||||
|
||||
* image.c (init_image) [MAC_OS]: Don't call EnterMovies if
|
||||
inhibit_window_system is set.
|
||||
|
||||
2005-11-13 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* macgui.h (USE_CG_TEXT_DRAWING): New define.
|
||||
(struct MacFontStruct) [USE_CG_TEXT_DRAWING]: New members cg_font
|
||||
and cg_glyphs.
|
||||
|
||||
* macterm.c [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): New function.
|
||||
(x_draw_glyph_string_foreground) [USE_CG_TEXT_DRAWING]: Use it.
|
||||
(XLoadQueryFont) [USE_CG_TEXT_DRAWING]: Set members cg_font and
|
||||
cg_glyphs in struct MacFontStruct if synthesized bold or italic is
|
||||
not used and font substitution never occurs for ASCII and Latin-1
|
||||
characters.
|
||||
(XLoadQueryFont): Maximum and minimum metrics are now those among
|
||||
ASCII characters.
|
||||
(XLoadQueryFont) [!MAC_OS8 || USE_ATSUI]: Apply WebKit-style
|
||||
height adjustments for Courier, Helvetica, and Times.
|
||||
|
||||
* s/darwin.h (LIBS_CARBON) [!HAVE_CARBON]: Remove `-framework Carbon'.
|
||||
|
||||
2005-11-11 David Reitter <david.reitter@gmail.com>
|
||||
|
||||
* macterm.c (syms_of_macterm): Remove macCtrlKey, macShiftKey,
|
||||
macMetaKey, macAltKey. Introduce Qctrl, Qmeta,
|
||||
Vmac_control_modifier / mac-control-modifier,
|
||||
Vmac_option_modifier / mac-option-modifier,
|
||||
Vmac_command_modifier / mac-command-modifier.
|
||||
(mac_to_emacs_modifiers): Use the new style modifier
|
||||
variables. Return UInt32 (modifiers are longs now.)
|
||||
(backtranslate_modified_keycode): New function (refactoring).
|
||||
(XTread_socket): Use new modifier variables and refactored function.
|
||||
(mac_determine_quit_char_modifiers): Remove macMetaKey (there is
|
||||
no dedicated meta key. Not in use anyway.)
|
||||
(convert_fn_keycode): Map Fn-keys to their original keycode
|
||||
using a table (english keyboard only).
|
||||
|
||||
2005-11-11 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* .gdbinit (pitx): Fix output format if n_overlay_strings > 0.
|
||||
Add post hook to "backtrace" to always dump lisp call stack to
|
||||
increase chance of people sending it to us when reporting bugs.
|
||||
|
||||
* doc.c (Fsubstitute_command_keys): Doc fix.
|
||||
|
||||
* dispextern.h (struct it): New member ignore_overlay_strings_at_pos_p.
|
||||
|
||||
* xdisp.c (handle_stop): Skip overlay string handling if
|
||||
ignore_overlay_strings_at_pos_p is set.
|
||||
(set_iterator_to_next): At end of display vector, set
|
||||
ignore_overlay_strings_at_pos_p if dpvec came from an overlay
|
||||
string, so we skip those overlay strings at current pos.
|
||||
|
||||
2005-11-10 Lars Hansen <larsh@soem.dk>
|
||||
|
||||
* fileio.c (file-regular-p): Doc fix.
|
||||
|
||||
2005-11-10 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* alloc.c (valid_lisp_object_p): New function to validate that
|
||||
an object is really a valid Lisp_Object.
|
||||
|
||||
* lisp.h (valid_lisp_object_p): Add prototype.
|
||||
|
||||
* print.c (safe_debug_print): New function to be called from gdb
|
||||
to print Lisp objects; use valid_lisp_object_p to avoid crashing
|
||||
if user tries to print something which is not a Lisp object.
|
||||
|
||||
* .gdbinit (pp, pp1): Use safe_debug_print.
|
||||
(pv, pv1): New commands to print value of a lisp variable.
|
||||
|
||||
2005-11-10 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* .gdbinit (pp1): New user-defined function.
|
||||
|
||||
2005-11-09 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
* image.c [MAC_OSX] (image_load_quartz2d): Fix memory leak.
|
||||
|
||||
* mac.c [MAC_OSX] (init_mac_osx_environment): Reinitialize locale
|
||||
related variables for dumped executable.
|
||||
|
||||
* unexmacosx.c (unexec_write_zero): New function.
|
||||
(copy_data_segment): Clear uninitialized local variables in
|
||||
statically linked libraries.
|
||||
|
||||
* s/darwin.h (C_SWITCH_SYSTEM): Remove -fno-common.
|
||||
|
||||
2005-11-09 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* keymap.c (shadow_lookup): If Flookup_key returns a number,
|
||||
call it again with a sub-key-sequence, and if its return value
|
||||
is non-nil (sub-key is bound), return nil.
|
||||
|
||||
2005-11-08 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* process.c (Fsignal_process): Recognize signal names with and
|
||||
without SIG prefix, e.g. SIGHUP and HUP.
|
||||
|
||||
* search.c (search_buffer): No need to initialize base_pat.
|
||||
|
||||
2005-11-04 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* window.c (Fget_lru_window, Fget_largest_window, window_loop):
|
||||
@ -179,7 +328,7 @@
|
||||
from last_mouse_glyph_frame, and update last_mouse_glyph_frame.
|
||||
(XTmouse_position): Set last_mouse_glyph_frame.
|
||||
(XTread_socket): Clear last_mouse_glyph_frame on mouse up/down event.
|
||||
(mac_draw_string_common) [MAC_OSX && WORDS_BIG_ENDIAN]: Fix typo.
|
||||
(mac_draw_string_common) [USE_ATSUI && WORDS_BIG_ENDIAN]: Fix typo.
|
||||
Use EndianU16_BtoN.
|
||||
(mac_draw_string_common) [MAC_OSX]: Don't use ATSUClearLayoutControls.
|
||||
(x_per_char_metric, XLoadQueryFont)
|
||||
|
@ -725,6 +725,7 @@ lisp= \
|
||||
${lispsource}help.elc \
|
||||
${lispsource}indent.elc \
|
||||
${lispsource}isearch.elc \
|
||||
${lispsource}rfn-eshadow.elc \
|
||||
${lispsource}loadup.el \
|
||||
${lispsource}loaddefs.el \
|
||||
${lispsource}bindings.elc \
|
||||
@ -821,6 +822,7 @@ shortlisp= \
|
||||
../lisp/help.elc \
|
||||
../lisp/indent.elc \
|
||||
../lisp/isearch.elc \
|
||||
../lisp/rfn-eshadow.elc \
|
||||
../lisp/loadup.el \
|
||||
../lisp/loaddefs.el \
|
||||
../lisp/bindings.elc \
|
||||
|
101
src/alloc.c
101
src/alloc.c
@ -2532,7 +2532,7 @@ void
|
||||
free_float (ptr)
|
||||
struct Lisp_Float *ptr;
|
||||
{
|
||||
*(struct Lisp_Float **)&ptr->data = float_free_list;
|
||||
ptr->u.chain = float_free_list;
|
||||
float_free_list = ptr;
|
||||
}
|
||||
|
||||
@ -2550,7 +2550,7 @@ make_float (float_value)
|
||||
/* We use the data field for chaining the free list
|
||||
so that we won't use the same field that has the mark bit. */
|
||||
XSETFLOAT (val, float_free_list);
|
||||
float_free_list = *(struct Lisp_Float **)&float_free_list->data;
|
||||
float_free_list = float_free_list->u.chain;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2650,7 +2650,7 @@ void
|
||||
free_cons (ptr)
|
||||
struct Lisp_Cons *ptr;
|
||||
{
|
||||
*(struct Lisp_Cons **)&ptr->cdr = cons_free_list;
|
||||
ptr->u.chain = cons_free_list;
|
||||
#if GC_MARK_STACK
|
||||
ptr->car = Vdead;
|
||||
#endif
|
||||
@ -2669,7 +2669,7 @@ DEFUN ("cons", Fcons, Scons, 2, 2, 0,
|
||||
/* We use the cdr for chaining the free list
|
||||
so that we won't use the same field that has the mark bit. */
|
||||
XSETCONS (val, cons_free_list);
|
||||
cons_free_list = *(struct Lisp_Cons **)&cons_free_list->cdr;
|
||||
cons_free_list = cons_free_list->u.chain;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2704,7 +2704,7 @@ check_cons_list ()
|
||||
struct Lisp_Cons *tail = cons_free_list;
|
||||
|
||||
while (tail)
|
||||
tail = *(struct Lisp_Cons **)&tail->cdr;
|
||||
tail = tail->u.chain;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -3141,7 +3141,7 @@ Its value and function definition are void, and its property list is nil. */)
|
||||
if (symbol_free_list)
|
||||
{
|
||||
XSETSYMBOL (val, symbol_free_list);
|
||||
symbol_free_list = *(struct Lisp_Symbol **)&symbol_free_list->value;
|
||||
symbol_free_list = symbol_free_list->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -4485,10 +4485,79 @@ mark_stack ()
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#endif /* GC_MARK_STACK != 0 */
|
||||
|
||||
|
||||
|
||||
/* Return 1 if OBJ is a valid lisp object.
|
||||
Return 0 if OBJ is NOT a valid lisp object.
|
||||
Return -1 if we cannot validate OBJ.
|
||||
*/
|
||||
|
||||
int
|
||||
valid_lisp_object_p (obj)
|
||||
Lisp_Object obj;
|
||||
{
|
||||
#if !GC_MARK_STACK
|
||||
/* Cannot determine this. */
|
||||
return -1;
|
||||
#else
|
||||
void *p;
|
||||
struct mem_node *m;
|
||||
|
||||
if (INTEGERP (obj))
|
||||
return 1;
|
||||
|
||||
p = (void *) XPNTR (obj);
|
||||
|
||||
if (PURE_POINTER_P (p))
|
||||
return 1;
|
||||
|
||||
m = mem_find (p);
|
||||
|
||||
if (m == MEM_NIL)
|
||||
return 0;
|
||||
|
||||
switch (m->type)
|
||||
{
|
||||
case MEM_TYPE_NON_LISP:
|
||||
return 0;
|
||||
|
||||
case MEM_TYPE_BUFFER:
|
||||
return live_buffer_p (m, p);
|
||||
|
||||
case MEM_TYPE_CONS:
|
||||
return live_cons_p (m, p);
|
||||
|
||||
case MEM_TYPE_STRING:
|
||||
return live_string_p (m, p);
|
||||
|
||||
case MEM_TYPE_MISC:
|
||||
return live_misc_p (m, p);
|
||||
|
||||
case MEM_TYPE_SYMBOL:
|
||||
return live_symbol_p (m, p);
|
||||
|
||||
case MEM_TYPE_FLOAT:
|
||||
return live_float_p (m, p);
|
||||
|
||||
case MEM_TYPE_VECTOR:
|
||||
case MEM_TYPE_PROCESS:
|
||||
case MEM_TYPE_HASH_TABLE:
|
||||
case MEM_TYPE_FRAME:
|
||||
case MEM_TYPE_WINDOW:
|
||||
return live_vector_p (m, p);
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
Pure Storage Management
|
||||
@ -4969,7 +5038,7 @@ returns nil, because real GC can't be done. */)
|
||||
total += total_floats * sizeof (struct Lisp_Float);
|
||||
total += total_intervals * sizeof (struct interval);
|
||||
total += total_strings * sizeof (struct Lisp_String);
|
||||
|
||||
|
||||
gc_relative_threshold = total * XFLOAT_DATA (Vgc_cons_percentage);
|
||||
}
|
||||
else
|
||||
@ -5496,14 +5565,14 @@ mark_object (arg)
|
||||
CHECK_ALLOCATED_AND_LIVE (live_cons_p);
|
||||
CONS_MARK (ptr);
|
||||
/* If the cdr is nil, avoid recursion for the car. */
|
||||
if (EQ (ptr->cdr, Qnil))
|
||||
if (EQ (ptr->u.cdr, Qnil))
|
||||
{
|
||||
obj = ptr->car;
|
||||
cdr_count = 0;
|
||||
goto loop;
|
||||
}
|
||||
mark_object (ptr->car);
|
||||
obj = ptr->cdr;
|
||||
obj = ptr->u.cdr;
|
||||
cdr_count++;
|
||||
if (cdr_count == mark_object_loop_halt)
|
||||
abort ();
|
||||
@ -5650,7 +5719,7 @@ gc_sweep ()
|
||||
if (!CONS_MARKED_P (&cblk->conses[i]))
|
||||
{
|
||||
this_free++;
|
||||
*(struct Lisp_Cons **)&cblk->conses[i].cdr = cons_free_list;
|
||||
cblk->conses[i].u.chain = cons_free_list;
|
||||
cons_free_list = &cblk->conses[i];
|
||||
#if GC_MARK_STACK
|
||||
cons_free_list->car = Vdead;
|
||||
@ -5669,7 +5738,7 @@ gc_sweep ()
|
||||
{
|
||||
*cprev = cblk->next;
|
||||
/* Unhook from the free list. */
|
||||
cons_free_list = *(struct Lisp_Cons **) &cblk->conses[0].cdr;
|
||||
cons_free_list = cblk->conses[0].u.chain;
|
||||
lisp_align_free (cblk);
|
||||
n_cons_blocks--;
|
||||
}
|
||||
@ -5700,7 +5769,7 @@ gc_sweep ()
|
||||
if (!FLOAT_MARKED_P (&fblk->floats[i]))
|
||||
{
|
||||
this_free++;
|
||||
*(struct Lisp_Float **)&fblk->floats[i].data = float_free_list;
|
||||
fblk->floats[i].u.chain = float_free_list;
|
||||
float_free_list = &fblk->floats[i];
|
||||
}
|
||||
else
|
||||
@ -5716,7 +5785,7 @@ gc_sweep ()
|
||||
{
|
||||
*fprev = fblk->next;
|
||||
/* Unhook from the free list. */
|
||||
float_free_list = *(struct Lisp_Float **) &fblk->floats[0].data;
|
||||
float_free_list = fblk->floats[0].u.chain;
|
||||
lisp_align_free (fblk);
|
||||
n_float_blocks--;
|
||||
}
|
||||
@ -5804,7 +5873,7 @@ gc_sweep ()
|
||||
|
||||
if (!sym->gcmarkbit && !pure_p)
|
||||
{
|
||||
*(struct Lisp_Symbol **) &sym->value = symbol_free_list;
|
||||
sym->next = symbol_free_list;
|
||||
symbol_free_list = sym;
|
||||
#if GC_MARK_STACK
|
||||
symbol_free_list->function = Vdead;
|
||||
@ -5828,7 +5897,7 @@ gc_sweep ()
|
||||
{
|
||||
*sprev = sblk->next;
|
||||
/* Unhook from the free list. */
|
||||
symbol_free_list = *(struct Lisp_Symbol **)&sblk->symbols[0].value;
|
||||
symbol_free_list = sblk->symbols[0].next;
|
||||
lisp_free (sblk);
|
||||
n_symbol_blocks--;
|
||||
}
|
||||
|
@ -1974,6 +1974,10 @@ struct it
|
||||
/* 1 means overlay strings at end_charpos have been processed. */
|
||||
unsigned overlay_strings_at_end_processed_p : 1;
|
||||
|
||||
/* 1 means to ignore overlay strings at current pos, as they have
|
||||
already been processed. */
|
||||
unsigned ignore_overlay_strings_at_pos_p : 1;
|
||||
|
||||
/* 1 means the actual glyph is not available in the current
|
||||
system. */
|
||||
unsigned glyph_not_available_p : 1;
|
||||
|
11
src/doc.c
11
src/doc.c
@ -735,15 +735,18 @@ the same file name is found in the `doc-directory'. */)
|
||||
DEFUN ("substitute-command-keys", Fsubstitute_command_keys,
|
||||
Ssubstitute_command_keys, 1, 1, 0,
|
||||
doc: /* Substitute key descriptions for command names in STRING.
|
||||
Return a new string which is STRING with substrings of the form \\=\\[COMMAND]
|
||||
replaced by either: a keystroke sequence that will invoke COMMAND,
|
||||
or "M-x COMMAND" if COMMAND is not on any keys.
|
||||
Substrings of the form \\=\\[COMMAND] replaced by either: a keystroke
|
||||
sequence that will invoke COMMAND, or "M-x COMMAND" if COMMAND is not
|
||||
on any keys.
|
||||
Substrings of the form \\=\\{MAPVAR} are replaced by summaries
|
||||
\(made by describe-bindings) of the value of MAPVAR, taken as a keymap.
|
||||
Substrings of the form \\=\\<MAPVAR> specify to use the value of MAPVAR
|
||||
as the keymap for future \\=\\[COMMAND] substrings.
|
||||
\\=\\= quotes the following character and is discarded;
|
||||
thus, \\=\\=\\=\\= puts \\=\\= into the output, and \\=\\=\\=\\[ puts \\=\\[ into the output. */)
|
||||
thus, \\=\\=\\=\\= puts \\=\\= into the output, and \\=\\=\\=\\[ puts \\=\\[ into the output.
|
||||
|
||||
Returns original STRING if no substitutions were made. Othwerwise,
|
||||
a new string, without any text properties, is returned. */)
|
||||
(string)
|
||||
Lisp_Object string;
|
||||
{
|
||||
|
@ -3394,8 +3394,10 @@ searchable directory. */)
|
||||
}
|
||||
|
||||
DEFUN ("file-regular-p", Ffile_regular_p, Sfile_regular_p, 1, 1, 0,
|
||||
doc: /* Return t if file FILENAME is the name of a regular file.
|
||||
This is the sort of file that holds an ordinary stream of data bytes. */)
|
||||
doc: /* Return t if FILENAME names a regular file.
|
||||
This is the sort of file that holds an ordinary stream of data bytes.
|
||||
Symbolic links to regular files count as regular files.
|
||||
See `file-symlink-p' to distinguish symlinks. */)
|
||||
(filename)
|
||||
Lisp_Object filename;
|
||||
{
|
||||
|
216
src/gnu.h
216
src/gnu.h
@ -1,6 +1,216 @@
|
||||
#define gnu_width 50
|
||||
#define gnu_height 50
|
||||
static unsigned char gnu_bits[] = {
|
||||
#if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS)
|
||||
static char * gnu_xpm_bits[] = {
|
||||
"32 32 173 2",
|
||||
" c None",
|
||||
". c #67627D",
|
||||
"+ c #5F5A76",
|
||||
"@ c #78748C",
|
||||
"# c #DCDBE1",
|
||||
"$ c #CFCED7",
|
||||
"% c #B8B5C7",
|
||||
"& c #ADA9C1",
|
||||
"* c #A6A3B9",
|
||||
"= c #9995A9",
|
||||
"- c #878398",
|
||||
"; c #C2C0CD",
|
||||
"> c #9591AE",
|
||||
", c #9B97B3",
|
||||
"' c #BDBACC",
|
||||
") c #9C98B3",
|
||||
"! c #A9A6B9",
|
||||
"~ c #8D89A0",
|
||||
"{ c #A9A5BC",
|
||||
"] c #938FAB",
|
||||
"^ c #B4B2C5",
|
||||
"/ c #F8F8FA",
|
||||
"( c #E4E3EA",
|
||||
"_ c #BCB9CB",
|
||||
": c #9390A5",
|
||||
"< c #5E5A75",
|
||||
"[ c #8B87A1",
|
||||
"} c #918DA9",
|
||||
"| c #BAB7C9",
|
||||
"1 c #FFFFFF",
|
||||
"2 c #F1F1F4",
|
||||
"3 c #B4B1C4",
|
||||
"4 c #9D99AF",
|
||||
"5 c #5D5974",
|
||||
"6 c #8E8AA5",
|
||||
"7 c #A3A0B6",
|
||||
"8 c #F8F8F9",
|
||||
"9 c #9F9CB3",
|
||||
"0 c #8C88A3",
|
||||
"a c #938FA9",
|
||||
"b c #C6C4D1",
|
||||
"c c #B7B4C5",
|
||||
"d c #9D99B1",
|
||||
"e c #5C5873",
|
||||
"f c #8985A0",
|
||||
"g c #B5B3C4",
|
||||
"h c #F0F0F3",
|
||||
"i c #A6A3B7",
|
||||
"j c #9B98AE",
|
||||
"k c #5C5872",
|
||||
"l c #88849D",
|
||||
"m c #A6A3B6",
|
||||
"n c #F8F7F9",
|
||||
"o c #C3C1CE",
|
||||
"p c #9996AB",
|
||||
"q c #5B5772",
|
||||
"r c #85819A",
|
||||
"s c #9491A7",
|
||||
"t c #E0DFE6",
|
||||
"u c #C2C0CC",
|
||||
"v c #8C88A0",
|
||||
"w c #9894A9",
|
||||
"x c #5A5671",
|
||||
"y c #838097",
|
||||
"z c #B2B0BE",
|
||||
"A c #F7F7F8",
|
||||
"B c #D8D7DE",
|
||||
"C c #928FA4",
|
||||
"D c #9491A5",
|
||||
"E c #5A5670",
|
||||
"F c #817D95",
|
||||
"G c #A9A6B6",
|
||||
"H c #A8A5B6",
|
||||
"I c #928FA3",
|
||||
"J c #59556F",
|
||||
"K c #7E7B91",
|
||||
"L c #BEBDC8",
|
||||
"M c #AEACBA",
|
||||
"N c #908DA0",
|
||||
"O c #5B5771",
|
||||
"P c #58546D",
|
||||
"Q c #65617A",
|
||||
"R c #E0DFE4",
|
||||
"S c #8E8B9E",
|
||||
"T c #7A778D",
|
||||
"U c #5A566F",
|
||||
"V c #57536C",
|
||||
"W c #58546F",
|
||||
"X c #A19EAE",
|
||||
"Y c #EAEAED",
|
||||
"Z c #F5F4F6",
|
||||
"` c #A19FAE",
|
||||
" . c #625F78",
|
||||
".. c #77748A",
|
||||
"+. c #59556E",
|
||||
"@. c #56526B",
|
||||
"#. c #807D90",
|
||||
"$. c #D5D4DA",
|
||||
"%. c #9693A3",
|
||||
"&. c #767387",
|
||||
"*. c #55516A",
|
||||
"=. c #534F68",
|
||||
"-. c #9491A1",
|
||||
";. c #F4F4F6",
|
||||
">. c #9E9CAA",
|
||||
",. c #5D5971",
|
||||
"'. c #737084",
|
||||
"). c #545068",
|
||||
"!. c #504D64",
|
||||
"~. c #F4F4F5",
|
||||
"{. c #DEDDE2",
|
||||
"]. c #5A576D",
|
||||
"^. c #716F81",
|
||||
"/. c #56526A",
|
||||
"(. c #524F67",
|
||||
"_. c #4D4A61",
|
||||
":. c #9A99A6",
|
||||
"<. c #848292",
|
||||
"[. c #6F6C7F",
|
||||
"}. c #545169",
|
||||
"|. c #514E65",
|
||||
"1. c #4A475D",
|
||||
"2. c #6B697B",
|
||||
"3. c #D2D1D6",
|
||||
"4. c #F4F3F5",
|
||||
"5. c #9998A4",
|
||||
"6. c #6C6A7B",
|
||||
"7. c #535067",
|
||||
"8. c #504C64",
|
||||
"9. c #474459",
|
||||
"0. c #747282",
|
||||
"a. c #D1D0D5",
|
||||
"b. c #E8E8EA",
|
||||
"c. c #8C8A97",
|
||||
"d. c #676576",
|
||||
"e. c #4E4B62",
|
||||
"f. c #444156",
|
||||
"g. c #727080",
|
||||
"h. c #E8E7EA",
|
||||
"i. c #8A8996",
|
||||
"j. c #656374",
|
||||
"k. c #524F66",
|
||||
"l. c #423F53",
|
||||
"m. c #B8B7BE",
|
||||
"n. c #D0CFD4",
|
||||
"o. c #4E4B5E",
|
||||
"p. c #636171",
|
||||
"q. c #4C485E",
|
||||
"r. c #434054",
|
||||
"s. c #3F3C4F",
|
||||
"t. c #575465",
|
||||
"u. c #CFCED3",
|
||||
"v. c #646272",
|
||||
"w. c #504C62",
|
||||
"x. c #4B475D",
|
||||
"y. c #3D3A4C",
|
||||
"z. c #494657",
|
||||
"A. c #7A7884",
|
||||
"B. c #B7B6BC",
|
||||
"C. c #DADADD",
|
||||
"D. c #4F4B61",
|
||||
"E. c #49455B",
|
||||
"F. c #3A3748",
|
||||
"G. c #5E5C6A",
|
||||
"H. c #908E98",
|
||||
"I. c #C1C0C6",
|
||||
"J. c #F3F2F4",
|
||||
"K. c #777581",
|
||||
"L. c #474458",
|
||||
"M. c #434053",
|
||||
"N. c #3C3A4A",
|
||||
"O. c #373544",
|
||||
"P. c #454256",
|
||||
" ",
|
||||
" ",
|
||||
" . + + + + + + + + + + + + + + + + + + + + + + + ",
|
||||
" @ # $ % & & & & & & & & & & & & & & & & & & * = @ + ",
|
||||
" @ - ; > > > > > > > > > > , ' ' ) > > > > > > > > ! . + ",
|
||||
" @ ~ { ] ] ] ] ] ] ] ] ] ] ] ] ^ / ( _ ] ] ] ] ] ] ] : < ",
|
||||
" . [ } } } } } } } } } } } } } } | 1 1 2 3 } } } } } 4 < ",
|
||||
" 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 8 1 1 1 8 6 6 6 6 6 9 5 ",
|
||||
" 5 0 0 0 0 0 0 0 0 0 0 0 0 a b 8 1 1 1 1 c 0 0 0 0 0 d 5 ",
|
||||
" e f f f f f f f f f f f g h 1 1 1 1 h i f f f f f f j e ",
|
||||
" k l l l l l l l l l m h 1 1 1 1 n o l l l l l l l l p k ",
|
||||
" q r r r r r r r s t 1 1 1 1 1 u v r r r r r r r r r w q ",
|
||||
" x y y y y y y z A 1 1 1 1 B C y y y y y y y y y y y D e ",
|
||||
" E F F F F F G 1 1 1 1 A H F F F F F F F F F F F F F I k ",
|
||||
" J K K K K K L 1 1 1 1 M K K K K K K K K K K K K K K N O ",
|
||||
" P q q q q q Q R 1 1 1 S q q q q q q q q q q q q q q T U ",
|
||||
" V W W W W W W W X Y 1 Z ` .W W W W W W W W W W W W ..+. ",
|
||||
" @.@.@.@.@.@.@.#.$.1 1 1 1 1 %.@.@.@.@.@.@.@.@.@.@.@.&.P ",
|
||||
" *.=.=.=.=.=.-.1 1 1 1 ;.>.,.=.=.=.=.=.=.=.=.=.=.=.=.'.V ",
|
||||
" ).!.!.!.!.!.~.1 1 1 {.].!.!.!.!.!.!.!.!.!.!.!.!.!.!.^./. ",
|
||||
" (._._._._._.:.1 1 1 <._._._._._._._._._._._._._._._.[.}. ",
|
||||
" |.1.1.1.1.1.1.2.3.1 4.5.1.1.1.1.1.1.1.1.1.1.1.1.1.1.6.7. ",
|
||||
" 8.9.9.9.9.9.9.9.9.0.a.1 b.c.9.9.9.9.9.9.9.9.9.9.9.9.d.). ",
|
||||
" e.f.f.f.f.f.f.f.f.f.f.g.h.1 h.i.f.f.f.f.f.f.f.f.f.f.j.k. ",
|
||||
" _.l.l.l.l.l.l.l.l.l.l.l.l.m.1 1 n.o.l.l.l.l.l.l.l.l.p.|. ",
|
||||
" q.r.s.s.s.s.s.s.s.s.s.s.s.t.1 1 1 u.s.s.s.s.s.s.s.s.v.w. ",
|
||||
" x.9.y.y.y.y.y.y.y.y.z.A.B.1 1 1 1 C.y.y.y.y.y.y.y.y.d.D. ",
|
||||
" E.E.r.F.F.F.F.F.F.F.F.G.H.I.J.I.K.F.F.F.F.F.F.F.F.r.E.E. ",
|
||||
" L.L.M.N.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.N.M.L.L. ",
|
||||
" P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P. ",
|
||||
" ",
|
||||
" "};
|
||||
#endif /* defined (HAVE_XPM) && defined (HAVE_X_WINDOWS) */
|
||||
|
||||
#define gnu_xbm_width 50
|
||||
#define gnu_xbm_height 50
|
||||
static unsigned char gnu_xbm_bits[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user