Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-78

Merge from emacs--cvs-trunk--0

Patches applied:

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-719
 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-732
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-733
   Update from CVS: man/calc.texi: Fix some TeX definitions.

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-734
   Merge from gnus--rel--5.10

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-75
   Merge from emacs--cvs-trunk--0

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-76
 - miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-77
   Update from CVS
This commit is contained in:
Miles Bader 2004-12-14 07:34:55 +00:00
commit dce59e79ab
72 changed files with 2224 additions and 1243 deletions

View file

@ -1,3 +1,13 @@
2004-12-11 Kim F. Storm <storm@cua.dk>
* Makefile.in (info): Undo 2004-12-05 change.
2004-12-08 Luc Teirlinck <teirllm@auburn.edu>
* info/dir (File): Add URL and Org Mode manuals.
* Makefile.in (install-arch-indep, uninstall): Add url and org
manuals.
2004-12-07 Stefan <monnier@iro.umontreal.ca>
* configure.in (INLINE, RE_TRANSLATE_P): Move patches mistakenly

View file

@ -484,7 +484,7 @@ install-arch-indep: mkdir info
chmod a+r ${infodir}/dir); \
fi; \
cd ${srcdir}/info ; \
for f in ada-mode* autotype* calc* ccmode* cl* dired-x* ebrowse* ediff* efaq* eintr* elisp* emacs* emacs-mime* emacs-xtra* eshell* eudc* flymake* forms* gnus* idlwave* info* message* mh-e* pcl-cvs* pgg* reftex* sc* ses* sieve* speedbar* tramp* vip* widget* woman* smtpmail*; do \
for f in ada-mode* autotype* calc* ccmode* cl* dired-x* ebrowse* ediff* efaq* eintr* elisp* emacs* emacs-mime* emacs-xtra* eshell* eudc* flymake* forms* gnus* idlwave* info* message* mh-e* org* pcl-cvs* pgg* reftex* sc* ses* sieve* speedbar* tramp* vip* widget* woman* smtpmail* url*; do \
(cd $${thisdir}; \
${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \
chmod a+r ${infodir}/$$f); \
@ -494,7 +494,7 @@ install-arch-indep: mkdir info
thisdir=`/bin/pwd`; \
if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
then \
for f in ada-mode autotype calc ccmode cl dired-x ebrowse ediff efaq elisp eintr emacs emacs-mime emacs-xtra eshell eudc flymake forms gnus idlwave info message mh-e pcl-cvs pgg reftex sc ses sieve speedbar tramp vip viper widget woman smtpmail; do \
for f in ada-mode autotype calc ccmode cl dired-x ebrowse ediff efaq elisp eintr emacs emacs-mime emacs-xtra eshell eudc flymake forms gnus idlwave info message mh-e org pcl-cvs pgg reftex sc ses sieve speedbar tramp vip viper widget woman smtpmail url; do \
(cd $${thisdir}; \
${INSTALL_INFO} --info-dir=${infodir} ${infodir}/$$f); \
done; \
@ -560,7 +560,7 @@ uninstall:
done
(cd ${archlibdir} && rm -f fns-*)
-rm -rf ${libexecdir}/emacs/${version}
(cd ${infodir} && rm -f cl* ada-mode* autotype* calc* ccmode* ebrowse* efaq* eintr elisp* eshell* eudc* idlwave* message* pcl-cvs* reftex* speedbar* tramp* widget* woman* dired-x* ediff* emacs* emacs-xtra* flymake* forms* gnus* info* mh-e* sc* ses* vip* smtpmail*)
(cd ${infodir} && rm -f cl* ada-mode* autotype* calc* ccmode* ebrowse* efaq* eintr elisp* eshell* eudc* idlwave* message* pcl-cvs* reftex* speedbar* tramp* widget* woman* dired-x* ediff* emacs* emacs-xtra* flymake* forms* gnus* info* mh-e* org* sc* ses* vip* smtpmail* url*)
(cd ${man1dir} && rm -f emacs${manext} emacsclient${manext} etags${manext} ctags${manext})
(cd ${bindir} && rm -f $(EMACSFULL) $(EMACS))
@ -719,9 +719,9 @@ force-info:
# put the info files in $(srcdir),
# so we can do ok running make in the build dir.
info: force-info
-(cd man; $(MAKE) $(MFLAGS) info)
-(cd lispref; $(MAKE) $(MFLAGS) info)
-(cd lispintro; $(MAKE) $(MFLAGS) info)
(cd man; $(MAKE) $(MFLAGS) info)
(cd lispref; $(MAKE) $(MFLAGS) info)
(cd lispintro; $(MAKE) $(MFLAGS) info)
dvi:
(cd man; $(MAKE) $(MFLAGS) dvi)
(cd lispref; $(MAKE) $(MFLAGS) elisp.dvi)

View file

@ -1,3 +1,12 @@
2004-12-11 Dan Nicolaescu <dann@ics.uci.edu>
* e/eterm.ti: Add rs1.
* e/eterm: Regenerate.
2004-12-08 Alexandre VEYRENC <veyrenc@wanadoo.fr> (tiny change)
* fr-refcard.tex: Fix typos.
2004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* PROBLEMS: Update information about klipper on KDE.

View file

@ -671,6 +671,27 @@ command is bound to M-o. A new command dired-mark-omitted, bound to M-O,
marks omitted files. The variable dired-omit-files-p is obsoleted, use the
mode toggling function instead.
+++
** find-file-read-only visits multiple files in read-only mode,
when the file name contains wildcard characters.
+++
** find-alternate-file replaces the current file with multiple files,
when the file name contains wildcard characters.
** FFAP
+++
*** New ffap commands and keybindings: C-x C-r (`ffap-read-only'),
C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
---
*** FFAP accepts wildcards in a file name by default. C-x C-f passes
it to `find-file' with non-nil WILDCARDS argument, which visits
multiple files, and C-x d passes it to `dired'.
** Info mode:
*** A numeric prefix argument of `info' selects an Info buffer
@ -1139,6 +1160,10 @@ All regular expression replacement commands now allow `\?' in the
replacement string to specify a position where the replacement string
can be edited for each replacement.
** query-replace uses isearch highlighting with lazy highlighting
when the user option `query-replace-highlight' is set to `isearch'.
If it is t, it uses old query-replace highlighting method.
+++
** Emacs normally highlights mouse sensitive text whenever the mouse
is over the text. By setting the new variable `mouse-highlight', you
@ -1443,7 +1468,10 @@ you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or
C-M-h (mark-defun) repeatedly, the marked region extends each time, so
you can mark the next two sexps with M-C-SPC M-C-SPC, for example.
This feature also works for mark-end-of-sentence, if you bind that to
a key.
a key. It also extends the region when the mark is active in Transient
Mark mode, regardless of the last command. To start a new region with
one of marking commands in Transient Mark mode, you can deactivate the
active region with C-g, or set the new mark with C-SPC.
+++
** Some commands do something special in Transient Mark mode when the
@ -1468,6 +1496,11 @@ C-g.
previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the
mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump.
** Movement commands `beginning-of-buffer', `end-of-buffer',
`beginning-of-defun', `end-of-defun' do not set the mark if the new
option `inhibit-mark-movement' is non-nil, or if the mark is already
active in Transient Mark mode.
+++
** In the *Occur* buffer, `o' switches to it in another window, and
C-o displays the current line's occurrence in another window without
@ -2413,6 +2446,17 @@ configuration files.
* Lisp Changes in Emacs 21.4
** (while-no-input BODY...) runs BODY, but only so long as no input
arrives. If the user types or clicks anything, BODY stops as if a
quit had occurred. while-no-input returns the value of BODY, if BODY
finishes. It returns nil if BODY was aborted.
---
** To manipulate the File menu using easy-menu, you must specify the
proper name "file". In previous Emacs versions, you had to specify
"files", even though the menu item itself was changed to say "File"
several versions ago.
+++
** read-from-minibuffer now accepts an additional argument KEEP-ALL
saying to put all inputs in the history list, even empty ones.
@ -2656,8 +2700,10 @@ strings by giving that character a non-nil `cursor' text property.
around potentially blocking or long-running code in timers
and post-command-hooks.
** An unconditional face specification in defface (one where the DISPLAY part
is just t) applies to all cases and does not override subsequent entries.
** The first face specification element in a defface can specify
`default' instead of frame classification. Then its attributes act as
defaults that apply to all the subsequent cases (and may be overridden
by them).
+++
** New face attribute `min-colors' can be used to tailor the face color
@ -6523,9 +6569,8 @@ function was declared obsolete.
** Function `plist-member' is renamed from `widget-plist-member' (which is
retained as an alias).
** Easy-menu's :filter now works as in XEmacs.
It takes the unconverted (i.e. XEmacs) form of the menu and the result
is automatically converted to Emacs' form.
** Easy-menu's :filter now takes the unconverted form of the menu and
the result is automatically converted to Emacs' form.
** The new function `window-list' has been defined

View file

@ -15,6 +15,9 @@ to the FSF.
ought to be possible to omit text which is invisible (due to a
text-property, overlay, or selective display) from the kill-ring.
** Redefine define-generic-mode as a macro, so the compiler
sees the definitions it generates.
* Important features:
** Provide user-friendly ways to list all available font families,

View file

@ -50,6 +50,7 @@ eterm,
rmir=\E[4l,
rmso=\E[27m,
rmul=\E[24m,
rs1=\Ec,
sc=\E7,
setab=\E[%p1%{40}%+%dm,
setaf=\E[%p1%{30}%+%dm,
@ -59,3 +60,4 @@ eterm,
smso=\E[7m,
# smcup=\E[?47h,
# rmcup=\E[?47l,
# rs2 may need to be added

View file

@ -64,13 +64,13 @@
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
\centerline{v\versionnumber{} pour GNU Emacs version 21, Juin \year}
\centerline{conception de Stephen Gildea}
\centerline{traduction francaise d'\'Eric Jacoboni}
\centerline{traduction fran\c{c}aise d'\'Eric Jacoboni}
Vous pouvez faire et distribuer des copies de cette carte, pourvu que
la note de copyright et cette note de permission soient conserv\'ees sur
toutes les copies.
Pour les copies du manuel GNU Emacs, \'ecrivez À la Free Software
Pour les copies du manuel GNU Emacs, \'ecrivez \`a la Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\endgroup}
@ -260,9 +260,9 @@
\section{Lancement d'Emacs}
Pour lancer GNU Emacs 20, il suffit de taper son nom : \kbd{emacs}
Pour lancer GNU Emacs 21, il suffit de taper son nom : \kbd{emacs}
Pour charger un fichier À \'editer, voir Fichiers, ci-dessous.
Pour charger un fichier \`a \'editer, voir Fichiers, ci-dessous.
\section{Quitter Emacs}
@ -277,7 +277,7 @@ \section{Fichiers}
\key{{\bf ins\'erer} le contenu d'un autre fichier dans ce tampon}{C-x i}
\key{remplacer ce fichier par le fichier voulu}{C-x C-v}
\key{\'ecrire le tampon dans un fichier donn\'e}{C-x C-w}
\key{contrÔle de version}{C-x C-q}
\key{contr\^ole de version}{C-x C-q}
\section{Obtenir de l'aide}
@ -324,21 +324,21 @@ \section{Recherche incr\'ementale}
\section{D\'eplacements}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf entity to move over}}{{\bf backward}}{{\bf forward}}
\threecol{{\bf entit\'e sur laquelle se d\'eplacer}}{{\bf en arri\`ere}}{{\bf en avant}}
\threecol{caract\`ere}{C-b}{C-f}
\threecol{mot}{M-b}{M-f}
\threecol{ligne}{C-p}{C-n}
\threecol{aller au d\'ebut (ou À la fin) de la ligne}{C-a}{C-e}
\threecol{aller au d\'ebut (ou \`a la fin) de la ligne}{C-a}{C-e}
\threecol{phrase}{M-a}{M-e}
\threecol{paragraphe}{M-\{}{M-\}}
\threecol{page}{C-x [}{C-x ]}
\threecol{s-expression}{C-M-b}{C-M-f}
\threecol{fonction}{C-M-a}{C-M-e}
\threecol{aller au d\'ebut (ou À la fin) du tampon}{M-<}{M->}
\threecol{aller au d\'ebut (ou \`a la fin) du tampon}{M-<}{M->}
}
\key{passer À l'\'ecran suivant}{C-v}
\key{passer À l'\'ecran pr\'ec\'edent}{M-v}
\key{passer \`a l'\'ecran suivant}{C-v}
\key{passer \`a l'\'ecran pr\'ec\'edent}{M-v}
\key{d\'efiler l'\'ecran vers la droite}{C-x <}
\key{d\'efiler l'\'ecran vers la gauche}{C-x >}
\key{placer la ligne courante au centre de l'\'ecran}{C-u C-l}
@ -346,17 +346,17 @@ \section{D\'eplacements}
\section{D\'etruire et supprimer}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf entity to kill}}{{\bf backward}}{{\bf forward}}
\threecol{{\bf entit\'e \`a supprimer}}{{\bf en arri\`ere}}{{\bf en avant}}
\threecol{caract\`ere (suppression, pas destruction)}{DEL}{C-d}
\threecol{mot}{M-DEL}{M-d}
\threecol{ligne (jusqu'À la fin)}{M-0 C-k}{C-k}
\threecol{ligne (jusqu'\`a la fin)}{M-0 C-k}{C-k}
\threecol{phrase}{C-x DEL}{M-k}
\threecol{s-expression}{M-- C-M-k}{C-M-k}
}
\key{d\'etruire une {\bf r\'egion}}{C-w}
\key{copier une r\'egion dans le kill ring}{M-w}
\key{d\'etruire jusqu'À l'occurrence suivante de {\it car}}{M-z {\it car}}
\key{d\'etruire jusqu'\`a l'occurrence suivante de {\it car}}{M-z {\it car}}
\key{r\'ecup\'erer la derni\`ere chose d\'etruite}{C-y}
\key{remplacer la derni\`ere r\'ecup\'eration par ce qui a \'et\'e d\'etruit avant}{M-y}
@ -380,11 +380,11 @@ \section{Remplacement interactif}
Les r\'eponses admises dans le mode de remplacement interactif sont :
\key{{\bf remplacer} celle-lÀ, passer À la suivante}{SPC}
\key{remplacer celle-lÀ, rester lÀ}{,}
\key{{\bf passer} À la suivante sans remplacer}{DEL}
\key{{\bf remplacer} celle-l\`a, passer \`a la suivante}{SPC}
\key{remplacer celle-l\`a, rester l\`a}{,}
\key{{\bf passer} \`a la suivante sans remplacer}{DEL}
\key{remplacer toutes les correspondances suivantes}{!}
\key{{\bf revenir} À la correspondance pr\'ec\'edente}{^}
\key{{\bf revenir} \`a la correspondance pr\'ec\'edente}{^}
\key{{\bf sortir} du remplacement interactif}{RET}
\key{entrer dans l'\'edition r\'ecursive (\kbd{C-M-c} pour sortir)}{C-r}
@ -405,7 +405,7 @@ \section{Fen\^etres multiples}
{\setbox0=\hbox{\kbd{0}}\advance\hsize by 2\wd0
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{switch cursor to another window}{C-x o}{C-x 5 o}
\threecol{placer le curseur dans une autre fen\^etre}{C-x o}{C-x 5 o}
\threecol{s\'electionner le tampon dans l'autre fen\^etre}{C-x 4 b}{C-x 5 b}
\threecol{afficher le tampon dans l'autre fen\^etre}{C-x 4 C-o}{C-x 5 C-o}
@ -429,9 +429,9 @@ \section{Formater}
\key{ins\'erer un newline apr\`es le point}{C-o}
\key{d\'eplacer le reste de la ligne vers le bas}{C-M-o}
\key{supprimer les lignes blanches autour du point}{C-x C-o}
\key{joindre la ligne À la pr\'ec\'edente (À la suivant avec arg)}{M-^}
\key{joindre la ligne \`a la pr\'ec\'edente (\`a la suivante avec arg)}{M-^}
\key{supprimer tous les espaces autour du point}{M-\\}
\key{mettre exactement un espace À l'emplacement du point}{M-SPC}
\key{mettre exactement un espace \`a l'emplacement du point}{M-SPC}
\key{remplir le paragraphe}{M-q}
\key{placer la marge droite}{C-x f}
@ -454,11 +454,11 @@ \section{Le mini-tampon}
\key{compl\'eter autant que possible}{TAB}
\key{compl\'eter un mot}{SPC}
\key{completer et ex\'ecuter}{RET}
\key{compl\'eter et ex\'ecuter}{RET}
\key{montrer les compl\'etions possibles}{?}
\key{rechercher l'entr\'ee pr\'ec\'edente du mini-tampon}{M-p}
\key{rechercher l'entr\'ee suivante du mini-tampon ou le d\'efaut}{M-n}
\key{rechercher À rebours par expr. rationnelle dans l'historique}{M-r}
\key{rechercher \`a rebours par expr. rationnelle dans l'historique}{M-r}
\key{rechercher vers l'avant par expr. rationnelle dans l'historique}{M-s}
\key{annuler la commande}{C-g}
@ -511,7 +511,7 @@ \section{Rectangles}
\key{copier le rectangle dans le registre}{C-x r r}
\key{d\'etruire le rectangle}{C-x r k}
\key{r\'ecup\'erer le rectangle}{C-x r y}
\key{ouvrir le rectangle, en d\'ecalant le texte À droite}{C-x r o}
\key{ouvrir le rectangle, en d\'ecalant le texte \`a droite}{C-x r o}
\key{vider le rectangle}{C-x r c}
\key{pr\'efixer chaque ligne avec une cha\^\i{}ne}{C-x r t}
@ -545,7 +545,7 @@ \section{Expressions rationnelles}
\threecol{tampon}{\\`}{\\'}
\threecol{{\bf classe de caract\`ere}}{{\bf correspond}}{{\bf correspond
À d'autres}}
\`a d'autres}}
\threecol{ensemble explicite}{[ {\rm$\ldots$} ]}{[^ {\rm$\ldots$} ]}
\threecol{caract\`ere de mot}{\\w}{\\W}
\threecol{caract\`ere avec la syntaxe {\it c}}{\\s{\it c}}{\\S{\it c}}
@ -605,8 +605,8 @@ \section{Macros clavier}
\key{{\bf lancer} la d\'efinition d'une macro clavier}{C-x (}
\key{{\bf terminer} la d\'efinition d'une macro clavier}{C-x )}
\key{{\bf ex\'ecuter} la derni\`ere macro clavier d\'efinie}{C-x e}
\key{ajouter À la derni\`ere macro clavier}{C-u C-x (}
\metax{donner un nom À la derni\`ere macro clavier}{M-x name-last-kbd-macro}
\key{ajouter \`a la derni\`ere macro clavier}{C-u C-x (}
\metax{donner un nom \`a la derni\`ere macro clavier}{M-x name-last-kbd-macro}
\metax{ins\'erer une d\'efinition Lisp dans le tampon}{M-x insert-kbd-macro}
\section{Commandes de gestion d'Emacs Lisp}
@ -615,7 +615,7 @@ \section{Commandes de gestion d'Emacs Lisp}
\key{\'evaluer la {\bf defun} courante}{C-M-x}
\metax{\'evaluer la {\bf r\'egion}}{M-x eval-region}
\key{lire et \'evaluer le mini-tampon}{M-:}
\metax{charger À partir du r\'epertoire syst\`eme standard}{M-x load-library}
\metax{charger \`a partir du r\'epertoire syst\`eme standard}{M-x load-library}
\section{Personnalisation simple}

View file

@ -1,3 +1,207 @@
2004-12-14 Juri Linkov <juri@jurta.org>
* buff-menu.el (list-buffers-noselect): Collect internal info
for every buffer in BUFFER-LIST arg too.
(Buffer-menu-switch-other-window): Bind pop-up-windows to t.
(Buffer-menu-switch-other-window, Buffer-menu-2-window):
Bind same-window-buffer-names and same-window-regexps to nil.
2004-12-13 Juri Linkov <juri@jurta.org>
* simple.el (next-error-buffer-p, next-error-find-buffer):
Doc fix.
* mail/supercite.el (sc-cite-frame-alist): Doc fix.
(sc-cite-region, sc-uncite-region, sc-recite-region):
Fix previous change to handle not alist as a symbol, but
a citation frame as a symbol that represents a variable name.
2004-12-13 Richard M. Stallman <rms@gnu.org>
* filecache.el (file-cache-add-directory-using-find):
Only set up file-cache-find-command-posix-flag if we will use it.
* bindings.el (mode-line-buffer-identification-keymap):
Don't cancel the mode-line's usual down-mouse-1 binding.
* cus-edit.el (custom-face-selected): Handle `default' specs.
(custom-face-edit): Increase extra-offset.
(custom-display): Handle `default' specs.
* xml.el (xml-name-re, xml-entity-value-re): Add defvars.
* emacs-lisp/elint.el (elint-standard-variables)
(elint-unknown-builtin-args): Move definitions up.
* net/browse-url.el (browse-url-url-at-point): Add autoload.
* info.el (info-xref-visited): Use `default' instead of t.
(Info-try-follow-nearest-node): Don't explicitly load browse-url.
* faces.el (header-line, mode-line-inactive, tool-bar):
Use `default' instead of t for setting the defaults.
(face-spec-choose): Separate `t' from `default'.
* subr.el (while-no-input): New macro.
2004-12-13 Frederik Fouvry <fouvry@CoLi.Uni-SB.DE> (tiny change)
* filecache.el (file-cache-add-directory-using-find):
Only test file-cache-find-command-posix-flag on some systems.
2004-12-13 Stefan Monnier <monnier@iro.umontreal.ca>
* vc-svn.el (vc-svn-repository-hostname): Adjust to new format.
Reported by Ville Skytt,Ad(B <scop@xemacs.org>.
(vc-svn-annotate-current-time, vc-svn-annotate-time-of-rev)
(vc-svn-annotate-time, vc-svn-annotate-extract-revision-at-line)
(vc-svn-annotate-command, vc-svn-annotate-re): Support for svn annotate.
2004-12-12 Juri Linkov <juri@jurta.org>
* files.el (find-file-other-window, find-file-other-frame):
Add the first buffer to the returned value to return the complete
list of all visited buffers.
(find-file-read-only, find-file-read-only-other-window)
(find-file-read-only-other-frame): Use nil for `mustmatch' arg of
`find-file-read-args'. Signal an error about non-existent file
only if file name doesn't contain wildcards. Toggle read-only in
all visited buffers.
(find-alternate-file, find-alternate-file-other-window):
Add optional arg `wildcards'. Doc fix. Set `wildcards' to t when
called interactively. Pass arg `wildcards' to other functions.
(find-file-noselect): Doc fix.
* ffap.el (ffap-dired-wildcards): Set default to "[*?][^/]*\\'".
Doc fix.
(ffap-directory-finder): New variable.
(ffap-string-at-point-mode-alist): Add * and ? to `file'.
(ffap-file-at-point): Add /* to immediately rejected names.
Return absolute file names matching ffap-dired-wildcards.
(ffap-read-file-or-url): Set default value for `completing-read'
to `buffer-file-name'.
(find-file-at-point): When filename matches ffap-dired-wildcards,
call ffap-file-finder with t arg `wildcards', instead of dired.
(ffap-other-window, ffap-other-frame): Return visited buffers.
(ffap-read-only, ffap-read-only-other-window)
(ffap-read-only-other-frame, ffap-alternate-file): New commands.
(dired-at-point): Call ffap-directory-finder instead of dired.
(ffap-dired-other-window, ffap-dired-other-frame)
(ffap-list-directory): New commands.
(ffap-bindings): New keybindings for new commands.
2004-12-12 Juri Linkov <juri@jurta.org>
* simple.el (beginning-of-buffer, end-of-buffer):
* emacs-lisp/lisp.el (beginning-of-defun, end-of-defun):
Do not push mark when mark is active in transient-mark-mode.
* simple.el (mark-word):
* emacs-lisp/lisp.el (mark-sexp, mark-defun):
* textmodes/paragraphs.el (mark-paragraph):
Extend the region when mark is active in transient-mark-mode,
regardless of the last command. Doc fix.
* simple.el (mark-word): Preserve direction when repeating.
Make arg optional. Interactive "p" -> "P".
(transient-mark-mode, inhibit-mark-movement): Doc fix.
* emacs-lisp/lisp.el (mark-sexp): Reverse the condition for
preserving direction, to mark forward instead of backward when mark
is equal to point (e.g. when C-SPC C-M-SPC is typed in t-m-m).
2004-12-12 Juri Linkov <juri@jurta.org>
* isearch.el (isearch-edit-string): Set 7th arg of
`read-from-minibuffer' to `t' to inherit the current input
method (whose name is indicated by [IM] in the minibuffer prompt)
from the current buffer to the minibuffer.
(isearch-lazy-highlight-update): Put body to `with-local-quit'
to allow C-g quitting for lazy highlighting looping inside the
search with nested repetition operators. Add overlay to the list
before setting its face and other properties to avoid the case of
code quitting after placing the new overlay but before it's
recorded on the list. Select the window where isearch was
activated, to highlight matches in the right window when isearch
switches the current window to the minibuffer.
* international/isearch-x.el
(isearch-process-search-multibyte-characters):
Use `isearch-message' as initial input for `read-string' instead
of adding it to the minibuffer prompt. After reading a string
remove the initial value of `isearch-message' from the string.
* replace.el (replace-match-maybe-edit): Doc fix.
(perform-replace): Don't call `replace-highlight' when automatic
replacement is requested in literal mode, since it is intended
only to highlight words during entering a new replacement string
for \? in non-literal mode.
* replace.el (query-replace-highlight): Add new value `isearch'
that allows query replacement to use isearch highlighting.
Change type from `boolean' to `choice'. Doc fix.
(replace-highlight, replace-dehighlight, perform-replace):
Use isearch highlighting if query-replace-highlight eq `isearch'.
2004-12-11 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/checkdoc.el (checkdoc-continue, checkdoc-comments)
(checkdoc-message-text, checkdoc-defun): Fix format messages for `error'.
* textmodes/tex-mode.el (latex-backward-sexp-1): Handle the special
case of \end{verbatim}.
2004-12-11 Dan Nicolaescu <dann@ics.uci.edu>
* term.el (term-termcap-format): Synchronyze with terminfo.
(term-emulate-terminal): Handle reset.
(term-reset-terminal): New function.
2004-12-11 Thien-Thi Nguyen <ttn@gnu.org>
* play/zone.el (zone-programs): Add `zone-pgm-random-life'.
(zone-fill-out-screen): New func.
(zone-pgm-drip): Use `zone-fill-out-screen'.
Also, no longer go to point-min on every cycle.
(zone-pgm-paragraph-spaz): Allow spazzing for texinfo-mode.
(zone-pgm-random-life-wait): New user var.
(zone-pgm-random-life): New func.
2004-12-10 Thien-Thi Nguyen <ttn@gnu.org>
* files.el (auto-mode-alist): Map .com to DCL mode.
2004-12-09 Richard M. Stallman <rms@gnu.org>
* isearch.el (isearch-mode-map): Treat S-SPC like SPC.
2004-12-09 Nick Roberts <nickrob@snap.net.nz>
* xt-mouse.el (xterm-mouse-event): Correct cursor position in a
buffer with a display margin.
2004-12-08 Jay Belanger <belanger@truman.edu>
* calc/calc-keypd.el (calc-keypad-mode): Unbind unused mouse events.
(calc-keypad-left-click): Set buffer to calc-keymap-buffer.
2004-12-08 Richard M. Stallman <rms@gnu.org>
* faces.el: Delete code to set display table.
(escape-glyph): Redefine to be less loud. (Copy minibuffer-prompt.)
2004-12-08 Jay Belanger <belanger@truman.edu>
* calc/calc.el: Add math-read-preprocess-string to autoloads.
* calc/calc-ext.el (math-read-replacement-list)
(math-read-superscripts, math-read-preprocess-string): Move to
calc-aent.el.
* calc/calc-aent.el (math-read-replacement-list)
(math-read-superscripts, math-read-preprocess-string): Move from
calc-ext.el.
2004-12-07 Stefan Monnier <monnier@iro.umontreal.ca>
* isearch.el (isearch-quote-char): Fix up typo in last change.
@ -10,10 +214,9 @@
* edmacro.el: `edit-kbd-macro' is now bound to `C-x C-k e'.
(edmacro-finish-edit): Further update for keyboard macros that are
lambda forms.
(edmacro-sanitize-for-string): Correctly remove Meta modifier
(as suggested by Kim Storm).
(edmacro-sanitize-for-string): Correctly remove Meta modifier.
2004-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
2004-12-07 Stefan Monnier <monnier@iro.umontreal.ca>
* font-lock.el (font-lock-unfontify-region): Save buffer state.
(font-lock-default-unfontify-region): Don't save buffer state any more.
@ -7853,7 +8056,115 @@
(compilation-forget-errors): Don't localize already local
compilation-locs and remove FIXME about refontifying.
2004-04-14
2004-04-14 Kim F. Storm <storm@cua.dk>
* startup.el (emacs-quick-startup): New defvar (set by -Q).
(command-line): New option -Q. Like -q --no-site-file, but
in addition it also disables menu-bar, tool-bar, scroll-bars,
tool-tips, and the blinking cursor.
(command-line-1): Skip startup screen if -Q.
(fancy-splash-head): Use ":align-to center" prop to center splash image.
* emulation/cua-base.el (cua-read-only-cursor-color)
(cua-overwrite-cursor-color, cua-global-mark-cursor-color): Doc fix.
2004-04-13 Dave Love <fx@gnu.org>
* progmodes/python.el: Doc fixes. Changes for compiler warnings.
(syntax): Don't require.
(python) <defgroup>: Add :version.
(python-quote-syntax): Re-written.
(inferior-python-mode): Move stuff here from run-python and add
some more.
(python-preoutput-continuation, python-preoutput-result)
(python-dotty-syntax-table): New.
(python-describe-symbol): Use them.
(run-python): Move stuff to inferior-python-mode. Modify code
loaded into Python.
(python-send-region): Use python-proc, python-send-string.
(python-send-string): Send newlines too. Callers changed.
(python-load-file): Re-written.
(python-eldoc-function): New.
(info-look): Don't require.
(python-after-info-look): New. A modified version of former
top-level code for use with eval-after-load.
(python-maybe-jython, python-guess-indent): Use widened buffer.
(python-fill-paragraph): Re-written.
(python-mode): Fix outline-regexp. Set outline-heading-end-regexp,
eldoc-print-current-symbol-info-function. Add to eldoc-mode-hook.
2004-04-13 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/python.el (run-python): Use compilation-shell-minor-mode.
Set compilation-error-regexp-alist earlier.
* progmodes/compile.el (compilation-minor-mode-map)
(compilation-shell-minor-mode-map, compile-mouse-goto-error)
(compile-goto-error): Re-merge the mouse and non-mouse commands.
2004-04-12 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/compile.el (compile-goto-error): Select the buffer/window
corresponding to the event.
2004-04-12 Joe Buehler <jbuehler@hekiman.com>
* loadup.el: Add cygwin to system-type list, for unexec() support.
2004-04-12 John Paul Wallington <jpw@gnu.org>
* ibuffer.el (ibuffer-delete-window-on-quit): Remove.
(ibuffer-restore-window-config-on-quit): New variable to replace
`ibuffer-delete-window-on-quit'. Update all references.
(ibuffer-prev-window-config): New variable.
(ibuffer-quit): Restore previous window configuration instead of
deleting window.
(ibuffer): Save window configuration before showing Ibuffer buffer.
* help.el (describe-mode): Doc fix.
2004-04-12 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/compile.el (compilation-mode-font-lock-keywords): Fix test
not to treat nil as a function.
* vc-arch.el (vc-arch-root): Be a bit more careful.
(vc-arch-register): Save the buffer if we modified it.
(vc-arch-delete-rej-if-obsolete): Save excursion.
(vc-arch-find-file-hook): Use the simpler after-save-hook.
(vc-arch-responsible-p, vc-arch-init-version): New functions.
* net/ldap.el (ldap-search): Use list*.
2004-04-12 Juri Linkov <juri@jurta.org>
* info.el (Info-follow-reference): Allow multiline reference name.
2004-04-11 Dave Love <fx@gnu.org>
* emacs-lisp/bytecomp.el (byte-compile-cond): Fix last change.
* progmodes/python.el: New file.
2004-04-11 Andre Spiegel <spiegel@gnu.org>
* vc-hooks.el (vc-arg-list): Function removed.
(vc-default-workfile-unchanged-p): Use condition-case to check for
backward compatibility.
* vc.el (vc-print-log): Use condition-case to check for backward
compatibility.
2004-04-11 Juri Linkov <juri@jurta.org>
* dired.el (dired-faces): New defgroup.
(dired-header, dired-mark, dired-marked, dired-flagged)
(dired-warning, dired-directory, dired-symlink, dired-ignored):
New faces.
(dired-header-face, dired-mark-face, dired-marked-face)
(dired-flagged-face, dired-warning-face, dired-directory-face)
(dired-symlink-face, dired-ignored-face): New face variables.
(dired-font-lock-keywords): Use them instead of font-lock faces.
Split the rule for dired marks into 3 separate rules: for marks,
marked file names and flagged file names.

View file

@ -448,7 +448,6 @@ Menu of mode operations in the mode line.")
(let ((map (make-sparse-keymap)))
;; Bind down- events so that the global keymap won't ``shine
;; through''.
(define-key map [mode-line down-mouse-1] 'ignore)
(define-key map [mode-line mouse-1] 'mode-line-unbury-buffer)
(define-key map [header-line down-mouse-1] 'ignore)
(define-key map [header-line mouse-1] 'mode-line-unbury-buffer)

View file

@ -484,14 +484,19 @@ in the selected frame."
"Make the other window select this line's buffer.
The current window remains selected."
(interactive)
(display-buffer (Buffer-menu-buffer t)))
(let ((pop-up-windows t)
same-window-buffer-names
same-window-regexps)
(display-buffer (Buffer-menu-buffer t))))
(defun Buffer-menu-2-window ()
"Select this line's buffer, with previous buffer in second window."
(interactive)
(let ((buff (Buffer-menu-buffer t))
(menu (current-buffer))
(pop-up-windows t))
(pop-up-windows t)
same-window-buffer-names
same-window-regexps)
(delete-other-windows)
(switch-to-buffer (other-buffer))
(pop-to-buffer buff)
@ -671,8 +676,7 @@ For more information, see the function `buffer-menu'."
;; line with the beginning of the text (rather than with the left
;; scrollbar or the left fringe). -Stef
(setq header (concat (propertize " " 'display '(space :align-to 0))
header))
)
header)))
(with-current-buffer (get-buffer-create "*Buffer List*")
(setq buffer-read-only nil)
(erase-buffer)
@ -684,21 +688,19 @@ For more information, see the function `buffer-menu'."
(mapcar (lambda (c)
(if (memq c '(?\n ?\ )) c underline))
header)))))
(if buffer-list
(setq list buffer-list)
;; Collect info for every buffer we're interested in.
(dolist (buffer (buffer-list))
(dolist (buffer (or buffer-list (buffer-list)))
(with-current-buffer buffer
(let ((name (buffer-name))
(file buffer-file-name))
(cond
(unless (and (not buffer-list)
(or
;; Don't mention internal buffers.
((and (string= (substring name 0 1) " ") (null file)))
(and (string= (substring name 0 1) " ") (null file))
;; Maybe don't mention buffers without files.
((and files-only (not file)))
((string= name "*Buffer List*"))
(and files-only (not file))
(string= name "*Buffer List*")))
;; Otherwise output info.
(t
(let ((mode (concat (format-mode-line mode-name nil nil buffer)
(if mode-line-process
(format-mode-line mode-line-process
@ -722,9 +724,9 @@ For more information, see the function `buffer-menu'."
list-buffers-directory)
(setq file list-buffers-directory)))
(push (list buffer bits name (buffer-size) mode file)
list)))))))
list))))))
;; Preserve the original buffer-list ordering, just in case.
(setq list (nreverse list)))
(setq list (nreverse list))
;; Place the buffers's info in the output buffer, sorted if necessary.
(dolist (buffer
(if Buffer-menu-sort-column

View file

@ -465,6 +465,73 @@ T means abort and give an error message.")
;;; Algebraic expression parsing. [Public]
(defvar math-read-replacement-list
'(;; Misc symbols
("±" "+/-") ; plus or minus
("×" "*") ; multiplication sign
("÷" ":") ; division sign
("" "-") ; subtraction sign
("" "/") ; division sign
("" "*") ; asterisk multiplication
("" "inf") ; infinity symbol
("" "<=")
("" ">=")
("" "<=")
("" ">=")
;; fractions
("¼" "(1:4)") ; 1/4
("½" "(1:2)") ; 1/2
("¾" "(3:4)") ; 3/4
("" "(1:3)") ; 1/3
("" "(2:3)") ; 2/3
("" "(1:5)") ; 1/5
("" "(2:5)") ; 2/5
("" "(3:5)") ; 3/5
("" "(4:5)") ; 4/5
("" "(1:6)") ; 1/6
("" "(5:6)") ; 5/6
("" "(1:8)") ; 1/8
("" "(3:8)") ; 3/8
("" "(5:8)") ; 5/8
("" "(7:8)") ; 7/8
("" "1:") ; 1/...
;; superscripts
("" "0") ; 0
("¹" "1") ; 1
("²" "2") ; 2
("³" "3") ; 3
("" "4") ; 4
("" "5") ; 5
("" "6") ; 6
("" "7") ; 7
("" "8") ; 8
("" "9") ; 9
("" "+") ; +
("" "-") ; -
("" "(") ; (
("" ")") ; )
("" "n") ; n
("" "i")) ; i
"A list whose elements (old new) indicate replacements to make
in Calc algebraic input.")
(defvar math-read-superscripts
"⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁽⁾ⁿⁱ" ; 0123456789+-()ni
"A string consisting of the superscripts allowed by Calc.")
(defun math-read-preprocess-string (str)
"Replace some substrings of STR by Calc equivalents."
(setq str
(replace-regexp-in-string (concat "[" math-read-superscripts "]+")
"^(\\&)" str))
(let ((rep-list math-read-replacement-list))
(while rep-list
(setq str
(replace-regexp-in-string (nth 0 (car rep-list))
(nth 1 (car rep-list)) str))
(setq rep-list (cdr rep-list))))
str)
;; The next few variables are local to math-read-exprs (and math-read-expr
;; in calc-ext.el), but are set in functions they call.

View file

@ -2874,73 +2874,6 @@ calc-kill calc-kill-region calc-yank))))
(defvar math-expr-data)
(defvar math-read-replacement-list
'(;; Misc symbols
("±" "+/-") ; plus or minus
("×" "*") ; multiplication sign
("÷" ":") ; division sign
("" "-") ; subtraction sign
("" "/") ; division sign
("" "*") ; asterisk multiplication
("" "inf") ; infinity symbol
("" "<=")
("" ">=")
("" "<=")
("" ">=")
;; fractions
("¼" "(1:4)") ; 1/4
("½" "(1:2)") ; 1/2
("¾" "(3:4)") ; 3/4
("" "(1:3)") ; 1/3
("" "(2:3)") ; 2/3
("" "(1:5)") ; 1/5
("" "(2:5)") ; 2/5
("" "(3:5)") ; 3/5
("" "(4:5)") ; 4/5
("" "(1:6)") ; 1/6
("" "(5:6)") ; 5/6
("" "(1:8)") ; 1/8
("" "(3:8)") ; 3/8
("" "(5:8)") ; 5/8
("" "(7:8)") ; 7/8
("" "1:") ; 1/...
;; superscripts
("" "0") ; 0
("¹" "1") ; 1
("²" "2") ; 2
("³" "3") ; 3
("" "4") ; 4
("" "5") ; 5
("" "6") ; 6
("" "7") ; 7
("" "8") ; 8
("" "9") ; 9
("" "+") ; +
("" "-") ; -
("" "(") ; (
("" ")") ; )
("" "n") ; n
("" "i")) ; i
"A list whose elements (old new) indicate replacements to make
in Calc algebraic input.")
(defvar math-read-superscripts
"⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁽⁾ⁿⁱ" ; 0123456789+-()ni
"A string consisting of the superscripts allowed by Calc.")
(defun math-read-preprocess-string (str)
"Replace some substrings of STR by Calc equivalents."
(setq str
(replace-regexp-in-string (concat "[" math-read-superscripts "]+")
"^(\\&)" str))
(let ((rep-list math-read-replacement-list))
(while rep-list
(setq str
(replace-regexp-in-string (nth 0 (car rep-list))
(nth 1 (car rep-list)) str))
(setq rep-list (cdr rep-list))))
str)
(defun math-read-expr (math-exp-str)
(let ((math-exp-pos 0)
(math-exp-old-pos 0)

View file

@ -236,9 +236,21 @@
(define-key calc-keypad-mode-map (kbd "RET") 'calc-keypad-press)
(define-key calc-keypad-mode-map (kbd "TAB") 'calc-keypad-menu)
(define-key calc-keypad-mode-map "q" 'calc-keypad-off)
(define-key calc-keypad-mode-map [(mouse-3)] 'calc-keypad-right-click)
(define-key calc-keypad-mode-map [(mouse-2)] 'calc-keypad-middle-click)
(define-key calc-keypad-mode-map [(mouse-1)] 'calc-keypad-left-click)
(define-key calc-keypad-mode-map [down-mouse-1] 'ignore)
(define-key calc-keypad-mode-map [drag-mouse-1] 'ignore)
(define-key calc-keypad-mode-map [double-mouse-1] 'ignore)
(define-key calc-keypad-mode-map [triple-mouse-1] 'ignore)
(define-key calc-keypad-mode-map [down-mouse-2] 'ignore)
(define-key calc-keypad-mode-map [drag-mouse-2] 'ignore)
(define-key calc-keypad-mode-map [double-mouse-2] 'ignore)
(define-key calc-keypad-mode-map [triple-mouse-2] 'ignore)
(define-key calc-keypad-mode-map [down-mouse-3] 'ignore)
(define-key calc-keypad-mode-map [drag-mouse-3] 'ignore)
(define-key calc-keypad-mode-map [double-mouse-3] 'ignore)
(define-key calc-keypad-mode-map [triple-mouse-3] 'ignore)
(define-key calc-keypad-mode-map [mouse-3] 'calc-keypad-right-click)
(define-key calc-keypad-mode-map [mouse-2] 'calc-keypad-middle-click)
(define-key calc-keypad-mode-map [mouse-1] 'calc-keypad-left-click)
(put 'calc-keypad-mode 'mode-class 'special)
(make-local-variable 'calc-main-buffer))
@ -529,8 +541,9 @@
(defun calc-keypad-left-click (event)
"Handle a left-button mouse click in Calc Keypad window."
(interactive "e")
(with-current-buffer calc-keypad-buffer
(goto-char (posn-point (event-start event)))
(calc-keypad-press))
(calc-keypad-press)))
(defun calc-keypad-right-click (event)
"Handle a right-button mouse click in Calc Keypad window."

View file

@ -890,7 +890,7 @@ If nil, selections displayed but ignored.")
calc-check-user-syntax calc-do-alg-entry calc-do-calc-eval
calc-do-quick-calc calc-match-user-syntax math-build-parse-table
math-find-user-tokens math-read-expr-list math-read-exprs math-read-if
math-read-token math-remove-dashes)
math-read-token math-remove-dashes math-read-preprocess-string)
("calc-embed" calc-do-embedded-activate)

View file

@ -1578,7 +1578,8 @@ item in another window.\n\n"))
"Face used when the customize item has been saved."
:group 'custom-magic-faces)
(defconst custom-magic-alist '((nil "#" underline "\
(defconst custom-magic-alist
'((nil "#" underline "\
uninitialized, you should not see this.")
(unknown "?" italic "\
unknown, you should not see this.")
@ -2576,7 +2577,7 @@ to switch between two values."
"Edit face attributes."
:format "%t: %v"
:tag "Attributes"
:extra-offset 12
:extra-offset 13
:button-args '(:help-echo "Control whether this attribute has any effect.")
:value-to-internal 'custom-face-edit-fix-value
:match (lambda (widget value)
@ -2689,6 +2690,7 @@ Also change :reverse-video to :inverse-video."
:value t
:help-echo "Specify frames where the face attributes should be used."
:args '((const :tag "all" t)
(const :tag "defaults" default)
(checklist
:offset 0
:extra-offset 9
@ -2817,13 +2819,29 @@ Only match frames that support the specified face attributes.")
(define-widget 'custom-face-selected 'group
"Edit the attributes of the selected display in a face specification."
:args '((repeat :format ""
:inline t
(group custom-display-unselected sexp))
(group (sexp :format "") custom-face-edit)
:args '((choice :inline t
(group :tag "With Defaults" :inline t
(group (const :tag "" default)
(custom-face-edit :tag " Default\n Attributes"))
(repeat :format ""
:inline t
sexp)))
(group custom-display-unselected sexp))
(group (sexp :format "")
(custom-face-edit :tag " Overriding\n Attributes"))
(repeat :format ""
:inline t
sexp))
(group :tag "No Defaults" :inline t
(repeat :format ""
:inline t
(group custom-display-unselected sexp))
(group (sexp :format "")
(custom-face-edit :tag "\n Attributes"))
(repeat :format ""
:inline t
sexp)))))
(defconst custom-face-selected (widget-convert 'custom-face-selected)
"Converted version of the `custom-face-selected' widget.")

View file

@ -919,7 +919,7 @@ is the starting location. If this is nil, `point-min' is used instead."
(progn
(goto-char wrong)
(if (not take-notes)
(error (checkdoc-error-text msg)))))
(error "%s" (checkdoc-error-text msg)))))
(checkdoc-show-diagnostics)
(if (interactive-p)
(message "No style warnings."))))
@ -952,7 +952,7 @@ if there is one."
(e (checkdoc-file-comments-engine))
(checkdoc-generate-compile-warnings-flag
(or take-notes checkdoc-generate-compile-warnings-flag)))
(if e (error (checkdoc-error-text e)))
(if e (error "%s" (checkdoc-error-text e)))
(checkdoc-show-diagnostics)
e))
@ -990,7 +990,7 @@ Optional argument TAKE-NOTES causes all errors to be logged."
(if (not (interactive-p))
e
(if e
(error (checkdoc-error-text e))
(error "%s" (checkdoc-error-text e))
(checkdoc-show-diagnostics)))
(goto-char p))
(if (interactive-p) (message "Checking interactive message text...done.")))
@ -1033,15 +1033,15 @@ space at the end of each line."
(msg (checkdoc-this-string-valid)))
(if msg (if no-error
(message (checkdoc-error-text msg))
(error (checkdoc-error-text msg)))
(error "%s" (checkdoc-error-text msg)))
(setq msg (checkdoc-message-text-search beg end))
(if msg (if no-error
(message (checkdoc-error-text msg))
(error (checkdoc-error-text msg)))
(error "%s" (checkdoc-error-text msg)))
(setq msg (checkdoc-rogue-space-check-engine beg end))
(if msg (if no-error
(message (checkdoc-error-text msg))
(error (checkdoc-error-text msg))))))
(error "%s" (checkdoc-error-text msg))))))
(if (interactive-p) (message "Checkdoc: done."))))))
;;; Ispell interface for forcing a spell check

View file

@ -49,6 +49,85 @@
(defvar elint-log-buffer "*Elint*"
"*The buffer to insert lint messages in.")
;;;
;;; Data
;;;
(defconst elint-standard-variables
'(abbrev-mode auto-fill-function buffer-auto-save-file-name
buffer-backed-up buffer-display-count buffer-display-table buffer-display-time buffer-file-coding-system buffer-file-format
buffer-file-name buffer-file-number buffer-file-truename
buffer-file-type buffer-invisibility-spec buffer-offer-save
buffer-read-only buffer-saved-size buffer-undo-list
cache-long-line-scans case-fold-search ctl-arrow cursor-type comment-column
default-directory defun-prompt-regexp desktop-save-buffer enable-multibyte-characters fill-column fringes-outside-margins goal-column
header-line-format indicate-buffer-boundaries indicate-empty-lines
left-fringe-width
left-margin left-margin-width line-spacing local-abbrev-table local-write-file-hooks major-mode
mark-active mark-ring mode-line-buffer-identification
mode-line-format mode-line-modified mode-line-process mode-name
overwrite-mode
point-before-scroll right-fringe-width right-margin-width
scroll-bar-width scroll-down-aggressively scroll-up-aggressively selective-display
selective-display-ellipses tab-width truncate-lines vc-mode vertical-scroll-bar)
"Standard buffer local vars.")
(defconst elint-unknown-builtin-args
'((while test &rest forms)
(insert-before-markers-and-inherit &rest text)
(catch tag &rest body)
(and &rest args)
(funcall func &rest args)
(insert &rest args)
(vconcat &rest args)
(run-hook-with-args hook &rest args)
(message-or-box string &rest args)
(save-window-excursion &rest body)
(append &rest args)
(logior &rest args)
(progn &rest body)
(insert-and-inherit &rest args)
(message-box string &rest args)
(prog2 x y &rest body)
(prog1 first &rest body)
(insert-before-markers &rest args)
(call-process-region start end program &optional delete
destination display &rest args)
(concat &rest args)
(vector &rest args)
(run-hook-with-args-until-success hook &rest args)
(track-mouse &rest body)
(unwind-protect bodyform &rest unwindforms)
(save-restriction &rest body)
(quote arg)
(make-byte-code &rest args)
(or &rest args)
(cond &rest clauses)
(start-process name buffer program &rest args)
(run-hook-with-args-until-failure hook &rest args)
(if cond then &rest else)
(apply function &rest args)
(format string &rest args)
(encode-time second minute hour day month year zone &rest args)
(min &rest args)
(logand &rest args)
(logxor &rest args)
(max &rest args)
(list &rest args)
(message string &rest args)
(defvar symbol init doc)
(call-process program &optional infile destination display &rest args)
(with-output-to-temp-buffer bufname &rest body)
(nconc &rest args)
(save-excursion &rest body)
(run-hooks &rest hooks)
(/ x y &rest zs)
(- x &rest y)
(+ &rest args)
(* &rest args)
(interactive &optional args))
"Those built-ins for which we can't find arguments.")
;;;
;;; ADT: top-form
;;;
@ -724,85 +803,6 @@ If no documentation could be found args will be `unknown'."
(if list list
(elint-find-builtins))))
;;;
;;; Data
;;;
(defconst elint-standard-variables
'(abbrev-mode auto-fill-function buffer-auto-save-file-name
buffer-backed-up buffer-display-count buffer-display-table buffer-display-time buffer-file-coding-system buffer-file-format
buffer-file-name buffer-file-number buffer-file-truename
buffer-file-type buffer-invisibility-spec buffer-offer-save
buffer-read-only buffer-saved-size buffer-undo-list
cache-long-line-scans case-fold-search ctl-arrow cursor-type comment-column
default-directory defun-prompt-regexp desktop-save-buffer enable-multibyte-characters fill-column fringes-outside-margins goal-column
header-line-format indicate-buffer-boundaries indicate-empty-lines
left-fringe-width
left-margin left-margin-width line-spacing local-abbrev-table local-write-file-hooks major-mode
mark-active mark-ring mode-line-buffer-identification
mode-line-format mode-line-modified mode-line-process mode-name
overwrite-mode
point-before-scroll right-fringe-width right-margin-width
scroll-bar-width scroll-down-aggressively scroll-up-aggressively selective-display
selective-display-ellipses tab-width truncate-lines vc-mode vertical-scroll-bar)
"Standard buffer local vars.")
(defconst elint-unknown-builtin-args
'((while test &rest forms)
(insert-before-markers-and-inherit &rest text)
(catch tag &rest body)
(and &rest args)
(funcall func &rest args)
(insert &rest args)
(vconcat &rest args)
(run-hook-with-args hook &rest args)
(message-or-box string &rest args)
(save-window-excursion &rest body)
(append &rest args)
(logior &rest args)
(progn &rest body)
(insert-and-inherit &rest args)
(message-box string &rest args)
(prog2 x y &rest body)
(prog1 first &rest body)
(insert-before-markers &rest args)
(call-process-region start end program &optional delete
destination display &rest args)
(concat &rest args)
(vector &rest args)
(run-hook-with-args-until-success hook &rest args)
(track-mouse &rest body)
(unwind-protect bodyform &rest unwindforms)
(save-restriction &rest body)
(quote arg)
(make-byte-code &rest args)
(or &rest args)
(cond &rest clauses)
(start-process name buffer program &rest args)
(run-hook-with-args-until-failure hook &rest args)
(if cond then &rest else)
(apply function &rest args)
(format string &rest args)
(encode-time second minute hour day month year zone &rest args)
(min &rest args)
(logand &rest args)
(logxor &rest args)
(max &rest args)
(list &rest args)
(message string &rest args)
(defvar symbol init doc)
(call-process program &optional infile destination display &rest args)
(with-output-to-temp-buffer bufname &rest body)
(nconc &rest args)
(save-excursion &rest body)
(run-hooks &rest hooks)
(/ x y &rest zs)
(- x &rest y)
(+ &rest args)
(* &rest args)
(interactive &optional args))
"Those built-ins for which we can't find arguments.")
(provide 'elint)
;;; arch-tag: b2f061e2-af84-4ddc-8e39-f5e969ac228f

View file

@ -73,12 +73,13 @@ move forward across N balanced expressions."
"Set mark ARG sexps from point.
The place mark goes is the same place \\[forward-sexp] would
move to with the same argument.
If this command is repeated, it marks the next ARG sexps after the ones
already marked."
If this command is repeated or mark is active in Transient Mark mode,
it marks the next ARG sexps after the ones already marked."
(interactive "P")
(cond ((and (eq last-command this-command) (mark t))
(cond ((or (and (eq last-command this-command) (mark t))
(and transient-mark-mode mark-active))
(setq arg (if arg (prefix-numeric-value arg)
(if (> (mark) (point)) 1 -1)))
(if (< (mark) (point)) -1 1)))
(set-mark
(save-excursion
(goto-char (mark))
@ -191,9 +192,11 @@ open-parenthesis, and point ends up at the beginning of the line.
If variable `beginning-of-defun-function' is non-nil, its value
is called as a function to find the defun's beginning."
(interactive "p")
(and (eq this-command 'beginning-of-defun)
(or inhibit-mark-movement (eq last-command 'beginning-of-defun)
(push-mark)))
(or inhibit-mark-movement
(not (eq this-command 'beginning-of-defun))
(eq last-command 'beginning-of-defun)
(and transient-mark-mode mark-active)
(push-mark))
(and (beginning-of-defun-raw arg)
(progn (beginning-of-line) t)))
@ -242,9 +245,11 @@ matches the open-parenthesis that starts a defun; see function
If variable `end-of-defun-function' is non-nil, its value
is called as a function to find the defun's end."
(interactive "p")
(and (eq this-command 'end-of-defun)
(or inhibit-mark-movement (eq last-command 'end-of-defun)
(push-mark)))
(or inhibit-mark-movement
(not (eq this-command 'end-of-defun))
(eq last-command 'end-of-defun)
(and transient-mark-mode mark-active)
(push-mark))
(if (or (null arg) (= arg 0)) (setq arg 1))
(if end-of-defun-function
(if (> arg 0)
@ -289,10 +294,11 @@ is called as a function to find the defun's end."
(defun mark-defun ()
"Put mark at end of this defun, point at beginning.
The defun marked is the one that contains point or follows point.
If this command is repeated, marks more defuns after the ones
already marked."
If this command is repeated or mark is active in Transient Mark mode,
it marks more defuns after the ones already marked."
(interactive)
(cond ((and (eq last-command this-command) (mark t))
(cond ((or (and (eq last-command this-command) (mark t))
(and transient-mark-mode mark-active))
(set-mark
(save-excursion
(goto-char (mark))

View file

@ -1335,21 +1335,29 @@ If SPEC is nil, return nil."
(unless frame
(setq frame (selected-frame)))
(let ((tail spec)
result all)
result defaults)
(while tail
(let* ((entry (pop tail))
(display (car entry))
(attrs (cdr entry)))
(when (face-spec-set-match-display display frame)
(setq result (if (null (cdr attrs)) ;; was (listp (car attrs))
(attrs (cdr entry))
thisval)
;; Get the attributes as actually specified by this alternative.
(setq thisval
(if (null (cdr attrs)) ;; was (listp (car attrs))
;; Old-style entry, the attribute list is the
;; first element.
(car attrs)
attrs))
(if (eq display t)
(setq all result result nil)
;; If the condition is `default', that sets the default
;; for following conditions.
(if (eq display 'default)
(setq defaults thisval)
;; Otherwise, if it matches, use it.
(when (face-spec-set-match-display display frame)
(setq result thisval)
(setq tail nil)))))
(if all (append result all) result)))
(if defaults (append result defaults) result)))
(defun face-spec-reset-face (face &optional frame)
@ -1787,7 +1795,7 @@ created."
:group 'basic-faces)
(defface mode-line-inactive
'((t
'((default
:inherit mode-line)
(((type x w32 mac) (background light) (class color))
:weight light
@ -1807,7 +1815,7 @@ created."
(put 'modeline-inactive 'face-alias 'mode-line-inactive)
(defface header-line
'((t
'((default
:inherit mode-line)
(((type tty))
;; This used to be `:inverse-video t', but that doesn't look very
@ -1843,7 +1851,7 @@ created."
(defface tool-bar
'((t
'((default
:box (:line-width 1 :style released-button)
:foreground "black")
(((type x w32 mac) (class color))
@ -2022,32 +2030,11 @@ Note: Other faces cannot inherit from the cursor face."
:group 'font-lock ; like `show-trailing-whitespace'
:group 'basic-faces)
;; Make escape characters stand out in display
(defface escape-glyph
'((t :inherit secondary-selection))
"Basic face for displaying \\ and ^ in multichar glyphs.
It is also used for ... in ellipses."
(defface escape-glyph '((((background dark)) :foreground "cyan")
(((type pc)) :foreground "magenta")
(t :foreground "dark blue"))
"Face for displaying \\ and ^ in multichar glyphs."
:group 'basic-faces)
(put 'display-table 'char-table-extra-slots 6)
(or standard-display-table
;; avoid using autoloaded make-display-table here
(setq standard-display-table (make-char-table 'display-table nil)))
(let* ((face (lsh (face-id 'escape-glyph) 19))
(backslash (+ face ?\\))
(dot (+ face ?.)))
(set-char-table-extra-slot standard-display-table 2 backslash)
(aset standard-display-table 2208 (vector backslash ?\s))
(aset standard-display-table 2221 (vector backslash ?-))
(set-char-table-extra-slot standard-display-table 3 (+ face ?^))
(set-char-table-extra-slot standard-display-table 4 (vector dot dot dot)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Manipulating font names.

View file

@ -43,9 +43,20 @@
;; ffap-bindings makes the following global key bindings:
;;
;; C-x C-f find-file-at-point (abbreviated as ffap)
;; C-x C-r ffap-read-only
;; C-x C-v ffap-alternate-file
;;
;; C-x d dired-at-point
;; C-x C-d ffap-list-directory
;;
;; C-x 4 f ffap-other-window
;; C-x 4 r ffap-read-only-other-window
;; C-x 4 d ffap-dired-other-window
;;
;; C-x 5 f ffap-other-frame
;; C-x 5 r ffap-read-only-other-frame
;; C-x 5 d ffap-dired-other-frame
;;
;; S-mouse-3 ffap-at-mouse
;; C-S-mouse-3 ffap-menu
;;
@ -202,13 +213,17 @@ Sensible values are nil, \"news\", or \"mailto\"."
;; through this section for features that you like, put an appropriate
;; enabler in your .emacs file.
(defcustom ffap-dired-wildcards nil
;; Suggestion from RHOGEE, 07 Jul 1994. Disabled, dired is still
;; available by "C-x C-d <pattern>", and valid filenames may
;; sometimes contain wildcard characters.
(defcustom ffap-dired-wildcards "[*?][^/]*\\'"
"*A regexp matching filename wildcard characters, or nil.
If `find-file-at-point' gets a filename matching this pattern,
it passes it on to `dired' instead of `find-file'."
it passes it on to `find-file' with non-nil WILDCARDS argument,
which expands wildcards and visits multiple files. To visit
a file whose name contains wildcard characters you can suppress
wildcard expansion by setting `find-file-wildcards'.
If `dired-at-point' gets a filename matching this pattern,
it passes it on to `dired'."
:type '(choice (const :tag "Disable" nil)
(const :tag "Enable" "[*?][^/]*\\'")
;; regexp -- probably not useful
@ -236,6 +251,12 @@ ffap most of the time."
:group 'ffap)
(put 'ffap-file-finder 'risky-local-variable t)
(defcustom ffap-directory-finder 'dired
"*The command called by `dired-at-point' to find a directory."
:type 'function
:group 'ffap)
(put 'ffap-directory-finder 'risky-local-variable t)
(defcustom ffap-url-fetcher
(if (fboundp 'browse-url)
'browse-url ; rely on browse-url-browser-function
@ -939,7 +960,7 @@ If t, `ffap-tex-init' will initialize this when needed.")
;; Slightly controversial decisions:
;; * strip trailing "@" and ":"
;; * no commas (good for latex)
(file "--:$+<>@-Z_a-z~" "<@" "@>;.,!?:")
(file "--:$+<>@-Z_a-z~*?" "<@" "@>;.,!:")
;; An url, or maybe a email/news message-id:
(url "--:=&?$+@-Z_a-z~#,%;" "^A-Za-z0-9" ":;.,!?")
;; Find a string that does *not* contain a colon:
@ -1120,8 +1141,8 @@ which may actually result in an url rather than a filename."
(default-directory default-directory))
(unwind-protect
(cond
;; Immediate rejects (/ and // are too common in C++):
((member name '("" "/" "//" ".")) nil)
;; Immediate rejects (/ and // and /* are too common in C/C++):
((member name '("" "/" "//" "/*" ".")) nil)
;; Immediately test local filenames. If default-directory is
;; remote, you probably already have a connection.
((and (not abs) (ffap-file-exists-string name)))
@ -1187,6 +1208,12 @@ which may actually result in an url rather than a filename."
remote-dir (substring name (match-end 1)))))
(ffap-file-exists-string
(ffap-replace-file-component remote-dir name))))))
((and ffap-dired-wildcards
(string-match ffap-dired-wildcards name)
abs
(ffap-file-exists-string (file-name-directory
(directory-file-name name)))
name))
;; Try all parent directories by deleting the trailing directory
;; name until existing directory is found or name stops changing
((let ((dir name))
@ -1227,7 +1254,9 @@ which may actually result in an url rather than a filename."
dir
nil
(if dir (cons guess (length dir)) guess)
(list 'file-name-history))))
(list 'file-name-history)
(and buffer-file-name
(abbreviate-file-name buffer-file-name)))))
;; Do file substitution like (interactive "F"), suggested by MCOOK.
(or (ffap-url-p guess) (setq guess (substitute-in-file-name guess)))
;; Should not do it on url's, where $ is a common (VMS?) character.
@ -1357,10 +1386,12 @@ See <ftp://ftp.mathcs.emory.edu/pub/mic/emacs/> for latest version."
((ffap-url-p filename)
(let (current-prefix-arg) ; w3 2.3.25 bug, reported by KPC
(funcall ffap-url-fetcher filename)))
;; This junk more properly belongs in a modified ffap-file-finder:
((and ffap-dired-wildcards
(string-match ffap-dired-wildcards filename))
(dired filename))
(string-match ffap-dired-wildcards filename)
find-file-wildcards
;; Check if it's find-file that supports wildcards arg
(memq ffap-file-finder '(find-file find-alternate-file)))
(funcall ffap-file-finder (expand-file-name filename) t))
((or (not ffap-newfile-prompt)
(file-exists-p filename)
(y-or-n-p "File does not exist, create buffer? "))
@ -1556,9 +1587,7 @@ Return value:
)))
;;; ffap-other-* commands:
;;
;; Requested by KPC.
;;; ffap-other-*, ffap-read-only-*, ffap-alternate-* commands:
;; There could be a real `ffap-noselect' function, but we would need
;; at least two new user variables, and there is no w3-fetch-noselect.
@ -1568,23 +1597,70 @@ Return value:
"Like `ffap', but put buffer in another window.
Only intended for interactive use."
(interactive)
(let (value)
(switch-to-buffer-other-window
(save-window-excursion (call-interactively 'ffap) (current-buffer))))
(save-window-excursion
(setq value (call-interactively 'ffap))
(unless (or (bufferp value) (bufferp (car-safe value)))
(setq value (current-buffer)))
(current-buffer)))
value))
(defun ffap-other-frame nil
"Like `ffap', but put buffer in another frame.
Only intended for interactive use."
(interactive)
;; Extra code works around dedicated windows (noted by JENS, 7/96):
(let* ((win (selected-window)) (wdp (window-dedicated-p win)))
(let* ((win (selected-window))
(wdp (window-dedicated-p win))
value)
(unwind-protect
(progn
(set-window-dedicated-p win nil)
(switch-to-buffer-other-frame
(save-window-excursion
(call-interactively 'ffap)
(setq value (call-interactively 'ffap))
(unless (or (bufferp value) (bufferp (car-safe value)))
(setq value (current-buffer)))
(current-buffer))))
(set-window-dedicated-p win wdp))))
(set-window-dedicated-p win wdp))
value))
(defun ffap-read-only ()
"Like `ffap', but mark buffer as read-only.
Only intended for interactive use."
(interactive)
(let ((value (call-interactively 'ffap)))
(unless (or (bufferp value) (bufferp (car-safe value)))
(setq value (current-buffer)))
(mapc (lambda (b) (with-current-buffer b (toggle-read-only 1)))
(if (listp value) value (list value)))
value))
(defun ffap-read-only-other-window ()
"Like `ffap', but put buffer in another window and mark as read-only.
Only intended for interactive use."
(interactive)
(let ((value (ffap-other-window)))
(mapc (lambda (b) (with-current-buffer b (toggle-read-only 1)))
(if (listp value) value (list value)))
value))
(defun ffap-read-only-other-frame ()
"Like `ffap', but put buffer in another frame and mark as read-only.
Only intended for interactive use."
(interactive)
(let ((value (ffap-other-frame)))
(mapc (lambda (b) (with-current-buffer b (toggle-read-only 1)))
(if (listp value) value (list value)))
value))
(defun ffap-alternate-file ()
"Like `ffap' and `find-alternate-file'.
Only intended for interactive use."
(interactive)
(let ((ffap-file-finder 'find-alternate-file))
(call-interactively 'ffap)))
;;; Bug Reporter:
@ -1665,24 +1741,26 @@ ffap most of the time."
(not current-prefix-arg)
current-prefix-arg))
(let (current-prefix-arg) ; already interpreted
(call-interactively 'dired))
(call-interactively ffap-directory-finder))
(or filename (setq filename (dired-at-point-prompter)))
(cond
((ffap-url-p filename)
(funcall ffap-url-fetcher filename))
((and ffap-dired-wildcards
(string-match ffap-dired-wildcards filename))
(dired filename))
(funcall ffap-directory-finder filename))
((file-exists-p filename)
(if (file-directory-p filename)
(dired (expand-file-name filename))
(dired (concat (expand-file-name filename) "*"))))
(funcall ffap-directory-finder
(expand-file-name filename))
(funcall ffap-directory-finder
(concat (expand-file-name filename) "*"))))
((and (file-writable-p
(or (file-name-directory (directory-file-name filename))
filename))
(y-or-n-p "Directory does not exist, create it? "))
(make-directory filename)
(dired filename))
(funcall ffap-directory-finder filename))
((error "No such file or directory `%s'" filename)))))
(defun dired-at-point-prompter (&optional guess)
@ -1712,16 +1790,66 @@ ffap most of the time."
(and guess (ffap-highlight))))
(ffap-highlight t)))
;;; ffap-dired-other-*, ffap-list-directory commands:
(defun ffap-dired-other-window ()
"Like `dired-at-point', but put buffer in another window.
Only intended for interactive use."
(interactive)
(let (value)
(switch-to-buffer-other-window
(save-window-excursion
(setq value (call-interactively 'dired-at-point))
(current-buffer)))
value))
(defun ffap-dired-other-frame ()
"Like `dired-at-point', but put buffer in another frame.
Only intended for interactive use."
(interactive)
;; Extra code works around dedicated windows (noted by JENS, 7/96):
(let* ((win (selected-window))
(wdp (window-dedicated-p win))
value)
(unwind-protect
(progn
(set-window-dedicated-p win nil)
(switch-to-buffer-other-frame
(save-window-excursion
(setq value (call-interactively 'dired-at-point))
(current-buffer))))
(set-window-dedicated-p win wdp))
value))
(defun ffap-list-directory ()
"Like `dired-at-point' and `list-directory'.
Only intended for interactive use."
(interactive)
(let ((ffap-directory-finder 'list-directory))
(call-interactively 'dired-at-point)))
;;; Offer default global bindings (`ffap-bindings'):
(defvar ffap-bindings
'(
(global-set-key [S-mouse-3] 'ffap-at-mouse)
(global-set-key [C-S-mouse-3] 'ffap-menu)
(global-set-key "\C-x\C-f" 'find-file-at-point)
(global-set-key "\C-x\C-r" 'ffap-read-only)
(global-set-key "\C-x\C-v" 'ffap-alternate-file)
(global-set-key "\C-x4f" 'ffap-other-window)
(global-set-key "\C-x5f" 'ffap-other-frame)
(global-set-key "\C-x4r" 'ffap-read-only-other-window)
(global-set-key "\C-x5r" 'ffap-read-only-other-frame)
(global-set-key "\C-xd" 'dired-at-point)
(global-set-key "\C-x4d" 'ffap-dired-other-window)
(global-set-key "\C-x5d" 'ffap-dired-other-frame)
(global-set-key "\C-x\C-d" 'ffap-list-directory)
(add-hook 'gnus-summary-mode-hook 'ffap-gnus-hook)
(add-hook 'gnus-article-mode-hook 'ffap-gnus-hook)
(add-hook 'vm-mode-hook 'ffap-ro-mode-hook)

View file

@ -337,21 +337,20 @@ in each directory, not to the directory list itself."
Find is run in DIRECTORY."
(interactive "DAdd files under directory: ")
(let ((dir (expand-file-name directory)))
(when (memq system-type '(windows-nt cygwin))
(if (eq file-cache-find-command-posix-flag 'not-defined)
(setq file-cache-find-command-posix-flag
(executable-command-find-posix-p file-cache-find-command)))
(executable-command-find-posix-p file-cache-find-command))))
(set-buffer (get-buffer-create file-cache-buffer))
(erase-buffer)
(call-process file-cache-find-command nil
(get-buffer file-cache-buffer) nil
dir "-name"
(cond
(file-cache-find-command-posix-flag
"\\*")
((eq system-type 'windows-nt)
(if (memq system-type '(windows-nt cygwin))
(if file-cache-find-command-posix-flag
"\\*"
"'*'")
(t
"*"))
"*")
"-print")
(file-cache-add-from-file-cache-buffer)))

View file

@ -932,8 +932,7 @@ suppress wildcard expansion by setting `find-file-wildcards'.
To visit a file without any kind of conversion and without
automatically choosing a major mode, use \\[find-file-literally]."
(interactive
(find-file-read-args "Find file: " nil))
(interactive (find-file-read-args "Find file: " nil))
(let ((value (find-file-noselect filename nil nil wildcards)))
(if (listp value)
(mapcar 'switch-to-buffer (nreverse value))
@ -955,8 +954,8 @@ expand wildcards (if any) and visit multiple files."
(if (listp value)
(progn
(setq value (nreverse value))
(switch-to-buffer-other-window (car value))
(mapcar 'switch-to-buffer (cdr value)))
(cons (switch-to-buffer-other-window (car value))
(mapcar 'switch-to-buffer (cdr value))))
(switch-to-buffer-other-window value))))
(defun find-file-other-frame (filename &optional wildcards)
@ -975,8 +974,8 @@ expand wildcards (if any) and visit multiple files."
(if (listp value)
(progn
(setq value (nreverse value))
(switch-to-buffer-other-frame (car value))
(mapcar 'switch-to-buffer (cdr value)))
(cons (switch-to-buffer-other-frame (car value))
(mapcar 'switch-to-buffer (cdr value))))
(switch-to-buffer-other-frame value))))
(defun find-file-existing (filename &optional wildcards)
@ -991,35 +990,53 @@ Like \\[find-file] but only allow files that exists."
"Edit file FILENAME but don't allow changes.
Like \\[find-file] but marks buffer as read-only.
Use \\[toggle-read-only] to permit editing."
(interactive (find-file-read-args "Find file read-only: " t))
(unless (file-exists-p filename) (error "%s does not exist" filename))
(find-file filename wildcards)
(toggle-read-only 1)
(current-buffer))
(interactive (find-file-read-args "Find file read-only: " nil))
(unless (or (and wildcards find-file-wildcards
(not (string-match "\\`/:" filename))
(string-match "[[*?]" filename))
(file-exists-p filename))
(error "%s does not exist" filename))
(let ((value (find-file filename wildcards)))
(mapc (lambda (b) (with-current-buffer b (toggle-read-only 1)))
(if (listp value) value (list value)))
value))
(defun find-file-read-only-other-window (filename &optional wildcards)
"Edit file FILENAME in another window but don't allow changes.
Like \\[find-file-other-window] but marks buffer as read-only.
Use \\[toggle-read-only] to permit editing."
(interactive (find-file-read-args "Find file read-only other window: " t))
(unless (file-exists-p filename) (error "%s does not exist" filename))
(find-file-other-window filename wildcards)
(toggle-read-only 1)
(current-buffer))
(interactive (find-file-read-args "Find file read-only other window: " nil))
(unless (or (and wildcards find-file-wildcards
(not (string-match "\\`/:" filename))
(string-match "[[*?]" filename))
(file-exists-p filename))
(error "%s does not exist" filename))
(let ((value (find-file-other-window filename wildcards)))
(mapc (lambda (b) (with-current-buffer b (toggle-read-only 1)))
(if (listp value) value (list value)))
value))
(defun find-file-read-only-other-frame (filename &optional wildcards)
"Edit file FILENAME in another frame but don't allow changes.
Like \\[find-file-other-frame] but marks buffer as read-only.
Use \\[toggle-read-only] to permit editing."
(interactive (find-file-read-args "Find file read-only other frame: " t))
(unless (file-exists-p filename) (error "%s does not exist" filename))
(find-file-other-frame filename wildcards)
(toggle-read-only 1)
(current-buffer))
(interactive (find-file-read-args "Find file read-only other frame: " nil))
(unless (or (and wildcards find-file-wildcards
(not (string-match "\\`/:" filename))
(string-match "[[*?]" filename))
(file-exists-p filename))
(error "%s does not exist" filename))
(let ((value (find-file-other-frame filename wildcards)))
(mapc (lambda (b) (with-current-buffer b (toggle-read-only 1)))
(if (listp value) value (list value)))
value))
(defun find-alternate-file-other-window (filename)
(defun find-alternate-file-other-window (filename &optional wildcards)
"Find file FILENAME as a replacement for the file in the next window.
This command does not select that window."
This command does not select that window.
Interactively, or if WILDCARDS is non-nil in a call from Lisp,
expand wildcards (if any) and replace the file with multiple files."
(interactive
(save-selected-window
(other-window 1)
@ -1030,17 +1047,21 @@ This command does not select that window."
(setq file-name (file-name-nondirectory file)
file-dir (file-name-directory file)))
(list (read-file-name
"Find alternate file: " file-dir nil nil file-name)))))
"Find alternate file: " file-dir nil nil file-name)
t))))
(if (one-window-p)
(find-file-other-window filename)
(find-file-other-window filename wildcards)
(save-selected-window
(other-window 1)
(find-alternate-file filename))))
(find-alternate-file filename wildcards))))
(defun find-alternate-file (filename)
(defun find-alternate-file (filename &optional wildcards)
"Find file FILENAME, select its buffer, kill previous buffer.
If the current buffer now contains an empty file that you just visited
\(presumably by mistake), use this command to visit the file you really want."
\(presumably by mistake), use this command to visit the file you really want.
Interactively, or if WILDCARDS is non-nil in a call from Lisp,
expand wildcards (if any) and replace the file with multiple files."
(interactive
(let ((file buffer-file-name)
(file-name nil)
@ -1049,7 +1070,8 @@ If the current buffer now contains an empty file that you just visited
(setq file-name (file-name-nondirectory file)
file-dir (file-name-directory file)))
(list (read-file-name
"Find alternate file: " file-dir nil nil file-name))))
"Find alternate file: " file-dir nil nil file-name)
t)))
(unless (run-hook-with-args-until-failure 'kill-buffer-query-functions)
(error "Aborted"))
(when (and (buffer-modified-p) (buffer-file-name))
@ -1077,7 +1099,7 @@ If the current buffer now contains an empty file that you just visited
(setq buffer-file-truename nil)
;; Likewise for dired buffers.
(setq dired-directory nil)
(find-file filename))
(find-file filename wildcards))
(when (eq obuf (current-buffer))
;; This executes if find-file gets an error
;; and does not really find anything.
@ -1247,8 +1269,8 @@ Optional first arg NOWARN non-nil means suppress any warning messages.
Optional second arg RAWFILE non-nil means the file is read literally.
Optional third arg WILDCARDS non-nil means do wildcard processing
and visit all the matching files. When wildcards are actually
used and expanded, the value is a list of buffers
that are visiting the various files."
used and expanded, return a list of buffers that are visiting
the various files."
(setq filename
(abbreviate-file-name
(expand-file-name filename)))
@ -1757,6 +1779,7 @@ in that case, this function acts as if `enable-local-variables' were t."
("\\.ses\\'" . ses-mode)
("\\.\\(soa\\|zone\\)\\'" . dns-mode)
("\\.docbook\\'" . sgml-mode)
("\\.com\\'" . dcl-mode)
("/config\\.\\(?:bat\\|log\\)\\'" . fundamental-mode)
;; Windows candidates may be opened case sensitively on Unix
("\\.\\(?:[iI][nN][iI]\\|[lL][sS][tT]\\|[rR][eE][gG]\\|[sS][yY][sS]\\)\\'" . conf-mode)

View file

@ -1,8 +1,20 @@
2004-12-08 Stefan Monnier <monnier@iro.umontreal.ca>
* gnus-art.el (gnus-narrow-to-page): Don't hardcode point-min.
2004-12-13 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-group.el (gnus-group-make-rss-group): Use
gnus-group-make-group instead of gnus-group-unsubscribe-group.
* gnus-start.el (gnus-setup-news): Honor user's setting to
gnus-message-archive-method. Suggested by Lute Kamstra
<Lute.Kamstra@xs4all.nl>.
2004-12-02 Katsumi Yamaoka <yamaoka@jpl.org>
* message.el (message-forward-make-body-mml): Remove headers
according to message-forward-ignored-headers if a message is
decoded.
according to message-forward-ignored-headers if a message is decoded.
2004-12-02 Romain Francoise <romain@orebokech.com>
@ -60,17 +72,16 @@
2004-11-25 Reiner Steib <Reiner.Steib@gmx.de>
* message.el (message-forbidden-properties): Fixed typo in doc
string.
* message.el (message-forbidden-properties): Fix typo in doc string.
2004-11-25 Lars Magne Ingebrigtsen <larsi@gnus.org>
* message.el (message-strip-forbidden-properties): Bind
buffer-read-only (etc) to nil.
* message.el (message-strip-forbidden-properties):
Bind buffer-read-only (etc) to nil.
2004-11-25 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-util.el (gnus-replace-in-string): Added doc string.
* gnus-util.el (gnus-replace-in-string): Add doc string.
* nnmail.el (nnmail-split-header-length-limit): Increase to 2048
to avoid problems when splitting mails with many recipients.
@ -97,8 +108,8 @@
2004-11-14 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-start.el (gnus-convert-old-newsrc): Assign
legacy-gnus-agent to 5.10.7.
* gnus-start.el (gnus-convert-old-newsrc):
Assign legacy-gnus-agent to 5.10.7.
2004-11-10 Katsumi Yamaoka <yamaoka@jpl.org>

View file

@ -5066,7 +5066,7 @@ If given a numerical ARG, move forward ARG pages."
(goto-char (point-min))
(gnus-insert-prev-page-button)))
(when (and (gnus-visual-p 'page-marker)
(< (+ (point-max) 2) (buffer-size)))
(< (point-max) (save-restriction (widen) (point-max))))
(save-excursion
(goto-char (point-max))
(gnus-insert-next-page-button))))))

View file

@ -2592,8 +2592,7 @@ If there is, use Gnus to create an nnrss group"
(href (cdr (assoc 'href feedinfo))))
(push (list title href desc)
nnrss-group-alist)
(gnus-group-unsubscribe-group
(concat "nnrss:" title))
(gnus-group-make-group title '(nnrss ""))
(nnrss-save-server-data nil))
(error "No feeds found for %s" url))))

View file

@ -954,16 +954,28 @@ If LEVEL is non-nil, the news will be set up at level LEVEL."
;; Make sure the archive server is available to all and sundry.
(when gnus-message-archive-method
(unless (assoc "archive" gnus-server-alist)
(push `("archive"
(let ((method (or (and (stringp gnus-message-archive-method)
(gnus-server-to-method
gnus-message-archive-method))
gnus-message-archive-method)))
;; Check whether the archive method is writable.
(unless (or (stringp method)
(memq 'respool (assoc (format "%s" (car method))
gnus-valid-select-methods)))
(setq method "archive")) ;; The default.
(push (if (stringp method)
`("archive"
nnfolder
"archive"
,method
(nnfolder-directory
,(nnheader-concat message-directory "archive"))
,(nnheader-concat message-directory method))
(nnfolder-active-file
,(nnheader-concat message-directory "archive/active"))
,(nnheader-concat message-directory
(concat method "/active")))
(nnfolder-get-new-mail nil)
(nnfolder-inhibit-expiry t))
gnus-server-alist)))
(cons "archive" method))
gnus-server-alist))))
;; If we don't read the complete active file, we fill in the
;; hashtb here.

View file

@ -86,7 +86,7 @@ The Lisp code is executed when the node is selected.")
:group 'info)
(defface info-xref-visited
'((t :inherit info-xref)
'((default :inherit info-xref)
(((class color) (background light)) :foreground "magenta4")
(((class color) (background dark)) :foreground "magenta3")) ;"violet"?
"Face for visited Info cross-references."
@ -2834,8 +2834,7 @@ if point is in a menu item description, follow that menu item."
"Follow a node reference near point. Return non-nil if successful."
(let (node)
(cond
((and (Info-get-token (point) "[hf]t?tp://" "[hf]t?tp://\\([^ \t\n\"`({<>})']+\\)")
(or (featurep 'browse-url) (require 'browse-url nil t)))
((Info-get-token (point) "[hf]t?tp://" "[hf]t?tp://\\([^ \t\n\"`({<>})']+\\)")
(setq node t)
(browse-url (browse-url-url-at-point)))
((setq node (Info-get-token (point) "\\*note[ \n\t]+"

View file

@ -97,7 +97,7 @@
(defun isearch-process-search-multibyte-characters (last-char)
(if (eq this-command 'isearch-printing-char)
(let ((overriding-terminal-local-map nil)
(prompt (concat (isearch-message-prefix) isearch-message))
(prompt (concat (isearch-message-prefix)))
(minibuffer-local-map isearch-minibuffer-local-map)
str)
(if isearch-input-method-function
@ -107,11 +107,12 @@
(cons 'with-input-method
(cons last-char unread-command-events))
;; Inherit current-input-method in a minibuffer.
str (read-string prompt nil nil nil t))
str (read-string prompt isearch-message nil nil t))
(if (not str)
;; All inputs were deleted while the input method
;; was working.
(setq str "")
(setq str (substring str (length isearch-message)))
(if (and (= (length str) 1)
(= (aref str 0) last-char)
(>= last-char 128))

View file

@ -258,6 +258,7 @@ Default value, nil, means edit the string instead."
(define-key map "\r" 'isearch-exit)
(define-key map "\C-j" 'isearch-printing-char)
(define-key map "\t" 'isearch-printing-char)
(define-key map [?\S-\ ] 'isearch-printing-char)
(define-key map "\C-w" 'isearch-yank-word-or-char)
(define-key map "\M-\C-w" 'isearch-del-char)
@ -938,7 +939,7 @@ If first char entered is \\[isearch-yank-word-or-char], then do word search inst
(isearch-message-prefix nil nil isearch-nonincremental)
isearch-string
minibuffer-local-isearch-map nil
'junk-ring))
'junk-ring nil t))
isearch-new-message
(mapconcat 'isearch-text-char-description
isearch-new-string "")))
@ -2381,6 +2382,11 @@ Attempt to do the search exactly the way the pending isearch would."
(let ((max isearch-lazy-highlight-max-at-a-time)
(looping t)
nomore)
(with-local-quit
(save-selected-window
(if (and (window-live-p isearch-lazy-highlight-window)
(not (eq (selected-window) isearch-lazy-highlight-window)))
(select-window isearch-lazy-highlight-window))
(save-excursion
(save-match-data
(goto-char (if isearch-forward
@ -2410,10 +2416,10 @@ Attempt to do the search exactly the way the pending isearch would."
;; non-zero-length match
(let ((ov (make-overlay mb me)))
(push ov isearch-lazy-highlight-overlays)
(overlay-put ov 'face isearch-lazy-highlight-face)
(overlay-put ov 'priority 0) ;lower than main overlay
(overlay-put ov 'window (selected-window))
(push ov isearch-lazy-highlight-overlays)))
(overlay-put ov 'window (selected-window))))
(if isearch-forward
(setq isearch-lazy-highlight-end (point))
(setq isearch-lazy-highlight-start (point)))))
@ -2433,7 +2439,7 @@ Attempt to do the search exactly the way the pending isearch would."
(unless nomore
(setq isearch-lazy-highlight-timer
(run-at-time isearch-lazy-highlight-interval nil
'isearch-lazy-highlight-update)))))))
'isearch-lazy-highlight-update)))))))))
(defun isearch-resume (search regexp word forward message case-fold)
"Resume an incremental search.

View file

@ -146,8 +146,9 @@ Each element of this list has the following form:
(...)))
Where INFOKEY is a key for `sc-mail-field', REGEXP is a regular
expression to match against the INFOKEY's value. FRAME is a citation
frame, or a variable containing a citation frame."
expression to match against the INFOKEY's value. FRAME is
a citation frame, or a symbol that represents the name of
a variable whose value is a citation frame."
:type '(repeat (list symbol (repeat (cons regexp
(choice (repeat (repeat sexp))
symbol)))))
@ -1434,12 +1435,11 @@ When called interactively, the optional arg INTERACTIVE is non-nil,
and that means call `sc-select-attribution' too."
(interactive "r\nP\np")
(undo-boundary)
(let ((frame (or (sc-scan-info-alist
(if (symbolp sc-cite-frame-alist)
(symbol-value sc-cite-frame-alist)
sc-cite-frame-alist))
sc-default-cite-frame))
(let ((frame (sc-scan-info-alist sc-cite-frame-alist))
(sc-confirm-always-p (if confirm-p t sc-confirm-always-p)))
(if (and frame (symbolp frame))
(setq frame (symbol-value frame)))
(or frame (setq frame sc-default-cite-frame))
(run-hooks 'sc-pre-cite-hook)
(if interactive
(sc-select-attribution))
@ -1450,11 +1450,10 @@ and that means call `sc-select-attribution' too."
First runs `sc-pre-uncite-hook'."
(interactive "r")
(undo-boundary)
(let ((frame (or (sc-scan-info-alist
(if (symbolp sc-uncite-frame-alist)
(symbol-value sc-uncite-frame-alist)
sc-uncite-frame-alist))
sc-default-uncite-frame)))
(let ((frame (sc-scan-info-alist sc-uncite-frame-alist)))
(if (and frame (symbolp frame))
(setq frame (symbol-value frame)))
(or frame (setq frame sc-default-uncite-frame))
(run-hooks 'sc-pre-uncite-hook)
(regi-interpret frame start end)))
@ -1465,11 +1464,10 @@ First runs `sc-pre-recite-hook'."
(let ((sc-confirm-always-p t))
(sc-select-attribution))
(undo-boundary)
(let ((frame (or (sc-scan-info-alist
(if (symbolp sc-recite-frame-alist)
(symbol-value sc-recite-frame-alist)
sc-recite-frame-alist))
sc-default-recite-frame)))
(let ((frame (sc-scan-info-alist sc-recite-frame-alist)))
(if (and frame (symbolp frame))
(setq frame (symbol-value frame)))
(or frame (setq frame sc-default-recite-frame))
(run-hooks 'sc-pre-recite-hook)
(regi-interpret frame start end)))

View file

@ -575,6 +575,7 @@ down (this *won't* always work)."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; URL input
;;;###autoload
(defun browse-url-url-at-point ()
(let ((url (thing-at-point 'url)))
(set-text-properties 0 (length url) nil url)

View file

@ -75,6 +75,7 @@ If nil, don't interrupt for about 1^26 seconds.")
zone-pgm-paragraph-spaz
zone-pgm-stress
zone-pgm-stress-destress
zone-pgm-random-life
])
(defmacro zone-orig (&rest body)
@ -459,6 +460,26 @@ If the element is a function or a list of a function and a number,
(sit-for wait))
(delete-char -1) (insert c-string)))
(defun zone-fill-out-screen (width height)
(save-excursion
(goto-char (point-min))
;; fill out rectangular ws block
(while (not (eobp))
(end-of-line)
(let ((cc (current-column)))
(if (< cc width)
(insert (make-string (- width cc) 32))
(delete-char (- width cc))))
(unless (eobp)
(forward-char 1)))
;; pad ws past bottom of screen
(let ((nl (- height (count-lines (point-min) (point)))))
(when (> nl 0)
(let ((line (concat (make-string (1- width) ? ) "\n")))
(do ((i 0 (1+ i)))
((= i nl))
(insert line)))))))
(defun zone-fall-through-ws (c col wend)
(let ((fall-p nil) ; todo: move outward
(wait 0.15)
@ -486,27 +507,9 @@ If the element is a function or a list of a function and a number,
(mc 0) ; miss count
(total (* ww wh))
(fall-p nil))
(goto-char (point-min))
;; fill out rectangular ws block
(while (not (eobp))
(end-of-line)
(let ((cc (current-column)))
(if (< cc ww)
(insert (make-string (- ww cc) ? ))
(delete-char (- ww cc))))
(unless (eobp)
(forward-char 1)))
;; pad ws past bottom of screen
(let ((nl (- wh (count-lines (point-min) (point)))))
(when (> nl 0)
(let ((line (concat (make-string (1- ww) ? ) "\n")))
(do ((i 0 (1+ i)))
((= i nl))
(insert line)))))
(zone-fill-out-screen ww wh)
(catch 'done
(while (not (input-pending-p))
(goto-char (point-min))
(sit-for 0)
(let ((wbeg (window-start))
(wend (window-end)))
(setq mc 0)
@ -552,7 +555,9 @@ If the element is a function or a list of a function and a number,
;;;; zone-pgm-paragraph-spaz
(defun zone-pgm-paragraph-spaz ()
(if (memq (zone-orig major-mode) '(text-mode fundamental-mode))
(if (memq (zone-orig major-mode)
;; there should be a better way to distinguish textish modes
'(text-mode texinfo-mode fundamental-mode))
(let ((fill-column fill-column)
(fc-min fill-column)
(fc-max fill-column)
@ -570,7 +575,7 @@ If the element is a function or a list of a function and a number,
(zone-pgm-rotate)))
;;;; zone-pgm-stress
;;;; stressing and destressing
(defun zone-pgm-stress ()
(goto-char (point-min))
@ -596,9 +601,6 @@ If the element is a function or a list of a function and a number,
(message (concat (make-string (random (- (frame-width) 5)) ? ) "grrr"))
(sit-for 0.1)))))
;;;; zone-pgm-stress-destress
(defun zone-pgm-stress-destress ()
(zone-call 'zone-pgm-stress 25)
(zone-hiding-modeline
@ -617,6 +619,59 @@ If the element is a function or a list of a function and a number,
zone-pgm-drip))))
;;;; the lyfe so short the craft so long to lerne --chaucer
(defvar zone-pgm-random-life-wait nil
"*Seconds to wait between successive `life' generations.
If nil, `zone-pgm-random-life' chooses a value from 0-3 (inclusive).")
(defun zone-pgm-random-life ()
(require 'life)
(zone-fill-out-screen (1- (window-width)) (1- (window-height)))
(let ((top (progn (goto-char (window-start)) (forward-line 7) (point)))
(bot (progn (goto-char (window-end)) (forward-line -7) (point)))
(rtc (- (frame-width) 11))
(min (window-start))
(max (1- (window-end)))
c col)
(delete-region max (point-max))
(while (progn (goto-char (+ min (random max)))
(and (sit-for 0.005)
(or (progn (skip-chars-forward " @\n" max)
(not (= max (point))))
(unless (or (= 0 (skip-chars-backward " @\n" min))
(= min (point)))
(forward-char -1)
t))))
(setq c (char-after))
(unless (or (not c) (= ?\n c))
(forward-char 1)
(insert-and-inherit ; keep colors
(cond ((or (> top (point))
(< bot (point))
(or (> 11 (setq col (current-column)))
(< rtc col)))
32)
((and (<= ?a c) (>= ?z c)) (+ c (- ?A ?a)))
((and (<= ?A c) (>= ?Z c)) ?*)
(t ?@)))
(forward-char -1)
(delete-char -1)))
(sit-for 3)
(setq col nil)
(goto-char bot)
(while (< top (point))
(setq c (point))
(move-to-column 9)
(setq col (cons (buffer-substring (point) c) col))
(end-of-line 0)
(forward-char -10))
(let ((life-patterns (vector (cons (make-string (length (car col)) 32)
col))))
(life (or zone-pgm-random-life-wait (random 4)))
(kill-buffer nil))))
;;;;;;;;;;;;;;;
(provide 'zone)

View file

@ -841,6 +841,8 @@ IDL has currently stepped.")
(defvar idlwave-shell-sources-query)
(defvar idlwave-shell-mode-map)
(defvar idlwave-shell-calling-stack-index)
(defvar idlwave-shell-only-prompt-pattern nil)
(defvar tool-bar-map)
(defun idlwave-shell-mode ()
"Major mode for interacting with an inferior IDL process.
@ -994,7 +996,7 @@ IDL has currently stepped.")
(setq idlwave-shell-hide-output nil)
;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
(make-local-hook 'kill-buffer-hook)
;;(make-local-hook 'kill-buffer-hook)
(add-hook 'kill-buffer-hook 'idlwave-shell-kill-shell-buffer-confirm
nil 'local)
(add-hook 'kill-buffer-hook 'idlwave-shell-delete-temp-files nil 'local)
@ -1038,7 +1040,7 @@ IDL has currently stepped.")
(setq abbrev-mode t)
;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
(make-local-hook 'post-command-hook)
;;(make-local-hook 'post-command-hook)
(add-hook 'post-command-hook 'idlwave-command-hook nil t)
;; Read the command history?
@ -1458,7 +1460,6 @@ Otherwise just move the line. Move down unless UP is non-nil."
"Return t if the shell process is running."
(eq (process-status idlwave-shell-process-name) 'run))
(defvar idlwave-shell-only-prompt-pattern nil)
(defun idlwave-shell-filter-hidden-output (output)
"Filter hidden output, leaving the good stuff.
@ -1475,6 +1476,7 @@ error messages, etc."
(defvar idlwave-shell-hidden-output-buffer " *idlwave-shell-hidden-output*"
"Buffer containing hidden output from IDL commands.")
(defvar idlwave-shell-current-state nil)
(defun idlwave-shell-filter (proc string)
"Watch for IDL prompt and filter incoming text.
@ -1627,7 +1629,55 @@ and then calls `idlwave-shell-send-command' for any pending commands."
(run-hooks 'idlwave-shell-sentinel-hook))
(run-hooks 'idlwave-shell-sentinel-hook))))
(defvar idlwave-shell-current-state nil)
(defvar idlwave-shell-error-buffer " *idlwave-shell-errors*"
"Buffer containing syntax errors from IDL compilations.")
;; FIXME: the following two variables do not currently allow line breaks
;; in module and file names. I am not sure if it will be necessary to
;; change this. Currently it seems to work the way it is.
(defvar idlwave-shell-syntax-error
"^% Syntax error.\\s-*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)"
"A regular expression to match an IDL syntax error.
The 1st pair matches the file name, the second pair matches the line
number.")
(defvar idlwave-shell-other-error
"^% .*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)"
"A regular expression to match any IDL error.")
(defvar idlwave-shell-halting-error
"^% .*\n\\([^%].*\n\\)*% Execution halted at:\\(\\s-*\\S-+\\s-*[0-9]+\\s-*.*\\)\n"
"A regular expression to match errors which halt execution.")
(defvar idlwave-shell-cant-continue-error
"^% Can't continue from this point.\n"
"A regular expression to match errors stepping errors.")
(defvar idlwave-shell-file-line-message
(concat
"\\(" ; program name group (1)
"\\$MAIN\\$\\|" ; main level routine
"\\<[a-zA-Z][a-zA-Z0-9_$:]*" ; start with a letter followed by [..]
"\\([ \t]*\n[ \t]*[a-zA-Z0-9_$:]+\\)*"; continuation lines program name (2)
"\\)" ; end program name group (1)
"[ \t\n]+" ; white space
"\\(" ; line number group (3)
"[0-9]+" ; the line number (the fix point)
"\\([ \t]*\n[ \t]*[0-9]+\\)*" ; continuation lines number (4)
"\\)" ; end line number group (3)
"[ \t\n]+" ; white space
"\\(" ; file name group (5)
"[^ \t\n]+" ; file names can contain any non-white
"\\([ \t]*\n[ \t]*[^ \t\n]+\\)*" ; continuation lines file name (6)
"\\)" ; end line number group (5)
)
"*A regular expression to parse out the file name and line number.
The 1st group should match the subroutine name.
The 3rd group is the line number.
The 5th group is the file name.
All parts may contain linebreaks surrounded by spaces. This is important
in IDL5 which inserts random linebreaks in long module and file names.")
(defun idlwave-shell-scan-for-state ()
"Scan for state info. Looks for messages in output from last IDL
command indicating where IDL has stopped. The types of messages we are
@ -1721,55 +1771,6 @@ the above."
;; Otherwise, no particular state
(t (setq idlwave-shell-current-state nil)))))
(defvar idlwave-shell-error-buffer " *idlwave-shell-errors*"
"Buffer containing syntax errors from IDL compilations.")
;; FIXME: the following two variables do not currently allow line breaks
;; in module and file names. I am not sure if it will be necessary to
;; change this. Currently it seems to work the way it is.
(defvar idlwave-shell-syntax-error
"^% Syntax error.\\s-*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)"
"A regular expression to match an IDL syntax error.
The 1st pair matches the file name, the second pair matches the line
number.")
(defvar idlwave-shell-other-error
"^% .*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)"
"A regular expression to match any IDL error.")
(defvar idlwave-shell-halting-error
"^% .*\n\\([^%].*\n\\)*% Execution halted at:\\(\\s-*\\S-+\\s-*[0-9]+\\s-*.*\\)\n"
"A regular expression to match errors which halt execution.")
(defvar idlwave-shell-cant-continue-error
"^% Can't continue from this point.\n"
"A regular expression to match errors stepping errors.")
(defvar idlwave-shell-file-line-message
(concat
"\\(" ; program name group (1)
"\\$MAIN\\$\\|" ; main level routine
"\\<[a-zA-Z][a-zA-Z0-9_$:]*" ; start with a letter followed by [..]
"\\([ \t]*\n[ \t]*[a-zA-Z0-9_$:]+\\)*"; continuation lines program name (2)
"\\)" ; end program name group (1)
"[ \t\n]+" ; white space
"\\(" ; line number group (3)
"[0-9]+" ; the line number (the fix point)
"\\([ \t]*\n[ \t]*[0-9]+\\)*" ; continuation lines number (4)
"\\)" ; end line number group (3)
"[ \t\n]+" ; white space
"\\(" ; file name group (5)
"[^ \t\n]+" ; file names can contain any non-white
"\\([ \t]*\n[ \t]*[^ \t\n]+\\)*" ; continuation lines file name (6)
"\\)" ; end line number group (5)
)
"*A regular expression to parse out the file name and line number.
The 1st group should match the subroutine name.
The 3rd group is the line number.
The 5th group is the file name.
All parts may contain linebreaks surrounded by spaces. This is important
in IDL5 which inserts random linebreaks in long module and file names.")
(defun idlwave-shell-parse-line (string &optional skip-main)
"Parse IDL message for the subroutine, file name and line number.
We need to work hard here to remove the stupid line breaks inserted by
@ -2102,8 +2103,8 @@ Change the default directory for the process buffer to concur."
'hide 'wait)
;; If we don't know anything about the class, update shell routines
(if (and idlwave-shell-get-object-class
(not (assoc-ignore-case idlwave-shell-get-object-class
(idlwave-class-alist))))
(not (assoc-string idlwave-shell-get-object-class
(idlwave-class-alist) t)))
(idlwave-shell-maybe-update-routine-info))
idlwave-shell-get-object-class)))
@ -2165,9 +2166,10 @@ keywords."
(idlwave-complete arg)))))
;; Get rid of opaque dynamic variable passing of link?
(defvar link) ;dynamic variable
(defun idlwave-shell-complete-execcomm-help (mode word)
(let ((word (or (nth 1 idlwave-completion-help-info) word))
(entry (assoc-ignore-case word idlwave-executive-commands-alist)))
(entry (assoc-string word idlwave-executive-commands-alist t)))
(cond
((eq mode 'test)
(and (stringp word) entry (cdr entry)))
@ -2217,6 +2219,7 @@ args of an executive .run, .rnew or .compile."
(looking-at "\\$")))
;; Debugging Commands ------------------------------------------------------
(defvar idlwave-shell-electric-debug-mode) ; defined by easy-mmode
(defun idlwave-shell-redisplay (&optional hide)
"Tries to resync the display with where execution has stopped.
@ -3517,6 +3520,7 @@ considered the new breakpoint if the file name of frame matches."
(defvar idlwave-shell-bp-overlays nil
"Alist of overlays marking breakpoints")
(defvar idlwave-shell-bp-glyph)
(defun idlwave-shell-update-bp-overlays ()
"Update the overlays which mark breakpoints in the source code.
@ -3605,7 +3609,6 @@ Existing overlays are recycled, in order to minimize consumption."
(set-window-buffer win buf))))))))
(defvar idlwave-shell-bp-glyph)
(defun idlwave-shell-make-new-bp-overlay (&optional type disabled help)
"Make a new overlay for highlighting breakpoints.
@ -4026,7 +4029,7 @@ Otherwise, just expand the file name."
'(alt))))
(shift (memq 'shift mod))
(mod-noshift (delete 'shift (copy-sequence mod)))
s k1 c2 k2 cmd cannotshift)
s k1 c2 k2 cmd electric only-buffer cannotshift)
(while (setq s (pop specs))
(setq k1 (nth 0 s)
c2 (nth 1 s)
@ -4089,6 +4092,9 @@ Otherwise, just expand the file name."
(setq idlwave-shell-suppress-electric-debug nil))
(idlwave-shell-electric-debug-mode))
(defvar idlwave-shell-electric-debug-read-only)
(defvar idlwave-shell-electric-debug-buffers nil)
(easy-mmode-define-minor-mode idlwave-shell-electric-debug-mode
"Toggle Electric Debug mode.
With no argument, this command toggles the mode.
@ -4138,7 +4144,6 @@ idlwave-shell-electric-debug-mode-map)
(force-mode-line-update))
;; Turn it off in all relevant buffers
(defvar idlwave-shell-electric-debug-buffers nil)
(defun idlwave-shell-electric-debug-all-off ()
(setq idlwave-shell-suppress-electric-debug nil)
(let ((buffers idlwave-shell-electric-debug-buffers)

View file

@ -1214,7 +1214,7 @@ but coerced to the correct value of INTEGERS."
(defun replace-match-maybe-edit (newtext fixedcase literal noedit match-data)
"Make a replacement with `replace-match', editing `\\?'.
NEXTEXT, FIXEDCASE, LITERAL are just passed on. If NOEDIT is true, no
NEWTEXT, FIXEDCASE, LITERAL are just passed on. If NOEDIT is true, no
check for `\\?' is made to save time. MATCH-DATA is used for the
replacement. In case editing is done, it is changed to use markers.
@ -1281,6 +1281,8 @@ make, or the user didn't cancel the call."
;; (match-data); otherwise it is t if a match is possible at point.
(match-again t)
(isearch-string isearch-string)
(isearch-regexp isearch-regexp)
(message
(if query-flag
(substitute-command-keys
@ -1313,6 +1315,10 @@ make, or the user didn't cancel the call."
(if regexp-flag from-string
(regexp-quote from-string))
"\\b")))
(if (eq query-replace-highlight 'isearch)
(setq isearch-string search-string
isearch-regexp regexp-flag))
(push-mark)
(undo-boundary)
(unwind-protect
@ -1380,7 +1386,7 @@ make, or the user didn't cancel the call."
(if (not query-flag)
(let ((inhibit-read-only
query-replace-skip-read-only))
(unless noedit
(unless (or literal noedit)
(replace-highlight (nth 0 real-match-data)
(nth 1 real-match-data)))
(setq noedit
@ -1528,7 +1534,14 @@ make, or the user didn't cancel the call."
(setq unread-command-events
(append (listify-key-sequence key)
unread-command-events))
(setq done t))))
(setq done t)))
(when (eq query-replace-highlight 'isearch)
;; Force isearch rehighlighting
(if (not (memq def '(skip backup)))
(setq isearch-lazy-highlight-last-string nil))
;; Restore isearch data in case of isearching during edit
(setq isearch-string search-string
isearch-regexp regexp-flag)))
;; Record previous position for ^ when we move on.
;; Change markers to numbers in the match data
;; since lots of markers slow down editing.
@ -1563,27 +1576,38 @@ make, or the user didn't cancel the call."
(if (= replace-count 1) "" "s")))
(and keep-going stack)))
(defcustom query-replace-highlight t
"*Non-nil means to highlight words during query replacement."
:type 'boolean
(defcustom query-replace-highlight
(if (and search-highlight isearch-lazy-highlight) 'isearch t)
"*Non-nil means to highlight words during query replacement.
If `isearch', use isearch highlighting for query replacement."
:type '(choice (const :tag "Highlight" t)
(const :tag "No highlighting" nil)
(const :tag "Isearch highlighting" 'isearch))
:group 'matching)
(defvar replace-overlay nil)
(defun replace-dehighlight ()
(and replace-overlay
(progn
(cond ((eq query-replace-highlight 'isearch)
(isearch-dehighlight t)
(isearch-lazy-highlight-cleanup isearch-lazy-highlight-cleanup)
(setq isearch-lazy-highlight-last-string nil))
(query-replace-highlight
(when replace-overlay
(delete-overlay replace-overlay)
(setq replace-overlay nil))))
(setq replace-overlay nil)))))
(defun replace-highlight (start end)
(and query-replace-highlight
(cond ((eq query-replace-highlight 'isearch)
(isearch-highlight start end)
(isearch-lazy-highlight-new-loop))
(query-replace-highlight
(if replace-overlay
(move-overlay replace-overlay start end (current-buffer))
(setq replace-overlay (make-overlay start end))
(overlay-put replace-overlay 'face
(if (facep 'query-replace)
'query-replace 'region)))))
'query-replace 'region))))))
;; arch-tag: 16b4cd61-fd40-497b-b86f-b667c4cf88e4
;;; replace.el ends here

View file

@ -129,7 +129,7 @@ to navigate in it.")
extra-test-exclusive)
"Test if BUFFER is a next-error capable buffer.
EXTRA-TEST-INCLUSIVE is called to allow extra buffers.
EXTRA-TEST-INCLUSIVE is called to disallow buffers."
EXTRA-TEST-EXCLUSIVE is called to disallow buffers."
(with-current-buffer buffer
(or (and extra-test-inclusive (funcall extra-test-inclusive))
(and (if extra-test-exclusive (funcall extra-test-exclusive) t)
@ -141,7 +141,7 @@ EXTRA-TEST-INCLUSIVE is called to disallow buffers."
"Return a next-error capable buffer.
OTHER-BUFFER will disallow the current buffer.
EXTRA-TEST-INCLUSIVE is called to allow extra buffers.
EXTRA-TEST-INCLUSIVE is called to disallow buffers."
EXTRA-TEST-EXCLUSIVE is called to disallow buffers."
(or
;; 1. If one window on the selected frame displays such buffer, return it.
(let ((window-buffers
@ -646,7 +646,8 @@ If BACKWARD-ONLY is non-nil, only delete spaces before point."
(constrain-to-field nil orig-pos t)))))
(defvar inhibit-mark-movement nil
"If non-nil, \\[beginning-of-buffer] and \\[end-of-buffer] does not set the mark.")
"If non-nil, movement commands, such as \\[beginning-of-buffer], \
do not set the mark.")
(defun beginning-of-buffer (&optional arg)
"Move point to the beginning of the buffer; leave mark at previous position.
@ -659,7 +660,9 @@ of the accessible part of the buffer.
Don't use this command in Lisp programs!
\(goto-char (point-min)) is faster and avoids clobbering the mark."
(interactive "P")
(unless (or inhibit-mark-movement (consp arg))
(or inhibit-mark-movement
(consp arg)
(and transient-mark-mode mark-active)
(push-mark))
(let ((size (- (point-max) (point-min))))
(goto-char (if (and arg (not (consp arg)))
@ -683,7 +686,9 @@ of the accessible part of the buffer.
Don't use this command in Lisp programs!
\(goto-char (point-max)) is faster and avoids clobbering the mark."
(interactive "P")
(unless (or inhibit-mark-movement (consp arg))
(or inhibit-mark-movement
(consp arg)
(and transient-mark-mode mark-active)
(push-mark))
(let ((size (- (point-max) (point-min))))
(goto-char (if (and arg (not (consp arg)))
@ -2987,11 +2992,11 @@ You can also deactivate the mark by typing \\[keyboard-quit] or
Many commands change their behavior when Transient Mark mode is in effect
and the mark is active, by acting on the region instead of their usual
default part of the buffer's text. Examples of such commands include
\\[comment-dwim], \\[flush-lines], \\[ispell], \\[keep-lines],
\\[query-replace], \\[query-replace-regexp], and \\[undo]. Invoke
\\[apropos-documentation] and type \"transient\" or \"mark.*active\" at
the prompt, to see the documentation of commands which are sensitive to
the Transient Mark mode."
\\[comment-dwim], \\[flush-lines], \\[keep-lines], \
\\[query-replace], \\[query-replace-regexp], \\[ispell], and \\[undo].
Invoke \\[apropos-documentation] and type \"transient\" or
\"mark.*active\" at the prompt, to see the documentation of
commands which are sensitive to the Transient Mark mode."
:global t :group 'editing-basics :require nil)
(defun pop-global-mark ()
@ -3523,12 +3528,17 @@ With argument, do this that many times."
(interactive "p")
(forward-word (- (or arg 1))))
(defun mark-word (arg)
"Set mark arg words away from point.
If this command is repeated, it marks the next ARG words after the ones
already marked."
(interactive "p")
(cond ((and (eq last-command this-command) (mark t))
(defun mark-word (&optional arg)
"Set mark ARG words away from point.
The place mark goes is the same place \\[forward-word] would
move to with the same argument.
If this command is repeated or mark is active in Transient Mark mode,
it marks the next ARG words after the ones already marked."
(interactive "P")
(cond ((or (and (eq last-command this-command) (mark t))
(and transient-mark-mode mark-active))
(setq arg (if arg (prefix-numeric-value arg)
(if (< (mark) (point)) -1 1)))
(set-mark
(save-excursion
(goto-char (mark))
@ -3537,7 +3547,7 @@ already marked."
(t
(push-mark
(save-excursion
(forward-word arg)
(forward-word (prefix-numeric-value arg))
(point))
nil t))))
@ -4021,8 +4031,7 @@ or go back to just one window (by deleting all but the selected window)."
(abort-recursive-edit))
(current-prefix-arg
nil)
((and transient-mark-mode
mark-active)
((and transient-mark-mode mark-active)
(deactivate-mark))
((> (recursion-depth) 0)
(exit-recursive-edit))

View file

@ -1862,6 +1862,19 @@ is allowed once again."
,@body)
(quit (setq quit-flag t) nil)))
(defmacro while-no-input (&rest body)
"Execute BODY only as long as there's no pending input.
If input arrives, that ends the execution of BODY,
and `while-no-input' returns nil. If BODY finishes,
`while-no-input' returns whatever value BODY produced."
(declare (debug t) (indent 0))
(let ((catch-sym (make-symbol "input")))
`(with-local-quit
(catch ',catch-sym
(let ((throw-on-input ',catch-sym))
(when (sit-for 0 0 t)
,@body))))))
(defmacro combine-after-change-calls (&rest body)
"Execute BODY, but don't call the after-change functions till the end.
If BODY makes changes in the buffer, they are recorded

View file

@ -1400,7 +1400,7 @@ The main purpose is to get rid of the local keymap."
: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:"
: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")
@ -2891,6 +2891,10 @@ See `term-prompt-regexp'."
(term-goto (car term-saved-cursor)
(cdr term-saved-cursor)))
(setq term-terminal-state 0))
((eq char ?c) ;; \Ec - Reset (terminfo: rs1)
;; This is used by the "clear" program.
(setq term-terminal-state 0)
(term-reset-terminal))
;; The \E#8 reset sequence for xterm. We
;; probably don't need to handle it, but this
;; is the code to parse it.
@ -3018,13 +3022,29 @@ See `term-prompt-regexp'."
(set-marker term-home-marker (point))
(setq term-current-row (1- term-height))))))
;;; Reset the terminal, delete all the content and set the face to the
;;; default one.
(defun term-reset-terminal ()
(erase-buffer)
(setq term-current-row 1)
(setq term-current-column 1)
(setq term-insert-mode nil)
(setq term-current-face nil)
(setq term-ansi-current-underline 0)
(setq term-ansi-current-bold 0)
(setq term-ansi-current-reverse 0)
(setq term-ansi-current-color 0)
(setq term-ansi-current-invisible 0)
(setq term-ansi-face-already-done 1)
(setq term-ansi-current-bg-color 0))
;;; New function to deal with ansi colorized output, as you can see you can
;;; have any bold/underline/fg/bg/reverse combination. -mm
(defun term-handle-colors-array (parameter)
(cond
;;; Bold
;;; Bold (terminfo: bold)
((eq parameter 1)
(setq term-ansi-current-bold 1))

View file

@ -357,13 +357,15 @@ the number of paragraphs marked equals ARG.
If ARG is negative, point is put at end of this paragraph, mark is put
at beginning of this or a previous paragraph.
If this command is repeated, it marks the next ARG paragraphs after (or
before, if arg is negative) the ones already marked."
If this command is repeated or mark is active in Transient Mark mode,
it marks the next ARG paragraphs after (or before, if arg is negative)
the ones already marked."
(interactive "p")
(unless arg (setq arg 1))
(when (zerop arg)
(error "Cannot mark zero paragraphs"))
(cond ((and (eq last-command this-command) (mark t))
(cond ((or (and (eq last-command this-command) (mark t))
(and transient-mark-mode mark-active))
(set-mark
(save-excursion
(goto-char (mark))

View file

@ -1351,7 +1351,9 @@ Mark is left at original location."
(when (eq (char-after) ?{)
(let ((newpos (point)))
(when (ignore-errors (backward-sexp 1) t)
(if (looking-at "\\\\end\\>")
(if (or (looking-at "\\\\end\\>")
;; In case the \\ ends a verbatim section.
(and (looking-at "end\\>") (eq (char-before) ?\\)))
(tex-last-unended-begin)
(goto-char newpos))))))))

View file

@ -1,3 +1,7 @@
2004-12-11 Stefan Monnier <monnier@iro.umontreal.ca>
* url-handlers.el: Don't `require' everything eagerly.
2004-11-30 Paul Pogonyshev <pogonyshev@gmx.net>
* url-http.el (url-http-handle-cookies): Bind `url-current-object'
@ -18,8 +22,7 @@
2004-11-12 Masatake YAMATO <jet@gyve.org>
* url-mailto.el (url-mailto): Fix a typo in the
comment.
* url-mailto.el (url-mailto): Fix a typo in the comment.
2004-11-02 Masatake YAMATO <jet@gyve.org>
@ -76,12 +79,12 @@
* url-vars.el (url-passwd-entry-func): Var deleted.
(mm-mime-mule-charset-alist): Remove compatibility code for old Gnus.
(url-weekday-alist): Renamed from weekday-alist.
(url-monthabbrev-alist): Renamed from monthabbrev-alist.
(url-weekday-alist): Rename from weekday-alist.
(url-monthabbrev-alist): Rename from monthabbrev-alist.
(url-vars-unload-hook): Initialize hook var to hold the function.
* url-util.el (url-get-normalized-date): Use
url-weekday-alist and url-monthabbrev-alist.
* url-util.el (url-get-normalized-date): Use url-weekday-alist and
url-monthabbrev-alist.
* url-misc.el: Load cl at compile time.
@ -99,8 +102,8 @@
* url-news.el (url-snews): Use nntp-open-tls-stream if
url-gateway-method is tls.
* url-ldap.el (url-ldap-certificate-formatter): Use
tls-certificate-information if ssl.el is not available.
* url-ldap.el (url-ldap-certificate-formatter):
Use tls-certificate-information if ssl.el is not available.
* url-https.el (url-https-create-secure-wrapper): Use tls if ssl
is not available.

View file

@ -25,11 +25,21 @@
;;; Code:
(require 'url)
(require 'url-parse)
(require 'url-util)
(require 'mm-decode)
(require 'mailcap)
;; (require 'url)
(eval-when-compile (require 'url-parse))
;; (require 'url-util)
(eval-when-compile (require 'mm-decode))
;; (require 'mailcap)
;; The following functions in the byte compiler's warnings are known not
;; to cause any real problem for the following reasons:
;; - mm-save-part-to-file, mm-destroy-parts: always used
;; after mm-dissect-buffer and defined in the same file.
;; The following are autoloaded instead of `require'd to avoid eagerly
;; loading all of URL when turning on url-handler-mode in the .emacs.
(autoload 'url-retrieve-synchronously "url" "Retrieve url synchronously.")
(autoload 'url-expand-file-name "url-expand" "Convert url to a fully specified url, and canonicalize it.")
(autoload 'mm-dissect-buffer "mm-decode" "Dissect the current buffer and return a list of MIME handles.")
(autoload 'url-scheme-get-property "url-methods" "Get property of a URL SCHEME.")
(eval-when-compile
(require 'cl))

View file

@ -447,10 +447,14 @@ and that it passes `vc-svn-global-switches' to it before FLAGS."
(vc-insert-file (expand-file-name ".svn/entries" dirname)))
(goto-char (point-min))
(when (re-search-forward
(concat "name=\"svn:this_dir\"[\n\t ]*"
"\\([-a-z]+=\"[^\"]*\"[\n\t ]*\\)*?"
;; Old `svn' used name="svn:dir", newer use just name="".
(concat "name=\"\\(?:svn:this_dir\\)?\"[\n\t ]*"
"\\(?:[-a-z]+=\"[^\"]*\"[\n\t ]*\\)*?"
"url=\"\\([^\"]+\\)\"") nil t)
(match-string 2))))
;; This is not a hostname but a URL. This may actually be considered
;; as a feature since it allows vc-svn-stay-local to specify different
;; behavior for different modules on the same server.
(match-string 1))))
(defun vc-svn-parse-status (localp)
"Parse output of \"svn status\" command in the current buffer.
@ -505,6 +509,30 @@ essential information."
(and (string-match "^[0-9]" tag)
(not (string-match "[^0-9]" tag))))
;; Support for `svn annotate'
(defun vc-svn-annotate-command (file buf &optional rev)
(vc-svn-command buf 0 file "annotate" (if rev (concat "-r" rev))))
(defun vc-svn-annotate-time-of-rev (rev)
;; Arbitrarily assume 10 commmits per day.
(/ (string-to-number rev) 10.0))
(defun vc-svn-annotate-current-time ()
(vc-svn-annotate-time-of-rev vc-annotate-parent-rev))
(defconst vc-svn-annotate-re "[ \t]*\\([0-9]+\\)[ \t]+[^\t ]+ ")
(defun vc-svn-annotate-time ()
(when (looking-at vc-svn-annotate-re)
(goto-char (match-end 0))
(vc-svn-annotate-time-of-rev (match-string 1))))
(defun vc-svn-annotate-extract-revision-at-line ()
(save-excursion
(beginning-of-line)
(if (looking-at vc-svn-annotate-re) (match-string 1))))
(provide 'vc-svn)
;; arch-tag: 02f10c68-2b4d-453a-90fc-1eee6cfb268d

View file

@ -179,6 +179,8 @@ If PARSE-NS is non-nil, then QNAMES are expanded."
xml)))
(defvar xml-name-re)
(defvar xml-entity-value-re)
(let* ((start-chars (concat "[:alpha:]:_"))
(name-chars (concat "-[:digit:]." start-chars))
;;[3] S ::= (#x20 | #x9 | #xD | #xA)+

View file

@ -139,12 +139,13 @@
default-header-line-format)
1
0)))
(move-to-column (+ (car where) (current-column)
(move-to-column (- (+ (car where) (current-column)
(if (string-match "\\` \\*Minibuf"
(buffer-name))
(- (minibuffer-prompt-width))
0)
(max 0 (1- (window-hscroll)))))
(max 0 (1- (window-hscroll))))
left-margin-width))
(point))
where))
(mouse (intern

View file

@ -1,3 +1,29 @@
2004-12-11 Richard M. Stallman <rms@gnu.org>
* display.texi (Line Height): Rewrite text for clarity.
2004-12-11 Kim F. Storm <storm@cua.dk>
* display.texi (Display): Add node "Line Height" to menu.
(Line Height): New node. Move full description of line-spacing
and line-height text properties here from text.texi.
(Scroll Bars): Add vertical-scroll-bar variable.
* frames.texi (Window Frame Parameters): Remove line-height defvar.
* locals.texi (Standard Buffer-Local Variables): Fix xref for
line-spacing and vertical-scroll-bar.
* text.texi (Special Properties): Just mention line-spacing and
line-height here, add xref to new "Line Height" node.
2004-12-09 Thien-Thi Nguyen <ttn@gnu.org>
* frames.texi (Window Frame Parameters): New @defvar for `line-spacing'.
* locals.texi (Standard Buffer-Local Variables):
Add @xref for `line-spacing'.
2004-12-05 Richard M. Stallman <rms@gnu.org>
* Makefile.in (maintainer-clean): Remove the info files

View file

@ -23,6 +23,7 @@ that Emacs presents to the user.
* Temporary Displays:: Displays that go away automatically.
* Overlays:: Use overlays to highlight parts of the buffer.
* Width:: How wide a character or string is on the screen.
* Line Height:: Controlling the height of lines.
* Faces:: A face defines a graphics style for text characters:
font, colors, etc.
* Fringes:: Controlling window fringes.
@ -1510,6 +1511,98 @@ the beginning of the result if one multi-column character in
@end example
@end defun
@node Line Height
@section Line Height
@cindex line height
The total height of each display line consists of the height of the
contents of the line, and additional vertical line spacing below the
display row.
The height of the line contents is normally determined from the
maximum height of any character or image on that display line,
including the final newline if there is one. (A line that is
continued doesn't include a final newline.) In the most common case,
the line height equals the height of the default frame font.
There are several ways to explicitly control or change the line
height, either by specifying an absolute height for the display line,
or by adding additional vertical space below one or all lines.
@kindex line-height @r{(text property)}
A newline can have a @code{line-height} text or overlay property
that controls the total height of the display line ending in that
newline. If the property value is zero, the displayed height of the
line is exactly what its contents need; no line-spacing is added.
This case is useful for tiling small images or image slices without
adding blank areas between the images.
If the property value is not zero, it specifies a desired height,
@var{line-height}. There are several ways it can do this:
@table @code
@item @var{integer}
If the property is a positive integer, @var{line-height} is that integer.
@item @var{float}
If the property is a float, @var{float}, @var{line-height} is @var{float}
times the frame's default line height.
@item (@var{ratio} . @var{face})
If the property is a cons of the format shown, @var{line-height} is
@var{ratio} times the height of face @var{face}. @var{ratio} can be
any type of number. If @var{face} is @code{t}, it refers to the
current face.
@end table
Thus, any valid nonzero property value specifies a height in pixels,
@var{line-height}, one way or another. If the line contents' height
is less than @var{line-height}, Emacs adds extra vertical space above
the line to achieve the total height @var{line-height}. Otherwise,
@var{line-height} has no effect.
If you don't specify the @code{line-height} propery, the line's
height consists of the contents' height plus the line spacing.
@vindex default-line-spacing
You can specify the line spacing for all lines in a frame with the
@code{line-spacing} frame parameter, @xref{Window Frame Parameters}.
However, if the variable @code{default-line-spacing} is
non-@code{nil}, it overrides the frame's @code{line-spacing}
parameter. An integer value specifies the number of pixels put below
lines on window systems. A floating point number specifies the
spacing relative to the frame's default line height.
@vindex line-spacing
You can specify the line spacing for all lines in a buffer via the
buffer-local @code{line-spacing} variable. An integer value specifies
the number of pixels put below lines on window systems. A floating
point number specifies the spacing relative to the default frame line
height. This overrides line spacings specified for the frame.
@kindex line-spacing @r{(text property)}
Finally, a newline can have a @code{line-spacing} text or overlay
property that controls the height of the display line ending with that
newline. The property value overrides the default frame line spacing
and the buffer local @code{line-spacing} variable.
One way or another, these mechanisms specify a line spacing for each
line. Let's call the value @var{line-spacing}.
If the @var{line-spacing} value is a positive integer, it specifies
the number of pixels of additional vertical space. This space appears
below the display line contents.
If the @var{line-spacing} value is a floating point number or cons,
the additional vertical space is @var{line-spacing} times the frame
default line height.
@ignore @c I think we may want to delete this, so don't document it -- rms.
If the @var{line-spacing} value is a cons @code{(total . @var{spacing})}
where @var{spacing} is any of the forms described above, the value of
@var{spacing} specifies the total displayed height of the line,
regardless of the height of the characters in it. This is equivalent
to using the @code{line-height} property.
@end ignore
@node Faces
@section Faces
@cindex faces
@ -2826,7 +2919,14 @@ non-@code{nil} parameter value means they do. The frame parameter
@code{scroll-bar-width} specifies how wide they are (@code{nil}
meaning the default). @xref{Window Frame Parameters}.
You can also control this for individual windows. Call the function
@vindex vertical-scroll-bar
You can enable or disable scroll bars for a particular buffer,
by setting the variable @code{vertical-scroll-bar}. This variable
automatically becomes buffer-local when set. The possible values are
@code{left}, @code{right}, @code{t}, which means to use the
frame's default, and @code{nil} for no scroll bar.
You can also control this for individual windows. Call the function
@code{set-window-scroll-bars} to specify what to do for a specific window:
@defun set-window-scroll-bars window width &optional vertical-type horizontal-type

View file

@ -132,8 +132,7 @@ Does not work yet.
@xref{Display Margins}.
@item line-spacing
@c Cause an error so we will fix this.
@xref{Yet to be written}.
@xref{Line Height}.
@item local-abbrev-table
@xref{Abbrevs}.
@ -199,7 +198,7 @@ Used for communication between mouse commands and scroll-bar commands.
@xref{Mode Line Variables}.
@item vertical-scroll-bar
@xref{Yet to be written}.
@xref{Scroll Bars}.
@end table
@ignore

View file

@ -3002,45 +3002,13 @@ for possible pointer shapes.
A newline can have a @code{line-spacing} text or overlay property that
controls the height of the display line ending with that newline. The
property value overrides the default frame line spacing and the buffer
local @code{line-spacing} variable. We will call the property value
@var{line-spacing}.
If @var{line-spacing} is a positive integer, the value specifies
additional vertical space, below the display line, in pixels.
If @var{line-spacing} is a floating point number or cons, the
additional vertical space is the product of @var{line-spacing} and the
default frame line height.
If the @var{line-spacing} value is a cons @code{(total .
@var{spacing})} where @var{spacing} is any of the forms described
above, the value of @var{spacing} specifies the total displayed height
of the line, regardless of the height of the characters in it. This
is equivalent to using the @code{line-height} property.
local @code{line-spacing} variable. @xref{Line Height}.
@item line-height
@kindex line-height @r{(text property)}
A newline can have a @code{line-height} text or overlay property that
controls the total height of the display line ending in that newline.
We will call the property value @var{line-height}.
If @var{line-height} is 0, the height of the line is determined solely
from its contents; nothing is added. Any @code{line-spacing} property
on this newline is ignored. This case is useful for tiling small
images or image slices without adding blank areas between the images.
If @var{line-height} is a positive integer, the value specifies the
minimum line height in pixels. The line's ascent height is
increased as necessary to achieve the specified height.
If @var{line-height} is a floating point number, the minimum line
height is the product of @var{line-height} and the default frame line
height.
If @var{line-height} is a cons @code{(@var{ratio} . @var{face})}, the
minimum line height is calculated as @var{ratio} times the height of
face @var{face}. The @var{ratio} is an integer or a floating point
number. If @var{face} is @code{t}, it refers to the current face.
@xref{Line Height}.
@item modification-hooks
@cindex change hooks for a character

View file

@ -1,3 +1,46 @@
2004-12-13 Jay Belanger <belanger@truman.edu>
* calc.texi: Fix some TeX definitions.
2004-12-12 Juri Linkov <juri@jurta.org>
* misc.texi (FFAP): Add C-x C-r, C-x C-v, C-x C-d,
C-x 4 r, C-x 4 d, C-x 5 r, C-x 5 d.
* dired.texi (Dired Navigation): Add @r{(Dired)} to M-g.
(Misc Dired Commands): Add @r{(Dired)} to w.
2004-12-12 Juri Linkov <juri@jurta.org>
* mark.texi (Marking Objects): Marking commands also extend the
region when mark is active in Transient Mark mode.
2004-12-09 Luc Teirlinck <teirllm@auburn.edu>
* reftex.texi (Imprint): Remove erroneous @value's.
2004-12-08 Luc Teirlinck <teirllm@auburn.edu>
* custom.texi (Saving Customizations): Emacs only loads the custom
file automatically after the init file in version 21.4 or later.
Adapt text and examples to this fact.
* makefile.w32-in (INFO_TARGETS, DVI_TARGETS, $(infodir)/org)
(org.dvi, $(infodir)/url, url.dvi, clean): Add org and url manuals.
2004-12-08 Jay Belanger <belanger@truman.edu>
* calc.texi (Starting Calc): Remove comment about installation.
(Keypad Mode Overview): Remove comment about Emacs 19 support.
2004-12-08 Luc Teirlinck <teirllm@auburn.edu>
* url.texi: Update @setfilename.
(Getting Started): No need to worry about Gnus versions.
(Dealing with HTTP documents): Use @inforef.
* org.texi: Fix @direntry file name.
2004-12-07 Luc Teirlinck <teirllm@auburn.edu>
* frames.texi (Scroll Bars): The option `scroll-bar-mode' has to
@ -107,6 +150,13 @@
to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for
suggestions.
2004-12-08 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-faq.texi ([5.1]): Added missing bracket.
* gnus.texi (Filtering Spam Using The Spam ELisp Package): Index
`spam-initialize'.
2004-11-22 Reiner Steib <Reiner.Steib@gmx.de>
* message.texi (Various Message Variables): Mention that all mail
@ -114,10 +164,6 @@
* gnus.texi (Splitting Mail): Clarify bogus group.
2004-11-16 Reiner Steib <Reiner.Steib@gmx.de>
* gnus.texi (Filtering Spam Using The Spam ELisp Package):
2004-11-02 Katsumi Yamaoka <yamaoka@jpl.org>
* emacs-mime.texi (Encoding Customization): Fix

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985,86,87,93,94,95,97,2000,2001,2002
@c Copyright (C) 1985,86,87,93,94,95,97,2000,2001,2002,2004
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Customization, Quitting, Amusements, Top
@ -487,23 +487,38 @@ set, saved or reset.
The customization buffer normally saves customizations in
@file{~/.emacs}. If you wish, you can save customizations in another
file instead. To make this work, your @file{~/.emacs} should set
@code{custom-file} to the name of that file. Emacs loads the file
right after your @file{.emacs} if you did not load it already. For
example:
@code{custom-file} to the name of that file. If you are using Emacs
version 21.4 or later, Emacs loads the file right after your
@file{.emacs} if you did not load it already. In earlier versions,
you have to load the file in your @file{~/emacs}. If you customize
@code{custom-file} through the @samp{Customize} interface, you still
need to load it in your @file{.emacs}, but there is no need to set
it. For example:
@example
;; @r{if not set through the @samp{Customize} interface:}
(setq custom-file "~/.emacs-custom")
;; @r{in Emacs versions before 21.4 or if set through}
;; @r{the @samp{Customize} interface.}
(load "~/.emacs-custom")
@end example
The variable @code{custom-file} is useful if you want to have
different customizations for different Emacs versions:
You can also use @code{custom-file} to specify different
customization files for different Emacs versions, like this:
@example
(if (< emacs-major-version 21)
(cond ((< emacs-major-version 21)
;; @r{Emacs 20 customization.}
(setq custom-file "~/.custom-20.el")
;; @r{Emacs 21 customization.}
(setq custom-file "~/.custom-20.el"))
((and (= emacs-major-version 21) (< emacs-minor-version 4))
;; @r{Emacs 21 customization, before version 21.4.}
(setq custom-file "~/.custom-21.el"))
(t
;; @r{Emacs version 21.4 or later.}
(setq custom-file "~/.custom-21.4.el")))
(load custom-file)
@end example
If Emacs was invoked with the @option{-q} or @option{--no-init-file}

View file

@ -89,7 +89,7 @@ so common in Dired that it deserves to be easy to type.) @key{DEL}
(move up and unflag) is often useful simply for moving up.
@findex dired-goto-file
@kindex M-g
@kindex M-g @r{(Dired)}
@kbd{M-g} (@code{dired-goto-file}) moves point to the line that
describes a specified file or directory.
@ -1113,7 +1113,7 @@ and erases all flags and marks.
@table @kbd
@item w
@cindex Adding to the kill ring in Dired.
@kindex w
@kindex w @r{(Dired)}
@findex dired-copy-filename-as-kill
The @kbd{w} command (@code{dired-copy-filename-as-kill}) puts the
names of the marked (or next @var{n}) files into the kill ring, as if

View file

@ -1414,7 +1414,7 @@ Answer:
message. For a follow up to a newsgroup, it's
@samp{f} and @samp{F}
(analog to @samp{r} and
@samp{R}.
@samp{R}).
Enter new headers above the line saying "--text follows

View file

@ -22603,6 +22603,7 @@ filters new mail, and it analyzes mail known to be spam or ham.
@dfn{Ham} is the name used throughout @file{spam.el} to indicate
non-spam messages.
@cindex spam-initialize
First of all, you @strong{must} run the function
@code{spam-initialize} to autoload @code{spam.el} and to install the
@code{spam.el} hooks. There is one exception: if you use the

View file

@ -47,14 +47,15 @@ INFO_TARGETS = $(infodir)/emacs $(infodir)/ccmode \
$(infodir)/speedbar $(infodir)/tramp \
$(infodir)/ses $(infodir)/smtpmail \
$(infodir)/flymake $(infodir)/emacs-xtra \
$(infodir)/org $(infodir)/url \
$(infodir)/pgg $(infodir)/sieve
DVI_TARGETS = emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
ediff.dvi forms.dvi gnus.dvi message.dvi mh-e.dvi \
reftex.dvi sc.dvi vip.dvi viper.dvi widget.dvi faq.dvi \
ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \
pcl-cvs.dvi woman.dvi emacs-mime.dvi eshell.dvi \
org.dvi pcl-cvs.dvi woman.dvi emacs-mime.dvi eshell.dvi \
speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \
emacs-xtra.dvi pgg.dvi sieve.dvi
emacs-xtra.dvi pgg.dvi sieve.dvi url.dvi
INFOSOURCES = info.texi
# The following rule does not work with all versions of `make'.
@ -318,6 +319,18 @@ $(infodir)/emacs-xtra: emacs-xtra.texi
emacs-xtra.dvi: emacs-xtra.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/emacs-xtra.texi
$(infodir)/org: org.texi
$(MAKEINFO) org.texi
org.dvi: org.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/org.texi
$(infodir)/url: url.texi
$(MAKEINFO) url.texi
url.dvi: url.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/url.texi
mostlyclean:
- $(DEL) *.log *.cp *.fn *.ky *.pg *.vr core *.tp *.core gnustmp.*
@ -337,6 +350,7 @@ clean: mostlyclean
$(infodir)/woman* $(infodir)/eshell* \
$(infodir)/speedbar* $(infodir)/tramp* \
$(infodir)/ses* $(infodir)/smtpmail* \
$(infodir)/url* $(infodir)/org* \
$(infodir)/flymake*
distclean: clean

View file

@ -320,6 +320,8 @@ next balanced expression (@pxref{Expressions}). These commands handle
arguments just like @kbd{M-f} and @kbd{C-M-f}. If you repeat these
commands, the region is extended. For example, you can type either
@kbd{C-u 2 M-@@} or @kbd{M-@@ M-@@} to mark the next two words.
The region is also extended when the mark is active in Transient Mark
mode, regardless of the last command.
@kindex C-x h
@findex mark-whole-buffer

View file

@ -2219,7 +2219,7 @@ which has a similar feature of its own.
@subsection Finding Files and URLs at Point
@findex find-file-at-point
@findex ffap
@findex ffap-dired-at-point
@findex dired-at-point
@findex ffap-next
@findex ffap-menu
@cindex finding file at point
@ -2248,18 +2248,36 @@ make the following key bindings and to install hooks for using
@kindex C-x C-f @r{(FFAP)}
Find @var{filename}, guessing a default from text around point
(@code{find-file-at-point}).
@item C-x 4 f
@kindex C-x 4 f @r{(FFAP)}
@code{ffap-other-window}, analogous to @code{find-file-other-window}.
@item C-x 5 f
@kindex C-x 5 f @r{(FFAP)}
@code{ffap-other-frame}, analogous to @code{find-file-other-frame}.
@item M-x ffap-next
Search buffer for next file name or URL, then find that file or URL.
@item C-x C-r
@kindex C-x C-r @r{(FFAP)}
@code{ffap-read-only}, analogous to @code{find-file-read-only}.
@item C-x C-v
@kindex C-x C-v @r{(FFAP)}
@code{ffap-alternate-file}, analogous to @code{find-alternate-file}.
@item C-x d @var{directory} @key{RET}
@kindex C-x d @r{(FFAP)}
Start Dired on @var{directory}, defaulting to the directory name at
point (@code{ffap-dired-at-point}).
point (@code{dired-at-point}).
@item C-x C-d
@code{ffap-list-directory}, analogous to @code{list-directory}.
@item C-x 4 f
@kindex C-x 4 f @r{(FFAP)}
@code{ffap-other-window}, analogous to @code{find-file-other-window}.
@item C-x 4 r
@code{ffap-read-only-other-window}, analogous to
@code{find-file-read-only-other-window}.
@item C-x 4 d
@code{ffap-dired-other-window}, analogous to @code{dired-other-window}.
@item C-x 5 f
@kindex C-x 5 f @r{(FFAP)}
@code{ffap-other-frame}, analogous to @code{find-file-other-frame}.
@item C-x 5 r
@code{ffap-read-only-other-frame}, analogous to
@code{find-file-read-only-other-frame}.
@item C-x 5 d
@code{ffap-dired-other-frame}, analogous to @code{dired-other-frame}.
@item M-x ffap-next
Search buffer for next file name or URL, then find that file or URL.
@item S-Mouse-3
@kindex S-Mouse-3 @r{(FFAP)}
@code{ffap-at-mouse} finds the file guessed from text around the position

View file

@ -8,7 +8,7 @@
@dircategory Emacs
@direntry
* Org Mode: (org.info). Outline-based notes management and organizer
* Org Mode: (org). Outline-based notes management and organizer
@end direntry
@c Version and Contact Info

View file

@ -3371,12 +3371,12 @@ With @i{Viper} mode prior to Vipers version 3.01, you need to protect
@cindex @code{http}, @b{Ref@TeX{}} home page
@cindex @code{ftp}, @b{Ref@TeX{}} site
@b{Ref@TeX{}} was written by @i{@value{Carsten Dominik}}
@b{Ref@TeX{}} was written by @i{Carsten Dominik}
@email{dominik@@science.uva.nl}, with contributions by @i{Stephen
Eglen}. @b{Ref@TeX{}} is currently maintained by @refill
@noindent
@value{Carsten Dominik} @email{dominik@@science.uva.nl}
Carsten Dominik @email{dominik@@science.uva.nl}
If you have questions about @b{Ref@TeX{}}, there are several Usenet
groups which have competent readers: @code{comp.emacs},

View file

@ -1,5 +1,5 @@
\input texinfo
@setfilename url.info
@setfilename ../info/url
@settitle URL Programmer's Manual
@iftex
@ -114,10 +114,6 @@ sent).@c , but @xref{Other Variables, url-bad-port-list}.
The meaning of
the @var{path} component depends on the service.
The library depends on MIME support provided by the @samp{mm-}
packages from Gnus 5.8 or later. @xref{(emacs-mime)Top, The MIME
library}.
@menu
* Configuration::
* Parsed URLs:: URLs are parsed into vector structures.
@ -388,9 +384,9 @@ Currently this is just the raw header contents.
HTTP URLs are retrieved into a buffer containing the HTTP headers
followed by the body. Since the headers are quasi-MIME, they may be
processed using the MIME library. @xref{(emacs-mime)Top, The MIME
library}. The MIME library doesn't provide a clean function to do
that, so the URL library does.
processed using the MIME library. @inforef{Top, The MIME library,
emacs-mime}. The URL package provides a function to do this in
general:
@defun url-decode-text-part handle &optional coding
This function decodes charset-encoded text in the current buffer. In

View file

@ -1,10 +1,76 @@
2004-12-13 Richard M. Stallman <rms@gnu.org>
* eval.c (syms_of_eval) <quit-flag>: Doc fix.
* keyboard.c (Vthrow_on_input): New variable.
(syms_of_keyboard): Defvar and initialize it.
(kbd_buffer_store_event_hold): Handle Vthrow_on_input.
* lisp.h (QUIT): Check for Vthrow_on_input.
(Vthrow_on_input): Declare it.
2004-12-13 Kim F. Storm <storm@cua.dk>
* xdisp.c (set_iterator_to_next): Reset stop_charpos after display
vector.
2004-12-12 Richard M. Stallman <rms@gnu.org>
* indent.c (Fvertical_motion): Call move_it_by_lines even if LINES = 0.
* minibuf.c (Fall_completions): Add var `zero' and use it in loop.
(Ftry_completion): Really use outer `zero'; eliminate inner one.
2004-12-12 Kenichi Handa <handa@m17n.org>
* term.c (encode_terminal_code): Fix previous change.
2004-12-11 Stefan Monnier <monnier@iro.umontreal.ca>
* keyboard.c (handle_async_input): Remove pthread mutex handling.
(input_available_signal): Move pthread thingy to !SYNC_INPUT branch.
* syntax.c (Fforward_word): Avoid non-idempotent side-effects
in macro arguments.
* minibuf.c (Ftry_completion, Fall_completions): Don't use
XFASTINT blindly.
* emacs.c (main, Fdump_emacs): Don't touch malloc hooks if SYNC_INPUT.
2004-12-11 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* w32term.c (x_calc_absolute_position): Remove calculation of
difference between inner and outer window. Don't subtract difference
for left and top calculations.
* xterm.c (x_calc_absolute_position): Don't subtract outer_pixel_diff
for left and top calculations. Remove call to x_real_positions.
[Bug report by Drew Adams in November]
(x_check_expected_move): Do not set change_gravity to 1 when calling
x_set_offset.
2004-12-08 Richard M. Stallman <rms@gnu.org>
* xdisp.c (get_next_display_element): Use `escape-glyph' for
control chars and escaped octal codes.
(Qescape_glyph): New variable.
(syms_of_xdisp): Initialize it.
(escape_glyph_face): New variable.
(redisplay_window): Initialize it.
2004-12-07 Paul Eggert <eggert@cs.ucla.edu>
* image.c (our_fill_input_buffer, jpeg_load, CHECK_LIB_AVAILABLE)
(init_image): Use 1 rather than TRUE. TRUE's not always defined.
2004-12-07 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* emacs.c (Fdump_emacs): Add ! defined (SYSTEM_MALLOC) around
reset_malloc_hooks.
* keyboard.c (handle_async_input, input_available_signal): Add
! defined (SYSTEM_MALLOC) around thread code.
* keyboard.c (handle_async_input, input_available_signal):
Add ! defined (SYSTEM_MALLOC) around thread code.
* alloc.c: Add comment about the reason for (UN)BLOCK_INPUT_ALLOC.
@ -42,12 +108,11 @@
* emacs.c (Fdump_emacs): Call reset_malloc_hooks.
* keyboard.c: Conditionally include pthread.h
(handle_async_inpu, input_available_signalt): If not in the main
(handle_async_input, input_available_signalt): If not in the main
thread, block signal, send signal to main thread and return.
* gtkutil.c (xg_get_file_with_chooser): Handle local files only.
Set current folder in file chooser if default_filename is a
directory.
Set current folder in file chooser if default_filename is a directory.
2004-12-05 Stefan Monnier <monnier@iro.umontreal.ca>

View file

@ -1023,8 +1023,10 @@ main (argc, argv
Also call realloc and free for consistency. */
free (realloc (malloc (4), 4));
# ifndef SYNC_INPUT
/* Arrange to disable interrupt input inside malloc etc. */
uninterrupt_malloc ();
# endif /* not SYNC_INPUT */
#endif /* not SYSTEM_MALLOC */
#if defined (MSDOS) || defined (WINDOWSNT)
@ -2246,7 +2248,7 @@ You must run Emacs in batch mode in order to dump it. */)
memory_warnings (my_edata, malloc_warning);
#endif /* not WINDOWSNT */
#endif
#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
#if !defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD) && !defined SYNC_INPUT
/* Pthread may call malloc before main, and then we will get an endless
loop, because pthread_self (see alloc.c) calls malloc the first time
it is called on some systems. */

View file

@ -3331,7 +3331,11 @@ Emacs could overflow the real C stack, and crash. */);
DEFVAR_LISP ("quit-flag", &Vquit_flag,
doc: /* Non-nil causes `eval' to abort, unless `inhibit-quit' is non-nil.
Typing C-g sets `quit-flag' non-nil, regardless of `inhibit-quit'. */);
If the value is t, that means do an ordinary quit.
If the value equals `throw-on-input', that means quit by throwing
to the tag specified in `throw-on-input'; it's for handling `while-no-input'.
Typing C-g sets `quit-flag' to t, regardless of `inhibit-quit',
but `inhibit-quit' non-nil prevents anything from taking notice of that. */);
Vquit_flag = Qnil;
DEFVAR_LISP ("inhibit-quit", &Vinhibit_quit,

View file

@ -6378,7 +6378,7 @@ our_fill_input_buffer (cinfo)
src->next_input_byte = buffer;
src->bytes_in_buffer = 2;
return TRUE;
return 1;
}
@ -6533,11 +6533,11 @@ jpeg_load (f, img)
jpeg_memory_src (&cinfo, SDATA (specified_data),
SBYTES (specified_data));
fn_jpeg_read_header (&cinfo, TRUE);
fn_jpeg_read_header (&cinfo, 1);
/* Customize decompression so that color quantization will be used.
Start decompression. */
cinfo.quantize_colors = TRUE;
cinfo.quantize_colors = 1;
fn_jpeg_start_decompress (&cinfo);
width = img->width = cinfo.output_width;
height = img->height = cinfo.output_height;
@ -7552,7 +7552,7 @@ gif_load (f, img)
bg_color.blue = color.blue;
RGBBackColor (&bg_color);
SetGWorld (old_port, old_gdh);
SetMovieActive (movie, TRUE);
SetMovieActive (movie, 1);
SetMovieGWorld (movie, ximg, NULL);
SampleNumToMediaTime (media, ino + 1, &time, NULL);
SetMovieTimeValue (movie, time);
@ -7930,7 +7930,7 @@ DEFUN ("lookup-image", Flookup_image, Slookup_image, 1, 1, 0, "")
define_image_type (image_type, init_lib_fn (libraries))
#else
#define CHECK_LIB_AVAILABLE(image_type, init_lib_fn, libraries) \
define_image_type (image_type, TRUE)
define_image_type (image_type, 1)
#endif /* HAVE_NTGUI */
DEFUN ("init-image-library", Finit_image_library, Sinit_image_library, 2, 2, 0,
@ -8114,8 +8114,8 @@ init_image ()
{
image_types = NULL;
define_image_type (&xbm_type, TRUE);
define_image_type (&pbm_type, TRUE);
define_image_type (&xbm_type, 1);
define_image_type (&pbm_type, 1);
#ifdef MAC_OS
/* Animated gifs use QuickTime Movie Toolbox. So initialize it here. */

View file

@ -2092,7 +2092,8 @@ whether or not it is currently displayed in some window. */)
move_it_by_lines (&it, -1, 0);
it.vpos = 0;
if (XINT (lines) != 0)
/* Do this even if LINES is 0, so that we move back
to the beginning of the current line as we ought. */
move_it_by_lines (&it, XINT (lines), 0);
SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));

View file

@ -6779,24 +6779,6 @@ handle_async_input ()
#ifdef BSD4_1
extern int select_alarmed;
#endif
#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
extern pthread_t main_thread;
if (pthread_self () != main_thread)
{
/* POSIX says any thread can receive the signal. On GNU/Linux that is
not true, but for other systems (FreeBSD at least) it is. So direct
the signal to the correct thread and block it from this thread. */
#ifdef SIGIO
sigset_t new_mask;
sigemptyset (&new_mask);
sigaddset (&new_mask, SIGIO);
pthread_sigmask (SIG_BLOCK, &new_mask, 0);
pthread_kill (main_thread, SIGIO);
#endif
return;
}
#endif
interrupt_input_pending = 0;
@ -6825,22 +6807,6 @@ input_available_signal (signo)
{
/* Must preserve main program's value of errno. */
int old_errno = errno;
#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
extern pthread_t main_thread;
if (pthread_self () != main_thread)
{
/* POSIX says any thread can receive the signal. On GNU/Linux that is
not true, but for other systems (FreeBSD at least) it is. So direct
the signal to the correct thread and block it from this thread. */
sigset_t new_mask;
sigemptyset (&new_mask);
sigaddset (&new_mask, SIGIO);
pthread_sigmask (SIG_BLOCK, &new_mask, 0);
pthread_kill (main_thread, SIGIO);
return;
}
#endif /* HAVE_GTK_AND_PTHREAD */
#if defined (USG) && !defined (POSIX_SIGNALS)
/* USG systems forget handlers when they are used;
must reestablish each time */
@ -6857,6 +6823,24 @@ input_available_signal (signo)
#ifdef SYNC_INPUT
interrupt_input_pending = 1;
#else
# if !defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
extern pthread_t main_thread;
if (pthread_self () != main_thread)
{
/* POSIX says any thread can receive the signal. On GNU/Linux that is
not true, but for other systems (FreeBSD at least) it is. So direct
the signal to the correct thread and block it from this thread. */
sigset_t new_mask;
sigemptyset (&new_mask);
sigaddset (&new_mask, SIGIO);
pthread_sigmask (SIG_BLOCK, &new_mask, 0);
pthread_kill (main_thread, SIGIO);
return;
}
# endif /* HAVE_GTK_AND_PTHREAD */
handle_async_input ();
#endif

View file

@ -1786,11 +1786,15 @@ extern char *stack_bottom;
#ifdef SYNC_INPUT
extern void handle_async_input P_ ((void));
extern int interrupt_input_pending;
#define QUIT \
do { \
if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \
{ \
Lisp_Object flag = Vquit_flag; \
Vquit_flag = Qnil; \
if (EQ (Vthrow_on_input, flag)) \
Fthrow (Vthrow_on_input, Qnil); \
Fsignal (Qquit, Qnil); \
} \
else if (interrupt_input_pending) \
@ -1803,7 +1807,10 @@ extern int interrupt_input_pending;
do { \
if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \
{ \
Lisp_Object flag = Vquit_flag; \
Vquit_flag = Qnil; \
if (EQ (Vthrow_on_input, flag)) \
Fthrow (Vthrow_on_input, Qnil); \
Fsignal (Qquit, Qnil); \
} \
} while (0)
@ -2917,6 +2924,7 @@ extern struct kboard *echo_kboard;
extern void cancel_echoing P_ ((void));
extern Lisp_Object Qdisabled, QCfilter;
extern Lisp_Object Vtty_erase_char, Vhelp_form, Vtop_level;
extern Lisp_Object Vthrow_on_input;
extern int input_pending;
EXFUN (Fdiscard_input, 0);
EXFUN (Frecursive_edit, 0);

View file

@ -1227,6 +1227,7 @@ is used to further constrain the set of candidates. */)
return call3 (alist, string, predicate, Qnil);
bestmatch = bucket = Qnil;
zero = make_number (0);
/* If ALIST is not a list, set TAIL just for gc pro. */
tail = alist;
@ -1253,7 +1254,7 @@ is used to further constrain the set of candidates. */)
}
else if (type == 2)
{
if (XFASTINT (bucket) != 0)
if (!EQ (bucket, zero))
{
elt = bucket;
eltstring = Fsymbol_name (elt);
@ -1285,16 +1286,14 @@ is used to further constrain the set of candidates. */)
if (STRINGP (eltstring)
&& SCHARS (string) <= SCHARS (eltstring)
&& (tem = Fcompare_strings (eltstring, make_number (0),
&& (tem = Fcompare_strings (eltstring, zero,
make_number (SCHARS (string)),
string, make_number (0), Qnil,
string, zero, Qnil,
completion_ignore_case ? Qt : Qnil),
EQ (Qt, tem)))
{
/* Yes. */
Lisp_Object regexps;
Lisp_Object zero;
XSETFASTINT (zero, 0);
/* Ignore this element if it fails to match all the regexps. */
{
@ -1348,9 +1347,9 @@ is used to further constrain the set of candidates. */)
else
{
compare = min (bestmatchsize, SCHARS (eltstring));
tem = Fcompare_strings (bestmatch, make_number (0),
tem = Fcompare_strings (bestmatch, zero,
make_number (compare),
eltstring, make_number (0),
eltstring, zero,
make_number (compare),
completion_ignore_case ? Qt : Qnil);
if (EQ (tem, Qt))
@ -1381,15 +1380,15 @@ is used to further constrain the set of candidates. */)
((matchsize == SCHARS (eltstring))
==
(matchsize == SCHARS (bestmatch))
&& (tem = Fcompare_strings (eltstring, make_number (0),
&& (tem = Fcompare_strings (eltstring, zero,
make_number (SCHARS (string)),
string, make_number (0),
string, zero,
Qnil,
Qnil),
EQ (Qt, tem))
&& (tem = Fcompare_strings (bestmatch, make_number (0),
&& (tem = Fcompare_strings (bestmatch, zero,
make_number (SCHARS (string)),
string, make_number (0),
string, zero,
Qnil,
Qnil),
! EQ (Qt, tem))))
@ -1476,13 +1475,14 @@ are ignored unless STRING itself starts with a space. */)
|| NILP (XCAR (alist))));
int index = 0, obsize = 0;
int bindcount = -1;
Lisp_Object bucket, tem;
Lisp_Object bucket, tem, zero;
struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
CHECK_STRING (string);
if (type == 0)
return call3 (alist, string, predicate, Qt);
allmatches = bucket = Qnil;
zero = make_number (0);
/* If ALIST is not a list, set TAIL just for gc pro. */
tail = alist;
@ -1509,7 +1509,7 @@ are ignored unless STRING itself starts with a space. */)
}
else if (type == 2)
{
if (XFASTINT (bucket) != 0)
if (!EQ (bucket, zero))
{
elt = bucket;
eltstring = Fsymbol_name (elt);
@ -1547,9 +1547,9 @@ are ignored unless STRING itself starts with a space. */)
&& SREF (string, 0) == ' ')
|| SREF (eltstring, 0) != ' '
|| NILP (hide_spaces))
&& (tem = Fcompare_strings (eltstring, make_number (0),
&& (tem = Fcompare_strings (eltstring, zero,
make_number (SCHARS (string)),
string, make_number (0),
string, zero,
make_number (SCHARS (string)),
completion_ignore_case ? Qt : Qnil),
EQ (Qt, tem)))

View file

@ -1320,6 +1320,7 @@ and the function returns nil. Field boundaries are not noticed if
(arg)
Lisp_Object arg;
{
Lisp_Object tmp;
int orig_val, val;
if (NILP (arg))
@ -1332,8 +1333,9 @@ and the function returns nil. Field boundaries are not noticed if
val = XINT (arg) > 0 ? ZV : BEGV;
/* Avoid jumping out of an input field. */
val = XFASTINT (Fconstrain_to_field (make_number (val), make_number (PT),
Qt, Qnil, Qnil));
tmp = Fconstrain_to_field (make_number (val), make_number (PT),
Qt, Qnil, Qnil);
val = XFASTINT (tmp);
SET_PT (val);
return val == orig_val ? Qt : Qnil;

View file

@ -5542,47 +5542,17 @@ void
x_calc_absolute_position (f)
struct frame *f;
{
POINT pt;
int flags = f->size_hint_flags;
pt.x = pt.y = 0;
/* Find the position of the outside upper-left corner of
the inner window, with respect to the outer window.
But do this only if we will need the results. */
if (f->output_data.w32->parent_desc != FRAME_W32_DISPLAY_INFO (f)->root_window)
{
BLOCK_INPUT;
MapWindowPoints (FRAME_W32_WINDOW (f),
f->output_data.w32->parent_desc,
&pt, 1);
UNBLOCK_INPUT;
}
{
RECT rt;
rt.left = rt.right = rt.top = rt.bottom = 0;
BLOCK_INPUT;
AdjustWindowRect(&rt, f->output_data.w32->dwStyle,
FRAME_EXTERNAL_MENU_BAR (f));
UNBLOCK_INPUT;
pt.x += (rt.right - rt.left);
pt.y += (rt.bottom - rt.top);
}
/* Treat negative positions as relative to the leftmost bottommost
position that fits on the screen. */
if (flags & XNegative)
f->left_pos = (FRAME_W32_DISPLAY_INFO (f)->width
- 2 * f->border_width - pt.x
- FRAME_PIXEL_WIDTH (f)
+ f->left_pos);
if (flags & YNegative)
f->top_pos = (FRAME_W32_DISPLAY_INFO (f)->height
- 2 * f->border_width - pt.y
- FRAME_PIXEL_HEIGHT (f)
+ f->top_pos);
/* The left_pos and top_pos

View file

@ -343,6 +343,11 @@ Lisp_Object Vvoid_text_area_pointer;
Lisp_Object Qtrailing_whitespace;
/* Name and number of the face used to highlight escape glyphs. */
Lisp_Object Qescape_glyph;
int escape_glyph_face;
/* The symbol `image' which is the car of the lists used to represent
images in Lisp. */
@ -5014,6 +5019,21 @@ get_next_display_element (it)
display. Then, set IT->dpvec to these glyphs. */
GLYPH g;
int ctl_len;
int face_id = escape_glyph_face;
/* Find the face id if `escape-glyph' unless we recently did. */
if (face_id < 0)
{
Lisp_Object tem = Fget (Qescape_glyph, Qface);
if (INTEGERP (tem))
face_id = XINT (tem);
else
face_id = 0;
/* If there's overflow, use 0 instead. */
if (FAST_GLYPH_FACE (FAST_MAKE_GLYPH (0, face_id)) != face_id)
face_id = 0;
escape_glyph_face = face_id;
}
if (it->c < 128 && it->ctl_arrow_p)
{
@ -5023,10 +5043,10 @@ get_next_display_element (it)
&& GLYPH_CHAR_VALID_P (XINT (DISP_CTRL_GLYPH (it->dp))))
g = XINT (DISP_CTRL_GLYPH (it->dp));
else
g = FAST_MAKE_GLYPH ('^', 0);
g = FAST_MAKE_GLYPH ('^', face_id);
XSETINT (it->ctl_chars[0], g);
g = FAST_MAKE_GLYPH (it->c ^ 0100, 0);
g = FAST_MAKE_GLYPH (it->c ^ 0100, face_id);
XSETINT (it->ctl_chars[1], g);
ctl_len = 2;
}
@ -5043,7 +5063,7 @@ get_next_display_element (it)
&& GLYPH_CHAR_VALID_P (XFASTINT (DISP_ESCAPE_GLYPH (it->dp))))
escape_glyph = XFASTINT (DISP_ESCAPE_GLYPH (it->dp));
else
escape_glyph = FAST_MAKE_GLYPH ('\\', 0);
escape_glyph = FAST_MAKE_GLYPH ('\\', face_id);
if (CHAR_BYTE8_P (it->c))
{
@ -5074,11 +5094,14 @@ get_next_display_element (it)
XSETINT (it->ctl_chars[i * 4], escape_glyph);
/* Insert three more glyphs into IT->ctl_chars for
the octal display of the character. */
g = FAST_MAKE_GLYPH (((str[i] >> 6) & 7) + '0', 0);
g = FAST_MAKE_GLYPH (((str[i] >> 6) & 7) + '0',
face_id);
XSETINT (it->ctl_chars[i * 4 + 1], g);
g = FAST_MAKE_GLYPH (((str[i] >> 3) & 7) + '0', 0);
g = FAST_MAKE_GLYPH (((str[i] >> 3) & 7) + '0',
face_id);
XSETINT (it->ctl_chars[i * 4 + 2], g);
g = FAST_MAKE_GLYPH ((str[i] & 7) + '0', 0);
g = FAST_MAKE_GLYPH ((str[i] & 7) + '0',
face_id);
XSETINT (it->ctl_chars[i * 4 + 3], g);
}
ctl_len = len * 4;
@ -5217,6 +5240,9 @@ set_iterator_to_next (it, reseat_p)
it->dpvec = NULL;
it->current.dpvec_index = -1;
/* Recheck faces after display vector */
it->stop_charpos = 0;
/* Skip over characters which were displayed via IT->dpvec. */
if (it->dpvec_char_len < 0)
reseat_at_next_visible_line_start (it, 1);
@ -11679,6 +11705,9 @@ redisplay_window (window, just_this_one_p)
*w->desired_matrix->method = 0;
#endif
/* Force this to be looked up again for each redisp of each window. */
escape_glyph_face = -1;
specbind (Qinhibit_point_motion_hooks, Qt);
reconsider_clip_changes (w, buffer);
@ -22292,6 +22321,8 @@ syms_of_xdisp ()
staticpro (&Qfontification_functions);
Qtrailing_whitespace = intern ("trailing-whitespace");
staticpro (&Qtrailing_whitespace);
Qescape_glyph = intern ("escape-glyph");
staticpro (&Qescape_glyph);
Qimage = intern ("image");
staticpro (&Qimage);
QCmap = intern (":map");

View file

@ -8171,20 +8171,11 @@ x_calc_absolute_position (f)
if (! ((flags & XNegative) || (flags & YNegative)))
return;
/* Find the offsets of the outside upper-left corner of
the inner window, with respect to the outer window.
But do this only if we will need the results. */
if (f->output_data.x->parent_desc != FRAME_X_DISPLAY_INFO (f)->root_window)
/* This is to get *_pixels_outer_diff. */
x_real_positions (f, &win_x, &win_y);
/* Treat negative positions as relative to the leftmost bottommost
position that fits on the screen. */
if (flags & XNegative)
f->left_pos = (FRAME_X_DISPLAY_INFO (f)->width
- 2 * FRAME_X_OUTPUT (f)->x_pixels_outer_diff
- FRAME_PIXEL_WIDTH (f)
+ f->left_pos);
- FRAME_PIXEL_WIDTH (f) + f->left_pos);
{
int height = FRAME_PIXEL_HEIGHT (f);
@ -8206,15 +8197,7 @@ x_calc_absolute_position (f)
#endif
if (flags & YNegative)
f->top_pos = (FRAME_X_DISPLAY_INFO (f)->height
- FRAME_X_OUTPUT (f)->y_pixels_outer_diff
/* Assume the window manager decorations are the same size on
three sides, i.e. left, right and bottom. This is to
compensate for the bottom part. */
- FRAME_X_OUTPUT (f)->x_pixels_outer_diff
- height
+ f->top_pos);
f->top_pos = (FRAME_X_DISPLAY_INFO (f)->height - height + f->top_pos);
}
/* The left_pos and top_pos
@ -8330,7 +8313,9 @@ x_check_expected_move (f)
FRAME_X_OUTPUT (f)->move_offset_left = expect_left - f->left_pos;
FRAME_X_OUTPUT (f)->move_offset_top = expect_top - f->top_pos;
x_set_offset (f, expect_left, expect_top, 1);
f->left_pos = expect_left;
f->top_pos = expect_top;
x_set_offset (f, expect_left, expect_top, 0);
}
else if (FRAME_X_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN)
FRAME_X_DISPLAY_INFO (f)->wm_type = X_WMTYPE_B;